read_spef rm -incremental

Signed-off-by: James Cherry <[email protected]>
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
+3 -4
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
+5 -5
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]
}
+18 -29
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 {
-1
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,
-2
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_;