blob: 28d303815d941e094cc62812ef33c77206e1e547 [file] [log] [blame]
#ifndef VPR_ATOM_DELAY_CALC_H
#define VPR_ATOM_DELAY_CALC_H
#include "atom_netlist.h"
#include "atom_lookup.h"
#include "vtr_hash.h"
#include "DelayType.h"
//Delay Calculator for timing edges which are internal to atoms
class AtomDelayCalc {
public:
AtomDelayCalc(const AtomNetlist& netlist, const AtomLookup& netlist_lookup);
float atom_combinational_delay(const AtomPinId src_pin, const AtomPinId sink_pin, const DelayType delay_type) const;
float atom_setup_time(const AtomPinId clk_pin, const AtomPinId input_pin) const;
float atom_hold_time(const AtomPinId clk_pin, const AtomPinId input_pin) const;
float atom_clock_to_q_delay(const AtomPinId clk_pin, const AtomPinId output_pin, const DelayType delay_type) const;
private:
const t_pb_graph_pin* find_pb_graph_pin(const AtomPinId atom_pin) const;
private:
const AtomNetlist& netlist_;
const AtomLookup& netlist_lookup_;
};
#include "atom_delay_calc.inl"
#endif