read_liberty warn if float values are "inf"

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2023-08-22 22:11:15 -07:00
parent 742b823945
commit 7c0d252fc1
3 changed files with 33 additions and 31 deletions

View File

@ -789,7 +789,7 @@ LibertyReader::parseUnits(LibertyAttr *attr,
scale_suffix = units;
float scale_mult = 1.0F;
if (scale_suffix.size() >= 2) {
if (scale_suffix.size() == strlen(unit_suffix) + 1) {
string suffix = scale_suffix.substr(1);
if (stringEqual(suffix.c_str(), unit_suffix)) {
char scale_char = tolower(scale_suffix[0]);
@ -4529,7 +4529,9 @@ LibertyReader::getAttrFloat(LibertyAttr *attr,
// Check that the string is a valid double.
char *end;
value = strtof(string, &end);
if (*end && !isspace(*end))
if ((*end && !isspace(*end))
// strtof support INF as a valid float.
|| stringEqual(string, "inf"))
libWarn(135, attr, "%s value %s is not a float.",
attr->name(),
string);

View File

@ -126,31 +126,31 @@
0132 LibertyReader.cc:4473 %s is not a simple attribute.
0133 LibertyReader.cc:4496 %s is not a simple attribute.
0134 LibertyReader.cc:4509 %s is not a simple attribute.
0135 LibertyReader.cc:4533 %s value %s is not a float.
0136 LibertyReader.cc:4562 %s missing values.
0137 LibertyReader.cc:4566 %s missing values.
0138 LibertyReader.cc:4569 %s is not a complex attribute.
0139 LibertyReader.cc:4595 %s is not a float.
0140 LibertyReader.cc:4618 %s is missing values.
0141 LibertyReader.cc:4621 %s has more than one string.
0142 LibertyReader.cc:4630 %s is missing values.
0143 LibertyReader.cc:4655 %s attribute is not boolean.
0144 LibertyReader.cc:4658 %s attribute is not boolean.
0145 LibertyReader.cc:4661 %s is not a simple attribute.
0146 LibertyReader.cc:4677 attribute %s value %s not recognized.
0147 LibertyReader.cc:4708 unknown early/late value.
0148 LibertyReader.cc:4928 OCV derate group named %s not found.
0149 LibertyReader.cc:4944 ocv_derate missing name.
0150 LibertyReader.cc:4997 unknown rise/fall.
0151 LibertyReader.cc:5017 unknown derate type.
0152 LibertyReader.cc:5049 unsupported model axis.
0153 LibertyReader.cc:5081 unsupported model axis.
0154 LibertyReader.cc:5113 unsupported model axis.
0155 LibertyReader.cc:5184 unknown pg_type.
0156 LibertyReader.cc:5579 port %s subscript out of range.
0157 LibertyReader.cc:5583 port range %s of non-bus port %s.
0158 LibertyReader.cc:5597 port %s not found.
0159 LibertyReader.cc:5667 port %s not found.
0135 LibertyReader.cc:4535 %s value %s is not a float.
0136 LibertyReader.cc:4564 %s missing values.
0137 LibertyReader.cc:4568 %s missing values.
0138 LibertyReader.cc:4571 %s is not a complex attribute.
0139 LibertyReader.cc:4597 %s is not a float.
0140 LibertyReader.cc:4620 %s is missing values.
0141 LibertyReader.cc:4623 %s has more than one string.
0142 LibertyReader.cc:4632 %s is missing values.
0143 LibertyReader.cc:4657 %s attribute is not boolean.
0144 LibertyReader.cc:4660 %s attribute is not boolean.
0145 LibertyReader.cc:4663 %s is not a simple attribute.
0146 LibertyReader.cc:4679 attribute %s value %s not recognized.
0147 LibertyReader.cc:4710 unknown early/late value.
0148 LibertyReader.cc:4930 OCV derate group named %s not found.
0149 LibertyReader.cc:4946 ocv_derate missing name.
0150 LibertyReader.cc:4999 unknown rise/fall.
0151 LibertyReader.cc:5019 unknown derate type.
0152 LibertyReader.cc:5051 unsupported model axis.
0153 LibertyReader.cc:5083 unsupported model axis.
0154 LibertyReader.cc:5115 unsupported model axis.
0155 LibertyReader.cc:5186 unknown pg_type.
0156 LibertyReader.cc:5581 port %s subscript out of range.
0157 LibertyReader.cc:5585 port range %s of non-bus port %s.
0158 LibertyReader.cc:5599 port %s not found.
0159 LibertyReader.cc:5669 port %s not found.
0160 LibertyReader.cc:1026 default_max_transition is 0.0.
0161 LibertyReader.cc:3413 max_transition is 0.0.
0162 LibertyReader.cc:4493 %s attribute is not an integer.
@ -164,8 +164,6 @@
0170 LibertyReader.cc:3808 timing group missing related_pin/related_bus_pin.
0171 LibertyReader.cc:815 unknown unit suffix %s.
0179 SpefReader.cc:734 %s.
0190 VerilogReader.cc:1782 %s is not a verilog module.
0191 VerilogReader.cc:1787 %s is not a verilog module.
0201 StaTcl.i:118 no network has been linked.
0202 StaTcl.i:132 network does not support edits.
0204 StaTcl.i:4129 POCV support requires compilation with SSTA=1.
@ -199,6 +197,8 @@
0267 Sta.cc:2014 '%s' is not a valid start point.
0272 StaTcl.i:4115 unknown common clk pessimism mode.
0273 StaTcl.i:5064 unknown clock sense
0274 VerilogReader.cc:1782 %s is not a verilog module.
0275 VerilogReader.cc:1787 %s is not a verilog module.
0299 Power.tcl:241 activity cannot be set on clock ports.
0300 CmdUtil.tcl:44 no commands match '$pattern'.
0301 Power.tcl:218 activity should be 0.0 to 1.0 or 2.0

View File

@ -1779,12 +1779,12 @@ VerilogReader::linkNetwork(const char *top_cell_name,
return top_instance;
}
else {
report->error(190, "%s is not a verilog module.", top_cell_name);
report->error(274, "%s is not a verilog module.", top_cell_name);
return nullptr;
}
}
else {
report->error(191, "%s is not a verilog module.", top_cell_name);
report->error(275, "%s is not a verilog module.", top_cell_name);
return nullptr;
}
}