Sta::findSlewLimit
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
f61335a194
commit
d7d40a6f22
|
|
@ -779,7 +779,8 @@ Sdc::haveClkSlewLimits() const
|
|||
}
|
||||
|
||||
void
|
||||
Sdc::slewLimit(Clock *clk, const RiseFall *rf,
|
||||
Sdc::slewLimit(Clock *clk,
|
||||
const RiseFall *rf,
|
||||
const PathClkOrData clk_data,
|
||||
const MinMax *min_max,
|
||||
float &slew,
|
||||
|
|
@ -794,7 +795,7 @@ Sdc::slewLimit(Port *port,
|
|||
float &slew,
|
||||
bool &exists)
|
||||
{
|
||||
slew = 0.0;
|
||||
slew = INF;
|
||||
MinMaxFloatValues values;
|
||||
port_slew_limit_map_.findKey(port, values, exists);
|
||||
if (exists)
|
||||
|
|
@ -816,7 +817,7 @@ Sdc::slewLimit(Cell *cell,
|
|||
float &slew,
|
||||
bool &exists)
|
||||
{
|
||||
slew = 0.0;
|
||||
slew = INF;
|
||||
MinMaxFloatValues values;
|
||||
cell_slew_limit_map_.findKey(cell, values, exists);
|
||||
if (exists)
|
||||
|
|
|
|||
|
|
@ -255,18 +255,23 @@ CheckSlewLimits::findLimit(const LibertyPort *port,
|
|||
|
||||
const Network *network = sta_->network();
|
||||
Sdc *sdc = sta_->sdc();
|
||||
float limit1;
|
||||
bool exists1;
|
||||
|
||||
// Default to top ("design") limit.
|
||||
Cell *top_cell = network->cell(network->topInstance());
|
||||
sdc->slewLimit(top_cell, min_max,
|
||||
limit, exists);
|
||||
limit1, exists1);
|
||||
if (exists1) {
|
||||
limit = limit1;
|
||||
exists = true;
|
||||
}
|
||||
|
||||
if (port) {
|
||||
const LibertyPort *corner_port = port->cornerPort(corner->libertyIndex(min_max));
|
||||
float limit1;
|
||||
bool exists1;
|
||||
corner_port->slewLimit(min_max, limit1, exists1);
|
||||
if (!exists1
|
||||
// default_max_transition only applies to outputs.
|
||||
&& corner_port->direction()->isAnyOutput()
|
||||
&& min_max == MinMax::max())
|
||||
corner_port->libertyLibrary()->defaultMaxSlew(limit1, exists1);
|
||||
|
|
|
|||
|
|
@ -5219,7 +5219,8 @@ Sta::findSlewLimit(const LibertyPort *port,
|
|||
float &limit,
|
||||
bool &exists)
|
||||
{
|
||||
checkSlewLimitPreamble();
|
||||
if (check_slew_limits_ == nullptr)
|
||||
makeCheckSlewLimits();
|
||||
check_slew_limits_->findLimit(port, corner, min_max,
|
||||
limit, exists);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue