From 6b4f2cc1305c0b8a761ad3a02284a17f8efd1017 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Mon, 8 Jun 2020 17:16:15 -0700 Subject: [PATCH] remove set_max_transition pin support --- doc/OpenSTA.odt | Bin 76409 -> 76405 bytes include/sta/Sdc.hh | 10 ------ include/sta/Sta.hh | 3 -- sdc/Sdc.cc | 34 -------------------- sdc/WriteSdc.cc | 18 ----------- search/CheckSlewLimits.cc | 63 ++++++++++++++++---------------------- search/Sta.cc | 8 ----- tcl/Sdc.tcl | 9 ++---- tcl/StaTcl.i | 9 ------ 9 files changed, 29 insertions(+), 125 deletions(-) diff --git a/doc/OpenSTA.odt b/doc/OpenSTA.odt index 92407f08f6f1a8698ea0eb3047570b8edd8293ff..f1db19de4ac2a8bde5d008b3d53a6230c54c002e 100644 GIT binary patch delta 21969 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%0A+CP$f}5Wi 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 delta 22012 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%0D}8+73O88mF||M+kQkJ39&GbO~3$y54-#o!e+! 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 - sort(pins, PinPathNameLess(network_)); - ConstPinSeq::Iterator pin_iter(pins); - while (pin_iter.hasNext()) { - const Pin *pin = pin_iter.next(); - float slew; - bool exists; - sdc_->slewLimit(pin, min_max, slew, exists); - if (exists) { - fprintf(stream_, "set_max_transition "); - writeTime(slew); - fprintf(stream_, " "); - writeGetPin(pin, false); - fprintf(stream_, "\n"); - } - } - writeClkSlewLimits(); } diff --git a/search/CheckSlewLimits.cc b/search/CheckSlewLimits.cc index 0e505158..2975bc53 100644 --- a/search/CheckSlewLimits.cc +++ b/search/CheckSlewLimits.cc @@ -181,6 +181,10 @@ CheckSlewLimits::findLimit(const Pin *pin, { exists = false; if (!sta_->graphDelayCalc()->isIdealClk(vertex)) { + // Default to top ("design") limit. + exists = top_limit_exists_; + limit = top_limit_; + const Network *network = sta_->network(); Sdc *sdc = sta_->sdc(); bool is_clk = sta_->search()->isClock(vertex); @@ -203,24 +207,21 @@ CheckSlewLimits::findLimit(const Pin *pin, exists = true; } } - if (!exists) { - // Default to top ("design") limit. - exists = top_limit_exists_; - limit = top_limit_; - if (network->isTopLevelPort(pin)) { - Port *port = network->port(pin); - sdc->slewLimit(port, min_max, limit1, exists1); - // Use the tightest limit. - if (exists1 - && (!exists - || min_max->compare(limit, limit1))) { - limit = limit1; - exists = true; - } + if (network->isTopLevelPort(pin)) { + Port *port = network->port(pin); + sdc->slewLimit(port, min_max, limit1, exists1); + // Use the tightest limit. + if (exists1 + && (!exists + || min_max->compare(limit, limit1))) { + limit = limit1; + exists = true; } - else { - sdc->slewLimit(pin, min_max, - limit1, exists1); + } + else { + LibertyPort *port = network->libertyPort(pin); + if (port) { + port->slewLimit(min_max, limit1, exists1); // Use the tightest limit. if (exists1 && (!exists @@ -228,26 +229,14 @@ CheckSlewLimits::findLimit(const Pin *pin, limit = limit1; exists = true; } - LibertyPort *port = network->libertyPort(pin); - if (port) { - port->slewLimit(min_max, limit1, exists1); - // Use the tightest limit. - if (exists1) { - if (!exists - || min_max->compare(limit, limit1)) { - limit = limit1; - exists = true; - } - } - else if (port->direction()->isAnyOutput() - && min_max == MinMax::max()) { - port->libertyLibrary()->defaultMaxSlew(limit1, exists1); - if (exists1 - && (!exists - || min_max->compare(limit, limit1))) { - limit = limit1; - exists = true; - } + if (port->direction()->isAnyOutput() + && min_max == MinMax::max()) { + port->libertyLibrary()->defaultMaxSlew(limit1, exists1); + if (exists1 + && (!exists + || min_max->compare(limit, limit1))) { + limit = limit1; + exists = true; } } } diff --git a/search/Sta.cc b/search/Sta.cc index 3551f627..ef93de5d 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -998,14 +998,6 @@ Sta::setSlewLimit(Port *port, sdc_->setSlewLimit(port, min_max, slew); } -void -Sta::setSlewLimit(Pin *pin, - const MinMax *min_max, - float slew) -{ - sdc_->setSlewLimit(pin, min_max, slew); -} - void Sta::setSlewLimit(Cell *cell, const MinMax *min_max, diff --git a/tcl/Sdc.tcl b/tcl/Sdc.tcl index 8ead4e8c..f2ae6f89 100644 --- a/tcl/Sdc.tcl +++ b/tcl/Sdc.tcl @@ -2600,7 +2600,7 @@ proc set_max_transition { args } { set slew [time_ui_sta $slew] set objects [lindex $args 1] - parse_clk_cell_port_pin_args $objects clks cells ports pins + parse_clk_cell_port_args $objects clks cells ports set tr [parse_rise_fall_flags flags] @@ -2617,12 +2617,12 @@ proc set_max_transition { args } { lappend path_types "data" } - if { ($ports != {} || $pins != {} || $cells != {}) \ + if { ($ports != {} || $cells != {}) \ && ([info exists flags(-clock_path)] \ || [info exists flags(-data_path)] || [info exists flags(-rise)] || [info exists flags(-fall)]) } { - sta_warn "-data_path, -clock_path, -rise, -fall ignored for ports, pins and designs." + sta_warn "-data_path, -clock_path, -rise, -fall ignored for ports and designs." } # -clock_path/-data_path and transition only apply to clock objects. @@ -2637,9 +2637,6 @@ proc set_max_transition { args } { foreach port $ports { set_slew_limit_port $port "max" $slew } - foreach pin $pins { - set_slew_limit_pin $pin "max" $slew - } } ################################################################ diff --git a/tcl/StaTcl.i b/tcl/StaTcl.i index ffff36a5..444d27ac 100644 --- a/tcl/StaTcl.i +++ b/tcl/StaTcl.i @@ -3516,15 +3516,6 @@ set_slew_limit_port(Port *port, Sta::sta()->setSlewLimit(port, min_max, slew); } -void -set_slew_limit_pin(Pin *pin, - const MinMax *min_max, - float slew) -{ - cmdLinkedNetwork(); - Sta::sta()->setSlewLimit(pin, min_max, slew); -} - void set_slew_limit_cell(Cell *cell, const MinMax *min_max,