From 7c0d252fc12a24500d095379af88d99aeb59645e Mon Sep 17 00:00:00 2001 From: James Cherry Date: Tue, 22 Aug 2023 22:11:15 -0700 Subject: [PATCH] read_liberty warn if float values are "inf" Signed-off-by: James Cherry --- liberty/LibertyReader.cc | 6 +++-- messages.txt | 54 ++++++++++++++++++++-------------------- verilog/VerilogReader.cc | 4 +-- 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/liberty/LibertyReader.cc b/liberty/LibertyReader.cc index abebce66..76661f40 100644 --- a/liberty/LibertyReader.cc +++ b/liberty/LibertyReader.cc @@ -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); diff --git a/messages.txt b/messages.txt index b9a2810c..e842c26c 100644 --- a/messages.txt +++ b/messages.txt @@ -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 diff --git a/verilog/VerilogReader.cc b/verilog/VerilogReader.cc index 4b0f36bd..4ede7837 100644 --- a/verilog/VerilogReader.cc +++ b/verilog/VerilogReader.cc @@ -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; } }