36 lines
1.5 KiB
C++
36 lines
1.5 KiB
C++
#ifndef VRP_TIMING_GRAPH_NAME_RESOLVER_H
|
|
#define VRP_TIMING_GRAPH_NAME_RESOLVER_H
|
|
|
|
#include "tatum/TimingGraphNameResolver.hpp"
|
|
#include "atom_netlist_fwd.h"
|
|
#include "atom_lookup.h"
|
|
#include "AnalysisDelayCalculator.h"
|
|
#include "route_tree_timing.h"
|
|
|
|
class VprTimingGraphResolver : public tatum::TimingGraphNameResolver {
|
|
public:
|
|
VprTimingGraphResolver(const AtomNetlist& netlist, const AtomLookup& netlist_lookup, const tatum::TimingGraph& timing_graph, const AnalysisDelayCalculator& delay_calc);
|
|
|
|
std::string node_name(tatum::NodeId node) const override;
|
|
std::string node_type_name(tatum::NodeId node) const override;
|
|
|
|
tatum::EdgeDelayBreakdown edge_delay_breakdown(tatum::EdgeId edge, tatum::DelayType delay_type) const override;
|
|
|
|
void set_detail_level(e_timing_report_detail report_detail);
|
|
|
|
private:
|
|
e_timing_report_detail detail_level() const;
|
|
std::vector<tatum::DelayComponent> interconnect_delay_breakdown(tatum::EdgeId edge, DelayType) const;
|
|
|
|
void get_detailed_interconnect_components(std::vector<tatum::DelayComponent>& components, ClusterNetId net_id, ClusterPinId sink_pin) const;
|
|
void get_detailed_interconnect_components_helper(std::vector<tatum::DelayComponent>& components, t_rt_node* node) const;
|
|
|
|
const AtomNetlist& netlist_;
|
|
const AtomLookup& netlist_lookup_;
|
|
const tatum::TimingGraph& timing_graph_;
|
|
const AnalysisDelayCalculator& delay_calc_;
|
|
e_timing_report_detail detail_level_ = e_timing_report_detail::NETLIST;
|
|
};
|
|
|
|
#endif
|