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 RiseFall *rf,
const EarlyLate *early_late) const; const EarlyLate *early_late) const;
void unsetTimingDerate(); void unsetTimingDerate();
static void moveDeratingFactors(Sdc *from,
Sdc *to);
void setInputSlew(Port *port, const RiseFallBoth *rf, void setInputSlew(Port *port, const RiseFallBoth *rf,
const MinMaxAll *min_max, float slew); const MinMaxAll *min_max, float slew);
// Set the rise/fall drive resistance on design port. // Set the rise/fall drive resistance on design port.

View File

@ -686,6 +686,28 @@ Sdc::unsetTimingDerate()
deleteDeratingFactors(); 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 void
Sdc::deleteDeratingFactors() Sdc::deleteDeratingFactors()
{ {

View File

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