write_timing_model ignore set_timing_derate

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2023-01-04 11:52:36 -07:00
parent 1af03c8d0f
commit 2a2b5cd59f
5 changed files with 27 additions and 0 deletions

Binary file not shown.

Binary file not shown.

View File

@ -224,6 +224,9 @@ public:
const RiseFall *rf,
const EarlyLate *early_late) const;
void unsetTimingDerate();
static void moveDeratingFactors(Sdc *from,
Sdc *to);
void setInputSlew(Port *port, const RiseFallBoth *rf,
const MinMaxAll *min_max, float slew);
// Set the rise/fall drive resistance on design port.

View File

@ -686,6 +686,28 @@ Sdc::unsetTimingDerate()
deleteDeratingFactors();
}
void
Sdc::moveDeratingFactors(Sdc *from,
Sdc *to)
{
if (from->derating_factors_) {
to->derating_factors_ = from->derating_factors_;
from->derating_factors_ = nullptr;
}
if (from->net_derating_factors_) {
to->net_derating_factors_ = from->net_derating_factors_;
from->net_derating_factors_ = nullptr;
}
if (from->inst_derating_factors_) {
to->inst_derating_factors_ = from->inst_derating_factors_;
from->inst_derating_factors_ = nullptr;
}
if (from->cell_derating_factors_) {
to->cell_derating_factors_ = from->cell_derating_factors_;
from->cell_derating_factors_ = nullptr;
}
}
void
Sdc::deleteDeratingFactors()
{

View File

@ -93,6 +93,7 @@ MakeTimingModel::saveSdc()
sdc_backup_ = new Sdc(this);
Sdc::movePortDelays(sdc_, sdc_backup_);
Sdc::movePortExtCaps(sdc_, sdc_backup_);
Sdc::moveDeratingFactors(sdc_, sdc_backup_);
sta_->delaysInvalid();
}
@ -101,6 +102,7 @@ MakeTimingModel::restoreSdc()
{
Sdc::movePortDelays(sdc_backup_, sdc_);
Sdc::movePortExtCaps(sdc_backup_, sdc_);
Sdc::moveDeratingFactors(sdc_backup_, sdc_);
sta_->delaysInvalid();
delete sdc_backup_;
}