sdc:isConstrained for clk latency pin
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
ef924bb0b5
commit
3b61817f90
2054
doc/OpenSTA.fodt
2054
doc/OpenSTA.fodt
File diff suppressed because it is too large
Load Diff
|
|
@ -149,7 +149,7 @@ using ExceptionPathPtHash = std::map<size_t, ExceptionPathSet>;
|
||||||
using ClockLatencies = std::set<ClockLatency*, ClockLatencyLess>;
|
using ClockLatencies = std::set<ClockLatency*, ClockLatencyLess>;
|
||||||
using EdgeClockLatencyMap = std::map<PinPair, ClockLatency*, PinPairLess>;
|
using EdgeClockLatencyMap = std::map<PinPair, ClockLatency*, PinPairLess>;
|
||||||
using PinClockUncertaintyMap = std::map<const Pin*, ClockUncertainties*>;
|
using PinClockUncertaintyMap = std::map<const Pin*, ClockUncertainties*>;
|
||||||
using InterClockUncertaintySet = std::set<InterClockUncertainty*, InterClockUncertaintyLess>;
|
using InterClockUncertaintySet=std::set<InterClockUncertainty*,InterClockUncertaintyLess>;
|
||||||
using ClockGatingCheckMap = std::map<const Clock*, ClockGatingCheck*>;
|
using ClockGatingCheckMap = std::map<const Clock*, ClockGatingCheck*>;
|
||||||
using InstanceClockGatingCheckMap = std::map<const Instance*, ClockGatingCheck*>;
|
using InstanceClockGatingCheckMap = std::map<const Instance*, ClockGatingCheck*>;
|
||||||
using PinClockGatingCheckMap = std::map<const Pin*, ClockGatingCheck*>;
|
using PinClockGatingCheckMap = std::map<const Pin*, ClockGatingCheck*>;
|
||||||
|
|
@ -1306,6 +1306,7 @@ protected:
|
||||||
bool clk_hpin_disables_valid_;
|
bool clk_hpin_disables_valid_;
|
||||||
PinSet propagated_clk_pins_;
|
PinSet propagated_clk_pins_;
|
||||||
ClockLatencies clk_latencies_;
|
ClockLatencies clk_latencies_;
|
||||||
|
PinSet clk_latency_pins_;
|
||||||
EdgeClockLatencyMap edge_clk_latency_map_;
|
EdgeClockLatencyMap edge_clk_latency_map_;
|
||||||
ClockInsertions clk_insertions_;
|
ClockInsertions clk_insertions_;
|
||||||
PinClockUncertaintyMap pin_clk_uncertainty_map_;
|
PinClockUncertaintyMap pin_clk_uncertainty_map_;
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,7 @@ Sdc::Sdc(Mode *mode,
|
||||||
clk_hpin_disables_(network_),
|
clk_hpin_disables_(network_),
|
||||||
propagated_clk_pins_(network_),
|
propagated_clk_pins_(network_),
|
||||||
clk_latencies_(network_),
|
clk_latencies_(network_),
|
||||||
|
clk_latency_pins_(network_),
|
||||||
edge_clk_latency_map_(network_),
|
edge_clk_latency_map_(network_),
|
||||||
clk_insertions_(network_),
|
clk_insertions_(network_),
|
||||||
clk_sense_map_(network_),
|
clk_sense_map_(network_),
|
||||||
|
|
@ -169,6 +170,7 @@ Sdc::clear()
|
||||||
clock_pin_map_.clear();
|
clock_pin_map_.clear();
|
||||||
clock_leaf_pin_map_.clear();
|
clock_leaf_pin_map_.clear();
|
||||||
clk_latencies_.clear();
|
clk_latencies_.clear();
|
||||||
|
clk_latency_pins_.clear();
|
||||||
edge_clk_latency_map_.clear();
|
edge_clk_latency_map_.clear();
|
||||||
clk_insertions_.clear();
|
clk_insertions_.clear();
|
||||||
|
|
||||||
|
|
@ -1508,6 +1510,8 @@ Sdc::setClockLatency(Clock *clk,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
latency->setDelay(rf, min_max, delay);
|
latency->setDelay(rf, min_max, delay);
|
||||||
|
if (pin)
|
||||||
|
clk_latency_pins_.insert(pin);
|
||||||
|
|
||||||
// set_clock_latency removes set_propagated_clock on the same object.
|
// set_clock_latency removes set_propagated_clock on the same object.
|
||||||
if (clk && pin == nullptr)
|
if (clk && pin == nullptr)
|
||||||
|
|
@ -1580,8 +1584,7 @@ Sdc::deleteClockLatenciesReferencing(Clock *clk)
|
||||||
bool
|
bool
|
||||||
Sdc::hasClockLatency(const Pin *pin) const
|
Sdc::hasClockLatency(const Pin *pin) const
|
||||||
{
|
{
|
||||||
ClockLatency probe(nullptr, pin);
|
return clk_latency_pins_.contains(pin);
|
||||||
return clk_latencies_.contains(&probe);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -1654,6 +1654,14 @@ set_propagate_all_clocks(bool prop)
|
||||||
Sta::sta()->setPropagateAllClocks(prop);
|
Sta::sta()->setPropagateAllClocks(prop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
pin_is_constrained(const Pin *pin)
|
||||||
|
{
|
||||||
|
Sta *sta = Sta::sta();
|
||||||
|
Sdc *sdc = sta->cmdSdc();
|
||||||
|
return sdc->isConstrained(pin);
|
||||||
|
}
|
||||||
|
|
||||||
%} // inline
|
%} // inline
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue