21 #ifndef OPHIDIAN_TIMING_STATIC_TIMING_ANALYSIS_H
22 #define OPHIDIAN_TIMING_STATIC_TIMING_ANALYSIS_H
24 #include "generic_sta.h"
25 #include "endpoints.h"
32 using TimeType = boost::units::quantity< boost::units::si::time > ;
33 using Cell = entity_system::entity;
34 using Net = entity_system::entity;
35 using Pin = entity_system::entity;
50 std::unique_ptr<timing_data> m_late;
51 std::unique_ptr<timing_data> m_early;
52 std::unique_ptr<graph_and_topology> m_topology;
53 std::unique_ptr<generic_sta<effective_capacitance_wire_model, pessimistic> > m_late_sta;
54 std::unique_ptr<generic_sta<effective_capacitance_wire_model, optimistic> > m_early_sta;
55 std::unique_ptr<test_calculator> m_test;
62 void init_timing_data();
65 void update_wns_and_tns();
66 bool has_timing_data()
const {
68 assert(m_timing_graph);
69 assert(m_late_lib && m_early_lib);
71 return m_late_sta && m_early_sta;
77 void late_lib(
const library& lib);
78 void early_lib(
const library& lib);
85 TimeType late_wns()
const {
88 TimeType early_wns()
const{
91 TimeType late_tns()
const {
94 TimeType early_tns()
const{
98 TimeType early_rise_slack(Pin p)
const {
99 return m_early_sta->rise_slack(p);
101 TimeType early_fall_slack(Pin p)
const {
102 return m_early_sta->fall_slack(p);
104 TimeType late_rise_slack(Pin p)
const {
105 return m_late_sta->rise_slack(p);
107 TimeType late_fall_slack(Pin p)
const {
108 return m_late_sta->fall_slack(p);
111 TimeType early_rise_arrival(Pin p)
const {
112 return m_early_sta->rise_arrival(p);
114 TimeType early_fall_arrival(Pin p)
const {
115 return m_early_sta->fall_arrival(p);
117 TimeType late_rise_arrival(Pin p)
const {
118 return m_late_sta->rise_arrival(p);
120 TimeType late_fall_arrival(Pin p)
const {
121 return m_late_sta->fall_arrival(p);
124 TimeType early_rise_slew(Pin p)
const {
125 return m_early_sta->rise_slew(p);
127 TimeType early_fall_slew(Pin p)
const {
128 return m_early_sta->fall_slew(p);
130 TimeType late_rise_slew(Pin p)
const {
131 return m_late_sta->rise_slew(p);
133 TimeType late_fall_slew(Pin p)
const {
134 return m_late_sta->fall_slew(p);
137 const endpoints & timing_endpoints()
const {
147 #endif // OPHIDIAN_TIMING_STATIC_TIMING_ANALYSIS_H
Definition: endpoints.h:30
Definition: design_constraints.h:63
Definition: static_timing_analysis.h:39
Netlist class.
Definition: netlist.h:41