diff options
Diffstat (limited to 'common/timing.h')
-rw-r--r-- | common/timing.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/common/timing.h b/common/timing.h index 9c15911d..e07dc105 100644 --- a/common/timing.h +++ b/common/timing.h @@ -45,6 +45,10 @@ struct CellPortKey } }; inline bool operator==(const CellPortKey &other) const { return (cell == other.cell) && (port == other.port); } + inline bool operator<(const CellPortKey &other) const + { + return cell == other.cell ? port < other.port : cell < other.cell; + } }; struct NetPortKey @@ -104,6 +108,7 @@ struct TimingAnalyser private: void init_ports(); void get_cell_delays(); + void topo_sort(); // To avoid storing the domain tag structure (which could get large when considering more complex constrained tag // cases), assign each domain an ID and use that instead typedef int domain_id_t; @@ -153,6 +158,7 @@ struct TimingAnalyser { CellPortKey cell_port; NetPortKey net_port; + PortType type; // per domain timings std::unordered_map<domain_id_t, PortDomainData> domains; // cell timing arcs to (outputs)/from (inputs) from this port @@ -168,6 +174,8 @@ struct TimingAnalyser std::unordered_map<ClockDomainKey, domain_id_t, ClockDomainKey::Hash> domain_to_id; std::vector<ClockDomainKey> id_to_domain; + std::vector<CellPortKey> topological_order; + Context *ctx; }; |