report_checks -fields fanout does not report on net field
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
0a90cf6d0d
commit
112faf3ed7
|
|
@ -21,6 +21,9 @@ The read_liberty command latch inference (see OpenSTA.pdf) is now disabled by de
|
|||
The -no_latch_infer flag is deprecated.
|
||||
To enable latch inference, use the -infer_latches flag.
|
||||
|
||||
The report fanout and capacitance fields are now shown on output pin lines rather
|
||||
than net lines.
|
||||
|
||||
Release 2.3.3 2022/09/24
|
||||
-------------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -889,7 +889,8 @@ public:
|
|||
void setReportPathFields(bool report_input_pin,
|
||||
bool report_net,
|
||||
bool report_cap,
|
||||
bool report_slew);
|
||||
bool report_slew,
|
||||
bool report_fanout);
|
||||
ReportField *findReportPathField(const char *name);
|
||||
void setReportPathDigits(int digits);
|
||||
void setReportPathNoSplit(bool no_split);
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ ReportPath::ReportPath(StaState *sta) :
|
|||
{
|
||||
setDigits(2);
|
||||
makeFields();
|
||||
setReportFields(false, false, false, false);
|
||||
setReportFields(false, false, false, false, false);
|
||||
}
|
||||
|
||||
ReportPath::~ReportPath()
|
||||
|
|
@ -224,7 +224,8 @@ void
|
|||
ReportPath::setReportFields(bool report_input_pin,
|
||||
bool report_net,
|
||||
bool report_cap,
|
||||
bool report_slew)
|
||||
bool report_slew,
|
||||
bool report_fanout)
|
||||
{
|
||||
report_input_pin_ = report_input_pin;
|
||||
report_net_ = report_net;
|
||||
|
|
@ -232,6 +233,7 @@ ReportPath::setReportFields(bool report_input_pin,
|
|||
field_fanout_->setEnabled(report_net_);
|
||||
field_capacitance_->setEnabled(report_cap);
|
||||
field_slew_->setEnabled(report_slew);
|
||||
field_fanout_->setEnabled(report_fanout);
|
||||
// for debug
|
||||
field_case_->setEnabled(false);
|
||||
}
|
||||
|
|
@ -2648,13 +2650,16 @@ ReportPath::reportPath5(const Path *path,
|
|||
&& !prev_arc->role()->isWire())) {
|
||||
bool is_driver = network_->isDriver(pin);
|
||||
float cap = field_blank_;
|
||||
float fanout = field_blank_;
|
||||
// Don't show capacitance field for input pins.
|
||||
if (is_driver && field_capacitance_->enabled())
|
||||
cap = loadCap(pin, rf, dcalc_ap);
|
||||
// Don't show fanout field for input pins.
|
||||
if (is_driver && field_fanout_->enabled())
|
||||
fanout = drvrFanout(vertex, dcalc_ap->corner(), min_max);
|
||||
auto what = descriptionField(vertex);
|
||||
if (report_net_ && is_driver) {
|
||||
// Capacitance field is reported on the net line.
|
||||
reportLine(what.c_str(), field_blank_, slew, field_blank_,
|
||||
reportLine(what.c_str(), cap, slew, fanout,
|
||||
incr, time, false, min_max, rf, line_case);
|
||||
string what2;
|
||||
if (network_->isTopLevelPort(pin)) {
|
||||
|
|
@ -2671,13 +2676,12 @@ ReportPath::reportPath5(const Path *path,
|
|||
else
|
||||
what2 = "(unconnected)";
|
||||
}
|
||||
float fanout = drvrFanout(vertex, dcalc_ap->corner(), min_max);
|
||||
reportLine(what2.c_str(), cap, field_blank_, fanout,
|
||||
reportLine(what2.c_str(), field_blank_, field_blank_, field_blank_,
|
||||
field_blank_, field_blank_, false, min_max,
|
||||
nullptr, line_case);
|
||||
}
|
||||
else
|
||||
reportLine(what.c_str(), cap, slew, field_blank_,
|
||||
reportLine(what.c_str(), cap, slew, fanout,
|
||||
incr, time, false, min_max, rf, line_case);
|
||||
prev_time = time;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,8 @@ public:
|
|||
void setReportFields(bool report_input_pin,
|
||||
bool report_net,
|
||||
bool report_cap,
|
||||
bool report_slew);
|
||||
bool report_slew,
|
||||
bool report_fanout);
|
||||
int digits() const { return digits_; }
|
||||
void setDigits(int digits);
|
||||
void setNoSplit(bool no_split);
|
||||
|
|
|
|||
|
|
@ -2506,10 +2506,11 @@ void
|
|||
Sta::setReportPathFields(bool report_input_pin,
|
||||
bool report_net,
|
||||
bool report_cap,
|
||||
bool report_slew)
|
||||
bool report_slew,
|
||||
bool report_fanout)
|
||||
{
|
||||
report_path_->setReportFields(report_input_pin, report_net, report_cap,
|
||||
report_slew);
|
||||
report_slew, report_fanout);
|
||||
}
|
||||
|
||||
ReportField *
|
||||
|
|
|
|||
|
|
@ -898,17 +898,20 @@ proc parse_report_path_options { cmd args_var default_format
|
|||
set report_input_pin [expr [lsearch $fields "input*"] != -1]
|
||||
set report_cap [expr [lsearch $fields "cap*"] != -1]
|
||||
set report_net [expr [lsearch $fields "net*"] != -1]
|
||||
# transition_time - compatibility 06/24/2019
|
||||
set report_slew [expr [lsearch $fields "slew*"] != -1 \
|
||||
|| [lsearch $fields "trans*"] != -1]
|
||||
set report_slew [expr [lsearch $fields "slew*"] != -1]
|
||||
set report_fanout [expr [lsearch $fields "fanout*"] != -1]
|
||||
if { [expr [lsearch $fields "trans*"] != -1] } {
|
||||
sta_warn 1640 "The transition_time field is deprecated. Use slew instead."
|
||||
}
|
||||
} else {
|
||||
set report_input_pin 0
|
||||
set report_cap 0
|
||||
set report_net 0
|
||||
set report_slew 0
|
||||
set report_fanout 0
|
||||
}
|
||||
set_report_path_fields $report_input_pin $report_net \
|
||||
$report_cap $report_slew
|
||||
$report_cap $report_slew $report_fanout
|
||||
|
||||
set_report_path_no_split [info exists path_options(-no_line_splits)]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4343,12 +4343,14 @@ void
|
|||
set_report_path_fields(bool report_input_pin,
|
||||
bool report_net,
|
||||
bool report_cap,
|
||||
bool report_slew)
|
||||
bool report_slew,
|
||||
bool report_fanout)
|
||||
{
|
||||
Sta::sta()->setReportPathFields(report_input_pin,
|
||||
report_net,
|
||||
report_cap,
|
||||
report_slew);
|
||||
report_slew,
|
||||
report_fanout);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Reference in New Issue