sdc:isConstrained for clk latency pin

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2026-03-07 17:19:23 -07:00
parent ef924bb0b5
commit 3b61817f90
4 changed files with 1045 additions and 1027 deletions

File diff suppressed because it is too large Load Diff

View File

@ -149,7 +149,7 @@ using ExceptionPathPtHash = std::map<size_t, ExceptionPathSet>;
using ClockLatencies = std::set<ClockLatency*, ClockLatencyLess>;
using EdgeClockLatencyMap = std::map<PinPair, ClockLatency*, PinPairLess>;
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 InstanceClockGatingCheckMap = std::map<const Instance*, ClockGatingCheck*>;
using PinClockGatingCheckMap = std::map<const Pin*, ClockGatingCheck*>;
@ -1306,6 +1306,7 @@ protected:
bool clk_hpin_disables_valid_;
PinSet propagated_clk_pins_;
ClockLatencies clk_latencies_;
PinSet clk_latency_pins_;
EdgeClockLatencyMap edge_clk_latency_map_;
ClockInsertions clk_insertions_;
PinClockUncertaintyMap pin_clk_uncertainty_map_;

View File

@ -101,6 +101,7 @@ Sdc::Sdc(Mode *mode,
clk_hpin_disables_(network_),
propagated_clk_pins_(network_),
clk_latencies_(network_),
clk_latency_pins_(network_),
edge_clk_latency_map_(network_),
clk_insertions_(network_),
clk_sense_map_(network_),
@ -169,6 +170,7 @@ Sdc::clear()
clock_pin_map_.clear();
clock_leaf_pin_map_.clear();
clk_latencies_.clear();
clk_latency_pins_.clear();
edge_clk_latency_map_.clear();
clk_insertions_.clear();
@ -1508,6 +1510,8 @@ Sdc::setClockLatency(Clock *clk,
}
}
latency->setDelay(rf, min_max, delay);
if (pin)
clk_latency_pins_.insert(pin);
// set_clock_latency removes set_propagated_clock on the same object.
if (clk && pin == nullptr)
@ -1580,8 +1584,7 @@ Sdc::deleteClockLatenciesReferencing(Clock *clk)
bool
Sdc::hasClockLatency(const Pin *pin) const
{
ClockLatency probe(nullptr, pin);
return clk_latencies_.contains(&probe);
return clk_latency_pins_.contains(pin);
}
void

View File

@ -1654,6 +1654,14 @@ set_propagate_all_clocks(bool 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
////////////////////////////////////////////////////////////////