OpenFPGA/vpr/src/timing/VprTimingGraphResolver.h

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