read_spef rm -incremental
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
21bbbcfee9
commit
daef0031e2
BIN
doc/OpenSTA.odt
BIN
doc/OpenSTA.odt
Binary file not shown.
BIN
doc/OpenSTA.pdf
BIN
doc/OpenSTA.pdf
Binary file not shown.
|
|
@ -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,
|
||||
|
|
|
|||
27
messages.txt
27
messages.txt
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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_;
|
||||
|
|
|
|||
|
|
@ -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_);
|
||||
|
|
|
|||
Loading…
Reference in New Issue