read_spef rm -incremental

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2022-10-05 21:46:05 -07:00
parent 21bbbcfee9
commit daef0031e2
10 changed files with 44 additions and 58 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1113,7 +1113,6 @@ public:
Instance *instance,
const Corner *corner,
const MinMaxAll *min_max,
bool increment,
bool pin_cap_included,
bool keep_coupling_caps,
float coupling_cap_factor,

View File

@ -1,19 +1,20 @@
Warning: 705 duplicated
0001 DmpCeff.cc:1597 cell %s delay model not supported on SPF parasitics by DMP delay calculator
0002 Liberty.cc:748 cell %s/%s port %s not found in cell %s/%s.
0003 Liberty.cc:774 cell %s/%s %s -> %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

View File

@ -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

View File

@ -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]
}

View File

@ -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 {

View File

@ -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,

View File

@ -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_;

View File

@ -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_);