Go to the documentation of this file.
11 #ifndef __TATUMINTERFACE__H__
12 #define __TATUMINTERFACE__H__
20 #include "tatum/TimingGraph.hpp"
21 #include "tatum/Time.hpp"
22 #include "tatum/TimingConstraints.hpp"
23 #include "tatum/delay_calc/FixedDelayCalculator.hpp"
24 #include "tatum/report/graphviz_dot_writer.hpp"
25 #include "tatum/timing_analyzers.hpp"
26 #include "tatum/graph_walkers.hpp"
27 #include "tatum/analyzer_factory.hpp"
28 #include "tatum/TimingReporter.hpp"
30 using tatum::TimingGraph;
32 using tatum::NodeType;
34 using tatum::EdgeType;
36 using tatum::FixedDelayCalculator;
37 using tatum::TimingConstraints;
38 using tatum::TimingReporter;
39 using tatum::DomainId;
41 using tatum::util::linear_map;
44 typedef std::multimap<MRRG::NodeDescriptor, MRRG::NodeDescriptor>
EdgeList;
63 std::vector<std::vector<tatum::NodeId>>
ipins;
64 std::vector<tatum::NodeId>
opins;
70 std::vector<tatum::NodeId>
cpins;
71 std::vector<tatum::NodeId>
srcs;
72 std::vector<tatum::NodeId>
snks;
96 std::shared_ptr<tatum::TimingGraph>
tg;
97 std::shared_ptr<MRRGNameResolver>
nr;
98 std::shared_ptr<tatum::FixedDelayCalculator>
dc;
99 std::shared_ptr<tatum::TimingConstraints>
tc;
100 std::shared_ptr<tatum::SetupHoldTimingAnalyzer>
analyzer;
101 std::shared_ptr<tatum::TimingReporter>
tr;
103 linear_map<tatum::EdgeId, tatum::Time>
maxComb;
104 linear_map<tatum::EdgeId, tatum::Time>
minComb;
105 linear_map<tatum::EdgeId, tatum::Time>
setup;
106 linear_map<tatum::EdgeId, tatum::Time>
hold;
108 std::map<MRRG::NodeDescriptor, std::shared_ptr<TGEntity>>
mrrg2tg;
109 std::map<tatum::NodeId, MRRG::NodeDescriptor>
tg2mrrg;
127 std::string
node_name(tatum::NodeId node)
const override {
133 auto type =
tg_->node_type(node);
134 std::stringstream ss;
143 const tatum::TimingGraph*
tg_;
std::vector< tatum::EdgeId > cpins2srcs
std::vector< tatum::NodeId > srcs
std::map< MRRG::NodeDescriptor, std::shared_ptr< TGEntity > > mrrg2tg
linear_map< tatum::EdgeId, tatum::Time > maxComb
std::shared_ptr< tatum::FixedDelayCalculator > dc
TatumInterface(std::map< std::string, double > &, PerfEngine *)
const tatum::TimingGraph * tg_
TatumInterface & operator=(const TatumInterface &)=delete
linear_map< tatum::EdgeId, tatum::Time > setup
void connectTGClock(MRRG::NodeDescriptor n, bool reduce=true)
std::shared_ptr< tatum::TimingConstraints > tc
std::multimap< MRRG::NodeDescriptor, MRRG::NodeDescriptor > EdgeList
MRRGNameResolver(const tatum::TimingGraph &tg)
std::shared_ptr< tatum::TimingGraph > tg
std::string node_type_name(tatum::NodeId node) const override
linear_map< tatum::NodeId, std::string > node2inst
std::map< tatum::NodeId, MRRG::NodeDescriptor > tg2mrrg
std::shared_ptr< tatum::TimingReporter > tr
std::vector< tatum::EdgeId > ipins2opins
void connectTGEntities(MRRG::NodeDescriptor from, MRRG::NodeDescriptor to, bool reduce=true)
std::vector< tatum::NodeId > cpins
linear_map< tatum::EdgeId, tatum::Time > minComb
void initializeTatumEngine(EdgeList &m)
double getFanoutBasedRCDelay(MRRG::NodeDescriptor src)
std::vector< tatum::NodeId > memOut
std::vector< tatum::EdgeId > ipins2snks
std::map< std::string, double > & timingModels
std::vector< tatum::EdgeId > cpins2snks
void createTatumTimingGraph(EdgeList &m)
MRRGNameResolver & operator=(const MRRGNameResolver &)=delete
std::vector< tatum::EdgeId > srcs2opins
void removeWireNodes(EdgeList &orig, EdgeList &reduced)
std::vector< tatum::NodeId > snks
std::shared_ptr< MRRGNameResolver > nr
linear_map< tatum::EdgeId, tatum::Time > hold
MRRG::NodeDescriptor parent
std::vector< tatum::NodeId > opins
std::string node_name(tatum::NodeId node) const override
void createTGEntity(MRRG::NodeDescriptor n, bool reduce=true)
std::shared_ptr< tatum::SetupHoldTimingAnalyzer > analyzer
void reportSetupAnalysis()
std::multimap< MRRG::NodeDescriptor, MRRG::NodeDescriptor > EdgeList
std::vector< std::vector< tatum::NodeId > > ipins
void set_node_name(tatum::NodeId node, std::string name)