renumber error/warn messages
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
099920fc8e
commit
3b721ba40a
|
|
@ -116,7 +116,7 @@ proc set_delay_calculator { alg } {
|
|||
if { [is_delay_calc_name $alg] } {
|
||||
set_delay_calculator_cmd $alg
|
||||
} else {
|
||||
sta_error 435 "delay calculator $alg not found."
|
||||
sta_error 180 "delay calculator $alg not found."
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -145,38 +145,38 @@ proc set_assigned_delay_cmd { cmd cmd_args } {
|
|||
if [info exists keys(-from)] {
|
||||
set from_pins [get_port_pins_error "from_pins" $keys(-from)]
|
||||
} else {
|
||||
sta_error 442 "$cmd missing -from argument."
|
||||
sta_error 181 "$cmd missing -from argument."
|
||||
}
|
||||
if [info exists keys(-to)] {
|
||||
set to_pins [get_port_pins_error "to_pins" $keys(-to)]
|
||||
} else {
|
||||
sta_error 443 "$cmd missing -to argument."
|
||||
sta_error 182 "$cmd missing -to argument."
|
||||
}
|
||||
|
||||
set delay [lindex $cmd_args 0]
|
||||
if {![string is double $delay]} {
|
||||
sta_error 444 "$cmd delay is not a float."
|
||||
sta_error 183 "$cmd delay is not a float."
|
||||
}
|
||||
set delay [time_ui_sta $delay]
|
||||
|
||||
if {[info exists flags(-cell)] && [info exists flags(-net)]} {
|
||||
sta_error 445 "set_annotated_delay -cell and -net options are mutually excluive."
|
||||
sta_error 184 "set_annotated_delay -cell and -net options are mutually excluive."
|
||||
} elseif {[info exists flags(-cell)]} {
|
||||
if { $from_pins != {} } {
|
||||
set inst [[lindex $from_pins 0] instance]
|
||||
foreach pin $from_pins {
|
||||
if {[$pin instance] != $inst} {
|
||||
sta_error 446 "$cmd pin [get_full_name $pin] is not attached to instance [get_full_name $inst]."
|
||||
sta_error 185 "$cmd pin [get_full_name $pin] is not attached to instance [get_full_name $inst]."
|
||||
}
|
||||
}
|
||||
foreach pin $to_pins {
|
||||
if {[$pin instance] != $inst} {
|
||||
sta_error 447 "$cmd pin [get_full_name $pin] is not attached to instance [get_full_name $inst]"
|
||||
sta_error 186 "$cmd pin [get_full_name $pin] is not attached to instance [get_full_name $inst]"
|
||||
}
|
||||
}
|
||||
}
|
||||
} elseif {![info exists flags(-net)]} {
|
||||
sta_error 448 "$cmd -cell or -net required."
|
||||
sta_error 187 "$cmd -cell or -net required."
|
||||
}
|
||||
foreach from_pin $from_pins {
|
||||
set from_vertices [$from_pin vertices]
|
||||
|
|
@ -240,7 +240,7 @@ proc set_assigned_check_cmd { cmd cmd_args } {
|
|||
if { [info exists keys(-from)] } {
|
||||
set from_pins [get_port_pins_error "from_pins" $keys(-from)]
|
||||
} else {
|
||||
sta_error 449 "$cmd missing -from argument."
|
||||
sta_error 188 "$cmd missing -from argument."
|
||||
}
|
||||
set from_rf "rise_fall"
|
||||
if { [info exists keys(-clock)] } {
|
||||
|
|
@ -249,14 +249,14 @@ proc set_assigned_check_cmd { cmd cmd_args } {
|
|||
|| $clk_arg eq "fall" } {
|
||||
set from_rf $clk_arg
|
||||
} else {
|
||||
sta_error 450 "$cmd -clock must be rise or fall."
|
||||
sta_error 189 "$cmd -clock must be rise or fall."
|
||||
}
|
||||
}
|
||||
|
||||
if { [info exists keys(-to)] } {
|
||||
set to_pins [get_port_pins_error "to_pins" $keys(-to)]
|
||||
} else {
|
||||
sta_error 451 "$cmd missing -to argument."
|
||||
sta_error 190 "$cmd missing -to argument."
|
||||
}
|
||||
set to_rf [parse_rise_fall_flags flags]
|
||||
set corner [parse_corner keys]
|
||||
|
|
@ -271,7 +271,7 @@ proc set_assigned_check_cmd { cmd cmd_args } {
|
|||
} elseif { [info exists flags(-removal)] } {
|
||||
set role "removal"
|
||||
} else {
|
||||
sta_error 452 "$cmd missing -setup|-hold|-recovery|-removal check type.."
|
||||
sta_error 191 "$cmd missing -setup|-hold|-recovery|-removal check type.."
|
||||
}
|
||||
set cond ""
|
||||
if { [info exists key(-cond)] } {
|
||||
|
|
@ -279,7 +279,7 @@ proc set_assigned_check_cmd { cmd cmd_args } {
|
|||
}
|
||||
set check_value [lindex $cmd_args 0]
|
||||
if { ![string is double $check_value] } {
|
||||
sta_error 453 "$cmd check_value is not a float."
|
||||
sta_error 192 "$cmd check_value is not a float."
|
||||
}
|
||||
set check_value [time_ui_sta $check_value]
|
||||
|
||||
|
|
@ -347,7 +347,7 @@ proc set_assigned_transition { args } {
|
|||
|
||||
set slew [lindex $args 0]
|
||||
if {![string is double $slew]} {
|
||||
sta_error 428 "set_assigned_transition transition is not a float."
|
||||
sta_error 210 "set_assigned_transition transition is not a float."
|
||||
}
|
||||
set slew [time_ui_sta $slew]
|
||||
set pins [get_port_pins_error "pins" [lindex $args 1]]
|
||||
|
|
|
|||
|
|
@ -1551,7 +1551,7 @@ DmpCeffDelayCalc::gateDelay(const Pin *drvr_pin,
|
|||
float c2, rpi, c1;
|
||||
parasitics_->piModel(parasitic, c2, rpi, c1);
|
||||
if (isnan(c2) || isnan(c1) || isnan(rpi))
|
||||
report_->error(618, "parasitic Pi model has NaNs.");
|
||||
report_->error(1040, "parasitic Pi model has NaNs.");
|
||||
setCeffAlgorithm(drvr_library, drvr_cell, pinPvt(drvr_pin, dcalc_ap),
|
||||
table_model, rf, in_slew1, c2, rpi, c1);
|
||||
double gate_delay, drvr_slew;
|
||||
|
|
@ -1579,7 +1579,7 @@ DmpCeffDelayCalc::gateDelay(const Pin *drvr_pin,
|
|||
if (parasitic
|
||||
&& !unsuppored_model_warned_) {
|
||||
unsuppored_model_warned_ = true;
|
||||
report_->warn(1, "cell %s delay model not supported on SPF parasitics by DMP delay calculator",
|
||||
report_->warn(1041, "cell %s delay model not supported on SPF parasitics by DMP delay calculator",
|
||||
drvr_cell->name());
|
||||
}
|
||||
return dcalc_result;
|
||||
|
|
|
|||
|
|
@ -477,7 +477,7 @@ GraphDelayCalc::findPortIndex(const LibertyCell *cell,
|
|||
return index;
|
||||
index++;
|
||||
}
|
||||
report_->critical(207, "port not found in cell");
|
||||
report_->critical(1100, "port not found in cell");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ LumpedCapDelayCalc::gateDelay(const Pin *drvr_pin,
|
|||
float in_slew1 = delayAsFloat(in_slew);
|
||||
// NaNs cause seg faults during table lookup.
|
||||
if (isnan(load_cap) || isnan(delayAsFloat(in_slew)))
|
||||
report_->error(710, "gate delay input variable is NaN");
|
||||
report_->error(1350, "gate delay input variable is NaN");
|
||||
model->gateDelay(pinPvt(drvr_pin, dcalc_ap), in_slew1, load_cap, pocv_enabled_,
|
||||
gate_delay, drvr_slew);
|
||||
return makeResult(drvr_library, rf, gate_delay, drvr_slew, load_pin_index_map);
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ delayAsFloat(const Delay &delay,
|
|||
else if (early_late == EarlyLate::late())
|
||||
return delay.mean() + delay.sigma() * sta->sigmaFactor();
|
||||
else
|
||||
sta->report()->critical(594, "unknown early/late value.");
|
||||
sta->report()->critical(1020, "unknown early/late value.");
|
||||
}
|
||||
return delay.mean();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -375,7 +375,7 @@ delayAsFloat(const Delay &delay,
|
|||
else if (early_late == EarlyLate::late())
|
||||
return delay.mean() + delay.sigma(early_late) * sta->sigmaFactor();
|
||||
else
|
||||
sta->report()->critical(595, "unknown early/late value.");
|
||||
sta->report()->critical(1030, "unknown early/late value.");
|
||||
}
|
||||
return delay.mean();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -790,7 +790,7 @@ Graph::arcDelayAnnotated(const Edge *edge,
|
|||
if (arc_delay_annotated_.size()) {
|
||||
size_t index = (edge->arcDelays() + arc->index()) * ap_count_ + ap_index;
|
||||
if (index >= arc_delay_annotated_.size())
|
||||
report_->critical(208, "arc_delay_annotated array bounds exceeded");
|
||||
report_->critical(1080, "arc_delay_annotated array bounds exceeded");
|
||||
return arc_delay_annotated_[index];
|
||||
}
|
||||
else
|
||||
|
|
@ -805,7 +805,7 @@ Graph::setArcDelayAnnotated(Edge *edge,
|
|||
{
|
||||
size_t index = (edge->arcDelays() + arc->index()) * ap_count_ + ap_index;
|
||||
if (index >= arc_delay_annotated_.size())
|
||||
report_->critical(209, "arc_delay_annotated array bounds exceeded");
|
||||
report_->critical(1081, "arc_delay_annotated array bounds exceeded");
|
||||
arc_delay_annotated_[index] = annotated;
|
||||
}
|
||||
|
||||
|
|
@ -817,7 +817,7 @@ Graph::wireDelayAnnotated(Edge *edge,
|
|||
size_t index = (edge->arcDelays() + TimingArcSet::wireArcIndex(rf)) * ap_count_
|
||||
+ ap_index;
|
||||
if (index >= arc_delay_annotated_.size())
|
||||
report_->critical(210, "arc_delay_annotated array bounds exceeded");
|
||||
report_->critical(1082, "arc_delay_annotated array bounds exceeded");
|
||||
return arc_delay_annotated_[index];
|
||||
}
|
||||
|
||||
|
|
@ -830,7 +830,7 @@ Graph::setWireDelayAnnotated(Edge *edge,
|
|||
size_t index = (edge->arcDelays() + TimingArcSet::wireArcIndex(rf)) * ap_count_
|
||||
+ ap_index;
|
||||
if (index >= arc_delay_annotated_.size())
|
||||
report_->critical(228, "arc_delay_annotated array bounds exceeded");
|
||||
report_->critical(1083, "arc_delay_annotated array bounds exceeded");
|
||||
arc_delay_annotated_[index] = annotated;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -763,7 +763,7 @@ LibertyLibrary::makeCornerMap(LibertyCell *cell1,
|
|||
port1->setCornerPort(port2, ap_index);
|
||||
}
|
||||
else
|
||||
report->warn(2, "cell %s/%s port %s not found in cell %s/%s.",
|
||||
report->warn(1110, "cell %s/%s port %s not found in cell %s/%s.",
|
||||
cell1->library()->name(),
|
||||
cell1->name(),
|
||||
port_name,
|
||||
|
|
@ -789,7 +789,7 @@ LibertyLibrary::makeCornerMap(LibertyCell *cell1,
|
|||
}
|
||||
}
|
||||
else
|
||||
report->warn(3, "cell %s/%s %s -> %s timing group %s not found in cell %s/%s.",
|
||||
report->warn(1111, "cell %s/%s %s -> %s timing group %s not found in cell %s/%s.",
|
||||
cell1->library()->name(),
|
||||
cell1->name(),
|
||||
arc_set1->from()->name(),
|
||||
|
|
@ -808,7 +808,7 @@ LibertyLibrary::checkCorners(LibertyCell *cell,
|
|||
for (const Corner *corner : *corners) {
|
||||
for (auto min_max : MinMax::range()) {
|
||||
if (!cell->checkCornerCell(corner, min_max))
|
||||
report->error(705, "Liberty cell %s/%s for corner %s/%s not found.",
|
||||
report->error(1112, "Liberty cell %s/%s for corner %s/%s not found.",
|
||||
cell->libertyLibrary()->name(),
|
||||
cell->name(),
|
||||
corner->name(),
|
||||
|
|
@ -1745,7 +1745,7 @@ LibertyCell::makeLatchEnables(Report *report,
|
|||
RiseFall *en_rf = latch_enable->enableEdge();
|
||||
RiseFall *check_rf = check_arc->fromEdge()->asRiseFall();
|
||||
if (check_rf == en_rf)
|
||||
report->warn(4, "cell %s/%s %s -> %s latch enable %s_edge is inconsistent with %s -> %s setup_%s check.",
|
||||
report->warn(1113, "cell %s/%s %s -> %s latch enable %s_edge is inconsistent with %s -> %s setup_%s check.",
|
||||
library_->name(),
|
||||
name_,
|
||||
en->name(),
|
||||
|
|
@ -1759,7 +1759,7 @@ LibertyCell::makeLatchEnables(Report *report,
|
|||
TimingSense en_sense = en_func->portTimingSense(en);
|
||||
if (en_sense == TimingSense::positive_unate
|
||||
&& en_rf != RiseFall::rise())
|
||||
report->warn(5, "cell %s/%s %s -> %s latch enable %s_edge is inconsistent with latch group enable function positive sense.",
|
||||
report->warn(1114, "cell %s/%s %s -> %s latch enable %s_edge is inconsistent with latch group enable function positive sense.",
|
||||
library_->name(),
|
||||
name_,
|
||||
en->name(),
|
||||
|
|
@ -1767,7 +1767,7 @@ LibertyCell::makeLatchEnables(Report *report,
|
|||
en_rf == RiseFall::rise()?"rising":"falling");
|
||||
else if (en_sense == TimingSense::negative_unate
|
||||
&& en_rf != RiseFall::fall())
|
||||
report->warn(6, "cell %s/%s %s -> %s latch enable %s_edge is inconsistent with latch group enable function negative sense.",
|
||||
report->warn(1115, "cell %s/%s %s -> %s latch enable %s_edge is inconsistent with latch group enable function negative sense.",
|
||||
library_->name(),
|
||||
name_,
|
||||
en->name(),
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ LibExprParser::makeFuncExprPort(const char *port_name)
|
|||
if (port)
|
||||
expr = FuncExpr::makePort(port);
|
||||
else
|
||||
report_->warn(7, "%s references unknown port %s.",
|
||||
report_->warn(1130, "%s references unknown port %s.",
|
||||
error_msg_, port_name);
|
||||
stringDelete(port_name);
|
||||
return expr;
|
||||
|
|
@ -172,7 +172,7 @@ LibExprParser::tokenAppend(char ch)
|
|||
void
|
||||
LibExprParser::parseError(const char *msg)
|
||||
{
|
||||
report_->error(206, "%s %s.", error_msg_, msg);
|
||||
report_->error(1131, "%s %s.", error_msg_, msg);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -283,7 +283,7 @@ LibertyWriter::writeCell(const LibertyCell *cell)
|
|||
if (port->isBus())
|
||||
writeBusPort(port);
|
||||
else if (port->isBundle())
|
||||
report_->error(704, "%s/%s bundled ports not supported.",
|
||||
report_->error(1330, "%s/%s bundled ports not supported.",
|
||||
library_->name(),
|
||||
cell->name());
|
||||
else
|
||||
|
|
@ -414,7 +414,7 @@ LibertyWriter::writeTimingModels(const TimingArc *arc,
|
|||
fprintf(stream_, " }\n");
|
||||
}
|
||||
else
|
||||
report_->error(701, "%s/%s/%s timing model not supported.",
|
||||
report_->error(1331, "%s/%s/%s timing model not supported.",
|
||||
library_->name(),
|
||||
arc->from()->libertyCell()->name(),
|
||||
arc->from()->name());
|
||||
|
|
@ -434,7 +434,7 @@ LibertyWriter::writeTableModel(const TableModel *model)
|
|||
writeTableModel2(model);
|
||||
break;
|
||||
case 3:
|
||||
report_->error(702, "3 axis table models not supported.");
|
||||
report_->error(1332, "3 axis table models not supported.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -578,7 +578,7 @@ LibertyWriter::timingTypeString(const TimingArcSet *arc_set)
|
|||
else if (role == TimingRole::clockTreePathMax())
|
||||
return "max_clock_tree_path";
|
||||
else {
|
||||
report_->error(703, "%s/%s/%s timing arc type %s not supported.",
|
||||
report_->error(1333, "%s/%s/%s timing arc type %s not supported.",
|
||||
library_->name(),
|
||||
arc_set->to()->libertyCell()->name(),
|
||||
arc_set->to()->name(),
|
||||
|
|
|
|||
1013
messages.txt
1013
messages.txt
File diff suppressed because it is too large
Load Diff
|
|
@ -1920,7 +1920,7 @@ ConcreteNetwork::linkNetwork(const char *top_cell_name,
|
|||
return top_instance_ != nullptr;
|
||||
}
|
||||
else {
|
||||
report->error(8, "cell type %s can not be linked.", top_cell_name);
|
||||
report->error(1000, "cell type %s can not be linked.", top_cell_name);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1092,7 +1092,7 @@ SdcNetwork::parsePath(const char *path,
|
|||
else
|
||||
*p++ = ch;
|
||||
if (p - inst_path + 1 > inst_path_length)
|
||||
report_->critical(211, "inst path string lenth estimate busted");
|
||||
report_->critical(1500, "inst path string lenth estimate busted");
|
||||
}
|
||||
*p = '\0';
|
||||
stringDelete(inst_path);
|
||||
|
|
@ -1164,7 +1164,7 @@ SdcNetwork::visitMatches(const Instance *parent,
|
|||
*p++ = ch;
|
||||
}
|
||||
if (p - inst_path + 1 > inst_path_length)
|
||||
report_->critical(212, "inst path string lenth estimate exceeded");
|
||||
report_->critical(1501, "inst path string lenth estimate exceeded");
|
||||
}
|
||||
*p = '\0';
|
||||
if (!found_match) {
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ EstimateParasitics::estimatePiElmoreBalanced(const Pin *drvr_pin,
|
|||
else if (network->isTopLevelPort(load_pin))
|
||||
load_cap = sdc->portExtCap(port, rf, corner, min_max);
|
||||
else
|
||||
report->critical(597, "load pin not leaf or top level");
|
||||
report->critical(1050, "load pin not leaf or top level");
|
||||
double cap = load_cap + cap_fanout;
|
||||
double y2_ = res_fanout * cap * cap;
|
||||
y1 += cap;
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ proc_redirect read_spef {
|
|||
set path $keys(-path)
|
||||
set instance [find_instance $path]
|
||||
if { $instance == "NULL" } {
|
||||
sta_error 433 "path instance '$path' not found."
|
||||
sta_error 270 "path instance '$path' not found."
|
||||
}
|
||||
}
|
||||
set corner [parse_corner_or_all keys]
|
||||
|
|
@ -59,7 +59,7 @@ proc_redirect read_spef {
|
|||
if [info exists keys(-reduce_to)] {
|
||||
set reduce_to $keys(-reduce_to)
|
||||
if { !($reduce_to == "pi_elmore" || $reduce_to == "pi_pole_residue2") } {
|
||||
sta_error 434 "-reduce_to must be pi_elmore or pi_pole_residue2."
|
||||
sta_error 271 "-reduce_to must be pi_elmore or pi_pole_residue2."
|
||||
}
|
||||
}
|
||||
set delete_after_reduce [info exists flags(-delete_after_reduce)]
|
||||
|
|
@ -67,7 +67,7 @@ proc_redirect read_spef {
|
|||
set save [info exists flags(-save)]
|
||||
set filename [file nativename [lindex $args 0]]
|
||||
if { [info exists flags(-increment)] } {
|
||||
sta_warn 706 "read_spef -increment is deprecated."
|
||||
sta_warn 272 "read_spef -increment is deprecated."
|
||||
}
|
||||
return [read_spef_cmd $filename $instance $corner $min_max \
|
||||
$pin_cap_included $keep_coupling_caps $coupling_reduction_factor \
|
||||
|
|
|
|||
|
|
@ -802,7 +802,7 @@ pos_integer:
|
|||
INTEGER
|
||||
{ int value = $1;
|
||||
if (value < 0)
|
||||
sta::spef_reader->warn(21, "%d is not positive.", value);
|
||||
sta::spef_reader->warn(1525, "%d is not positive.", value);
|
||||
$$ = value;
|
||||
}
|
||||
;
|
||||
|
|
@ -811,13 +811,13 @@ pos_number:
|
|||
INTEGER
|
||||
{ float value = static_cast<float>($1);
|
||||
if (value < 0)
|
||||
sta::spef_reader->warn(22, "%.4f is not positive.", value);
|
||||
sta::spef_reader->warn(1526, "%.4f is not positive.", value);
|
||||
$$ = value;
|
||||
}
|
||||
| FLOAT
|
||||
{ float value = static_cast<float>($1);
|
||||
if (value < 0)
|
||||
sta::spef_reader->warn(23, "%.4f is not positive.", value);
|
||||
sta::spef_reader->warn(1527, "%.4f is not positive.", value);
|
||||
$$ = value;
|
||||
}
|
||||
;
|
||||
|
|
|
|||
|
|
@ -729,6 +729,6 @@ int
|
|||
SpefParse_error(const char *msg)
|
||||
{
|
||||
spefFlushBuffer();
|
||||
sta::spef_reader->warn(707, "%s.", msg);
|
||||
sta::spef_reader->warn(1227, "%s.", msg);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -607,7 +607,7 @@ Power::funcBdd(const FuncExpr *expr)
|
|||
result = Cudd_ReadLogicZero(cudd_mgr_);
|
||||
break;
|
||||
default:
|
||||
report_->critical(598, "unknown function operator");
|
||||
report_->critical(1440, "unknown function operator");
|
||||
}
|
||||
if (result)
|
||||
Cudd_Ref(result);
|
||||
|
|
|
|||
|
|
@ -240,7 +240,7 @@ proc set_power_activity { args } {
|
|||
foreach port $ports {
|
||||
if { [get_property $port "direction"] == "input" } {
|
||||
if { [sta::is_clock_src [sta::get_port_pin $port]] } {
|
||||
sta_warn 299 "activity cannot be set on clock ports."
|
||||
sta_warn 303 "activity cannot be set on clock ports."
|
||||
} else {
|
||||
set_power_input_port_activity $port $activity $duty
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ ReadVcdActivities::readActivities()
|
|||
if (vcd_.timeMax() > 0)
|
||||
setActivities();
|
||||
else
|
||||
report_->warn(808, "VCD max time is zero.");
|
||||
report_->warn(1450, "VCD max time is zero.");
|
||||
report_->reportLine("Annotated %lu pin activities.", annotated_pins_.size());
|
||||
}
|
||||
|
||||
|
|
@ -171,7 +171,7 @@ ReadVcdActivities::setVarActivity(VcdVar *var,
|
|||
}
|
||||
}
|
||||
else
|
||||
report_->warn(809, "problem parsing bus %s.", var_name.c_str());
|
||||
report_->warn(1451, "problem parsing bus %s.", var_name.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -248,7 +248,7 @@ ReadVcdActivities::checkClkPeriod(const Pin *pin,
|
|||
double clk_period = clk->period();
|
||||
if (abs((clk_period - sim_period) / clk_period) > .1)
|
||||
// Warn if sim clock period differs from SDC by 10%.
|
||||
report_->warn(806, "clock %s vcd period %s differs from SDC clock period %s",
|
||||
report_->warn(1452, "clock %s vcd period %s differs from SDC clock period %s",
|
||||
clk->name(),
|
||||
delayAsString(sim_period, this),
|
||||
delayAsString(clk_period, this));
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ VcdValues &
|
|||
Vcd::values(VcdVar *var)
|
||||
{
|
||||
if (id_values_map_.find(var->id()) == id_values_map_.end()) {
|
||||
report_->error(805, "Unknown variable %s ID %s",
|
||||
report_->error(1360, "Unknown variable %s ID %s",
|
||||
var->name().c_str(),
|
||||
var->id().c_str());
|
||||
static VcdValues empty;
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ VcdReader::parseVar()
|
|||
string type_name = tokens[0];
|
||||
VcdVarType type = vcd_var_type_map.find(type_name, VcdVarType::unknown);
|
||||
if (type == VcdVarType::unknown)
|
||||
report_->fileWarn(803, filename_, stmt_line_,
|
||||
report_->fileWarn(1370, filename_, stmt_line_,
|
||||
"Unknown variable type %s.",
|
||||
type_name.c_str());
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ CycleAcctings::reportClkToClkMaxCycleWarnings(Report *report)
|
|||
ClockPair clk_pair2(tgt_clk, src_clk);
|
||||
if (!clk_warnings.hasKey(clk_pair1)
|
||||
&& !clk_warnings.hasKey(clk_pair2)) {
|
||||
report->warn(9, "No common period was found between clocks %s and %s.",
|
||||
report->warn(1010, "No common period was found between clocks %s and %s.",
|
||||
src_clk->name(),
|
||||
tgt_clk->name());
|
||||
clk_warnings.insert(clk_pair1);
|
||||
|
|
|
|||
|
|
@ -4055,7 +4055,7 @@ Sdc::makeGroupPath(const char *name,
|
|||
{
|
||||
checkFromThrusTo(from, thrus, to);
|
||||
if (name && is_default)
|
||||
report_->critical(213, "group path name and is_default are mutually exclusive.");
|
||||
report_->critical(1490, "group path name and is_default are mutually exclusive.");
|
||||
else if (name) {
|
||||
GroupPath *group_path = new GroupPath(name, is_default, from, thrus, to,
|
||||
true, comment);
|
||||
|
|
|
|||
|
|
@ -1251,7 +1251,7 @@ WriteSdc::writeExceptionCmd(ExceptionPath *exception) const
|
|||
gzprintf(stream_, "group_path -name %s", exception->name());
|
||||
}
|
||||
else
|
||||
report_->critical(214, "unknown exception type");
|
||||
report_->critical(1620, "unknown exception type");
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -1793,7 +1793,7 @@ WriteSdc::setConstantCmd(const Pin *pin) const
|
|||
case LogicValue::rise:
|
||||
case LogicValue::fall:
|
||||
default:
|
||||
report_->critical(215, "illegal set_logic value");
|
||||
report_->critical(1621, "illegal set_logic value");
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
|
@ -1834,7 +1834,7 @@ WriteSdc::caseAnalysisValueStr(const Pin *pin) const
|
|||
return "falling";
|
||||
case LogicValue::unknown:
|
||||
default:
|
||||
report_->critical(216, "invalid set_case_analysis value");
|
||||
report_->critical(1622, "invalid set_case_analysis value");
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,16 +38,16 @@ proc_redirect read_sdf {
|
|||
if [info exists keys(-cond_use)] {
|
||||
set cond_use $keys(-cond_use)
|
||||
if { $cond_use != "min" && $cond_use != "max" && $cond_use != "min_max" } {
|
||||
sta_warn 612 "-cond_use must be min, max or min_max."
|
||||
sta_warn 620 "-cond_use must be min, max or min_max."
|
||||
set cond_use "NULL"
|
||||
}
|
||||
if { $cond_use == "min_max" \
|
||||
&& { [operating_condition_analysis_type] == "single" }} {
|
||||
sta_error 430 "-cond_use min_max cannot be used with analysis type single."
|
||||
sta_error 621 "-cond_use min_max cannot be used with analysis type single."
|
||||
}
|
||||
}
|
||||
if [info exists keys(-analysis_type)] {
|
||||
sta_warn 617 "-analysis_type is deprecated. Use set_operating_conditions -analysis_type."
|
||||
sta_warn 622 "-analysis_type is deprecated. Use set_operating_conditions -analysis_type."
|
||||
}
|
||||
|
||||
set unescaped_dividers [info exists flags(-unescaped_dividers)]
|
||||
|
|
@ -154,7 +154,7 @@ proc_redirect write_sdf {
|
|||
if [info exists keys(-divider)] {
|
||||
set divider $keys(-divider)
|
||||
if { !($divider == "/" || $divider == ".") } {
|
||||
sta_error 432 "SDF -divider must be / or ."
|
||||
sta_error 623 "SDF -divider must be / or ."
|
||||
}
|
||||
}
|
||||
set digits 3
|
||||
|
|
|
|||
|
|
@ -271,7 +271,7 @@ Genclks::checkMaster(Clock *gclk)
|
|||
{
|
||||
ensureMaster(gclk);
|
||||
if (gclk->masterClk() == nullptr)
|
||||
report_->warn(10, "no master clock found for generated clock %s.",
|
||||
report_->warn(1060, "no master clock found for generated clock %s.",
|
||||
gclk->name());
|
||||
}
|
||||
|
||||
|
|
@ -329,7 +329,7 @@ Genclks::ensureMaster(Clock *gclk)
|
|||
}
|
||||
}
|
||||
if (master_clk_count > 1)
|
||||
report_->warn(12,
|
||||
report_->warn(1061,
|
||||
"generated clock %s pin %s is in the fanout of multiple clocks.",
|
||||
gclk->name(),
|
||||
network_->pathName(src_pin));
|
||||
|
|
@ -935,7 +935,7 @@ Genclks::recordSrcPaths(Clock *gclk)
|
|||
// Don't warn if the master clock is ideal.
|
||||
&& gclk->masterClk()
|
||||
&& gclk->masterClk()->isPropagated())
|
||||
report_->warn(13, "generated clock %s source pin %s missing paths from master clock %s.",
|
||||
report_->warn(1062, "generated clock %s source pin %s missing paths from master clock %s.",
|
||||
gclk->name(),
|
||||
network_->pathName(gclk_pin),
|
||||
gclk->masterClk()->name());
|
||||
|
|
|
|||
|
|
@ -203,7 +203,7 @@ MakeTimingModel::checkClock(Clock *clk)
|
|||
{
|
||||
for (const Pin *pin : clk->leafPins()) {
|
||||
if (!network_->isTopLevelPort(pin))
|
||||
report_->warn(810, "clock %s pin %s is inside model block.",
|
||||
report_->warn(1355, "clock %s pin %s is inside model block.",
|
||||
clk->name(),
|
||||
network_->pathName(pin));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -471,7 +471,7 @@ PathEnum::divSlack(Path *before_div,
|
|||
return div_arrival - arc_arrival;
|
||||
}
|
||||
else {
|
||||
report()->error(619, "path diversion missing edge.");
|
||||
report()->error(1370, "path diversion missing edge.");
|
||||
return 0.0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ const Required &
|
|||
PathEnumed::required(const StaState *sta) const
|
||||
{
|
||||
// Required times are never needed for enumerated paths.
|
||||
sta->report()->critical(251, "enumerated path required time");
|
||||
sta->report()->critical(1380, "enumerated path required time");
|
||||
return delay_zero;
|
||||
}
|
||||
|
||||
|
|
@ -132,7 +132,7 @@ PathEnumed::setRequired(const Required &,
|
|||
const StaState *sta)
|
||||
{
|
||||
// Required times are never needed for enumerated paths.
|
||||
sta->report()->critical(252, "enumerated path required time");
|
||||
sta->report()->critical(1381, "enumerated path required time");
|
||||
}
|
||||
|
||||
Path *
|
||||
|
|
|
|||
|
|
@ -396,7 +396,7 @@ PathGroups::pathGroup(const PathEnd *path_end) const
|
|||
else if (path_end->isUnconstrained())
|
||||
return unconstrained_[mm_index];
|
||||
else {
|
||||
report_->critical(253, "unknown path end type");
|
||||
report_->critical(1390, "unknown path end type");
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@ PathVertex::arrival(const StaState *sta) const
|
|||
if (arrivals)
|
||||
return arrivals[arrival_index_];
|
||||
else {
|
||||
sta->report()->error(620, "missing arrivals.");
|
||||
sta->report()->error(1400, "missing arrivals.");
|
||||
return 0.0;
|
||||
}
|
||||
}
|
||||
|
|
@ -247,7 +247,7 @@ PathVertex::setArrival(Arrival arrival,
|
|||
if (arrivals)
|
||||
arrivals[arrival_index_] = arrival;
|
||||
else
|
||||
sta->report()->error(621, "missing arrivals.");
|
||||
sta->report()->error(1401, "missing arrivals.");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -276,7 +276,7 @@ PathVertex::setRequired(const Required &required,
|
|||
requireds = graph->makeRequireds(vertex_, arrival_count);
|
||||
}
|
||||
else
|
||||
sta->report()->error(622, "missing requireds.");
|
||||
sta->report()->error(1402, "missing requireds.");
|
||||
}
|
||||
requireds[arrival_index_] = required;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -142,15 +142,15 @@ PathVertexRep::arrival(const StaState *sta) const
|
|||
bool arrival_exists;
|
||||
tag_group->arrivalIndex(tag, arrival_index, arrival_exists);
|
||||
if (!arrival_exists)
|
||||
sta->report()->critical(254, "tag group missing tag");
|
||||
sta->report()->critical(1420, "tag group missing tag");
|
||||
Arrival *arrivals = graph->arrivals(vertex);
|
||||
if (arrivals)
|
||||
return arrivals[arrival_index];
|
||||
else
|
||||
sta->report()->critical(624, "missing arrivals");
|
||||
sta->report()->critical(1421, "missing arrivals");
|
||||
}
|
||||
else
|
||||
sta->report()->error(623, "missing arrivals.");
|
||||
sta->report()->error(1422, "missing arrivals.");
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -286,7 +286,7 @@ ReportPath::reportPathEndHeader()
|
|||
reportSlackOnlyHeader();
|
||||
break;
|
||||
default:
|
||||
report_->critical(255, "unsupported path type");
|
||||
report_->critical(1470, "unsupported path type");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -307,7 +307,7 @@ ReportPath::reportPathEndFooter()
|
|||
reportBlankLine();
|
||||
break;
|
||||
default:
|
||||
report_->critical(256, "unsupported path type");
|
||||
report_->critical(1471, "unsupported path type");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -346,7 +346,7 @@ ReportPath::reportPathEnd(PathEnd *end,
|
|||
reportSlackOnly(end);
|
||||
break;
|
||||
default:
|
||||
report_->critical(257, "unsupported path type");
|
||||
report_->critical(1473, "unsupported path type");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -2375,7 +2375,7 @@ ReportPath::reportPath(const Path *path)
|
|||
case ReportPathFormat::summary:
|
||||
case ReportPathFormat::slack_only:
|
||||
default:
|
||||
report_->critical(259, "unsupported path type");
|
||||
report_->critical(1474, "unsupported path type");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2651,7 +2651,7 @@ Search::findTagGroup(TagGroupBldr *tag_bldr)
|
|||
tag_group_set_->reserve(new_capacity);
|
||||
}
|
||||
if (tag_group_next_ > tag_group_index_max)
|
||||
report_->critical(260, "max tag group index exceeded");
|
||||
report_->critical(1510, "max tag group index exceeded");
|
||||
}
|
||||
return tag_group;
|
||||
}
|
||||
|
|
@ -2887,7 +2887,7 @@ Search::findTag(const RiseFall *rf,
|
|||
tag_set_->reserve(new_capacity);
|
||||
}
|
||||
if (tag_next_ == tag_index_max)
|
||||
report_->critical(261, "max tag index exceeded");
|
||||
report_->critical(1511, "max tag index exceeded");
|
||||
}
|
||||
if (own_states)
|
||||
delete states;
|
||||
|
|
@ -3614,7 +3614,7 @@ Search::matchesFilter(Path *path,
|
|||
// -to
|
||||
return matchesFilterTo(path, to_clk_edge);
|
||||
else {
|
||||
report_->critical(262, "unexpected filter path");
|
||||
report_->critical(1512, "unexpected filter path");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -3782,7 +3782,7 @@ Search::tnsIncr(Vertex *vertex,
|
|||
vertex->name(sdc_network_));
|
||||
tns_[path_ap_index] += slack;
|
||||
if (tns_slacks_[path_ap_index].hasKey(vertex))
|
||||
report_->critical(263, "tns incr existing vertex");
|
||||
report_->critical(1513, "tns incr existing vertex");
|
||||
tns_slacks_[path_ap_index][vertex] = slack;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -206,7 +206,7 @@ Sim::funcBdd(const FuncExpr *expr,
|
|||
result = Cudd_ReadLogicZero(cudd_mgr_);
|
||||
break;
|
||||
default:
|
||||
report_->critical(596, "unknown function operator");
|
||||
report_->critical(1520, "unknown function operator");
|
||||
}
|
||||
if (result)
|
||||
Cudd_Ref(result);
|
||||
|
|
@ -861,7 +861,7 @@ Sim::setPinValue(const Pin *pin,
|
|||
if (exists
|
||||
&& value != constraint_value) {
|
||||
if (value != LogicValue::unknown)
|
||||
report_->warn(15, "propagated logic value %c differs from constraint value of %c on pin %s.",
|
||||
report_->warn(1521, "propagated logic value %c differs from constraint value of %c on pin %s.",
|
||||
logicValueString(value),
|
||||
logicValueString(constraint_value),
|
||||
sdc_network_->pathName(pin));
|
||||
|
|
|
|||
|
|
@ -2029,7 +2029,7 @@ Sta::checkExceptionFromPins(ExceptionFrom *from,
|
|||
report_->fileWarn(267, file, line, "'%s' is not a valid start point.",
|
||||
cmd_network_->pathName(pin));
|
||||
else
|
||||
report_->warn(18, "'%s' is not a valid start point.",
|
||||
report_->warn(1550, "'%s' is not a valid start point.",
|
||||
cmd_network_->pathName(pin));
|
||||
}
|
||||
}
|
||||
|
|
@ -2105,7 +2105,7 @@ Sta::checkExceptionToPins(ExceptionTo *to,
|
|||
report_->fileWarn(266, file, line, "'%s' is not a valid endpoint.",
|
||||
cmd_network_->pathName(pin));
|
||||
else
|
||||
report_->warn(17, "'%s' is not a valid endpoint.",
|
||||
report_->warn(1551, "'%s' is not a valid endpoint.",
|
||||
cmd_network_->pathName(pin));
|
||||
}
|
||||
}
|
||||
|
|
@ -2428,7 +2428,7 @@ void
|
|||
Sta::makeCorners(StringSet *corner_names)
|
||||
{
|
||||
if (corner_names->size() > corner_count_max)
|
||||
report_->error(374, "maximum corner count exceeded");
|
||||
report_->error(1552, "maximum corner count exceeded");
|
||||
sdc_->makeCornersBefore();
|
||||
parasitics_->deleteParasitics();
|
||||
corners_->makeCorners(corner_names);
|
||||
|
|
@ -4225,7 +4225,7 @@ Sta::replaceEquivCellBefore(const Instance *inst,
|
|||
if (to_set)
|
||||
edge->setTimingArcSet(to_set);
|
||||
else
|
||||
report_->critical(264, "corresponding timing arc set not found in equiv cells");
|
||||
report_->critical(1553, "corresponding timing arc set not found in equiv cells");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -294,7 +294,7 @@ TagGroupBldr::copyArrivals(TagGroup *tag_group,
|
|||
}
|
||||
}
|
||||
else
|
||||
sta_->report()->critical(265, "tag group missing tag");
|
||||
sta_->report()->critical(1351, "tag group missing tag");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -284,7 +284,7 @@ writePathSpice(Path *path,
|
|||
StaState *sta)
|
||||
{
|
||||
if (sta->network()->defaultLibertyLibrary() == nullptr)
|
||||
sta->report()->error(20, "No liberty libraries found,");
|
||||
sta->report()->error(1600, "No liberty libraries found,");
|
||||
WritePathSpice writer(path, spice_filename, subckt_filename,
|
||||
lib_subckt_filename, model_filename,
|
||||
off_path_pin_names, power_name, gnd_name, sta);
|
||||
|
|
@ -507,14 +507,14 @@ WritePathSpice::pgPortVoltage(LibertyPgPort *pg_port)
|
|||
else if (stringEqual(voltage_name, gnd_name_))
|
||||
voltage = gnd_voltage_;
|
||||
else
|
||||
report_->error(24, "pg_pin %s/%s voltage %s not found,",
|
||||
report_->error(1601 , "pg_pin %s/%s voltage %s not found,",
|
||||
pg_port->cell()->name(),
|
||||
pg_port->name(),
|
||||
voltage_name);
|
||||
}
|
||||
}
|
||||
else
|
||||
report_->error(25, "Liberty pg_port %s/%s missing voltage_name attribute,",
|
||||
report_->error(1602, "Liberty pg_port %s/%s missing voltage_name attribute,",
|
||||
pg_port->cell()->name(),
|
||||
pg_port->name());
|
||||
return voltage;
|
||||
|
|
@ -1093,7 +1093,7 @@ WritePathSpice::writeVoltageSource(LibertyCell *cell,
|
|||
if (pg_port)
|
||||
voltage = pgPortVoltage(pg_port);
|
||||
else
|
||||
report_->error(26, "%s pg_port %s not found,",
|
||||
report_->error(1603, "%s pg_port %s not found,",
|
||||
cell->name(),
|
||||
pg_port_name);
|
||||
|
||||
|
|
@ -1148,7 +1148,7 @@ WritePathSpice::regPortValues(Stage stage,
|
|||
dcalc_ap_index = drvr_path->dcalcAnalysisPt(this)->index();
|
||||
}
|
||||
else
|
||||
report_->error(27, "no register/latch found for path from %s to %s,",
|
||||
report_->error(1604, "no register/latch found for path from %s to %s,",
|
||||
stageGateInputPort(stage)->name(),
|
||||
stageDrvrPort(stage)->name());
|
||||
}
|
||||
|
|
@ -1614,7 +1614,7 @@ WritePathSpice::writeSubckts()
|
|||
missing_cells += "\n";
|
||||
missing_cells += cell_name;
|
||||
}
|
||||
report_->error(28, "The subkct file %s is missing definitions for %s",
|
||||
report_->error(1605, "The subkct file %s is missing definitions for %s",
|
||||
lib_subckt_filename_,
|
||||
missing_cells.c_str());
|
||||
}
|
||||
|
|
@ -1712,7 +1712,7 @@ WritePathSpice::recordSpicePortNames(const char *cell_name,
|
|||
&& pg_port == nullptr
|
||||
&& !stringEqual(port_name, power_name_)
|
||||
&& !stringEqual(port_name, gnd_name_))
|
||||
report_->error(29, "subckt %s port %s has no corresponding liberty port, pg_port and is not power or ground.",
|
||||
report_->error(1606, "subckt %s port %s has no corresponding liberty port, pg_port and is not power or ground.",
|
||||
cell_name, port_name);
|
||||
spice_port_names->push_back(port_name);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ proc get_object_args { objects clks_var libcells_var libports_var \
|
|||
&& $object_type == "TimingArcSet" } {
|
||||
lappend timing_arc_sets $obj
|
||||
} else {
|
||||
sta_error 467 "unsupported object type $object_type."
|
||||
sta_error 100 "unsupported object type $object_type."
|
||||
}
|
||||
} elseif { $obj != {} } {
|
||||
# Check for implicit arg.
|
||||
|
|
@ -163,7 +163,7 @@ proc get_object_args { objects clks_var libcells_var libports_var \
|
|||
if { $matches != {} } {
|
||||
set nets [concat $nets $matches]
|
||||
} else {
|
||||
sta_warn 305 "object '$obj' not found."
|
||||
sta_warn 101 "object '$obj' not found."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -402,12 +402,12 @@ proc parse_corner { keys_var } {
|
|||
set corner_name $keys(-corner)
|
||||
set corner [find_corner $corner_name]
|
||||
if { $corner == "NULL" } {
|
||||
sta_error 468 "$corner_name is not the name of process corner."
|
||||
sta_error 102 "$corner_name is not the name of process corner."
|
||||
} else {
|
||||
return $corner
|
||||
}
|
||||
} elseif { [multi_corner] } {
|
||||
sta_error 469 "-corner keyword required with multi-corner analysis."
|
||||
sta_error 103 "-corner keyword required with multi-corner analysis."
|
||||
} else {
|
||||
return [cmd_corner]
|
||||
}
|
||||
|
|
@ -422,12 +422,12 @@ proc parse_corner_required { keys_var } {
|
|||
set corner_name $keys(-corner)
|
||||
set corner [find_corner $corner_name]
|
||||
if { $corner == "NULL" } {
|
||||
sta_error 470 "$corner_name is not the name of process corner."
|
||||
sta_error 104 "$corner_name is not the name of process corner."
|
||||
} else {
|
||||
return $corner
|
||||
}
|
||||
} else {
|
||||
sta_error 471 "missing -corner arg."
|
||||
sta_error 105 "missing -corner arg."
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -438,7 +438,7 @@ proc parse_corner_or_default { keys_var } {
|
|||
set corner_name $keys(-corner)
|
||||
set corner [find_corner $corner_name]
|
||||
if { $corner == "NULL" } {
|
||||
sta_error 472 "$corner_name is not the name of process corner."
|
||||
sta_error 106 "$corner_name is not the name of process corner."
|
||||
} else {
|
||||
return $corner
|
||||
}
|
||||
|
|
@ -455,7 +455,7 @@ proc parse_corner_or_all { keys_var } {
|
|||
set corner_name $keys(-corner)
|
||||
set corner [find_corner $corner_name]
|
||||
if { $corner == "NULL" } {
|
||||
sta_error 473 "$corner_name is not the name of process corner."
|
||||
sta_error 107 "$corner_name is not the name of process corner."
|
||||
} else {
|
||||
return $corner
|
||||
}
|
||||
|
|
@ -480,7 +480,7 @@ proc parse_rise_fall_flags { flags_var } {
|
|||
proc parse_min_max_flags { flags_var } {
|
||||
upvar 1 $flags_var flags
|
||||
if { [info exists flags(-min)] && [info exists flags(-max)] } {
|
||||
sta_error 474 "both -min and -max specified."
|
||||
sta_error 108 "both -min and -max specified."
|
||||
} elseif { [info exists flags(-min)] && ![info exists flags(-max)] } {
|
||||
return "min"
|
||||
} elseif { [info exists flags(-max)] && ![info exists flags(-min)] } {
|
||||
|
|
@ -494,7 +494,7 @@ proc parse_min_max_flags { flags_var } {
|
|||
proc parse_min_max_all_flags { flags_var } {
|
||||
upvar 1 $flags_var flags
|
||||
if { [info exists flags(-min)] && [info exists flags(-max)] } {
|
||||
sta_error 475 "both -min and -max specified."
|
||||
sta_error 109 "both -min and -max specified."
|
||||
} elseif { [info exists flags(-min)] && ![info exists flags(-max)] } {
|
||||
return "min"
|
||||
} elseif { [info exists flags(-max)] && ![info exists flags(-min)] } {
|
||||
|
|
@ -521,20 +521,20 @@ proc parse_min_max_all_check_flags { flags_var } {
|
|||
proc parse_early_late_flags { flags_var } {
|
||||
upvar 1 $flags_var flags
|
||||
if { [info exists flags(-early)] && [info exists flags(-late)] } {
|
||||
sta_error 476 "only one of -early and -late can be specified."
|
||||
sta_error 110 "only one of -early and -late can be specified."
|
||||
} elseif { [info exists flags(-early)] } {
|
||||
return "min"
|
||||
} elseif { [info exists flags(-late)] } {
|
||||
return "max"
|
||||
} else {
|
||||
sta_error 477 "-early or -late must be specified."
|
||||
sta_error 111 "-early or -late must be specified."
|
||||
}
|
||||
}
|
||||
|
||||
proc parse_early_late_all_flags { flags_var } {
|
||||
upvar 1 $flags_var flags
|
||||
if { [info exists flags(-early)] && [info exists flags(-late)] } {
|
||||
sta_error 478 "both -early and -late specified."
|
||||
sta_error 112 "both -early and -late specified."
|
||||
} elseif { [info exists flags(-early)] && ![info exists flags(-late)] } {
|
||||
return "min"
|
||||
} elseif { [info exists flags(-late)] && ![info exists flags(-early)] } {
|
||||
|
|
@ -549,18 +549,18 @@ proc parse_early_late_all_flags { flags_var } {
|
|||
proc get_liberty_error { arg_name arg } {
|
||||
set lib "NULL"
|
||||
if {[llength $arg] > 1} {
|
||||
sta_error 479 "$arg_name must be a single library."
|
||||
sta_error 113 "$arg_name must be a single library."
|
||||
} elseif { [is_object $arg] } {
|
||||
set object_type [object_type $arg]
|
||||
if { $object_type == "LibertyLibrary" } {
|
||||
set lib $arg
|
||||
} else {
|
||||
sta_error 480 "$arg_name type '$object_type' is not a library."
|
||||
sta_error 114 "$arg_name type '$object_type' is not a library."
|
||||
}
|
||||
} else {
|
||||
set lib [find_liberty $arg]
|
||||
if { $lib == "NULL" } {
|
||||
sta_error 481 "library '$arg' not found."
|
||||
sta_error 115 "library '$arg' not found."
|
||||
}
|
||||
}
|
||||
return $lib
|
||||
|
|
@ -577,13 +577,13 @@ proc get_lib_cell_error { arg_name arg } {
|
|||
proc get_lib_cell_arg { arg_name arg error_proc } {
|
||||
set lib_cell "NULL"
|
||||
if { [llength $arg] > 1 } {
|
||||
sta_error 482 "$arg_name must be a single lib cell."
|
||||
sta_error 116 "$arg_name must be a single lib cell."
|
||||
} elseif { [is_object $arg] } {
|
||||
set object_type [object_type $arg]
|
||||
if { $object_type == "LibertyCell" } {
|
||||
set lib_cell $arg
|
||||
} else {
|
||||
$error_proc 700 "$arg_name type '$object_type' is not a liberty cell."
|
||||
$error_proc 116 "$arg_name type '$object_type' is not a liberty cell."
|
||||
}
|
||||
# Parse library_name/cell_name.
|
||||
} elseif {[regexp [cell_regexp] $arg ignore lib_name cell_name]} {
|
||||
|
|
@ -591,15 +591,15 @@ proc get_lib_cell_arg { arg_name arg error_proc } {
|
|||
if { $library != "NULL" } {
|
||||
set lib_cell [$library find_liberty_cell $cell_name]
|
||||
if { $lib_cell == "NULL" } {
|
||||
$error_proc 701 "liberty cell '$arg' not found."
|
||||
$error_proc 117 "liberty cell '$arg' not found."
|
||||
}
|
||||
} else {
|
||||
$error_proc 702 "library '$lib_name' not found."
|
||||
$error_proc 118 "library '$lib_name' not found."
|
||||
}
|
||||
} else {
|
||||
set lib_cell [find_liberty_cell $arg]
|
||||
if { $lib_cell == "NULL" } {
|
||||
$error_proc 703 "liberty cell '$arg' not found."
|
||||
$error_proc 119 "liberty cell '$arg' not found."
|
||||
}
|
||||
}
|
||||
return $lib_cell
|
||||
|
|
@ -619,7 +619,7 @@ proc get_lib_cells_arg { arg_name arglist error_proc } {
|
|||
if { $object_type == "LibertyCell" } {
|
||||
lappend lib_cells $arg
|
||||
} else {
|
||||
$error_proc 306 "unsupported object type $object_type."
|
||||
$error_proc 120 "unsupported object type $object_type."
|
||||
}
|
||||
} elseif { $arg != {} } {
|
||||
set arg_lib_cells [get_lib_cells1 $arg $error_proc]
|
||||
|
|
@ -645,7 +645,7 @@ proc get_lib_cells1 { patterns error_proc } {
|
|||
# Allow wildcards in the library name (incompatible).
|
||||
set libs [get_libs -quiet $lib_name]
|
||||
if { $libs == {} } {
|
||||
$error_proc 375 "library '$lib_name' not found."
|
||||
$error_proc 121 "library '$lib_name' not found."
|
||||
} else {
|
||||
foreach lib $libs {
|
||||
set matches [$lib find_liberty_cells_matching $cell_pattern 0 0]
|
||||
|
|
@ -654,7 +654,7 @@ proc get_lib_cells1 { patterns error_proc } {
|
|||
}
|
||||
}
|
||||
if { $cells == {} } {
|
||||
$error_proc 376 "cell '$cell_pattern' not found."
|
||||
$error_proc 122 "cell '$cell_pattern' not found."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -664,18 +664,18 @@ proc get_lib_cells1 { patterns error_proc } {
|
|||
proc get_instance_error { arg_name arg } {
|
||||
set inst "NULL"
|
||||
if {[llength $arg] > 1} {
|
||||
sta_error 483 "$arg_name must be a single instance."
|
||||
sta_error 123 "$arg_name must be a single instance."
|
||||
} elseif { [is_object $arg] } {
|
||||
set object_type [object_type $arg]
|
||||
if { $object_type == "Instance" } {
|
||||
set inst $arg
|
||||
} else {
|
||||
sta_error 484 "$arg_name type '$object_type' is not an instance."
|
||||
sta_error 124 "$arg_name type '$object_type' is not an instance."
|
||||
}
|
||||
} else {
|
||||
set inst [find_instance $arg]
|
||||
if { $inst == "NULL" } {
|
||||
sta_error 485 "instance '$arg' not found."
|
||||
sta_error 125 "instance '$arg' not found."
|
||||
}
|
||||
}
|
||||
return $inst
|
||||
|
|
@ -694,14 +694,14 @@ proc get_instances_error { arg_name arglist } {
|
|||
if { $object_type == "Instance" } {
|
||||
lappend insts $arg
|
||||
} else {
|
||||
sta_error 486 "$arg_name type '$object_type' is not an instance."
|
||||
sta_error 126 "$arg_name type '$object_type' is not an instance."
|
||||
}
|
||||
} elseif { $arg != {} } {
|
||||
set arg_insts [get_cells -quiet $arg]
|
||||
if { $arg_insts != {} } {
|
||||
set insts [concat $insts $arg_insts]
|
||||
} else {
|
||||
sta_error 487 "instance '$arg' not found."
|
||||
sta_error 127 "instance '$arg' not found."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -719,7 +719,7 @@ proc get_port_pin_error { arg_name arg } {
|
|||
proc get_port_pin_arg { arg_name arg warn_error } {
|
||||
set pin "NULL"
|
||||
if {[llength $arg] > 1} {
|
||||
sta_warn_error 307 $warn_error "$arg_name must be a single port or pin."
|
||||
sta_warn_error 128 $warn_error "$arg_name must be a single port or pin."
|
||||
} elseif { [is_object $arg] } {
|
||||
set object_type [object_type $arg]
|
||||
if { $object_type == "Pin" } {
|
||||
|
|
@ -728,7 +728,7 @@ proc get_port_pin_arg { arg_name arg warn_error } {
|
|||
# Explicit port arg - convert to pin.
|
||||
set pin [find_pin [get_name $arg]]
|
||||
} else {
|
||||
sta_warn_error 308 $warn_error "$arg_name type '$object_type' is not a pin or port."
|
||||
sta_warn_error 129 $warn_error "$arg_name type '$object_type' is not a pin or port."
|
||||
}
|
||||
} else {
|
||||
set top_instance [top_instance]
|
||||
|
|
@ -740,7 +740,7 @@ proc get_port_pin_arg { arg_name arg warn_error } {
|
|||
set pin [$top_instance find_pin [get_name $port]]
|
||||
}
|
||||
if { $pin == "NULL" } {
|
||||
sta_warn_error 309 $warn_error "pin $arg not found."
|
||||
sta_warn_error 130 $warn_error "pin $arg not found."
|
||||
}
|
||||
}
|
||||
return $pin
|
||||
|
|
@ -762,14 +762,14 @@ proc get_port_pins_error { arg_name arglist } {
|
|||
# Convert port to pin.
|
||||
lappend pins [find_pin [get_name $arg]]
|
||||
} else {
|
||||
sta_error 488 "$arg_name type '$object_type' is not a pin or port."
|
||||
sta_error 131 "$arg_name type '$object_type' is not a pin or port."
|
||||
}
|
||||
} elseif { $arg != {} } {
|
||||
set arg_pins [get_ports_or_pins $arg]
|
||||
if { $arg_pins != {} } {
|
||||
set pins [concat $pins $arg_pins]
|
||||
} else {
|
||||
sta_error 489 "pin '$arg' not found."
|
||||
sta_error 132 "pin '$arg' not found."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -789,7 +789,7 @@ proc get_ports_error { arg_name arglist } {
|
|||
if { $object_type == "Port" } {
|
||||
lappend ports $arg
|
||||
} else {
|
||||
sta_error 490 "$arg_name type '$object_type' is not a port."
|
||||
sta_error 133 "$arg_name type '$object_type' is not a port."
|
||||
}
|
||||
} elseif { $arg != {} } {
|
||||
set arg_ports [get_ports $arg]
|
||||
|
|
@ -812,18 +812,18 @@ proc get_pin_warn { arg_name arg } {
|
|||
proc get_pin_arg { arg_name arg warn_error } {
|
||||
set pin "NULL"
|
||||
if {[llength $arg] > 1} {
|
||||
sta_warn_error 310 $warn_error "$arg_name must be a single pin."
|
||||
sta_warn_error 134 $warn_error "$arg_name must be a single pin."
|
||||
} elseif { [is_object $arg] } {
|
||||
set object_type [object_type $arg]
|
||||
if { $object_type == "Pin" } {
|
||||
set pin $arg
|
||||
} else {
|
||||
sta_warn_error 311 $warn_error "$arg_name type '$object_type' is not a pin."
|
||||
sta_warn_error 135 $warn_error "$arg_name type '$object_type' is not a pin."
|
||||
}
|
||||
} else {
|
||||
set pin [find_pin $arg]
|
||||
if { $pin == "NULL" } {
|
||||
sta_warn_error 312 $warn_error "$arg_name pin $arg not found."
|
||||
sta_warn_error 136 $warn_error "$arg_name pin $arg not found."
|
||||
}
|
||||
}
|
||||
return $pin
|
||||
|
|
@ -840,18 +840,18 @@ proc get_clock_error { arg_name arg } {
|
|||
proc get_clock_arg { arg_name arg error_proc } {
|
||||
set clk "NULL"
|
||||
if {[llength $arg] > 1} {
|
||||
$error_proc 597 "$arg_name arg must be a single clock, not a list."
|
||||
$error_proc 137 "$arg_name arg must be a single clock, not a list."
|
||||
} elseif { [is_object $arg] } {
|
||||
set object_type [object_type $arg]
|
||||
if { $object_type == "Clock" } {
|
||||
set clk $arg
|
||||
} else {
|
||||
$error_proc 598 "$arg_name arg value is a $object_type, not a clock."
|
||||
$error_proc 138 "$arg_name arg value is a $object_type, not a clock."
|
||||
}
|
||||
} elseif { $arg != {} } {
|
||||
set clk [find_clock $arg]
|
||||
if { $clk == "NULL" } {
|
||||
$error_proc 599 "$arg_name arg '$arg' clock not found."
|
||||
$error_proc 138 "$arg_name arg '$arg' clock not found."
|
||||
}
|
||||
}
|
||||
return $clk
|
||||
|
|
@ -870,7 +870,7 @@ proc get_clocks_warn { arg_name arglist } {
|
|||
if { $object_type == "Clock" } {
|
||||
lappend clks $arg
|
||||
} else {
|
||||
sta_warn 313 "unsupported object type $object_type."
|
||||
sta_warn 139 "unsupported object type $object_type."
|
||||
}
|
||||
} elseif { $arg != {} } {
|
||||
set arg_clocks [get_clocks $arg]
|
||||
|
|
@ -885,18 +885,18 @@ proc get_clocks_warn { arg_name arglist } {
|
|||
proc get_net_arg { arg_name arg } {
|
||||
set net "NULL"
|
||||
if {[llength $arg] > 1} {
|
||||
sta_warn 314 "$arg_name must be a single net."
|
||||
sta_warn 140 "$arg_name must be a single net."
|
||||
} elseif { [is_object $arg] } {
|
||||
set object_type [object_type $arg]
|
||||
if { $object_type == "Net" } {
|
||||
set net $arg
|
||||
} else {
|
||||
sta_warn 315 "$arg_name '$object_type' is not a net."
|
||||
sta_warn 141 "$arg_name '$object_type' is not a net."
|
||||
}
|
||||
} else {
|
||||
set net [find_net $arg]
|
||||
if { $net == "NULL" } {
|
||||
sta_warn 316 "$arg_name '$arg' not found."
|
||||
sta_warn 143 "$arg_name '$arg' not found."
|
||||
}
|
||||
}
|
||||
return $net
|
||||
|
|
@ -915,7 +915,7 @@ proc get_nets_arg { arg_name arglist } {
|
|||
if { $object_type == "Net" } {
|
||||
lappend nets $arg
|
||||
} else {
|
||||
sta_warn 317 "unsupported object type $object_type."
|
||||
sta_warn 142 "unsupported object type $object_type."
|
||||
}
|
||||
} elseif { $arg != {} } {
|
||||
set arg_nets [get_nets $arg]
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ proc_redirect help {
|
|||
show_cmd_args $cmd
|
||||
}
|
||||
} else {
|
||||
sta_warn 300 "no commands match '$pattern'."
|
||||
sta_warn 160 "no commands match '$pattern'."
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -86,9 +86,9 @@ proc cmd_usage_error { cmd } {
|
|||
variable cmd_args
|
||||
|
||||
if [info exists cmd_args($cmd)] {
|
||||
sta_error 404 "Usage: $cmd $cmd_args($cmd)"
|
||||
sta_error 161 "Usage: $cmd $cmd_args($cmd)"
|
||||
} else {
|
||||
sta_error 405 "Usage: $cmd argument error"
|
||||
sta_error 162 "Usage: $cmd argument error"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -158,7 +158,7 @@ proc set_unit_values { unit key unit_name key_var } {
|
|||
set scale [unit_prefix_scale $unit $prefix]
|
||||
set_cmd_unit_scale $unit $scale
|
||||
} else {
|
||||
sta_error 515 "unknown $unit unit '$suffix'."
|
||||
sta_error 163 "unknown $unit unit '$suffix'."
|
||||
}
|
||||
}
|
||||
if [info exists keys(-digits)] {
|
||||
|
|
@ -206,7 +206,7 @@ proc delete_objects_from_list_cmd { list objects } {
|
|||
} elseif {$list_type == "LibertyPort"} {
|
||||
set obj [get_lib_pins $obj]
|
||||
} else {
|
||||
sta_error 439 "unsupported object type $list_type."
|
||||
sta_error 164 "unsupported object type $list_type."
|
||||
}
|
||||
}
|
||||
set index [lsearch $list $obj]
|
||||
|
|
@ -223,7 +223,7 @@ proc set_cmd_namespace { namespc } {
|
|||
if { $namespc == "sdc" || $namespc == "sta" } {
|
||||
set_cmd_namespace_cmd $namespc
|
||||
} else {
|
||||
sta_error 589 "unknown namespace $namespc."
|
||||
sta_error 165 "unknown namespace $namespc."
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ proc_redirect read_liberty {
|
|||
set corner [parse_corner keys]
|
||||
set min_max [parse_min_max_all_flags flags]
|
||||
if { [info exists flags(-no_latch_infer)] } {
|
||||
sta_warn 625 "-no_latch_infer is deprecated."
|
||||
sta_warn "-no_latch_infer is deprecated."
|
||||
}
|
||||
set infer_latches [info exists flags(-infer_latches)]
|
||||
read_liberty_cmd $filename $corner $min_max $infer_latches
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ proc_redirect link_design {
|
|||
}
|
||||
if { $top_cell_name == "" } {
|
||||
if { $current_design_name == "" } {
|
||||
sta_error 593 "missing top_cell_name argument and no current_design."
|
||||
sta_error 220 "missing top_cell_name argument and no current_design."
|
||||
return 0
|
||||
} else {
|
||||
set top_cell_name $current_design_name
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ proc_redirect report_instance {
|
|||
if { $instance != "NULL" } {
|
||||
report_instance1 $instance $connections $verbose
|
||||
} else {
|
||||
sta_error 590 "instance $instance_path not found."
|
||||
sta_error 230 "instance $instance_path not found."
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -218,10 +218,10 @@ proc_redirect report_net {
|
|||
if { $net != "NULL" } {
|
||||
report_net1 $net $connections $verbose $hier_pins $corner $digits
|
||||
} else {
|
||||
sta_error 591 "net $net_path not found."
|
||||
sta_error 231 "net $net_path not found."
|
||||
}
|
||||
} else {
|
||||
sta_error 592 "net $net_path not found."
|
||||
sta_error 232 "net $net_path not found."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ proc parse_connect_pin { arg } {
|
|||
set inst [$pin instance]
|
||||
set port [$pin port]
|
||||
} else {
|
||||
sta_error 586 "unsupported object type $object_type."
|
||||
sta_error 250 "unsupported object type $object_type."
|
||||
}
|
||||
} else {
|
||||
if {[regexp $path_regexp $arg ignore path_name port_name]} {
|
||||
|
|
@ -134,7 +134,7 @@ proc parse_connect_pin { arg } {
|
|||
}
|
||||
|
||||
proc connect_pins { net pins } {
|
||||
sta_warn 372 "connect_pins is deprecated. Use connect_pin."
|
||||
sta_warn 251 "connect_pins is deprecated. Use connect_pin."
|
||||
# Visit the pins to make sure command will succeed.
|
||||
set insts_ports [parse_connect_pins $pins]
|
||||
if { $insts_ports == 0 } {
|
||||
|
|
@ -203,7 +203,7 @@ proc delete_instance { instance } {
|
|||
if { $object_type == "Instance" } {
|
||||
set inst $instance
|
||||
} else {
|
||||
sta_error 587 "unsupported object type $object_type."
|
||||
sta_error 252 "unsupported object type $object_type."
|
||||
}
|
||||
} else {
|
||||
set inst [find_instance $instance]
|
||||
|
|
@ -221,7 +221,7 @@ proc delete_net { net } {
|
|||
if { [is_object $net] } {
|
||||
set object_type [object_type $net]
|
||||
if { $object_type != "Net" } {
|
||||
sta_error 588 "unsupported object type $object_type."
|
||||
sta_error 253 "unsupported object type $object_type."
|
||||
}
|
||||
} else {
|
||||
set net [find_net $net]
|
||||
|
|
|
|||
|
|
@ -29,12 +29,12 @@ proc get_property_cmd { cmd type_key cmd_args } {
|
|||
check_argc_eq2 $cmd $cmd_args
|
||||
set object [lindex $cmd_args 0]
|
||||
if { $object == "" } {
|
||||
sta_error 491 "$cmd object is null."
|
||||
sta_error 320 "$cmd object is null."
|
||||
} elseif { ![is_object $object] } {
|
||||
if [info exists keys($type_key)] {
|
||||
set object_type $keys($type_key)
|
||||
} else {
|
||||
sta_error 492 "$cmd $type_key must be specified with object name argument."
|
||||
sta_error 321 "$cmd $type_key must be specified with object name argument."
|
||||
}
|
||||
set object [get_property_object_type $object_type $object $quiet]
|
||||
}
|
||||
|
|
@ -74,10 +74,10 @@ proc get_object_property { object prop } {
|
|||
} elseif { $object_type == "TimingArcSet" } {
|
||||
return [timing_arc_set_property $object $prop]
|
||||
} else {
|
||||
sta_error 606 "get_property unsupported object type $object_type."
|
||||
sta_error 322 "get_property unsupported object type $object_type."
|
||||
}
|
||||
} else {
|
||||
sta_error 493 "get_property $object is not an object."
|
||||
sta_error 323 "get_property $object is not an object."
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -104,10 +104,10 @@ proc get_property_object_type { object_type object_name quiet } {
|
|||
|| $object_type == "lib"} {
|
||||
set object [get_libs -quiet $object_name]
|
||||
} else {
|
||||
sta_error 494 "$object_type not supported."
|
||||
sta_error 324 "$object_type not supported."
|
||||
}
|
||||
if { $object == "NULL" && !$quiet } {
|
||||
sta_error 495 "$object_type '$object_name' not found."
|
||||
sta_error 325 "$object_type '$object_name' not found."
|
||||
}
|
||||
return [lindex $object 0]
|
||||
}
|
||||
|
|
|
|||
286
tcl/Sdc.tcl
286
tcl/Sdc.tcl
File diff suppressed because it is too large
Load Diff
|
|
@ -133,7 +133,7 @@ proc find_timing_paths_cmd { cmd args_var } {
|
|||
} elseif { $mm_key == "min" || $mm_key == "max" || $mm_key == "min_max" } {
|
||||
set min_max $mm_key
|
||||
} else {
|
||||
sta_error 420 "$cmd -path_delay must be min, min_rise, min_fall, max, max_rise, max_fall or min_max."
|
||||
sta_error 510 "$cmd -path_delay must be min, min_rise, min_fall, max, max_rise, max_fall or min_max."
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -143,7 +143,7 @@ proc find_timing_paths_cmd { cmd args_var } {
|
|||
set to [parse_to_arg1 keys $end_rf arg_error]
|
||||
if { $arg_error } {
|
||||
delete_from_thrus_to $from $thrus $to
|
||||
sta_error 421 "$cmd command failed."
|
||||
sta_error 511 "$cmd command failed."
|
||||
}
|
||||
|
||||
check_for_key_args $cmd args
|
||||
|
|
@ -162,7 +162,7 @@ proc find_timing_paths_cmd { cmd args_var } {
|
|||
if [info exists keys(-endpoint_count)] {
|
||||
set endpoint_count $keys(-endpoint_count)
|
||||
if { $endpoint_count < 1 } {
|
||||
sta_error 422 "-endpoint_count must be a positive integer."
|
||||
sta_error 512 "-endpoint_count must be a positive integer."
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -171,7 +171,7 @@ proc find_timing_paths_cmd { cmd args_var } {
|
|||
set group_count $keys(-group_count)
|
||||
check_positive_integer "-group_count" $group_count
|
||||
if { $group_count < 1 } {
|
||||
sta_error 423 "-group_count must be >= 1."
|
||||
sta_error 513 "-group_count must be >= 1."
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -202,9 +202,9 @@ proc find_timing_paths_cmd { cmd args_var } {
|
|||
delete_from_thrus_to $from $thrus $to
|
||||
set arg [lindex $args 0]
|
||||
if { [is_keyword_arg $arg] } {
|
||||
sta_error 424 "'$arg' is not a known keyword or flag."
|
||||
sta_error 514 "'$arg' is not a known keyword or flag."
|
||||
} else {
|
||||
sta_error 425 "positional arguments not supported."
|
||||
sta_error 515 "positional arguments not supported."
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -323,7 +323,7 @@ proc_redirect report_clock_skew {
|
|||
check_argc_eq0 "report_clock_skew" $args
|
||||
|
||||
if { [info exists flags(-setup)] && [info exists flags(-hold)] } {
|
||||
sta_error 419 "report_clock_skew -setup and -hold are mutually exclusive options."
|
||||
sta_error 516 "report_clock_skew -setup and -hold are mutually exclusive options."
|
||||
} elseif { [info exists flags(-setup)] } {
|
||||
set setup_hold "setup"
|
||||
} elseif { [info exists flags(-hold)] } {
|
||||
|
|
@ -408,7 +408,7 @@ proc_redirect report_check_types {
|
|||
|
||||
set violators [info exists flags(-violators)]
|
||||
if { [info exists flags(-all_violators)] } {
|
||||
sta_warn 609 "-all_violators is deprecated. Use -violators"
|
||||
sta_warn 517 "-all_violators is deprecated. Use -violators"
|
||||
set violators 1
|
||||
}
|
||||
|
||||
|
|
@ -488,12 +488,12 @@ proc_redirect report_check_types {
|
|||
set clk_gating_hold [info exists flags(-clock_gating_hold)]
|
||||
set max_slew [info exists flags(-max_slew)]
|
||||
if { [info exists flags(-max_transition)] } {
|
||||
sta_warn 610 "-max_transition deprecated. Use -max_slew."
|
||||
sta_warn 518 "-max_transition deprecated. Use -max_slew."
|
||||
set max_slew 1
|
||||
}
|
||||
set min_slew [info exists flags(-min_slew)]
|
||||
if { [info exists flags(-min_transition)] } {
|
||||
sta_warn 611 "-min_transition deprecated. Use -min_slew."
|
||||
sta_warn 519 "-min_transition deprecated. Use -min_slew."
|
||||
set min_slew 1
|
||||
}
|
||||
set max_fanout [info exists flags(-max_fanout)]
|
||||
|
|
@ -507,12 +507,12 @@ proc_redirect report_check_types {
|
|||
&& (($setup && $hold) \
|
||||
|| ($recovery && $removal) \
|
||||
|| ($clk_gating_setup && $clk_gating_hold)) } {
|
||||
sta_error 426 "analysis type single is not consistent with doing both setup/max and hold/min checks."
|
||||
sta_error 520 "analysis type single is not consistent with doing both setup/max and hold/min checks."
|
||||
}
|
||||
}
|
||||
|
||||
if { $args != {} } {
|
||||
sta_error 427 "positional arguments not supported."
|
||||
sta_error 521 "positional arguments not supported."
|
||||
}
|
||||
|
||||
set corner [parse_corner_or_all keys]
|
||||
|
|
@ -775,7 +775,7 @@ proc_redirect report_path {
|
|||
flags {-max -min -all -tags} 0
|
||||
|
||||
if { [info exists flags(-min)] && [info exists flags(-max)] } {
|
||||
sta_error 508 "-min and -max cannot both be specified."
|
||||
sta_error 522 "-min and -max cannot both be specified."
|
||||
} elseif [info exists flags(-min)] {
|
||||
set min_max "min"
|
||||
} elseif [info exists flags(-max)] {
|
||||
|
|
@ -795,7 +795,7 @@ proc_redirect report_path {
|
|||
|
||||
set pin [get_port_pin_error "pin" $pin_arg]
|
||||
if { [$pin is_hierarchical] } {
|
||||
sta_error 509 "pin '$pin_arg' is hierarchical."
|
||||
sta_error 523 "pin '$pin_arg' is hierarchical."
|
||||
} else {
|
||||
foreach vertex [$pin vertices] {
|
||||
if { $vertex != "NULL" } {
|
||||
|
|
@ -861,7 +861,7 @@ proc parse_report_path_options { cmd args_var default_format
|
|||
set formats {full full_clock full_clock_expanded short \
|
||||
end slack_only summary json}
|
||||
if { [lsearch $formats $format] == -1 } {
|
||||
sta_error 510 "-format $format not recognized."
|
||||
sta_error 524 "-format $format not recognized."
|
||||
}
|
||||
} else {
|
||||
set path_options(-format) $default_format
|
||||
|
|
@ -901,7 +901,7 @@ proc parse_report_path_options { cmd args_var default_format
|
|||
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."
|
||||
sta_warn 525 "The transition_time field is deprecated. Use slew instead."
|
||||
}
|
||||
} else {
|
||||
set report_input_pin 0
|
||||
|
|
@ -1008,7 +1008,7 @@ proc worst_clock_skew { args } {
|
|||
check_argc_eq0 "worst_clock_skew" $args
|
||||
if { ([info exists flags(-setup)] && [info exists flags(-hold)]) \
|
||||
|| (![info exists flags(-setup)] && ![info exists flags(-hold)]) } {
|
||||
sta_error 616 "specify one of -setup and -hold."
|
||||
sta_error 526 "specify one of -setup and -hold."
|
||||
} elseif { [info exists flags(-setup)] } {
|
||||
set setup_hold "setup"
|
||||
} elseif { [info exists flags(-hold)] } {
|
||||
|
|
@ -1057,7 +1057,7 @@ proc parse_path_group_arg { group_names } {
|
|||
if { [is_path_group_name $name] } {
|
||||
lappend names $name
|
||||
} else {
|
||||
sta_warn 318 "unknown path group '$name'."
|
||||
sta_warn 527 "unknown path group '$name'."
|
||||
}
|
||||
}
|
||||
return $names
|
||||
|
|
|
|||
|
|
@ -155,7 +155,7 @@ proc get_timing_edges_cmd { cmd cmd_args } {
|
|||
if { [info exists keys(-of_objects)] } {
|
||||
if { [info exists keys(-from)] \
|
||||
|| [info exists keys(-from)] } {
|
||||
sta_error 440 "-from/-to arguments not supported with -of_objects."
|
||||
sta_error 540 "-from/-to arguments not supported with -of_objects."
|
||||
}
|
||||
set arcs [get_timing_arcs_objects $keys(-of_objects)]
|
||||
} elseif { [info exists keys(-from)] \
|
||||
|
|
@ -283,7 +283,7 @@ proc filter_timing_arcs1 { filter objects } {
|
|||
} elseif { [regexp $filter_regexp1 $filter ignore attr_name op arg] } {
|
||||
set filtered_objects [filter_timing_arcs $attr_name $op $arg $objects]
|
||||
} else {
|
||||
sta_error 441 "unsupported -filter expression."
|
||||
sta_error 541 "unsupported -filter expression."
|
||||
}
|
||||
return $filtered_objects
|
||||
}
|
||||
|
|
|
|||
14
tcl/StaTcl.i
14
tcl/StaTcl.i
|
|
@ -115,7 +115,7 @@ cmdLinkedNetwork()
|
|||
return network;
|
||||
else {
|
||||
Report *report = Sta::sta()->report();
|
||||
report->error(201, "no network has been linked.");
|
||||
report->error(1570, "no network has been linked.");
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
|
@ -129,7 +129,7 @@ cmdEditNetwork()
|
|||
return dynamic_cast<NetworkEdit*>(network);
|
||||
else {
|
||||
Report *report = Sta::sta()->report();
|
||||
report->error(202, "network does not support edits.");
|
||||
report->error(1571, "network does not support edits.");
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
|
@ -4112,7 +4112,7 @@ set_crpr_mode(const char *mode)
|
|||
else if (stringEq(mode, "same_transition"))
|
||||
Sta::sta()->setCrprMode(CrprMode::same_transition);
|
||||
else
|
||||
sta->report()->critical(272, "unknown common clk pessimism mode.");
|
||||
sta->report()->critical(1573, "unknown common clk pessimism mode.");
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
@ -4126,7 +4126,7 @@ set_pocv_enabled(bool enabled)
|
|||
{
|
||||
#if !SSTA
|
||||
if (enabled)
|
||||
Sta::sta()->report()->error(204, "POCV support requires compilation with SSTA=1.");
|
||||
Sta::sta()->report()->error(1574, "POCV support requires compilation with SSTA=1.");
|
||||
#endif
|
||||
return Sta::sta()->setPocvEnabled(enabled);
|
||||
}
|
||||
|
|
@ -4364,7 +4364,7 @@ set_report_path_field_properties(const char *field_name,
|
|||
if (field)
|
||||
field->setProperties(title, width, left_justify);
|
||||
else
|
||||
sta->report()->error(607, "unknown report path field %s", field_name);
|
||||
sta->report()->error(1575, "unknown report path field %s", field_name);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -4376,7 +4376,7 @@ set_report_path_field_width(const char *field_name,
|
|||
if (field)
|
||||
field->setWidth(width);
|
||||
else
|
||||
sta->report()->error(608, "unknown report path field %s", field_name);
|
||||
sta->report()->error(1576, "unknown report path field %s", field_name);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -5061,7 +5061,7 @@ set_clock_sense_cmd(PinSet *pins,
|
|||
else if (stop_propagation)
|
||||
sta->setClockSense(pins, clks, ClockSense::stop);
|
||||
else
|
||||
sta->report()->critical(273, "unknown clock sense");
|
||||
sta->report()->critical(1577, "unknown clock sense");
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
|||
34
tcl/Util.tcl
34
tcl/Util.tcl
|
|
@ -41,7 +41,7 @@ proc parse_key_args { cmd arg_var key_var keys {flag_var ""} {flags {}} \
|
|||
if { $key_index >= 0 } {
|
||||
set key $arg
|
||||
if { [llength $args] == 1 } {
|
||||
sta_error 400 "$cmd $key missing value."
|
||||
sta_error 560 "$cmd $key missing value."
|
||||
}
|
||||
set key_value($key) [lindex $args 1]
|
||||
set args [lrange $args 1 end]
|
||||
|
|
@ -58,7 +58,7 @@ proc parse_key_args { cmd arg_var key_var keys {flag_var ""} {flags {}} \
|
|||
if { $key_index >= 0 } {
|
||||
set key [lindex $keys $key_index]
|
||||
if { [llength $args] == 1 } {
|
||||
sta_error 401 "$cmd $key missing value."
|
||||
sta_error 561 "$cmd $key missing value."
|
||||
}
|
||||
set key_value($key) [lindex $args 1]
|
||||
set args [lrange $args 1 end]
|
||||
|
|
@ -68,7 +68,7 @@ proc parse_key_args { cmd arg_var key_var keys {flag_var ""} {flags {}} \
|
|||
set flag [lindex $flags $flag_index]
|
||||
set flag_present($flag) 1
|
||||
} elseif { $unknown_key_is_error } {
|
||||
sta_error 402 "$cmd $arg is not a known keyword or flag."
|
||||
sta_error 562 "$cmd $arg is not a known keyword or flag."
|
||||
} else {
|
||||
lappend args_rtn $arg
|
||||
}
|
||||
|
|
@ -90,7 +90,7 @@ proc check_for_key_args { cmd arg_var } {
|
|||
while { $args != "" } {
|
||||
set arg [lindex $args 0]
|
||||
if { [is_keyword_arg $arg] } {
|
||||
sta_error 403 "$cmd $arg is not a known keyword or flag."
|
||||
sta_error 563 "$cmd $arg is not a known keyword or flag."
|
||||
} else {
|
||||
lappend args_rtn $arg
|
||||
}
|
||||
|
|
@ -238,45 +238,45 @@ define_cmd_args "log_end" {}
|
|||
|
||||
proc check_argc_eq0 { cmd arglist } {
|
||||
if { $arglist != {} } {
|
||||
sta_error 406 "$cmd positional arguments not supported."
|
||||
sta_error 564 "$cmd positional arguments not supported."
|
||||
}
|
||||
}
|
||||
|
||||
proc check_argc_eq1 { cmd arglist } {
|
||||
if { [llength $arglist] != 1 } {
|
||||
sta_error 407 "$cmd requires one positional argument."
|
||||
sta_error 565 "$cmd requires one positional argument."
|
||||
}
|
||||
}
|
||||
|
||||
proc check_argc_eq0or1 { cmd arglist } {
|
||||
set argc [llength $arglist]
|
||||
if { $argc != 0 && $argc != 1 } {
|
||||
sta_error 408 "$cmd requires zero or one positional arguments."
|
||||
sta_error 566 "$cmd requires zero or one positional arguments."
|
||||
}
|
||||
}
|
||||
|
||||
proc check_argc_eq2 { cmd arglist } {
|
||||
if { [llength $arglist] != 2 } {
|
||||
sta_error 409 "$cmd requires two positional arguments."
|
||||
sta_error 567 "$cmd requires two positional arguments."
|
||||
}
|
||||
}
|
||||
|
||||
proc check_argc_eq1or2 { cmd arglist } {
|
||||
set argc [llength $arglist]
|
||||
if { $argc != 1 && $argc != 2 } {
|
||||
sta_error 410 "$cmd requires one or two positional arguments."
|
||||
sta_error 568 "$cmd requires one or two positional arguments."
|
||||
}
|
||||
}
|
||||
|
||||
proc check_argc_eq3 { cmd arglist } {
|
||||
if { [llength $arglist] != 3 } {
|
||||
sta_error 411 "$cmd requires three positional arguments."
|
||||
sta_error 569 "$cmd requires three positional arguments."
|
||||
}
|
||||
}
|
||||
|
||||
proc check_argc_eq4 { cmd arglist } {
|
||||
if { [llength $arglist] != 4 } {
|
||||
sta_error 412 "$cmd requires four positional arguments."
|
||||
sta_error 570 "$cmd requires four positional arguments."
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -284,37 +284,37 @@ proc check_argc_eq4 { cmd arglist } {
|
|||
|
||||
proc check_float { cmd_arg arg } {
|
||||
if {![string is double $arg]} {
|
||||
sta_error 413 "$cmd_arg '$arg' is not a float."
|
||||
sta_error 571 "$cmd_arg '$arg' is not a float."
|
||||
}
|
||||
}
|
||||
|
||||
proc check_positive_float { cmd_arg arg } {
|
||||
if {!([string is double $arg] && $arg >= 0.0)} {
|
||||
sta_error 414 "$cmd_arg '$arg' is not a positive float."
|
||||
sta_error 572 "$cmd_arg '$arg' is not a positive float."
|
||||
}
|
||||
}
|
||||
|
||||
proc check_integer { cmd_arg arg } {
|
||||
if {!([string is integer $arg])} {
|
||||
sta_error 415 "$cmd_arg '$arg' is not an integer."
|
||||
sta_error 573 "$cmd_arg '$arg' is not an integer."
|
||||
}
|
||||
}
|
||||
|
||||
proc check_positive_integer { cmd_arg arg } {
|
||||
if {!([string is integer $arg] && $arg >= 0)} {
|
||||
sta_error 416 "$cmd_arg '$arg' is not a positive integer."
|
||||
sta_error 574 "$cmd_arg '$arg' is not a positive integer."
|
||||
}
|
||||
}
|
||||
|
||||
proc check_cardinal { cmd_arg arg } {
|
||||
if {!([string is integer $arg] && $arg >= 1)} {
|
||||
sta_error 417 "$cmd_arg '$arg' is not an integer greater than or equal to one."
|
||||
sta_error 575 "$cmd_arg '$arg' is not an integer greater than or equal to one."
|
||||
}
|
||||
}
|
||||
|
||||
proc check_percent { cmd_arg arg } {
|
||||
if {!([string is double $arg] && $arg >= 0.0 && $arg <= 100.0)} {
|
||||
sta_error 418 "$cmd_arg '$arg' is not between 0 and 100."
|
||||
sta_error 576 "$cmd_arg '$arg' is not between 0 and 100."
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ proc trace_report_default_digits { name1 name2 op } {
|
|||
if { $op == "w" } {
|
||||
if { !([string is integer $sta_report_default_digits] \
|
||||
&& $sta_report_default_digits >= 0) } {
|
||||
sta_error 436 "sta_report_default_digits must be a positive integer."
|
||||
sta_error 590 "sta_report_default_digits must be a positive integer."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -67,7 +67,7 @@ proc trace_crpr_mode { name1 name2 op } {
|
|||
if { $sta_crpr_mode == "same_pin" || $sta_crpr_mode == "same_transition" } {
|
||||
set_crpr_mode $sta_crpr_mode
|
||||
} else {
|
||||
sta_error 437 "sta_crpr_mode must be pin or transition."
|
||||
sta_error 591 "sta_crpr_mode must be pin or transition."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -184,7 +184,7 @@ proc trace_boolean_var { op var_name get_proc set_proc } {
|
|||
} elseif { $var == 1 } {
|
||||
$set_proc 1
|
||||
} else {
|
||||
sta_error 438 "$var_name value must be 0 or 1."
|
||||
sta_error 592 "$var_name value must be 0 or 1."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,55 +32,55 @@ proc write_path_spice { args } {
|
|||
if { [info exists keys(-spice_directory)] } {
|
||||
set spice_dir [file nativename $keys(-spice_directory)]
|
||||
if { ![file exists $spice_dir] } {
|
||||
sta_error 496 "Directory $spice_dir not found."
|
||||
sta_error 600 "Directory $spice_dir not found."
|
||||
}
|
||||
if { ![file isdirectory $spice_dir] } {
|
||||
sta_error 497 "$spice_dir is not a directory."
|
||||
sta_error 601 "$spice_dir is not a directory."
|
||||
}
|
||||
if { ![file writable $spice_dir] } {
|
||||
sta_error 498 "Cannot write in $spice_dir."
|
||||
sta_error 602 "Cannot write in $spice_dir."
|
||||
}
|
||||
} else {
|
||||
sta_error 499 "No -spice_directory specified."
|
||||
sta_error 603 "No -spice_directory specified."
|
||||
}
|
||||
|
||||
if { [info exists keys(-lib_subckt_file)] } {
|
||||
set lib_subckt_file [file nativename $keys(-lib_subckt_file)]
|
||||
if { ![file readable $lib_subckt_file] } {
|
||||
sta_error 500 "-lib_subckt_file $lib_subckt_file is not readable."
|
||||
sta_error 604 "-lib_subckt_file $lib_subckt_file is not readable."
|
||||
}
|
||||
} else {
|
||||
sta_error 501 "No -lib_subckt_file specified."
|
||||
sta_error 605 "No -lib_subckt_file specified."
|
||||
}
|
||||
|
||||
if { [info exists keys(-model_file)] } {
|
||||
set model_file [file nativename $keys(-model_file)]
|
||||
if { ![file readable $model_file] } {
|
||||
sta_error 502 "-model_file $model_file is not readable."
|
||||
sta_error 606 "-model_file $model_file is not readable."
|
||||
}
|
||||
} else {
|
||||
sta_error 503 "No -model_file specified."
|
||||
sta_error 607 "No -model_file specified."
|
||||
}
|
||||
|
||||
if { [info exists keys(-power)] } {
|
||||
set power $keys(-power)
|
||||
} else {
|
||||
sta_error 504 "No -power specified."
|
||||
sta_error 608 "No -power specified."
|
||||
}
|
||||
|
||||
if { [info exists keys(-ground)] } {
|
||||
set ground $keys(-ground)
|
||||
} else {
|
||||
sta_error 505 "No -ground specified."
|
||||
sta_error 609 "No -ground specified."
|
||||
}
|
||||
|
||||
if { ![info exists keys(-path_args)] } {
|
||||
sta_error 506 "No -path_args specified."
|
||||
sta_error 610 "No -path_args specified."
|
||||
}
|
||||
set path_args $keys(-path_args)
|
||||
set path_ends [eval [concat find_timing_paths $path_args]]
|
||||
if { $path_ends == {} } {
|
||||
sta_error 507 "No paths found for -path_args $path_args."
|
||||
sta_error 611 "No paths found for -path_args $path_args."
|
||||
} else {
|
||||
set path_index 1
|
||||
foreach path_end $path_ends {
|
||||
|
|
|
|||
|
|
@ -883,7 +883,7 @@ VerilogModule::parseDcl(VerilogDcl *dcl,
|
|||
dcl_map_[net_name] = dcl;
|
||||
else if (!dcl->direction()->isInternal()) {
|
||||
string net_vname = reader->netVerilogName(net_name);
|
||||
reader->warn(18, filename_, dcl->line(),
|
||||
reader->warn(1395, filename_, dcl->line(),
|
||||
"signal %s previously declared on line %d.",
|
||||
net_vname.c_str(),
|
||||
existing_dcl->line());
|
||||
|
|
@ -912,7 +912,7 @@ VerilogModule::checkInstanceName(VerilogInst *inst,
|
|||
replacement_name = stringPrint("%s_%d", inst_name, i);
|
||||
} while (inst_names.findKey(replacement_name));
|
||||
string inst_vname = reader->instanceVerilogName(inst_name);
|
||||
reader->warn(19, filename_, inst->line(),
|
||||
reader->warn(1396, filename_, inst->line(),
|
||||
"instance name %s duplicated - renamed to %s.",
|
||||
inst_vname.c_str(),
|
||||
replacement_name);
|
||||
|
|
@ -1538,7 +1538,7 @@ VerilogNetConstant::parseConstant10(const char *constant_str,
|
|||
if (length > max_length
|
||||
|| (length == max_length
|
||||
&& strcmp(tmp, reader->constant10Max()) > 0))
|
||||
reader->warn(20, reader->filename(), reader->line(),
|
||||
reader->warn(1397, reader->filename(), reader->line(),
|
||||
"base 10 constant greater than %s not supported.",
|
||||
reader->constant10Max());
|
||||
else {
|
||||
|
|
@ -1779,12 +1779,12 @@ VerilogReader::linkNetwork(const char *top_cell_name,
|
|||
return top_instance;
|
||||
}
|
||||
else {
|
||||
report->error(274, "%s is not a verilog module.", top_cell_name);
|
||||
report->error(1398, "%s is not a verilog module.", top_cell_name);
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
else {
|
||||
report->error(275, "%s is not a verilog module.", top_cell_name);
|
||||
report->error(1399, "%s is not a verilog module.", top_cell_name);
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue