enable max_fanout, max_cap checks
This commit is contained in:
parent
1aadb2d895
commit
6bdf3fcfed
|
|
@ -263,7 +263,7 @@ CheckCapacitanceLimits::pinMinCapacitanceLimitSlack(const Corner *corner,
|
||||||
{
|
{
|
||||||
init(min_max);
|
init(min_max);
|
||||||
const Network *network = sta_->network();
|
const Network *network = sta_->network();
|
||||||
Pin *min_slack_pin = 0;
|
Pin *min_slack_pin = nullptr;
|
||||||
float min_slack = MinMax::min()->initValue();
|
float min_slack = MinMax::min()->initValue();
|
||||||
LeafInstanceIterator *inst_iter = network->leafInstanceIterator();
|
LeafInstanceIterator *inst_iter = network->leafInstanceIterator();
|
||||||
while (inst_iter->hasNext()) {
|
while (inst_iter->hasNext()) {
|
||||||
|
|
@ -294,7 +294,8 @@ CheckCapacitanceLimits::pinMinCapacitanceLimitSlack(Instance *inst,
|
||||||
float capacitance, limit, slack;
|
float capacitance, limit, slack;
|
||||||
checkCapacitance(pin, corner, min_max, corner1, rf, capacitance, limit, slack);
|
checkCapacitance(pin, corner, min_max, corner1, rf, capacitance, limit, slack);
|
||||||
if (rf
|
if (rf
|
||||||
&& (min_slack_pin == 0
|
&& !fuzzyInf(slack)
|
||||||
|
&& (min_slack_pin == nullptr
|
||||||
|| slack < min_slack)) {
|
|| slack < min_slack)) {
|
||||||
min_slack_pin = pin;
|
min_slack_pin = pin;
|
||||||
min_slack = slack;
|
min_slack = slack;
|
||||||
|
|
|
||||||
|
|
@ -100,10 +100,9 @@ CheckFanoutLimits::checkFanout(const Pin *pin,
|
||||||
float limit1;
|
float limit1;
|
||||||
bool limit1_exists;
|
bool limit1_exists;
|
||||||
findLimit(pin, min_max, limit1, limit1_exists);
|
findLimit(pin, min_max, limit1, limit1_exists);
|
||||||
if (limit1_exists) {
|
if (limit1_exists)
|
||||||
checkFanout(pin, min_max, limit1,
|
checkFanout(pin, min_max, limit1,
|
||||||
fanout, slack, limit);
|
fanout, slack, limit);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -133,6 +132,7 @@ CheckFanoutLimits::findLimit(const Pin *pin,
|
||||||
if (port) {
|
if (port) {
|
||||||
port->fanoutLimit(min_max, limit, exists);
|
port->fanoutLimit(min_max, limit, exists);
|
||||||
if (!exists
|
if (!exists
|
||||||
|
&& min_max == MinMax::max()
|
||||||
&& port->direction()->isAnyOutput())
|
&& port->direction()->isAnyOutput())
|
||||||
port->libertyLibrary()->defaultMaxFanout(limit, exists);
|
port->libertyLibrary()->defaultMaxFanout(limit, exists);
|
||||||
}
|
}
|
||||||
|
|
@ -220,7 +220,7 @@ CheckFanoutLimits::pinMinFanoutLimitSlack(const MinMax *min_max)
|
||||||
{
|
{
|
||||||
init(min_max);
|
init(min_max);
|
||||||
const Network *network = sta_->network();
|
const Network *network = sta_->network();
|
||||||
Pin *min_slack_pin = 0;
|
Pin *min_slack_pin = nullptr;
|
||||||
float min_slack = MinMax::min()->initValue();
|
float min_slack = MinMax::min()->initValue();
|
||||||
LeafInstanceIterator *inst_iter = network->leafInstanceIterator();
|
LeafInstanceIterator *inst_iter = network->leafInstanceIterator();
|
||||||
while (inst_iter->hasNext()) {
|
while (inst_iter->hasNext()) {
|
||||||
|
|
@ -230,7 +230,7 @@ CheckFanoutLimits::pinMinFanoutLimitSlack(const MinMax *min_max)
|
||||||
delete inst_iter;
|
delete inst_iter;
|
||||||
// Check top level ports.
|
// Check top level ports.
|
||||||
pinMinFanoutLimitSlack(network->topInstance(), min_max,
|
pinMinFanoutLimitSlack(network->topInstance(), min_max,
|
||||||
min_slack_pin, min_slack);
|
min_slack_pin, min_slack);
|
||||||
return min_slack_pin;
|
return min_slack_pin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -245,13 +245,16 @@ CheckFanoutLimits::pinMinFanoutLimitSlack(Instance *inst,
|
||||||
InstancePinIterator *pin_iter = network->pinIterator(inst);
|
InstancePinIterator *pin_iter = network->pinIterator(inst);
|
||||||
while (pin_iter->hasNext()) {
|
while (pin_iter->hasNext()) {
|
||||||
Pin *pin = pin_iter->next();
|
Pin *pin = pin_iter->next();
|
||||||
float fanout;
|
if (network->direction(pin)->isAnyOutput()) {
|
||||||
float limit, slack;
|
float fanout;
|
||||||
checkFanout(pin, min_max, fanout, limit, slack);
|
float limit, slack;
|
||||||
if (min_slack_pin == 0
|
checkFanout(pin, min_max, fanout, limit, slack);
|
||||||
|| slack < min_slack) {
|
if (!fuzzyInf(slack)
|
||||||
min_slack_pin = pin;
|
&& (min_slack_pin == nullptr
|
||||||
min_slack = slack;
|
|| slack < min_slack)) {
|
||||||
|
min_slack_pin = pin;
|
||||||
|
min_slack = slack;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete pin_iter;
|
delete pin_iter;
|
||||||
|
|
|
||||||
|
|
@ -346,7 +346,7 @@ CheckSlewLimits::pinMinSlewLimitSlack(const Corner *corner,
|
||||||
{
|
{
|
||||||
init(min_max);
|
init(min_max);
|
||||||
const Network *network = sta_->network();
|
const Network *network = sta_->network();
|
||||||
Pin *min_slack_pin = 0;
|
Pin *min_slack_pin = nullptr;
|
||||||
float min_slack = MinMax::min()->initValue();
|
float min_slack = MinMax::min()->initValue();
|
||||||
LeafInstanceIterator *inst_iter = network->leafInstanceIterator();
|
LeafInstanceIterator *inst_iter = network->leafInstanceIterator();
|
||||||
while (inst_iter->hasNext()) {
|
while (inst_iter->hasNext()) {
|
||||||
|
|
@ -378,7 +378,7 @@ CheckSlewLimits::pinMinSlewLimitSlack(Instance *inst,
|
||||||
float limit, slack;
|
float limit, slack;
|
||||||
checkSlews(pin, corner, min_max, corner1, rf, slew, limit, slack);
|
checkSlews(pin, corner, min_max, corner1, rf, slew, limit, slack);
|
||||||
if (rf
|
if (rf
|
||||||
&& (min_slack_pin == 0
|
&& (min_slack_pin == nullptr
|
||||||
|| slack < min_slack)) {
|
|| slack < min_slack)) {
|
||||||
min_slack_pin = pin;
|
min_slack_pin = pin;
|
||||||
min_slack = slack;
|
min_slack = slack;
|
||||||
|
|
|
||||||
|
|
@ -389,10 +389,6 @@ proc_redirect report_check_types {
|
||||||
set min_pulse_width 1
|
set min_pulse_width 1
|
||||||
set min_period 1
|
set min_period 1
|
||||||
set max_skew 1
|
set max_skew 1
|
||||||
set max_fanout 0
|
|
||||||
set min_fanout 0
|
|
||||||
set max_capacitance 0
|
|
||||||
set min_capacitance 0
|
|
||||||
} else {
|
} else {
|
||||||
parse_key_args "report_check_types" args keys {} \
|
parse_key_args "report_check_types" args keys {} \
|
||||||
flags {-max_delay -min_delay -recovery -removal \
|
flags {-max_delay -min_delay -recovery -removal \
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue