blob: dd9241d6cf9d6b01870e5e527805b6d36ef8a0f9 [file]
#ifndef TATUM_TIMING_GRAPH_NAME_RESOLVER_HPP
#define TATUM_TIMING_GRAPH_NAME_RESOLVER_HPP
#include <string>
#include <vector>
#include "TimingGraphFwd.hpp"
#include "tatum/base/DelayType.hpp"
#include "tatum/Time.hpp"
namespace tatum {
struct DelayComponent {
std::string type_name; //Type of element
std::string inst_name; //Unique identifier of element
Time delay; //Associated delay of element
};
struct EdgeDelayBreakdown {
std::vector<DelayComponent> components;
};
//Abstract interface for resolving timing graph nodes to human-readable strings
class TimingGraphNameResolver {
public:
virtual ~TimingGraphNameResolver() = default;
virtual std::string node_name(tatum::NodeId node) const = 0;
virtual std::string node_type_name(tatum::NodeId node) const = 0;
virtual EdgeDelayBreakdown edge_delay_breakdown(tatum::EdgeId /*edge*/, DelayType /*delay_type*/) const {
//Default no edge delay breakdown
return EdgeDelayBreakdown();
}
};
} //namespace
#endif