report_checks -report_sigmas
This commit is contained in:
parent
8f5311c55c
commit
c31d3583bc
|
|
@ -115,6 +115,7 @@ ReportPath::ReportPath(StaState *sta) :
|
|||
StaState(sta),
|
||||
format_(ReportPathFormat::full),
|
||||
no_split_(false),
|
||||
report_sigmas_(false),
|
||||
start_end_pt_width_(80),
|
||||
plus_zero_(nullptr),
|
||||
minus_zero_(nullptr)
|
||||
|
|
@ -178,7 +179,7 @@ ReportPath::findField(const char *name)
|
|||
while (field_iter.hasNext()) {
|
||||
ReportField *field = field_iter.next();
|
||||
if (stringEq(name, field->name()))
|
||||
return field;
|
||||
return field;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
|
@ -258,6 +259,12 @@ ReportPath::setDigits(int digits)
|
|||
plus_zero_ = stringPrint("%.*f", digits_, 0.0);
|
||||
}
|
||||
|
||||
void
|
||||
ReportPath::setReportSigmas(bool report)
|
||||
{
|
||||
report_sigmas_ = report;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
void
|
||||
|
|
@ -3168,8 +3175,10 @@ ReportPath::reportFieldDelayMinus(Delay value,
|
|||
if (delayAsFloat(value) == field_blank_)
|
||||
reportFieldBlank(field, result);
|
||||
else {
|
||||
float mean_sigma = delayAsFloat(value, early_late, this);
|
||||
const char *str = units_->timeUnit()->asString(-mean_sigma, digits_);
|
||||
const char *str = report_sigmas_
|
||||
? delayAsString(-value, this, digits_)
|
||||
// : delayAsString(-value, early_late, this, digits_);
|
||||
: units_->timeUnit()->asString(-delayAsFloat(value, early_late, this), digits_);
|
||||
if (stringEq(str, plus_zero_))
|
||||
// Force leading minus sign.
|
||||
str = minus_zero_;
|
||||
|
|
@ -3186,7 +3195,9 @@ ReportPath::reportFieldDelay(Delay value,
|
|||
if (delayAsFloat(value) == field_blank_)
|
||||
reportFieldBlank(field, result);
|
||||
else {
|
||||
const char *str = delayAsString(value, early_late, this, digits_);
|
||||
const char *str = report_sigmas_
|
||||
? delayAsString(value, this, digits_)
|
||||
: delayAsString(value, early_late, this, digits_);
|
||||
if (stringEq(str, minus_zero_))
|
||||
// Filter "-0.00" fields.
|
||||
str = plus_zero_;
|
||||
|
|
|
|||
|
|
@ -48,6 +48,8 @@ public:
|
|||
int digits() const { return digits_; }
|
||||
void setDigits(int digits);
|
||||
void setNoSplit(bool no_split);
|
||||
bool reportSigmas() const { return report_sigmas_; }
|
||||
void setReportSigmas(bool report);
|
||||
ReportField *findField(const char *name);
|
||||
|
||||
// Header above reportPathEnd results.
|
||||
|
|
@ -520,6 +522,7 @@ protected:
|
|||
bool report_net_;
|
||||
bool no_split_;
|
||||
int digits_;
|
||||
bool report_sigmas_;
|
||||
|
||||
int start_end_pt_width_;
|
||||
|
||||
|
|
@ -573,7 +576,6 @@ protected:
|
|||
Unit *unit_;
|
||||
bool enabled_;
|
||||
char *blank_;
|
||||
ReportPath *report_path_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
|
|
|||
|
|
@ -2472,6 +2472,12 @@ Sta::setReportPathNoSplit(bool no_split)
|
|||
report_path_->setNoSplit(no_split);
|
||||
}
|
||||
|
||||
void
|
||||
Sta::setReportPathSigmas(bool report_sigmas)
|
||||
{
|
||||
report_path_->setReportSigmas(report_sigmas);
|
||||
}
|
||||
|
||||
void
|
||||
Sta::reportPathEnds(PathEndSeq *ends)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -870,6 +870,7 @@ public:
|
|||
ReportField *findReportPathField(const char *name);
|
||||
void setReportPathDigits(int digits);
|
||||
void setReportPathNoSplit(bool no_split);
|
||||
void setReportPathSigmas(bool report_sigmas);
|
||||
// Report clk skews for clks.
|
||||
void reportClkSkew(ClockSet *clks,
|
||||
const Corner *corner,
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ proc parse_report_path_options { cmd args_var default_format
|
|||
unset path_options
|
||||
}
|
||||
parse_key_args $cmd args path_options {-format -digits -fields} \
|
||||
path_options {-no_line_splits} $unknown_key_is_error
|
||||
path_options {-no_line_splits -report_sigmas} $unknown_key_is_error
|
||||
|
||||
set format $default_format
|
||||
if [info exists path_options(-format)] {
|
||||
|
|
@ -241,11 +241,23 @@ proc parse_report_path_options { cmd args_var default_format
|
|||
set digits $path_options(-digits)
|
||||
check_positive_integer "-digits" $digits
|
||||
}
|
||||
|
||||
set report_sigmas [info exists path_options(-report_sigmas)]
|
||||
set_report_path_sigmas $report_sigmas
|
||||
|
||||
set path_options(num_fmt) "%.${digits}f"
|
||||
set_report_path_digits $digits
|
||||
# Numberic field width expands with digits.
|
||||
set field_width [expr $digits + $report_path_field_width_extra]
|
||||
foreach field {total incr capacitance slew} {
|
||||
if { $report_sigmas } {
|
||||
set delay_field_width [expr $field_width * 3 + $report_path_field_width_extra]
|
||||
} else {
|
||||
set delay_field_width $field_width
|
||||
}
|
||||
foreach field {total incr} {
|
||||
set_report_path_field_width $field $delay_field_width
|
||||
}
|
||||
foreach field {capacitance slew} {
|
||||
set_report_path_field_width $field $field_width
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4317,6 +4317,12 @@ set_report_path_no_split(bool no_split)
|
|||
Sta::sta()->setReportPathNoSplit(no_split);
|
||||
}
|
||||
|
||||
void
|
||||
set_report_path_sigmas(bool report_sigmas)
|
||||
{
|
||||
Sta::sta()->setReportPathSigmas(report_sigmas);
|
||||
}
|
||||
|
||||
void
|
||||
delete_path_ref(PathRef *path)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue