dcalc no slew merge for constant disabled arcs

Signed-off-by: James Cherry <cherry@CerezoBook.local>
This commit is contained in:
James Cherry 2026-08-11 20:54:49 +01:00
parent e9c075ab94
commit 8b511bc012
2 changed files with 7 additions and 1 deletions

View File

@ -47,6 +47,7 @@
#include "Sdc.hh" #include "Sdc.hh"
#include "Scene.hh" #include "Scene.hh"
#include "SearchPred.hh" #include "SearchPred.hh"
#include "search/Sim.hh"
#include "Stats.hh" #include "Stats.hh"
#include "TimingArc.hh" #include "TimingArc.hh"
#include "TimingRole.hh" #include "TimingRole.hh"
@ -88,8 +89,10 @@ DcalcPred::searchFrom(const Vertex *from_vertex,
const Pin *from_pin = from_vertex->pin(); const Pin *from_pin = from_vertex->pin();
const Sdc *sdc = mode->sdc(); const Sdc *sdc = mode->sdc();
const Network *network = sta_->network(); const Network *network = sta_->network();
const Sim *sim = mode->sim();
Net *net = network->net(from_pin); Net *net = network->net(from_pin);
return !(sdc->isDisabledConstraint(from_pin) return !(sdc->isDisabledConstraint(from_pin)
|| sim->isConstant(from_vertex)
|| (net && (network->isPower(net) || (net && (network->isPower(net)
|| network->isGround(net)))); || network->isGround(net))));
} }

View File

@ -191,6 +191,7 @@ StaSimObserver::StaSimObserver(StaState *sta) :
void void
StaSimObserver::valueChangeAfter(const Pin *pin) StaSimObserver::valueChangeAfter(const Pin *pin)
{ {
graph_delay_calc_->delayInvalid(pin);
Vertex *vertex = graph_->pinDrvrVertex(pin); Vertex *vertex = graph_->pinDrvrVertex(pin);
if (vertex) { if (vertex) {
search_->arrivalInvalid(vertex); search_->arrivalInvalid(vertex);
@ -3676,8 +3677,10 @@ void
Sta::delayCalcPreamble() Sta::delayCalcPreamble()
{ {
ensureLevelized(); ensureLevelized();
for (Mode *mode : modes_) for (Mode *mode : modes_) {
mode->sim()->ensureConstantsPropagated();
mode->clkNetwork()->ensureClkNetwork(); mode->clkNetwork()->ensureClkNetwork();
}
} }
void void