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

View File

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