From daef0031e28c6d8bb3a554468093526f28a8d3e5 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 5 Oct 2022 21:46:05 -0700 Subject: [PATCH] read_spef rm -incremental Signed-off-by: James Cherry --- doc/OpenSTA.odt | Bin 78677 -> 78621 bytes doc/OpenSTA.pdf | Bin 207820 -> 207808 bytes include/sta/Sta.hh | 1 - messages.txt | 27 ++++++++++++--------- parasitics/Parasitics.i | 7 +++--- parasitics/Parasitics.tcl | 10 ++++---- parasitics/SpefReader.cc | 47 ++++++++++++++---------------------- parasitics/SpefReader.hh | 1 - parasitics/SpefReaderPvt.hh | 2 -- search/Sta.cc | 7 +++--- 10 files changed, 44 insertions(+), 58 deletions(-) diff --git a/doc/OpenSTA.odt b/doc/OpenSTA.odt index 73934c94c4dde0ba193be5d5562f6a4c94335304..29e9538a988c30565dc5038275ef33d021887359 100644 GIT binary patch delta 31785 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�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 delta 31762 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 Q^d~lO5|}CG&-#J=AENy`sQ>@~ diff --git a/doc/OpenSTA.pdf b/doc/OpenSTA.pdf index 452dd9f941f1e26dd7bcd1e09fa996a9f6b1fee1..24beb4e93ff261bc18fc46fed84ca34c5276a79b 100644 GIT binary patch delta 15525 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 LoSZUhvZVhHGg$s| delta 15583 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 %s timing group %s not found in cell %s/%s. -0004 Liberty.cc:1638 cell %s/%s %s -> %s latch enable %s_edge is inconsistent with %s -> %s setup_%s check. -0005 Liberty.cc:1652 cell %s/%s %s -> %s latch enable %s_edge is inconsistent with latch group enable function positive sense. -0006 Liberty.cc:1660 cell %s/%s %s -> %s latch enable %s_edge is inconsistent with latch group enable function negative sense. +0004 Liberty.cc:1680 cell %s/%s %s -> %s latch enable %s_edge is inconsistent with %s -> %s setup_%s check. +0005 Liberty.cc:1694 cell %s/%s %s -> %s latch enable %s_edge is inconsistent with latch group enable function positive sense. +0006 Liberty.cc:1702 cell %s/%s %s -> %s latch enable %s_edge is inconsistent with latch group enable function negative sense. 0007 LibertyExpr.cc:78 %s references unknown port %s. -0008 ConcreteNetwork.cc:1855 cell type %s can not be linked. +0008 ConcreteNetwork.cc:1857 cell type %s can not be linked. 0009 CycleAccting.cc:87 No common period was found between clocks %s and %s. 0010 Genclks.cc:287 no master clock found for generated clock %s. 0011 Genclks.cc:329 generated clock %s is in the fanout of multiple clocks. 0013 Genclks.cc:987 generated clock %s source pin %s missing paths from master clock %s. 0015 Sim.cc:871 propagated logic value %c differs from constraint value of %c on pin %s. 0016 LibertyReader.cc:996 default_max_fanout is 0.0. -0017 Sta.cc:2083 '%s' is not a valid endpoint. -0018 Sta.cc:2007 '%s' is not a valid start point. +0017 Sta.cc:2094 '%s' is not a valid endpoint. +0018 Sta.cc:2018 '%s' is not a valid start point. 0021 SpefParse.yy:805 %d is not positive. 0022 SpefParse.yy:814 %.4f is not positive. 0023 SpefParse.yy:820 %.4f is not positive. @@ -161,7 +162,7 @@ 0166 LibertyReader.cc:2290 timing group from output port. 0167 LibertyReader.cc:2308 timing group from output port. 0168 LibertyReader.cc:2323 timing group from output port. -0179 SpefReader.cc:728 %s. +0179 SpefReader.cc:725 %s. 0190 VerilogReader.cc:1728 %s is not a verilog module. 0191 VerilogReader.cc:1733 %s is not a verilog module. 0201 StaTcl.i:129 no network has been linked. @@ -192,10 +193,10 @@ 0261 Search.cc:2869 max tag index exceeded 0262 Search.cc:3561 unexpected filter path 0263 Search.cc:3729 tns incr existing vertex -0264 Sta.cc:4132 corresponding timing arc set not found in equiv cells +0264 Sta.cc:4150 corresponding timing arc set not found in equiv cells 0265 TagGroup.cc:297 tag group missing tag -0266 Sta.cc:2080 '%s' is not a valid endpoint. -0267 Sta.cc:2004 '%s' is not a valid start point. +0266 Sta.cc:2091 '%s' is not a valid endpoint. +0267 Sta.cc:2015 '%s' is not a valid start point. 0272 StaTcl.i:4168 unknown common clk pessimism mode. 0273 StaTcl.i:5187 unknown clock sense 0300 Util.tcl:218 no commands match '$pattern'. @@ -294,8 +295,8 @@ 0428 Sta.tcl:861 set_assigned_transition transition is not a float. 0430 Sdf.tcl:46 -cond_use min_max cannot be used with analysis type single. 0432 Sdf.tcl:157 SDF -divider must be / or . -0433 Parasitics.tcl:47 path instance '$path' not found. -0434 Parasitics.tcl:65 -reduce_to must be pi_elmore or pi_pole_residue2. +0433 Parasitics.tcl:45 path instance '$path' not found. +0434 Parasitics.tcl:62 -reduce_to must be pi_elmore or pi_pole_residue2. 0435 DelayCalc.tcl:119 delay calculator $alg not found. 0436 Variables.tcl:45 sta_report_default_digits must be a positive integer. 0437 Variables.tcl:70 sta_crpr_mode must be pin or transition. @@ -485,3 +486,5 @@ 0702 LibertyWriter.cc:436 3 axis table models not supported. 0703 LibertyWriter.cc:576 %s/%s/%s timing arc type %s not supported. 0704 LibertyWriter.cc:289 %s/%s bundled ports not supported. +0705 LumpedCapDelayCalc.cc:168 gate delay input variable is NaN +0705 Liberty.cc:793 Liberty cell %s/%s for corner %s/%s not found diff --git a/parasitics/Parasitics.i b/parasitics/Parasitics.i index 6d178a06..2f923f86 100644 --- a/parasitics/Parasitics.i +++ b/parasitics/Parasitics.i @@ -38,7 +38,6 @@ read_spef_cmd(const char *filename, Instance *instance, const Corner *corner, const MinMaxAll *min_max, - bool increment, bool pin_cap_included, bool keep_coupling_caps, float coupling_cap_factor, @@ -48,9 +47,9 @@ read_spef_cmd(const char *filename, { cmdLinkedNetwork(); return Sta::sta()->readSpef(filename, instance, corner, min_max, - increment, pin_cap_included, - keep_coupling_caps, coupling_cap_factor, - reduce_to, delete_after_reduce, quiet); + pin_cap_included, keep_coupling_caps, + coupling_cap_factor, reduce_to, + delete_after_reduce, quiet); } void diff --git a/parasitics/Parasitics.tcl b/parasitics/Parasitics.tcl index b316d578..0022f371 100644 --- a/parasitics/Parasitics.tcl +++ b/parasitics/Parasitics.tcl @@ -21,7 +21,6 @@ define_cmd_args "read_spef" \ [-min]\ [-max]\ [-path path]\ - [-increment]\ [-pin_cap_included]\ [-keep_capacitive_coupling]\ [-coupling_reduction_factor factor]\ @@ -34,8 +33,7 @@ define_cmd_args "read_spef" \ proc_redirect read_spef { parse_key_args "read_spef" args \ keys {-path -coupling_reduction_factor -reduce_to -corner} \ - flags {-min -max -increment -pin_cap_included \ - -keep_capacitive_coupling \ + flags {-min -max -increment -pin_cap_included -keep_capacitive_coupling \ -delete_after_reduce -quiet -save} check_argc_eq1 "report_spef" $args @@ -49,7 +47,6 @@ proc_redirect read_spef { } set corner [parse_corner_or_all keys] set min_max [parse_min_max_all_flags flags] - set increment [info exists flags(-increment)] set coupling_reduction_factor 1.0 if [info exists keys(-coupling_reduction_factor)] { set coupling_reduction_factor $keys(-coupling_reduction_factor) @@ -69,7 +66,10 @@ proc_redirect read_spef { set quiet [info exists flags(-quiet)] set save [info exists flags(-save)] set filename [file nativename [lindex $args 0]] - return [read_spef_cmd $filename $instance $corner $min_max $increment \ + if { [info exists flags(-increment)] } { + sta_warn 706 "read_spef -increment is deprecated." + } + return [read_spef_cmd $filename $instance $corner $min_max \ $pin_cap_included $keep_coupling_caps $coupling_reduction_factor \ $reduce_to $delete_after_reduce $quiet] } diff --git a/parasitics/SpefReader.cc b/parasitics/SpefReader.cc index 7143f0cf..688a5054 100644 --- a/parasitics/SpefReader.cc +++ b/parasitics/SpefReader.cc @@ -45,7 +45,6 @@ bool readSpefFile(const char *filename, Instance *instance, ParasiticAnalysisPt *ap, - bool increment, bool pin_cap_included, bool keep_coupling_caps, float coupling_cap_factor, @@ -63,7 +62,7 @@ readSpefFile(const char *filename, // Use zlib to uncompress gzip'd files automagically. gzFile stream = gzopen(filename, "rb"); if (stream) { - SpefReader reader(filename, stream, instance, ap, increment, + SpefReader reader(filename, stream, instance, ap, pin_cap_included, keep_coupling_caps, coupling_cap_factor, reduce_to, delete_after_reduce, op_cond, corner, cnst_min_max, quiet, report, network, parasitics); @@ -83,7 +82,6 @@ SpefReader::SpefReader(const char *filename, gzFile stream, Instance *instance, ParasiticAnalysisPt *ap, - bool increment, bool pin_cap_included, bool keep_coupling_caps, float coupling_cap_factor, @@ -99,7 +97,6 @@ SpefReader::SpefReader(const char *filename, filename_(filename), instance_(instance), ap_(ap), - increment_(increment), pin_cap_included_(pin_cap_included), keep_coupling_caps_(keep_coupling_caps), reduce_to_(reduce_to), @@ -391,7 +388,7 @@ void SpefReader::rspfBegin(Net *net, SpefTriple *total_cap) { - if (net && !increment_) + if (net) parasitics_->deleteParasitics(net, ap_); // Net total capacitance is ignored. delete total_cap; @@ -407,19 +404,15 @@ SpefReader::rspfDrvrBegin(Pin *drvr_pin, SpefRspfPi *pi) { if (drvr_pin) { - // Incremental parasitics do not overwrite existing parasitics. - if (!(increment_ && - parasitics_->findPiElmore(drvr_pin, RiseFall::rise(), ap_))) { - float c2 = pi->c2()->value(triple_index_) * cap_scale_; - float rpi = pi->r1()->value(triple_index_) * res_scale_; - float c1 = pi->c1()->value(triple_index_) * cap_scale_; - // Delete pi model and elmore delays. - parasitics_->deleteParasitics(drvr_pin, ap_); - // Only one parasitic, save it under rise transition. - parasitic_ = parasitics_->makePiElmore(drvr_pin, - RiseFall::rise(), - ap_, c2, rpi, c1); - } + float c2 = pi->c2()->value(triple_index_) * cap_scale_; + float rpi = pi->r1()->value(triple_index_) * res_scale_; + float c1 = pi->c1()->value(triple_index_) * cap_scale_; + // Delete pi model and elmore delays. + parasitics_->deleteParasitics(drvr_pin, ap_); + // Only one parasitic, save it under rise transition. + parasitic_ = parasitics_->makePiElmore(drvr_pin, + RiseFall::rise(), + ap_, c2, rpi, c1); } delete pi; } @@ -447,8 +440,12 @@ SpefReader::dspfBegin(Net *net, SpefTriple *total_cap) { if (net) { - Net *parasitic_owner = net; - if (!network_->isTopInstance(instance_)) { + if (network_->isTopInstance(instance_)) { + parasitics_->deleteReducedParasitics(net, ap_); + parasitic_ = parasitics_->makeParasiticNetwork(net, pin_cap_included_, ap_); + } + else { + Net *parasitic_owner = net; NetTermIterator *term_iter = network_->termIterator(net); if (term_iter->hasNext()) { Term *term = term_iter->next(); @@ -456,19 +453,11 @@ SpefReader::dspfBegin(Net *net, parasitic_owner = network_->net(hpin); } delete term_iter; - } - // Incremental parasitics do not overwrite existing parasitics. - if (increment_) { parasitic_ = parasitics_->findParasiticNetwork(parasitic_owner, ap_); - if( parasitic_ == nullptr) + if (parasitic_ == nullptr) parasitic_ = parasitics_->makeParasiticNetwork(parasitic_owner, pin_cap_included_, ap_); } - else { - parasitics_->deleteReducedParasitics(parasitic_owner, ap_); - parasitic_ = parasitics_->makeParasiticNetwork(parasitic_owner, - pin_cap_included_, ap_); - } net_ = net; } else { diff --git a/parasitics/SpefReader.hh b/parasitics/SpefReader.hh index 06d37b61..e3191382 100644 --- a/parasitics/SpefReader.hh +++ b/parasitics/SpefReader.hh @@ -39,7 +39,6 @@ bool readSpefFile(const char *filename, Instance *instance, ParasiticAnalysisPt *ap, - bool increment, bool pin_cap_included, bool keep_coupling_caps, float coupling_cap_factor, diff --git a/parasitics/SpefReaderPvt.hh b/parasitics/SpefReaderPvt.hh index 66697db7..81c34103 100644 --- a/parasitics/SpefReaderPvt.hh +++ b/parasitics/SpefReaderPvt.hh @@ -49,7 +49,6 @@ public: gzFile stream, Instance *instance, ParasiticAnalysisPt *ap, - bool increment, bool pin_cap_included, bool keep_coupling_caps, float coupling_cap_factor, @@ -143,7 +142,6 @@ private: const char *filename_; Instance *instance_; const ParasiticAnalysisPt *ap_; - bool increment_; bool pin_cap_included_; bool keep_coupling_caps_; ReducedParasiticType reduce_to_; diff --git a/search/Sta.cc b/search/Sta.cc index 96d6f83c..f8ed0584 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -3827,7 +3827,6 @@ Sta::readSpef(const char *filename, Instance *instance, const Corner *corner, const MinMaxAll *min_max, - bool increment, bool pin_cap_included, bool keep_coupling_caps, float coupling_cap_factor, @@ -3845,9 +3844,9 @@ Sta::readSpef(const char *filename, ParasiticAnalysisPt *ap = corner->findParasiticAnalysisPt(cnst_min_max); const OperatingConditions *op_cond = sdc_->operatingConditions(cnst_min_max); - bool success = readSpefFile(filename, instance, ap, increment, - pin_cap_included, - keep_coupling_caps, coupling_cap_factor, + bool success = readSpefFile(filename, instance, ap, + pin_cap_included, keep_coupling_caps, + coupling_cap_factor, reduce_to, delete_after_reduce, op_cond, corner, cnst_min_max, quiet, report_, network_, parasitics_);