mirror of
https://github.com/The-OpenROAD-Project/OpenSTA.git
synced 2026-08-31 10:04:55 +02:00
read_spef rm -incremental
Signed-off-by: James Cherry <[email protected]>
This commit is contained in:
@@ -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]
|
||||
}
|
||||
|
||||
+18
-29
@@ -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_;
|
||||
|
||||
Reference in New Issue
Block a user