From cade6da64de47f2781edf9826e9fd385975ec816 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Tue, 21 Jan 2025 18:35:21 -0700 Subject: [PATCH 01/11] verilog c++ parser commit 6fac3fee87a3309132b5bdbb731292ecd6410a86 Author: James Cherry Date: Tue Jan 21 18:24:18 2025 -0700 Sta use VerilogReader class Signed-off-by: James Cherry commit 05d4bce4bcfcfaa07392b237a596a82315b895b3 Author: James Cherry Date: Tue Jan 21 15:14:29 2025 -0700 vparse Signed-off-by: James Cherry commit e977e89b62191688db5c815131fc389d9ce401c5 Author: James Cherry Date: Tue Jan 21 11:30:46 2025 -0700 write_verilog missing port ddcl Signed-off-by: James Cherry commit 1742d5d92533559235ea4c42d9ea4bf2d47fb943 Author: James Cherry Date: Tue Jan 21 11:23:48 2025 -0700 verilog escape constexpr Signed-off-by: James Cherry commit 226a23092312a37503100d49ab74d4fb1e5856ef Author: James Cherry Date: Mon Jan 20 09:34:32 2025 -0700 comment Signed-off-by: James Cherry commit 63ca4ac5855710427e1ddfc5c2cba8998452d1f0 Author: James Cherry Date: Sun Jan 19 19:45:48 2025 -0700 leaks Signed-off-by: James Cherry commit c1d38aa0cc983204b1bb3f49944709e74c831be7 Author: James Cherry Date: Sun Jan 19 13:26:07 2025 -0700 verilog std::string Signed-off-by: James Cherry commit 22607b41b9eb9fc71d53214893150afb757a8a56 Author: James Cherry Date: Sun Jan 19 11:36:23 2025 -0700 verilog std::string Signed-off-by: James Cherry commit dba2bc939fc58d465229cc2d474705151cd50d05 Author: James Cherry Date: Sun Jan 19 10:01:14 2025 -0700 verilog std::string Signed-off-by: James Cherry commit 7d449041a2b75b874038af377d46130b45195a00 Author: James Cherry Date: Sun Jan 19 09:18:55 2025 -0700 verilog std::string Signed-off-by: James Cherry commit d02495222838f037f25d131ce1b270a6121cf16f Author: James Cherry Date: Sun Jan 19 08:53:47 2025 -0700 verilog std::string Signed-off-by: James Cherry commit 10c5c1040f26c8ebe295d245a641fc913e0ec9f5 Author: James Cherry Date: Sat Jan 18 21:50:12 2025 -0700 verlog constant use std::string Signed-off-by: James Cherry commit 21943c1b63fd36d12de1e5986905e14fe73ce7be Author: James Cherry Date: Sat Jan 18 17:41:43 2025 -0700 verilog std::string Signed-off-by: James Cherry commit c0232b71ea5137b37d055d83f3da194341aed7a0 Author: James Cherry Date: Sat Jan 18 17:12:47 2025 -0700 verilog std::string Signed-off-by: James Cherry commit c68fd0329ee35b4877763bcdc82e8fe03a3b16de Author: James Cherry Date: Sat Jan 18 16:54:10 2025 -0700 verilog std::string Signed-off-by: James Cherry commit 3e2dca2140db42acce390ec1a18f29ee4de3c631 Author: James Cherry Date: Sat Jan 18 16:07:19 2025 -0700 vparse const Signed-off-by: James Cherry commit 210196f9e5a63dfdd5ed45a418388b7ec74ade07 Author: James Cherry Date: Sat Jan 18 12:31:13 2025 -0700 verilog parse centos7 Signed-off-by: James Cherry commit b8e1882121ac1763e767d299fd929bdfb07c5ffb Author: James Cherry Date: Sat Jan 18 10:21:48 2025 -0700 verilog names string* Signed-off-by: James Cherry commit c455723c5801d2d7386e7d1d53a0f9fb501c0c03 Author: James Cherry Date: Sat Jan 18 09:51:47 2025 -0700 verilog reader names Signed-off-by: James Cherry commit 47307b1d8a61abab91195969be8708a7646bbfe3 Author: James Cherry Date: Sat Jan 18 09:21:30 2025 -0700 valgrind Signed-off-by: James Cherry commit 0de49ba76cb0d1e06f93868676b73b4cd2ee609e Author: James Cherry Date: Wed Jan 15 16:50:56 2025 -0700 suppress yynerrs_ warning Signed-off-by: James Cherry commit dbe2ba18d99d850ba5ebb1c75a4165bfff2df96d Author: James Cherry Date: Wed Jan 15 16:37:14 2025 -0700 cmake bison target names Signed-off-by: James Cherry commit 388be6c2aa69b839a53be78bafab420216554944 Author: James Cherry Date: Tue Jan 14 08:57:02 2025 -0700 network link func rm repor, network args Signed-off-by: James Cherry commit f50d5b23aff126e7d396a555f06eae5597ec1354 Author: James Cherry Date: Mon Jan 13 19:48:44 2025 -0700 verilog reader use gzstream Signed-off-by: James Cherry commit 8a0c8ce09087cceef36824de3656b5c7cea9f0f0 Author: James Cherry Date: Mon Jan 13 18:02:40 2025 -0700 VerilogScanner::error Signed-off-by: James Cherry commit 413093e46e523d90e45a4c56ecaa25e4457998aa Author: James Cherry Date: Fri Jan 10 18:27:53 2025 -0700 rm verilog_network Signed-off-by: James Cherry commit aef8358a8f44e556a3814e9ddd205e179bf2b3d7 Author: James Cherry Date: Fri Jan 10 18:01:09 2025 -0700 rm verilog_reader except link Signed-off-by: James Cherry commit cfc34aa41a5fe1942867c73061ae483e36c74f54 Author: James Cherry Date: Fri Jan 10 17:04:33 2025 -0700 verilog reader rm line_ Signed-off-by: James Cherry commit 62dd98b7cb800acc61192b0f326d4a3278e1a72d Author: James Cherry Date: Fri Jan 10 16:26:09 2025 -0700 verilog parse use location Signed-off-by: James Cherry commit ad6c26984526312134d03c0f39d3fcd63617efa4 Author: James Cherry Date: Sat Jan 4 11:04:16 2025 -0800 verilog parse error Signed-off-by: James Cherry commit 1bff12c8c49c847de015dd32042cccf7952a2060 Author: James Cherry Date: Sat Jan 4 08:00:40 2025 -0800 attribute -> Attr Signed-off-by: James Cherry commit e8372df18a5374b2c9ca8f094a244d06c59a9f4e Author: James Cherry Date: Fri Jan 3 17:57:21 2025 -0800 verilog rm string_buf Signed-off-by: James Cherry commit 785818f10108f689b4ea978a13d0131546f1a4e5 Author: James Cherry Date: Fri Jan 3 16:10:10 2025 -0800 verilog parse use std::string Signed-off-by: James Cherry commit 95265fc4ad30325f115eb69d10c77afe3f265701 Author: James Cherry Date: Fri Jan 3 15:44:31 2025 -0800 verilog parser const char * -> string* Signed-off-by: James Cherry commit b80db6d98057363f90a9497b10073f84c2e7cc3d Author: James Cherry Date: Thu Jan 2 08:31:06 2025 -0800 bison warning Signed-off-by: James Cherry commit df3b61bf7d590c241ee513eacfb1c7dff2a450d8 Author: James Cherry Date: Wed Jan 1 17:04:17 2025 -0800 verilog parse works Signed-off-by: James Cherry commit 8b5a8fbb7042ceb58fbb24b836664a1da6028c45 Author: James Cherry Date: Wed Jan 1 16:15:44 2025 -0800 rm VerilogParser.hh Signed-off-by: James Cherry commit 07bc0cc9c160e9dbe705f4c359973cc35342e05e Author: James Cherry Date: Wed Jan 1 15:59:57 2025 -0800 verlog parse compiles Signed-off-by: James Cherry commit 8d32f5f3d5e6a252cdb2020c62742f01b1c66f63 Author: James Cherry Date: Mon Dec 30 09:14:13 2024 -0800 verilog parser Signed-off-by: James Cherry Signed-off-by: James Cherry --- CMakeLists.txt | 53 +- include/sta/ConcreteNetwork.hh | 4 +- include/sta/Network.hh | 10 +- include/sta/Sta.hh | 2 + include/sta/VerilogNamespace.hh | 17 +- network/ConcreteNetwork.cc | 4 +- network/VerilogNamespace.cc | 75 +- power/VcdReader.cc | 4 +- search/Sta.cc | 14 +- test/verilog_attribute.tcl | 2 +- util/FlexDisableRegister.hh | 1 + util/gzstream.hh | 213 +++++ verilog/Verilog.i | 15 +- verilog/VerilogLex.ll | 126 +-- verilog/VerilogParse.yy | 264 +++--- verilog/VerilogReader.cc | 862 ++++++++---------- verilog/VerilogReader.hh | 292 ++++++ verilog/VerilogReaderPvt.hh | 468 ++-------- .../VerilogScanner.hh | 37 +- verilog/VerilogWriter.cc | 32 +- 20 files changed, 1304 insertions(+), 1191 deletions(-) create mode 100644 util/gzstream.hh create mode 100644 verilog/VerilogReader.hh rename include/sta/VerilogReader.hh => verilog/VerilogScanner.hh (52%) diff --git a/CMakeLists.txt b/CMakeLists.txt index ea7f512b..ee73737b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -266,58 +266,60 @@ find_package(FLEX) find_package(BISON) # LibertyExpr scan/parse. -flex_target(LibertyExprLex ${STA_HOME}/liberty/LibertyExprLex.ll ${CMAKE_CURRENT_BINARY_DIR}/LibertyExprLex.cc +flex_target(LibertyExprLex ${STA_HOME}/liberty/LibertyExprLex.ll + ${CMAKE_CURRENT_BINARY_DIR}/LibertyExprLex.cc COMPILE_FLAGS --prefix=LibertyExprLex_) -bison_target(LibertyExprParser ${STA_HOME}/liberty/LibertyExprParse.yy ${CMAKE_CURRENT_BINARY_DIR}/LibertyExprParse.cc +bison_target(LibertyExprParse ${STA_HOME}/liberty/LibertyExprParse.yy + ${CMAKE_CURRENT_BINARY_DIR}/LibertyExprParse.cc COMPILE_FLAGS --name-prefix=LibertyExprParse_ ) -add_flex_bison_dependency(LibertyExprLex LibertyExprParser) +add_flex_bison_dependency(LibertyExprLex LibertyExprParse) # Liberty scan/parse. flex_target(LibertyLex ${STA_HOME}/liberty/LibertyLex.ll ${CMAKE_CURRENT_BINARY_DIR}/LibertyLex.cc COMPILE_FLAGS --prefix=LibertyLex_ ) -bison_target(LibertyParser ${STA_HOME}/liberty/LibertyParse.yy ${CMAKE_CURRENT_BINARY_DIR}/LibertyParse.cc +bison_target(LibertyParse ${STA_HOME}/liberty/LibertyParse.yy ${CMAKE_CURRENT_BINARY_DIR}/LibertyParse.cc COMPILE_FLAGS "--name-prefix=LibertyParse_ -v" ) -add_flex_bison_dependency(LibertyLex LibertyParser) +add_flex_bison_dependency(LibertyLex LibertyParse) # Spef scan/parse. flex_target(SpefLex ${STA_HOME}/parasitics/SpefLex.ll ${CMAKE_CURRENT_BINARY_DIR}/SpefLex.cc COMPILE_FLAGS --prefix=SpefLex_ ) -bison_target(SpefParser ${STA_HOME}/parasitics/SpefParse.yy ${CMAKE_CURRENT_BINARY_DIR}/SpefParse.cc +bison_target(SpefParse ${STA_HOME}/parasitics/SpefParse.yy ${CMAKE_CURRENT_BINARY_DIR}/SpefParse.cc COMPILE_FLAGS --name-prefix=SpefParse_ ) -add_flex_bison_dependency(SpefLex SpefParser) +add_flex_bison_dependency(SpefLex SpefParse) # Verilog scan/parse. -flex_target(VerilogLex ${STA_HOME}/verilog/VerilogLex.ll ${CMAKE_CURRENT_BINARY_DIR}/VerilogLex.cc - COMPILE_FLAGS --prefix=VerilogLex_ - ) -bison_target(VerilogParser ${STA_HOME}/verilog/VerilogParse.yy ${CMAKE_CURRENT_BINARY_DIR}/VerilogParse.cc - COMPILE_FLAGS --name-prefix=VerilogParse_ - ) -add_flex_bison_dependency(VerilogLex VerilogParser) +flex_target(VerilogLex ${STA_HOME}/verilog/VerilogLex.ll + ${CMAKE_CURRENT_BINARY_DIR}/VerilogLex.cc) +bison_target(VerilogParse ${STA_HOME}/verilog/VerilogParse.yy + ${CMAKE_CURRENT_BINARY_DIR}/VerilogParse.cc + # centos7 bison 3.0.4 < 3.3.0 uses parser_class_name instead of api.parsr.class + COMPILE_FLAGS -Wno-deprecated) +add_flex_bison_dependency(VerilogLex VerilogParse) # Sdf scan/parse. flex_target(SdfLex ${STA_HOME}/sdf/SdfLex.ll ${CMAKE_CURRENT_BINARY_DIR}/SdfLex.cc COMPILE_FLAGS --prefix=SdfLex_ ) -bison_target(SdfParser ${STA_HOME}/sdf/SdfParse.yy ${CMAKE_CURRENT_BINARY_DIR}/SdfParse.cc +bison_target(SdfParse ${STA_HOME}/sdf/SdfParse.yy ${CMAKE_CURRENT_BINARY_DIR}/SdfParse.cc COMPILE_FLAGS --name-prefix=SdfParse_ ) -add_flex_bison_dependency(SdfLex SdfParser) +add_flex_bison_dependency(SdfLex SdfParse) # Saif scan/parse. flex_target(SaifLex ${STA_HOME}/power/SaifLex.ll ${CMAKE_CURRENT_BINARY_DIR}/SaifLex.cc COMPILE_FLAGS --prefix=SaifLex_ ) -bison_target(SaifParser ${STA_HOME}/power/SaifParse.yy ${CMAKE_CURRENT_BINARY_DIR}/SaifParse.cc +bison_target(SaifParse ${STA_HOME}/power/SaifParse.yy ${CMAKE_CURRENT_BINARY_DIR}/SaifParse.cc COMPILE_FLAGS --name-prefix=SaifParse_ ) -add_flex_bison_dependency(SaifLex SaifParser) +add_flex_bison_dependency(SaifLex SaifParse) ################################################################ @@ -489,21 +491,21 @@ target_sources(OpenSTA ${STA_TCL_INIT} ${FLEX_LibertyExprLex_OUTPUTS} - ${BISON_LibertyExprParser_OUTPUTS} + ${BISON_LibertyExprParse_OUTPUTS} ${FLEX_LibertyLex_OUTPUTS} - ${BISON_LibertyParser_OUTPUTS} + ${BISON_LibertyParse_OUTPUTS} ${FLEX_SpefLex_OUTPUTS} - ${BISON_SpefParser_OUTPUTS} + ${BISON_SpefParse_OUTPUTS} ${FLEX_SdfLex_OUTPUTS} - ${BISON_SdfParser_OUTPUTS} + ${BISON_SdfParse_OUTPUTS} ${FLEX_VerilogLex_OUTPUTS} - ${BISON_VerilogParser_OUTPUTS} + ${BISON_VerilogParse_OUTPUTS} ${FLEX_SaifLex_OUTPUTS} - ${BISON_SaifParser_OUTPUTS} + ${BISON_SaifParse_OUTPUTS} ) target_link_libraries(OpenSTA @@ -521,11 +523,14 @@ target_include_directories(OpenSTA PUBLIC include ${TCL_INCLUDE_PATH} + ${FLEX_INCLUDE_DIRS} PRIVATE include/sta ${STA_HOME} ${CUDD_INCLUDE} + # For flex to find location.hh + ${CMAKE_CURRENT_BINARY_DIR} ) if (TCL_READLINE) diff --git a/include/sta/ConcreteNetwork.hh b/include/sta/ConcreteNetwork.hh index 69b7d188..52782b6a 100644 --- a/include/sta/ConcreteNetwork.hh +++ b/include/sta/ConcreteNetwork.hh @@ -237,7 +237,7 @@ public: void deleteCellNetworkViews() override; void readNetlistBefore() override; - void setLinkFunc(LinkNetworkFunc *link) override; + void setLinkFunc(LinkNetworkFunc link) override; static ObjectId nextObjectId(); // Used by external tools. @@ -273,7 +273,7 @@ protected: ConcreteLibraryMap library_map_; Instance *top_instance_; NetSet constant_nets_[2]; // LogicValue::zero/one - LinkNetworkFunc *link_func_; + LinkNetworkFunc link_func_; CellNetworkViewMap cell_network_view_map_; static ObjectId object_id_; diff --git a/include/sta/Network.hh b/include/sta/Network.hh index 7809c3c4..44cd2dd1 100644 --- a/include/sta/Network.hh +++ b/include/sta/Network.hh @@ -27,6 +27,8 @@ namespace sta { +using std::function; + class Report; class PatternMatch; class PinVisitor; @@ -34,10 +36,8 @@ class PinVisitor; typedef Map LibertyLibraryMap; // Link network function returns top level instance. // Return nullptr if link fails. -typedef Instance *(LinkNetworkFunc)(const char *top_cell_name, - bool make_black_boxes, - Report *report, - NetworkReader *network); +typedef function LinkNetworkFunc; typedef Map NetDrvrPinsMap; // The Network class defines the network API used by sta. @@ -535,7 +535,7 @@ public: NetworkReader() {} // Called before reading a netlist to delete any previously linked network. virtual void readNetlistBefore() = 0; - virtual void setLinkFunc(LinkNetworkFunc *link) = 0; + virtual void setLinkFunc(LinkNetworkFunc link) = 0; virtual Library *makeLibrary(const char *name, const char *filename) = 0; virtual void deleteLibrary(Library *library) = 0; diff --git a/include/sta/Sta.hh b/include/sta/Sta.hh index 0d327173..4edd0623 100644 --- a/include/sta/Sta.hh +++ b/include/sta/Sta.hh @@ -43,6 +43,7 @@ class MinMax; class MinMaxAll; class RiseFallBoth; class RiseFall; +class VerilogReader; class ReportPath; class CheckTiming; class DcalcAnalysisPt; @@ -1439,6 +1440,7 @@ protected: CmdNamespace cmd_namespace_; Instance *current_instance_; Corner *cmd_corner_; + VerilogReader *verilog_reader_; CheckTiming *check_timing_; CheckSlewLimits *check_slew_limits_; CheckFanoutLimits *check_fanout_limits_; diff --git a/include/sta/VerilogNamespace.hh b/include/sta/VerilogNamespace.hh index c1d7785a..a0b2b79e 100644 --- a/include/sta/VerilogNamespace.hh +++ b/include/sta/VerilogNamespace.hh @@ -25,22 +25,19 @@ using std::string; string cellVerilogName(const char *sta_name); string -instanceVerilogName(const char *sta_name, - const char escape); +instanceVerilogName(const char *sta_name); string -netVerilogName(const char *sta_name, - const char escape); +netVerilogName(const char *sta_name); string -portVerilogName(const char *sta_name, - const char escape); +portVerilogName(const char *sta_name); string -moduleVerilogToSta(const char *sta_name); +moduleVerilogToSta(const string *sta_name); string -instanceVerilogToSta(const char *sta_name); +instanceVerilogToSta(const string *sta_name); string -netVerilogToSta(const char *sta_name); +netVerilogToSta(const string *sta_name); string -portVerilogToSta(const char *sta_name); +portVerilogToSta(const string *sta_name); } // namespace diff --git a/network/ConcreteNetwork.cc b/network/ConcreteNetwork.cc index 456c3bca..ea184fb1 100644 --- a/network/ConcreteNetwork.cc +++ b/network/ConcreteNetwork.cc @@ -1951,7 +1951,7 @@ ConcreteNetwork::setTopInstance(Instance *top_inst) } void -ConcreteNetwork::setLinkFunc(LinkNetworkFunc *link) +ConcreteNetwork::setLinkFunc(LinkNetworkFunc link) { link_func_ = link; } @@ -1964,7 +1964,7 @@ ConcreteNetwork::linkNetwork(const char *top_cell_name, if (link_func_) { clearConstantNets(); deleteTopInstance(); - top_instance_ = link_func_(top_cell_name, make_black_boxes, report, this); + top_instance_ = link_func_(top_cell_name, make_black_boxes); if (top_instance_) checkNetworkLibertyCorners(); return top_instance_ != nullptr; diff --git a/network/VerilogNamespace.cc b/network/VerilogNamespace.cc index a9971637..4e264b00 100644 --- a/network/VerilogNamespace.cc +++ b/network/VerilogNamespace.cc @@ -23,56 +23,52 @@ namespace sta { +constexpr char verilog_escape = '\\'; + static string -staToVerilog(const char *sta_name, - const char escape); +staToVerilog(const char *sta_name); static string -staToVerilog2(const char *sta_name, - const char escape); +staToVerilog2(const char *sta_name); static string -verilogToSta(const char *verilog_name); +verilogToSta(const string *verilog_name); string cellVerilogName(const char *sta_name) { - return staToVerilog(sta_name, '\\'); + return staToVerilog(sta_name); } string -instanceVerilogName(const char *sta_name, - const char escape) +instanceVerilogName(const char *sta_name) { - return staToVerilog(sta_name, escape); + return staToVerilog(sta_name); } string -netVerilogName(const char *sta_name, - const char escape) +netVerilogName(const char *sta_name) { bool is_bus; string bus_name; int index; - parseBusName(sta_name, '[', ']', escape, is_bus, bus_name, index); + parseBusName(sta_name, '[', ']', verilog_escape, is_bus, bus_name, index); if (is_bus) { - string bus_vname = staToVerilog(bus_name.c_str(), escape); + string bus_vname = staToVerilog(bus_name.c_str()); string vname; stringPrint(vname, "%s[%d]", bus_vname.c_str(), index); return vname; } else - return staToVerilog2(sta_name, escape); + return staToVerilog2(sta_name); } string -portVerilogName(const char *sta_name, - const char escape) +portVerilogName(const char *sta_name) { - return staToVerilog2(sta_name, escape); + return staToVerilog2(sta_name); } static string -staToVerilog(const char *sta_name, - const char escape) +staToVerilog(const char *sta_name) { // Leave room for leading escape and trailing space if the name // needs to be escaped. @@ -81,9 +77,9 @@ staToVerilog(const char *sta_name, bool escaped = false; for (const char *s = sta_name; *s ; s++) { char ch = s[0]; - if (ch == escape) { + if (ch == verilog_escape) { char next_ch = s[1]; - if (next_ch == escape) { + if (next_ch == verilog_escape) { escaped_name += ch; escaped_name += next_ch; s++; @@ -108,8 +104,7 @@ staToVerilog(const char *sta_name, } static string -staToVerilog2(const char *sta_name, - const char escape) +staToVerilog2(const char *sta_name) { constexpr char bus_brkt_left = '['; constexpr char bus_brkt_right = ']'; @@ -120,9 +115,9 @@ staToVerilog2(const char *sta_name, bool escaped = false; for (const char *s = sta_name; *s ; s++) { char ch = s[0]; - if (ch == escape) { + if (ch == verilog_escape) { char next_ch = s[1]; - if (next_ch == escape) { + if (next_ch == verilog_escape) { escaped_name += ch; escaped_name += next_ch; s++; @@ -151,58 +146,56 @@ staToVerilog2(const char *sta_name, //////////////////////////////////////////////////////////////// string -moduleVerilogToSta(const char *module_name) +moduleVerilogToSta(const string *module_name) { return verilogToSta(module_name); } string -instanceVerilogToSta(const char *inst_name) +instanceVerilogToSta(const string *inst_name) { return verilogToSta(inst_name); } string -netVerilogToSta(const char *net_name) +netVerilogToSta(const string *net_name) { return verilogToSta(net_name); } string -portVerilogToSta(const char *port_name) +portVerilogToSta(const string *port_name) { return verilogToSta(port_name); } static string -verilogToSta(const char *verilog_name) +verilogToSta(const string *verilog_name) { - if (verilog_name && verilog_name[0] == '\\') { + if (verilog_name->front() == '\\') { constexpr char divider = '/'; - constexpr char escape = '\\'; constexpr char bus_brkt_left = '['; constexpr char bus_brkt_right = ']'; - // Ignore leading '\'. - verilog_name = &verilog_name[1]; - size_t verilog_name_length = strlen(verilog_name); - if (isspace(verilog_name[verilog_name_length - 1])) + size_t verilog_name_length = verilog_name->size(); + if (isspace(verilog_name->back())) verilog_name_length--; string sta_name; - for (size_t i = 0; i < verilog_name_length; i++) { - char ch = verilog_name[i]; + // Ignore leading '\'. + for (size_t i = 1; i < verilog_name_length; i++) { + char ch = verilog_name->at(i); if (ch == bus_brkt_left || ch == bus_brkt_right || ch == divider - || ch == escape) + || ch == verilog_escape) // Escape bus brackets, dividers and escapes. - sta_name += escape; + sta_name += verilog_escape; sta_name += ch; } return sta_name; } else - return string(verilog_name); + return string(*verilog_name); } } // namespace diff --git a/power/VcdReader.cc b/power/VcdReader.cc index aacc2032..b060f932 100644 --- a/power/VcdReader.cc +++ b/power/VcdReader.cc @@ -218,7 +218,7 @@ VcdCountReader::makeVar(const VcdScope &scope, // Strip the scope from the name. string var_scoped = path_name.substr(scope_length + 1); if (width == 1) { - string pin_name = netVerilogToSta(var_scoped.c_str()); + string pin_name = netVerilogToSta(&var_scoped); addVarPin(pin_name, id, width, 0); } else { @@ -228,7 +228,7 @@ VcdCountReader::makeVar(const VcdScope &scope, parseBusName(var_scoped.c_str(), '[', ']', '\\', is_bus, is_range, bus_name, from, to, subscript_wild); if (is_bus) { - string sta_bus_name = netVerilogToSta(bus_name.c_str()); + string sta_bus_name = netVerilogToSta(&bus_name); int bit_idx = 0; if (to < from) { for (int bus_bit = to; bus_bit <= from; bus_bit++) { diff --git a/search/Sta.cc b/search/Sta.cc index d5ccf4fe..04c6caa9 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -32,7 +32,7 @@ #include "SdcNetwork.hh" #include "MakeConcreteNetwork.hh" #include "PortDirection.hh" -#include "VerilogReader.hh" +#include "verilog/VerilogReader.hh" #include "Graph.hh" #include "GraphCmp.hh" #include "Sdc.hh" @@ -235,9 +235,6 @@ initSta() void deleteAllMemory() { - // Verilog modules refer to the network in the sta so it has - // to deleted before the sta. - deleteVerilogReader(); Sta *sta = Sta::sta(); if (sta) { delete sta; @@ -257,6 +254,8 @@ Sta *Sta::sta_; Sta::Sta() : StaState(), current_instance_(nullptr), + cmd_corner_(nullptr), + verilog_reader_(nullptr), check_timing_(nullptr), check_slew_limits_(nullptr), check_fanout_limits_(nullptr), @@ -514,6 +513,9 @@ Sta::sta() Sta::~Sta() { + // Verilog modules refer to the network in the sta so it has + // to deleted before the network. + delete verilog_reader_; // Delete "top down" to minimize chance of referencing deleted memory. delete check_slew_limits_; delete check_fanout_limits_; @@ -728,8 +730,10 @@ Sta::readVerilog(const char *filename) { NetworkReader *network = networkReader(); if (network) { + if (verilog_reader_ == nullptr) + verilog_reader_ = new VerilogReader(network); readNetlistBefore(); - return readVerilogFile(filename, network); + return verilog_reader_->read(filename); } else return false; diff --git a/test/verilog_attribute.tcl b/test/verilog_attribute.tcl index 77842ed4..716b0955 100644 --- a/test/verilog_attribute.tcl +++ b/test/verilog_attribute.tcl @@ -1,4 +1,4 @@ -# Tests whether Verilog attributes can be parsed and retrieved correctly +# verilog attribute parse/raccess read_liberty ../examples/sky130hd_tt.lib.gz read_verilog verilog_attribute.v link_design counter diff --git a/util/FlexDisableRegister.hh b/util/FlexDisableRegister.hh index bf90316a..64983ba7 100644 --- a/util/FlexDisableRegister.hh +++ b/util/FlexDisableRegister.hh @@ -1,3 +1,4 @@ +// centos7 flex 2.5.37 // workaround for flex versions that insert register declarations #if !(YY_FLEX_MAJOR_VERSION >= 2 && YY_FLEX_MINOR_VERSION >= 6) && __cplusplus > 199711L #define register diff --git a/util/gzstream.hh b/util/gzstream.hh new file mode 100644 index 00000000..a6e7803e --- /dev/null +++ b/util/gzstream.hh @@ -0,0 +1,213 @@ +// ============================================================================ +// gzstream, C++ iostream classes wrapping the zlib compression library. +// Copyright (C) 2001 Deepak Bandyopadhyay, Lutz Kettner +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// ============================================================================ +// +// File : gzstream.h +// Revision : $Revision: 1.5 $ +// Revision_date : $Date: 2002/04/26 23:30:15 $ +// Author(s) : Deepak Bandyopadhyay, Lutz Kettner +// +// Standard streambuf implementation following Nicolai Josuttis, "The +// Standard C++ Library". +// ============================================================================ + +// downloaded from https://gist.github.com/piti118/1508048 + +#pragma once + +// standard C++ with new header file names and std:: namespace +#include +#include +#include +#include +#include + +namespace gzstream { + +// ---------------------------------------------------------------------------- +// Internal classes to implement gzstream. See below for user classes. +// ---------------------------------------------------------------------------- + +class gzstreambuf : public std::streambuf { +private: + static const int bufferSize = 47+256; // size of data buff + // totals 512 bytes under g++ for igzstream at the end. + + gzFile file; // file handle for compressed file + char buffer[bufferSize]; // data buffer + char opened; // open/close state of stream + int mode; // I/O mode + + + int flush_buffer() { + // Separate the writing of the buffer from overflow() and + // sync() operation. + int w = pptr() - pbase(); + if ( gzwrite( file, pbase(), w) != w) + return EOF; + pbump( -w); + return w; + } +public: + gzstreambuf() : opened(0) { + setp( buffer, buffer + (bufferSize-1)); + setg( buffer + 4, // beginning of putback area + buffer + 4, // read position + buffer + 4); // end position + // ASSERT: both input & output capabilities will not be used together + } + int is_open() { return opened; } + + ~gzstreambuf() { close(); } + gzstreambuf* open( const char* name, int open_mode) { + if ( is_open()) + return (gzstreambuf*)0; + mode = open_mode; + // no append nor read/write mode + if ((mode & std::ios::ate) || (mode & std::ios::app) + || ((mode & std::ios::in) && (mode & std::ios::out))) + return (gzstreambuf*)0; + char fmode[10]; + char* fmodeptr = fmode; + if ( mode & std::ios::in) + *fmodeptr++ = 'r'; + else if ( mode & std::ios::out) + *fmodeptr++ = 'w'; + *fmodeptr++ = 'b'; + *fmodeptr = '\0'; + file = gzopen( name, fmode); + if (file == 0) + return (gzstreambuf*)0; + opened = 1; + return this; + } + + gzstreambuf * close() { + if ( is_open()) { + sync(); + opened = 0; + if ( gzclose( file) == Z_OK) + return this; + } + return (gzstreambuf*)0; + } + + virtual int underflow() { // used for input buffer only + if ( gptr() && ( gptr() < egptr())) + return * reinterpret_cast( gptr()); + + if ( ! (mode & std::ios::in) || ! opened) + return EOF; + // Josuttis' implementation of inbuf + int n_putback = gptr() - eback(); + if ( n_putback > 4) + n_putback = 4; + memcpy( buffer + (4 - n_putback), gptr() - n_putback, n_putback); + + int num = gzread( file, buffer+4, bufferSize-4); + if (num <= 0) // ERROR or EOF + return EOF; + + // reset buffer pointers + setg( buffer + (4 - n_putback), // beginning of putback area + buffer + 4, // read position + buffer + 4 + num); // end of buffer + + // return next character + return * reinterpret_cast( gptr()); + } + + virtual int overflow( int c=EOF) { // used for output buffer only + if ( ! ( mode & std::ios::out) || ! opened) + return EOF; + if (c != EOF) { + *pptr() = c; + pbump(1); + } + if ( flush_buffer() == EOF) + return EOF; + return c; + } + + virtual int sync() { + // Changed to use flush_buffer() instead of overflow( EOF) + // which caused improper behavior with std::endl and flush(), + // bug reported by Vincent Ricard. + if ( pptr() && pptr() > pbase()) { + if ( flush_buffer() == EOF) + return -1; + } + return 0; + } +}; + +class gzstreambase : virtual public std::ios { +protected: + gzstreambuf buf; +public: + + gzstreambase() { init(&buf); } + gzstreambase( const char* name, int mode) { + init( &buf); + open( name, mode); + } + ~gzstreambase() { + buf.close(); + } + void open( const char* name, int open_mode) { + if ( ! buf.open( name, open_mode)) + clear( rdstate() | std::ios::badbit); + } + + void close() { + if ( buf.is_open()) + if ( ! buf.close()) + clear( rdstate() | std::ios::badbit); + } + gzstreambuf* rdbuf() { return &buf; } +}; + +// ---------------------------------------------------------------------------- +// User classes. Use igzstream and ogzstream analogously to ifstream and +// ofstream respectively. They read and write files based on the gz* +// function interface of the zlib. Files are compatible with gzip compression. +// ---------------------------------------------------------------------------- + +class igzstream : public gzstreambase, public std::istream { +public: + igzstream() : std::istream( &buf) {} + igzstream( const char* name, int open_mode = std::ios::in) + : gzstreambase( name, open_mode), std::istream( &buf) {} + gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); } + void open( const char* name, int open_mode = std::ios::in) { + gzstreambase::open( name, open_mode); + } +}; + +class ogzstream : public gzstreambase, public std::ostream { +public: + ogzstream() : std::ostream( &buf) {} + ogzstream( const char* name, int mode = std::ios::out) + : gzstreambase( name, mode), std::ostream( &buf) {} + gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); } + void open( const char* name, int open_mode = std::ios::out) { + gzstreambase::open( name, open_mode); + } +}; + +} // namespace GZSTREAM_NAMESPACE diff --git a/verilog/Verilog.i b/verilog/Verilog.i index 0101a2fe..8b528ea8 100644 --- a/verilog/Verilog.i +++ b/verilog/Verilog.i @@ -17,14 +17,8 @@ %module verilog %{ -#include "VerilogReader.hh" #include "VerilogWriter.hh" #include "Sta.hh" - -using sta::Sta; -using sta::NetworkReader; -using sta::readVerilogFile; - %} %inline %{ @@ -35,22 +29,15 @@ read_verilog_cmd(const char *filename) return Sta::sta()->readVerilog(filename); } -void -delete_verilog_reader() -{ - deleteVerilogReader(); -} - void write_verilog_cmd(const char *filename, bool sort, bool include_pwr_gnd, CellSeq *remove_cells) { - Sta *sta = Sta::sta(); // This does NOT want the SDC (cmd) network because it wants // to see the sta internal names. - Network *network = sta->network(); + Network *network = Sta::sta()->network(); writeVerilog(filename, sort, include_pwr_gnd, remove_cells, network); delete remove_cells; } diff --git a/verilog/VerilogLex.ll b/verilog/VerilogLex.ll index fa79cff7..392dc8c2 100644 --- a/verilog/VerilogLex.ll +++ b/verilog/VerilogLex.ll @@ -1,5 +1,4 @@ %{ - // OpenSTA, Static Timing Analyzer // Copyright (c) 2024, Parallax Software, Inc. // @@ -16,29 +15,31 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -#include "util/FlexDisableRegister.hh" -#include "Debug.hh" #include "VerilogNamespace.hh" +#include "verilog/VerilogReader.hh" #include "verilog/VerilogReaderPvt.hh" #include "VerilogParse.hh" +#include "verilog/VerilogScanner.hh" +#include "util/FlexDisableRegister.hh" -#define YY_NO_INPUT +#undef YY_DECL +#define YY_DECL \ +int \ +sta::VerilogScanner::yylex(sta::VerilogParse::semantic_type *const yylval, \ + sta::VerilogParse::location_type *loc) -int verilog_line = 1; -static std::string string_buf; +// update location on matching +#define YY_USER_ACTION loc->step(); loc->columns(yyleng); -void -verilogFlushBuffer() -{ - YY_FLUSH_BUFFER; -} +typedef sta::VerilogParse::token token; %} -/* %option debug */ +%option c++ +%option yyclass="sta::VerilogScanner" %option noyywrap -%option nounput %option never-interactive +%option stack %x COMMENT %x QSTRING @@ -54,119 +55,126 @@ ID_TOKEN {ID_ESCAPED_TOKEN}|{ID_ALPHA_TOKEN} %% ^[ \t]*`.*{EOL} { /* Macro definition. */ - sta::verilog_reader->incrLine(); + loc->lines(); + loc->step(); } "//"[^\n]*{EOL} { /* Single line comment. */ - sta::verilog_reader->incrLine(); + loc->lines(); + loc->step(); } "/*" { BEGIN COMMENT; } { . -{EOL} { sta::verilog_reader->incrLine(); } +{EOL} { + loc->lines(); + loc->step(); + } "*/" { BEGIN INITIAL; } <> { - VerilogParse_error("unterminated comment"); + error("unterminated comment"); BEGIN(INITIAL); yyterminate(); } } {SIGN}?{UNSIGNED_NUMBER}?"'"[sS]?[bB][01_xz]+ { - VerilogParse_lval.constant = sta::stringCopy(VerilogLex_text); - return CONSTANT; + yylval->constant = new string(yytext); + return token::CONSTANT; } {SIGN}?{UNSIGNED_NUMBER}?"'"[sS]?[oO][0-7_xz]+ { - VerilogParse_lval.constant = sta::stringCopy(VerilogLex_text); - return CONSTANT; + yylval->constant = new string(yytext); + return token::CONSTANT; } {SIGN}?{UNSIGNED_NUMBER}?"'"[sS]?[dD][0-9_]+ { - VerilogParse_lval.constant = sta::stringCopy(VerilogLex_text); - return CONSTANT; + yylval->constant = new string(yytext); + return token::CONSTANT; } {SIGN}?{UNSIGNED_NUMBER}?"'"[sS]?[hH][0-9a-fA-F_xz]+ { - VerilogParse_lval.constant = sta::stringCopy(VerilogLex_text); - return CONSTANT; + yylval->constant = new string(yytext); + return token::CONSTANT; } {SIGN}?[0-9]+ { - VerilogParse_lval.ival = atol(VerilogLex_text); - return INT; + yylval->ival = atol(yytext); + return token::INT; } ":"|"."|"{"|"}"|"["|"]"|","|"*"|";"|"="|"-"|"+"|"|"|"("|")" { - return ((int) VerilogLex_text[0]); + return ((int) yytext[0]); } -"(*" { return ATTRIBUTE_OPEN; } -"*)" { return ATTRIBUTE_CLOSED; } -assign { return ASSIGN; } -endmodule { return ENDMODULE; } -inout { return INOUT; } -input { return INPUT; } -module { return MODULE; } -output { return OUTPUT; } -parameter { return PARAMETER; } -defparam { return DEFPARAM; } -reg { return REG; } -supply0 { return SUPPLY0; } -supply1 { return SUPPLY1; } -tri { return TRI; } -wand { return WAND; } -wire { return WIRE; } -wor { return WOR; } +"(*" { return token::ATTR_OPEN; } +"*)" { return token::ATTR_CLOSED; } +assign { return token::ASSIGN; } +endmodule { return token::ENDMODULE; } +inout { return token::INOUT; } +input { return token::INPUT; } +module { return token::MODULE; } +output { return token::OUTPUT; } +parameter { return token::PARAMETER; } +defparam { return token::DEFPARAM; } +reg { return token::REG; } +supply0 { return token::SUPPLY0; } +supply1 { return token::SUPPLY1; } +tri { return token::TRI; } +wand { return token::WAND; } +wire { return token::WIRE; } +wor { return token::WOR; } {ID_TOKEN}("."{ID_TOKEN})* { - VerilogParse_lval.string = sta::stringCopy(VerilogLex_text); - return ID; + yylval->string = new string(yytext, yyleng); + return token::ID; } -{EOL} { sta::verilog_reader->incrLine(); } +{EOL} { + loc->lines(); + loc->step(); + } {BLANK} { /* ignore blanks */ } \" { - string_buf.erase(); + yylval->string = new string; BEGIN(QSTRING); } \" { BEGIN(INITIAL); - VerilogParse_lval.string = sta::stringCopy(string_buf.c_str()); - return STRING; + return token::STRING; } {EOL} { - VerilogParse_error("unterminated string constant"); + error("unterminated quoted string"); BEGIN(INITIAL); - VerilogParse_lval.string = sta::stringCopy(string_buf.c_str()); - return STRING; + return token::STRING; } \\{EOL} { /* Line continuation. */ - sta::verilog_reader->incrLine(); + loc->lines(); + loc->step(); } [^\r\n\"]+ { - /* Anything return or double quote */ - string_buf += VerilogLex_text; + /* Anything return token::or double quote */ + *yylval->string += yytext; } <> { - VerilogParse_error("unterminated string constant"); + error("unterminated string constant"); BEGIN(INITIAL); yyterminate(); } /* Send out of bound characters to parser. */ -. { return (int) VerilogLex_text[0]; } +. { return (int) yytext[0]; } %% diff --git a/verilog/VerilogParse.yy b/verilog/VerilogParse.yy index 17588bc3..4bcacb46 100644 --- a/verilog/VerilogParse.yy +++ b/verilog/VerilogParse.yy @@ -1,5 +1,3 @@ -%{ - // OpenSTA, Static Timing Analyzer // Copyright (c) 2024, Parallax Software, Inc. // @@ -16,26 +14,67 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +%require "3.0" +%skeleton "lalr1.cc" +%debug +%defines +%define api.namespace {sta} + +// bison 3.0.4 for centos7 +%define parser_class_name {VerilogParse} +// bison 3.3.2 +//%define api.parser.class {VerilogParse} + +%code requires { + namespace sta { + class VerilogReadcer; + class VerilogScanner; + } +} + +%locations + +%parse-param { VerilogScanner *scanner } +%parse-param { VerilogReader *reader } + +%{ #include #include #include +#include "Report.hh" #include "PortDirection.hh" +#include "verilog/VerilogReader.hh" #include "verilog/VerilogReaderPvt.hh" -#include "VerilogReader.hh" - -int VerilogLex_lex(); -#define VerilogParse_lex VerilogLex_lex -// Use yacc generated parser errors. -#define YYERROR_VERBOSE - +#include "verilog/VerilogScanner.hh" %} -%union{ +%code { + +#undef yylex +#define yylex scanner->yylex + +// warning: variable 'yynerrs_' set but not used +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" + +#define loc_line(loc) loc.begin.line + +void +sta::VerilogParse::error(const location_type &loc, + const string &msg) +{ + reader->report()->fileError(164,reader->filename(),loc.begin.line,"%s",msg.c_str()); +} + +} + +%define parse.assert + +%union { int ival; - const char *string; - const char *constant; - const char *attribute_spec_value; + std::string *string; + std::string *constant; + std::string *attr_spec_value; sta::VerilogModule *module; sta::VerilogStmt *stmt; sta::VerilogStmtSeq *stmt_seq; @@ -47,26 +86,25 @@ int VerilogLex_lex(); sta::VerilogNet *net; sta::VerilogNetBitSelect *net_bit; sta::VerilogNetSeq *nets; - sta::VerilogAttributeEntry *attribute_entry; - sta::VerilogAttributeEntrySeq *attribute_seq; - sta::VerilogAttributeStmt *attribute_stmt; - sta::VerilogAttributeStmtSeq *attribute_stmt_seq; + sta::VerilogAttrEntry *attr_entry; + sta::VerilogAttrEntrySeq *attr_seq; + sta::VerilogAttrStmt *attr_stmt; + sta::VerilogAttrStmtSeq *attr_stmt_seq; } %token INT CONSTANT ID STRING MODULE ENDMODULE ASSIGN PARAMETER DEFPARAM %token WIRE WAND WOR TRI INPUT OUTPUT INOUT SUPPLY1 SUPPLY0 REG -%token ATTRIBUTE_OPEN ATTRIBUTE_CLOSED +%token ATTR_OPEN ATTR_CLOSED %left '-' '+' %left '*' '/' %left NEG /* negation--unary minus */ -%type ID STRING +%type ID STRING CONSTANT %type WIRE WAND WOR TRI INPUT OUTPUT INOUT SUPPLY1 SUPPLY0 -%type ATTRIBUTE_OPEN ATTRIBUTE_CLOSED -%type INT parameter_exprs parameter_expr module_begin -%type CONSTANT -%type attr_spec_value +%type ATTR_OPEN ATTR_CLOSED +%type INT parameter_exprs parameter_expr +%type attr_spec_value %type dcl_type port_dcl_type %type stmt declaration instance parameter parameter_dcls parameter_dcl %type defparam param_values param_value port_dcl @@ -79,16 +117,18 @@ int VerilogLex_lex(); %type inst_named_pin net_named net_expr_concat %type port_list port_refs inst_ordered_pins %type inst_named_pins net_exprs inst_pins -%type attr_spec -%type attr_specs -%type attribute_instance -%type attribute_instance_seq +%type attr_spec +%type attr_specs +%type attr_instance +%type attr_instance_seq + +// Used by error recovery. +%destructor { delete $$; } STRING +%destructor { delete $$; } CONSTANT +%destructor { delete $$; } attr_spec_value %start file -%{ -%} - %% file: @@ -100,20 +140,15 @@ modules: | modules module ; -module_begin: - MODULE { $$ = sta::verilog_reader->line(); } - { $$ = $2; } - ; - module: - attribute_instance_seq module_begin ID ';' stmts ENDMODULE - { sta::verilog_reader->makeModule($3, new sta::VerilogNetSeq, $5, $1, $2);} -| attribute_instance_seq module_begin ID '(' ')' ';' stmts ENDMODULE - { sta::verilog_reader->makeModule($3, new sta::VerilogNetSeq, $7, $1, $2);} -| attribute_instance_seq module_begin ID '(' port_list ')' ';' stmts ENDMODULE - { sta::verilog_reader->makeModule($3, $5, $8, $1, $2); } -| attribute_instance_seq module_begin ID '(' port_dcls ')' ';' stmts ENDMODULE - { sta::verilog_reader->makeModule($3, $5, $8, $1, $2); } + attr_instance_seq MODULE ID ';' stmts ENDMODULE + { reader->makeModule($3, new sta::VerilogNetSeq,$5, $1, loc_line(@2));} +| attr_instance_seq MODULE ID '(' ')' ';' stmts ENDMODULE + { reader->makeModule($3, new sta::VerilogNetSeq,$7, $1, loc_line(@2));} +| attr_instance_seq MODULE ID '(' port_list ')' ';' stmts ENDMODULE + { reader->makeModule($3, $5, $8, $1, loc_line(@2)); } +| attr_instance_seq MODULE ID '(' port_dcls ')' ';' stmts ENDMODULE + { reader->makeModule($3, $5, $8, $1, loc_line(@2)); } ; port_list: @@ -128,15 +163,15 @@ port_list: port: port_expr | '.' ID '(' ')' - { $$=sta::verilog_reader->makeNetNamedPortRefScalar($2, NULL);} + { $$ = reader->makeNetNamedPortRefScalar($2, nullptr);} | '.' ID '(' port_expr ')' - { $$=sta::verilog_reader->makeNetNamedPortRefScalar($2, $4);} + { $$ = reader->makeNetNamedPortRefScalar($2, $4);} ; port_expr: port_ref | '{' port_refs '}' - { $$ = sta::verilog_reader->makeNetConcat($2); } ; + { $$ = reader->makeNetConcat($2); } ; port_refs: port_ref @@ -171,12 +206,10 @@ port_dcls: ; port_dcl: - attribute_instance_seq port_dcl_type - { $$ = sta::verilog_reader->line(); } dcl_arg - { $$ = sta::verilog_reader->makeDcl($2, $4, $1, $3); } -| attribute_instance_seq port_dcl_type - { $$ = sta::verilog_reader->line(); } '[' INT ':' INT ']' dcl_arg - { $$ = sta::verilog_reader->makeDclBus($2, $5, $7, $9, $1, $3); } + attr_instance_seq port_dcl_type dcl_arg + { $$ = reader->makeDcl($2, $3, $1, loc_line(@2)); } +| attr_instance_seq port_dcl_type '[' INT ':' INT ']' dcl_arg + { $$ = reader->makeDclBus($2, $4, $6, $8, $1, loc_line(@2)); } ; port_dcl_type: @@ -210,7 +243,7 @@ stmt: | declaration | instance | error ';' - { yyerrok; $$ = NULL; } + { yyerrok; $$ = nullptr; } ; stmt_seq: @@ -220,43 +253,32 @@ stmt_seq: /* Parameters are parsed and ignored. */ parameter: PARAMETER parameter_dcls ';' - { $$ = NULL; } + { $$ = nullptr; } | PARAMETER '[' INT ':' INT ']' parameter_dcls ';' - { $$ = NULL; } + { $$ = nullptr; } ; parameter_dcls: parameter_dcl - { $$ = NULL; } + { $$ = nullptr; } | parameter_dcls ',' parameter_dcl - { $$ = NULL; } + { $$ = nullptr; } ; parameter_dcl: ID '=' parameter_expr - { sta::stringDelete($1); - $$ = NULL; - } + { delete $1; $$ = nullptr; } | ID '=' STRING - { sta::stringDelete($1); - sta::stringDelete($3); - $$ = NULL; - } + { delete $1; delete $3; $$ = nullptr; } ; parameter_expr: ID - { sta::stringDelete($1); - $$ = 0; - } + { delete $1; $$ = 0; } | '`' ID - { sta::stringDelete($2); - $$ = 0; - } + { delete $2; $$ = 0; } | CONSTANT - { sta::stringDelete($1); - $$ = 0; - } + { delete $1; $$ = 0; } | INT | '-' parameter_expr %prec NEG { $$ = - $2; } @@ -274,34 +296,28 @@ parameter_expr: defparam: DEFPARAM param_values ';' - { $$ = NULL; } + { $$ = nullptr; } ; param_values: param_value - { $$ = NULL; } + { $$ = nullptr; } | param_values ',' param_value - { $$ = NULL; } + { $$ = nullptr; } ; param_value: ID '=' parameter_expr - { sta::stringDelete($1); - $$ = NULL; - } + { delete $1; $$ = nullptr; } | ID '=' STRING - { sta::stringDelete($1); - sta::stringDelete($3); - $$ = NULL; - } + { delete $1; delete $3; $$ = nullptr; } ; declaration: - attribute_instance_seq dcl_type { $$ = sta::verilog_reader->line(); } dcl_args ';' - { $$ = sta::verilog_reader->makeDcl($2, $4, $1, $3); } -| attribute_instance_seq dcl_type { $$ = sta::verilog_reader->line(); } - '[' INT ':' INT ']' dcl_args ';' - { $$ = sta::verilog_reader->makeDclBus($2, $5, $7, $9, $1,$3); } + attr_instance_seq dcl_type dcl_args ';' + { $$ = reader->makeDcl($2, $3, $1, loc_line(@2)); } +| attr_instance_seq dcl_type '[' INT ':' INT ']' dcl_args ';' + { $$ = reader->makeDclBus($2, $4, $6, $8, $1,loc_line(@2)); } ; dcl_type: @@ -329,9 +345,9 @@ dcl_args: dcl_arg: ID - { $$ = sta::verilog_reader->makeDclArg($1); } + { $$ = reader->makeDclArg($1); } | net_assignment - { $$ = sta::verilog_reader->makeDclArg($1); } + { $$ = reader->makeDclArg($1); } ; continuous_assign: @@ -349,8 +365,8 @@ net_assignments: ; net_assignment: - net_assign_lhs { $$ = sta::verilog_reader->line(); } '=' net_expr - { $$ = sta::verilog_reader->makeAssign($1, $4, $2); } + net_assign_lhs '=' net_expr + { $$ = reader->makeAssign($1, $3, loc_line(@1)); } ; net_assign_lhs: @@ -359,11 +375,10 @@ net_assign_lhs: ; instance: - attribute_instance_seq ID { $$ = sta::verilog_reader->line(); } ID '(' inst_pins ')' ';' - { $$ = sta::verilog_reader->makeModuleInst($2, $4, $6, $1, $3); } -| attribute_instance_seq ID { $$ = sta::verilog_reader->line(); } parameter_values - ID '(' inst_pins ')' ';' - { $$ = sta::verilog_reader->makeModuleInst($2, $5, $7, $1, $3); } + attr_instance_seq ID ID '(' inst_pins ')' ';' + { $$ = reader->makeModuleInst($2, $3, $5, $1, loc_line(@2)); } +| attr_instance_seq ID parameter_values ID '(' inst_pins ')' ';' + { $$ = reader->makeModuleInst($2, $4, $6, $1, loc_line(@2)); } ; parameter_values: @@ -379,7 +394,7 @@ parameter_exprs: inst_pins: // empty - { $$ = NULL; } + { $$ = nullptr; } | inst_ordered_pins | inst_named_pins ; @@ -409,23 +424,23 @@ inst_named_pins: inst_named_pin: // Scalar port. '.' ID '(' ')' - { $$ = sta::verilog_reader->makeNetNamedPortRefScalarNet($2); } + { $$ = reader->makeNetNamedPortRefScalarNet($2); } | '.' ID '(' ID ')' - { $$ = sta::verilog_reader->makeNetNamedPortRefScalarNet($2, $4); } + { $$ = reader->makeNetNamedPortRefScalarNet($2, $4); } | '.' ID '(' ID '[' INT ']' ')' - { $$ = sta::verilog_reader->makeNetNamedPortRefBitSelect($2, $4, $6); } + { $$ = reader->makeNetNamedPortRefBitSelect($2, $4, $6); } | '.' ID '(' named_pin_net_expr ')' - { $$ = sta::verilog_reader->makeNetNamedPortRefScalar($2, $4); } + { $$ = reader->makeNetNamedPortRefScalar($2, $4); } // Bus port bit select. | '.' ID '[' INT ']' '(' ')' - { $$ = sta::verilog_reader->makeNetNamedPortRefBit($2, $4, NULL); } + { $$ = reader->makeNetNamedPortRefBit($2, $4, nullptr); } | '.' ID '[' INT ']' '(' net_expr ')' - { $$ = sta::verilog_reader->makeNetNamedPortRefBit($2, $4, $7); } + { $$ = reader->makeNetNamedPortRefBit($2, $4, $7); } // Bus port part select. | '.' ID '[' INT ':' INT ']' '(' ')' - { $$ = sta::verilog_reader->makeNetNamedPortRefPart($2, $4, $6, NULL); } + { $$ = reader->makeNetNamedPortRefPart($2, $4, $6, nullptr); } | '.' ID '[' INT ':' INT ']' '(' net_expr ')' - { $$ = sta::verilog_reader->makeNetNamedPortRefPart($2, $4, $6, $9); } + { $$ = reader->makeNetNamedPortRefPart($2, $4, $6, $9); } ; named_pin_net_expr: @@ -442,27 +457,27 @@ net_named: net_scalar: ID - { $$ = sta::verilog_reader->makeNetScalar($1); } + { $$ = reader->makeNetScalar($1); } ; net_bit_select: ID '[' INT ']' - { $$ = sta::verilog_reader->makeNetBitSelect($1, $3); } + { $$ = reader->makeNetBitSelect($1, $3); } ; net_part_select: ID '[' INT ':' INT ']' - { $$ = sta::verilog_reader->makeNetPartSelect($1, $3, $5); } + { $$ = reader->makeNetPartSelect($1, $3, $5); } ; net_constant: CONSTANT - { $$ = sta::verilog_reader->makeNetConstant($1); } + { $$ = reader->makeNetConstant($1, loc_line(@1)); } ; net_expr_concat: '{' net_exprs '}' - { $$ = sta::verilog_reader->makeNetConcat($2); } + { $$ = reader->makeNetConcat($2); } ; net_exprs: @@ -482,37 +497,32 @@ net_expr: | net_expr_concat ; -attribute_instance_seq: +attr_instance_seq: // empty - { $$ = new sta::VerilogAttributeStmtSeq; } -| attribute_instance_seq attribute_instance + { $$ = new sta::VerilogAttrStmtSeq; } +| attr_instance_seq attr_instance { if ($2) $1->push_back($2); } ; -attribute_instance: - ATTRIBUTE_OPEN attr_specs ATTRIBUTE_CLOSED - { $$ = new sta::VerilogAttributeStmt($2); } +attr_instance: + ATTR_OPEN attr_specs ATTR_CLOSED + { $$ = new sta::VerilogAttrStmt($2); } ; attr_specs: attr_spec - { $$ = new sta::VerilogAttributeEntrySeq; + { $$ = new sta::VerilogAttrEntrySeq; $$->push_back($1); } -| attr_specs ',' attr_spec +| attr_specs ',' attr_spec { $$->push_back($3); } ; attr_spec: ID - { $$ = new sta::VerilogAttributeEntry($1, "1"); - delete[] $1; - } + { $$ = new sta::VerilogAttrEntry(*$1, "1"); delete $1; } | ID '=' attr_spec_value - { $$ = new sta::VerilogAttributeEntry($1, $3); - delete[] $1; - delete[] $3; - } + { $$ = new sta::VerilogAttrEntry(*$1, *$3); delete $1; delete $3; } ; attr_spec_value: @@ -521,7 +531,7 @@ attr_spec_value: | STRING { $$ = $1; } | INT - { $$ = sta::stringCopy(std::to_string($1).c_str()); } + { $$ = new string(std::to_string($1)); } ; %% diff --git a/verilog/VerilogReader.cc b/verilog/VerilogReader.cc index 5de06262..3500725d 100644 --- a/verilog/VerilogReader.cc +++ b/verilog/VerilogReader.cc @@ -14,10 +14,12 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -#include "VerilogReader.hh" +#include "verilog/VerilogReader.hh" #include +#include "util/gzstream.hh" + #include "Debug.hh" #include "Report.hh" #include "Error.hh" @@ -28,42 +30,36 @@ #include "VerilogNamespace.hh" #include "StringUtil.hh" #include "verilog/VerilogReaderPvt.hh" - -extern int -VerilogParse_parse(); +#include "verilog/VerilogScanner.hh" namespace sta { -VerilogReader *verilog_reader; -const char *VerilogReader::unconnected_net_name_ = reinterpret_cast(1); +typedef unsigned long long VerilogConstant10; static string -verilogBusBitName(const char *bus_name, +verilogBusBitName(const string &bus_name, int index); static int hierarchyLevel(Net *net, Network *network); -// Return top level instance. -Instance * -linkVerilogNetwork(const char *top_cell_name, - bool make_black_boxes, - Report *report, - NetworkReader *network); + +VerilogReader * +makeVerilogReader(NetworkReader *network) +{ + return new VerilogReader(network); +} bool readVerilogFile(const char *filename, - NetworkReader *network) + VerilogReader *verilog_reader) { - if (verilog_reader == nullptr) - verilog_reader = new VerilogReader(network); return verilog_reader->read(filename); } void -deleteVerilogReader() +deleteVerilogReader(VerilogReader *verilog_reader) { delete verilog_reader; - verilog_reader = nullptr; } //////////////////////////////////////////////////////////////// @@ -141,16 +137,16 @@ VerilogReader::VerilogReader(NetworkReader *network) : zero_net_name_("zero_"), one_net_name_("one_") { - network->setLinkFunc(linkVerilogNetwork); - VerilogConstant10 constant10_max = 0; - constant10_max_ = stringPrint("%llu", ~constant10_max); - constant10_max_length_ = strlen(constant10_max_); + network->setLinkFunc([=] (const char *top_cell_name, + bool make_black_boxes) -> Instance* { + return linkNetwork(top_cell_name, make_black_boxes); + }); + constant10_max_ = stdstrPrint("%llu", std::numeric_limits::max()); } VerilogReader::~VerilogReader() { deleteModules(); - stringDelete(constant10_max_); } void @@ -164,13 +160,13 @@ VerilogReader::deleteModules() bool VerilogReader::read(const char *filename) { - // Use zlib to uncompress gzip'd files automagically. - stream_ = gzopen(filename, "rb"); - if (stream_) { + gzstream::igzstream stream(filename); + if (stream.good()) { Stats stats(debug_, report_); + VerilogScanner scanner(&stream, filename, report_); + VerilogParse parser(&scanner, this); init(filename); - bool success = (::VerilogParse_parse() == 0); - gzclose(stream_); + bool success = (parser.parse() == 0); reportStmtCounts(); stats.report("Read verilog"); return success; @@ -182,15 +178,13 @@ VerilogReader::read(const char *filename) void VerilogReader::init(const char *filename) { - // Statements point to verilog_filename, so copy it. filename_ = filename; - filenames_.push_back(filename); - line_ = 1; library_ = network_->findLibrary("verilog"); if (library_ == nullptr) library_ = network_->makeLibrary("verilog", nullptr); + // Stats report_stmt_stats_ = debug_->check("verilog", 1); module_count_ = 0; inst_mod_count_ = 0; @@ -216,30 +210,6 @@ VerilogReader::init(const char *filename) net_bus_names_ = 0; } -void -VerilogReader::getChars(char *buf, - size_t &result, - size_t max_size) -{ - char *status = gzgets(stream_, buf, max_size); - if (status == Z_NULL) - result = 0; // YY_nullptr - else - result = strlen(buf); -} - -void -VerilogReader::getChars(char *buf, - int &result, - size_t max_size) -{ - char *status = gzgets(stream_, buf, max_size); - if (status == Z_NULL) - result = 0; // YY_nullptr - else - result = strlen(buf); -} - VerilogModule * VerilogReader::module(Cell *cell) { @@ -247,13 +217,13 @@ VerilogReader::module(Cell *cell) } void -VerilogReader::makeModule(const char *module_vname, +VerilogReader::makeModule(const string *module_vname, VerilogNetSeq *ports, VerilogStmtSeq *stmts, - VerilogAttributeStmtSeq *attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line) { - string module_name = moduleVerilogToSta(module_vname); + const string module_name = moduleVerilogToSta(module_vname); Cell *cell = network_->findCell(library_, module_name.c_str()); if (cell) { VerilogModule *module = module_map_[cell]; @@ -263,25 +233,25 @@ VerilogReader::makeModule(const char *module_vname, } VerilogModule *module = new VerilogModule(module_name.c_str(), ports, stmts, - attribute_stmts, filename_, line, this); + attr_stmts, filename_, line, this); cell = network_->makeCell(library_, module_name.c_str(), false, filename_.c_str()); - for (VerilogAttributeStmt *stmt : *attribute_stmts) { - for (VerilogAttributeEntry *entry : *stmt->attribute_sequence()) + for (VerilogAttrStmt *stmt : *attr_stmts) { + for (VerilogAttrEntry *entry : *stmt->attrs()) network_->setAttribute(cell, entry->key(), entry->value()); } module_map_[cell] = module; makeCellPorts(cell, module, ports); module_count_++; - stringDelete(module_vname); + delete module_vname; } void -VerilogReader::makeModule(const char *module_name, +VerilogReader::makeModule(const string *module_name, VerilogStmtSeq *port_dcls, VerilogStmtSeq *stmts, - VerilogAttributeStmtSeq *attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line) { VerilogNetSeq *ports = new VerilogNetSeq; @@ -298,7 +268,7 @@ VerilogReader::makeModule(const char *module_name, } } delete port_dcls; - makeModule(module_name, ports, stmts, attribute_stmts, line); + makeModule(module_name, ports, stmts, attr_stmts, line); } void @@ -306,7 +276,7 @@ VerilogReader::makeCellPorts(Cell *cell, VerilogModule *module, VerilogNetSeq *ports) { - set port_names; + StdStringSet port_names; for (VerilogNet *mod_port : *ports) { const string &port_name = mod_port->name(); if (port_names.find(port_name) == port_names.end()) { @@ -315,13 +285,13 @@ VerilogReader::makeCellPorts(Cell *cell, if (mod_port->isNamedPortRef()) makeNamedPortRefCellPorts(cell, module, mod_port, port_names); else - makeCellPort(cell, module, mod_port->name().c_str()); + makeCellPort(cell, module, mod_port->name()); } } else warn(165, module->filename(), module->line(), "module %s repeated port name %s.", - module->name(), + module->name().c_str(), port_name.c_str()); } checkModuleDcls(module, port_names); @@ -330,25 +300,25 @@ VerilogReader::makeCellPorts(Cell *cell, Port * VerilogReader::makeCellPort(Cell *cell, VerilogModule *module, - const char *port_name) + const string &port_name) { - VerilogDcl *dcl = module->declaration(port_name); + VerilogDcl *dcl = module->declaration(port_name.c_str()); if (dcl) { PortDirection *dir = dcl->direction(); VerilogDclBus *dcl_bus = dynamic_cast(dcl); Port *port = dcl->isBus() - ? network_->makeBusPort(cell, port_name, dcl_bus->fromIndex(), + ? network_->makeBusPort(cell, port_name.c_str(), dcl_bus->fromIndex(), dcl_bus->toIndex()) - : network_->makePort(cell, port_name); + : network_->makePort(cell, port_name.c_str()); network_->setDirection(port, dir); return port; } else { warn(166, module->filename(), module->line(), "module %s missing declaration for port %s.", - module->name(), - port_name); - return network_->makePort(cell, port_name); + module->name().c_str(), + port_name.c_str()); + return network_->makePort(cell, port_name.c_str()); } } @@ -356,12 +326,12 @@ void VerilogReader::makeNamedPortRefCellPorts(Cell *cell, VerilogModule *module, VerilogNet *mod_port, - set &port_names) + StdStringSet &port_names) { PortSeq *member_ports = new PortSeq; VerilogNetNameIterator *net_name_iter = mod_port->nameIterator(module,this); while (net_name_iter->hasNext()) { - const char *net_name = net_name_iter->next(); + const string &net_name = net_name_iter->next(); port_names.insert(net_name); Port *port = makeCellPort(cell, module, net_name); member_ports->push_back(port); @@ -376,11 +346,7 @@ void VerilogReader::checkModuleDcls(VerilogModule *module, set &port_names) { - VerilogDclMap::ConstIterator dcl_iter(module->declarationMap()); - while (dcl_iter.hasNext()) { - VerilogDcl *dcl; - const char *port_name; - dcl_iter.next(port_name, dcl); + for (auto const & [port_name, dcl] : *module->declarationMap()) { PortDirection *dir = dcl->direction(); if (dir->isInput() || dir->isOutput() @@ -388,8 +354,8 @@ VerilogReader::checkModuleDcls(VerilogModule *module, if (port_names.find(port_name) == port_names.end()) linkWarn(197, module->filename(), module->line(), "module %s declared signal %s is not in the port list.", - module->name(), - port_name); + module->name().c_str(), + port_name.c_str()); } } } @@ -397,7 +363,7 @@ VerilogReader::checkModuleDcls(VerilogModule *module, VerilogDcl * VerilogReader::makeDcl(PortDirection *dir, VerilogDclArgSeq *args, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line) { if (dir->isInternal()) { @@ -417,28 +383,28 @@ VerilogReader::makeDcl(PortDirection *dir, delete args; if (assign_args) { dcl_count_++; - return new VerilogDcl(dir, assign_args, attribute_stmts, line); + return new VerilogDcl(dir, assign_args, attr_stmts, line); } else { - attribute_stmts->deleteContents(); - delete attribute_stmts; + attr_stmts->deleteContents(); + delete attr_stmts; return nullptr; } } else { dcl_count_++; - return new VerilogDcl(dir, args, attribute_stmts, line); + return new VerilogDcl(dir, args, attr_stmts, line); } } VerilogDcl * VerilogReader::makeDcl(PortDirection *dir, VerilogDclArg *arg, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line) { dcl_count_++; - return new VerilogDcl(dir, arg, attribute_stmts, line); + return new VerilogDcl(dir, arg, attr_stmts, line); } VerilogDclBus * @@ -446,11 +412,11 @@ VerilogReader::makeDclBus(PortDirection *dir, int from_index, int to_index, VerilogDclArg *arg, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line) { dcl_bus_count_++; - return new VerilogDclBus(dir, from_index, to_index, arg, attribute_stmts, + return new VerilogDclBus(dir, from_index, to_index, arg, attr_stmts, line); } @@ -459,21 +425,21 @@ VerilogReader::makeDclBus(PortDirection *dir, int from_index, int to_index, VerilogDclArgSeq *args, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line) { dcl_bus_count_++; - return new VerilogDclBus(dir, from_index, to_index, args, attribute_stmts, + return new VerilogDclBus(dir, from_index, to_index, args, attr_stmts, line); } VerilogDclArg * -VerilogReader::makeDclArg(const char *net_vname) +VerilogReader::makeDclArg(const string *net_vname) { dcl_arg_count_++; - string net_name = netVerilogToSta(net_vname); - VerilogDclArg *dcl =new VerilogDclArg(net_name.c_str()); - stringDelete(net_vname); + const string net_name = netVerilogToSta(net_vname); + VerilogDclArg *dcl =new VerilogDclArg(net_name); + delete net_vname; return dcl; } @@ -485,50 +451,51 @@ VerilogReader::makeDclArg(VerilogAssign *assign) } VerilogNetPartSelect * -VerilogReader::makeNetPartSelect(const char *net_vname, +VerilogReader::makeNetPartSelect(const string *net_vname, int from_index, int to_index) { net_part_select_count_++; if (report_stmt_stats_) - net_bus_names_ += strlen(net_vname) + 1; - string net_name = netVerilogToSta(net_vname); - VerilogNetPartSelect *select = new VerilogNetPartSelect(net_name.c_str(), + net_bus_names_ += net_vname->size() + 1; + const string net_name = netVerilogToSta(net_vname); + VerilogNetPartSelect *select = new VerilogNetPartSelect(net_name, from_index, to_index); - stringDelete(net_vname); + delete net_vname; return select; } VerilogNetConstant * -VerilogReader::makeNetConstant(const char *constant) +VerilogReader::makeNetConstant(const string *constant, + int line) { net_constant_count_++; - return new VerilogNetConstant(constant, this); + return new VerilogNetConstant(constant, this, line); } VerilogNetScalar * -VerilogReader::makeNetScalar(const char *net_vname) +VerilogReader::makeNetScalar(const string *net_vname) { net_scalar_count_++; if (report_stmt_stats_) - net_scalar_names_ += strlen(net_vname) + 1; - string net_name = netVerilogToSta(net_vname); - VerilogNetScalar *scalar = new VerilogNetScalar(net_name.c_str()); - stringDelete(net_vname); + net_scalar_names_ += net_vname->size() + 1; + const string net_name = netVerilogToSta(net_vname); + VerilogNetScalar *scalar = new VerilogNetScalar(net_name); + delete net_vname; return scalar; } VerilogNetBitSelect * -VerilogReader::makeNetBitSelect(const char *net_vname, +VerilogReader::makeNetBitSelect(const string *net_vname, int index) { net_bit_select_count_++; if (report_stmt_stats_) - net_bus_names_ += strlen(net_vname) + 1; - string net_name = netVerilogToSta(net_vname); - VerilogNetBitSelect *select = new VerilogNetBitSelect(net_name.c_str(), index); - stringDelete(net_vname); + net_bus_names_ += net_vname->size() + 1; + const string net_name = netVerilogToSta(net_vname); + VerilogNetBitSelect *select = new VerilogNetBitSelect(net_name, index); + delete net_vname; return select; } @@ -542,14 +509,14 @@ VerilogReader::makeAssign(VerilogNet *lhs, } VerilogInst * -VerilogReader::makeModuleInst(const char *module_vname, - const char *inst_vname, +VerilogReader::makeModuleInst(const string *module_vname, + const string *inst_vname, VerilogNetSeq *pins, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, const int line) { - string module_name = moduleVerilogToSta(module_vname); - string inst_name = instanceVerilogToSta(inst_vname); + const string module_name = moduleVerilogToSta(module_vname); + const string inst_name = instanceVerilogToSta(inst_vname); Cell *cell = network_->findAnyCell(module_name.c_str()); LibertyCell *liberty_cell = nullptr; if (cell) @@ -559,16 +526,12 @@ VerilogReader::makeModuleInst(const char *module_vname, if (liberty_cell && hasScalarNamedPortRefs(liberty_cell, pins)) { int port_count = network_->portBitCount(cell); - const char **net_names = new const char *[port_count]; - for (int i = 0; i < port_count; i++) - net_names[i] = nullptr; + StdStringSeq net_names(port_count); for (VerilogNet *vnet : *pins) { VerilogNetPortRefScalarNet *vpin = dynamic_cast(vnet); const char *port_name = vpin->name().c_str(); - const char *net_name = vpin->netName(); - // Steal the net name string. - vpin->setNetName(nullptr); + const string &net_name = vpin->netName(); Port *port = network_->findPort(cell, port_name); LibertyPort *lport = network_->libertyPort(port); if (lport->isBus()) { @@ -576,40 +539,35 @@ VerilogReader::makeModuleInst(const char *module_vname, lport = member_iter.next(); } int pin_index = lport->pinIndex(); - const char *prev_net_name = net_names[pin_index]; - if (prev_net_name - && prev_net_name != unconnected_net_name_) - // Repeated port reference. - stringDelete(prev_net_name); - net_names[pin_index]=(net_name == nullptr) ? unconnected_net_name_ : net_name; + net_names[pin_index] = net_name; delete vpin; net_port_ref_scalar_net_count_--; } - VerilogInst *inst = new VerilogLibertyInst(liberty_cell, inst_name.c_str(), - net_names, attribute_stmts, line); + VerilogInst *inst = new VerilogLibertyInst(liberty_cell, inst_name, + net_names, attr_stmts, line); delete pins; if (report_stmt_stats_) { inst_names_ += inst_name.size() + 1; inst_lib_count_++; inst_lib_net_arrays_ += port_count; } - stringDelete(module_vname); - stringDelete(inst_vname); + delete module_vname; + delete inst_vname; return inst; } else { VerilogInst *inst = new VerilogModuleInst(module_name.c_str(), inst_name.c_str(), pins, - attribute_stmts, + attr_stmts, line); if (report_stmt_stats_) { inst_module_names_ += module_name.size() + 1; inst_names_ += inst_name.size() + 1; inst_mod_count_++; } - stringDelete(module_vname); - stringDelete(inst_vname); + delete module_vname; + delete inst_vname; return inst; } } @@ -639,94 +597,94 @@ VerilogReader::hasScalarNamedPortRefs(LibertyCell *liberty_cell, } VerilogNetPortRef * -VerilogReader::makeNetNamedPortRefScalarNet(const char *port_vname) +VerilogReader::makeNetNamedPortRefScalarNet(const string *port_vname) { net_port_ref_scalar_net_count_++; if (report_stmt_stats_) - port_names_ += strlen(port_vname) + 1; - string port_name = portVerilogToSta(port_vname); + port_names_ += port_vname->size() + 1; + const string port_name = portVerilogToSta(port_vname); VerilogNetPortRef *ref = new VerilogNetPortRefScalarNet(port_name.c_str()); - stringDelete(port_vname); + delete port_vname; return ref; } VerilogNetPortRef * -VerilogReader::makeNetNamedPortRefScalarNet(const char *port_vname, - const char *net_vname) +VerilogReader::makeNetNamedPortRefScalarNet(const string *port_vname, + const string *net_vname) { net_port_ref_scalar_net_count_++; if (report_stmt_stats_) { if (net_vname) - net_scalar_names_ += strlen(net_vname) + 1; - port_names_ += strlen(port_vname) + 1; + net_scalar_names_ += net_vname->size() + 1; + port_names_ += port_vname->size() + 1; } - string port_name = portVerilogToSta(port_vname); - string net_name = netVerilogToSta(net_vname); + const string port_name = portVerilogToSta(port_vname); + const string net_name = netVerilogToSta(net_vname); VerilogNetPortRef *ref = new VerilogNetPortRefScalarNet(port_name.c_str(), net_name.c_str()); - stringDelete(port_vname); - stringDelete(net_vname); + delete port_vname; + delete net_vname; return ref; } VerilogNetPortRef * -VerilogReader::makeNetNamedPortRefBitSelect(const char *port_vname, - const char *bus_vname, +VerilogReader::makeNetNamedPortRefBitSelect(const string *port_vname, + const string *bus_vname, int index) { net_port_ref_scalar_net_count_++; - string bus_name = portVerilogToSta(bus_vname); - string net_name = verilogBusBitName(bus_name.c_str(), index); + const string bus_name = portVerilogToSta(bus_vname); + const string net_name = verilogBusBitName(bus_name, index); if (report_stmt_stats_) { net_scalar_names_ += net_name.length() + 1; - port_names_ += strlen(port_vname) + 1; + port_names_ += port_vname->size() + 1; } - string port_name = portVerilogToSta(port_vname); + const string port_name = portVerilogToSta(port_vname); VerilogNetPortRef *ref = new VerilogNetPortRefScalarNet(port_name.c_str(), net_name.c_str()); - stringDelete(port_vname); - stringDelete(bus_vname); + delete port_vname; + delete bus_vname; return ref; } VerilogNetPortRef * -VerilogReader::makeNetNamedPortRefScalar(const char *port_vname, +VerilogReader::makeNetNamedPortRefScalar(const string *port_vname, VerilogNet *net) { net_port_ref_scalar_count_++; if (report_stmt_stats_) - port_names_ += strlen(port_vname) + 1; - string port_name = portVerilogToSta(port_vname); + port_names_ += port_vname->size() + 1; + const string port_name = portVerilogToSta(port_vname); VerilogNetPortRef *ref = new VerilogNetPortRefScalar(port_name.c_str(), net); - stringDelete(port_vname); + delete port_vname; return ref; } VerilogNetPortRef * -VerilogReader::makeNetNamedPortRefBit(const char *port_vname, +VerilogReader::makeNetNamedPortRefBit(const string *port_vname, int index, VerilogNet *net) { net_port_ref_bit_count_++; - string port_name = portVerilogToSta(port_vname); + const string port_name = portVerilogToSta(port_vname); VerilogNetPortRef *ref = new VerilogNetPortRefBit(port_name.c_str(), index, net); - stringDelete(port_vname); + delete port_vname; return ref; } VerilogNetPortRef * -VerilogReader::makeNetNamedPortRefPart(const char *port_vname, +VerilogReader::makeNetNamedPortRefPart(const string *port_vname, int from_index, int to_index, VerilogNet *net) { net_port_ref_part_count_++; - string port_name = portVerilogToSta(port_vname); - VerilogNetPortRef *ref = new VerilogNetPortRefPart(port_name.c_str(), + const string port_name = portVerilogToSta(port_vname); + VerilogNetPortRef *ref = new VerilogNetPortRefPart(port_name, from_index, to_index, net); - stringDelete(port_vname); + delete port_vname; return ref; } @@ -737,17 +695,11 @@ VerilogReader::makeNetConcat(VerilogNetSeq *nets) return new VerilogNetConcat(nets); } -void -VerilogReader::incrLine() -{ - line_++; -} - #define printClassMemory(name, class_name, count) \ - report_->reportLine(" %-20s %9d * %3d = %6.1fMb\n", \ + report_->reportLine(" %-20s %9d * %3zu = %6.1fMb\n", \ name, \ count, \ - static_cast(sizeof(class_name)), \ + sizeof(class_name), \ (count * sizeof(class_name) * 1e-6)) #define printStringMemory(name, count) \ @@ -796,7 +748,7 @@ VerilogReader::error(int id, { va_list args; va_start(args, fmt); - report()->vfileError(id, filename, line, fmt, args); + report_->vfileError(id, filename, line, fmt, args); va_end(args); } @@ -808,44 +760,25 @@ VerilogReader::warn(int id, { va_list args; va_start(args, fmt); - report()->vfileWarn(id, filename, line, fmt, args); + report_->vfileWarn(id, filename, line, fmt, args); va_end(args); } -string -VerilogReader::verilogName(VerilogModuleInst *mod_inst) -{ - return sta::instanceVerilogName(mod_inst->instanceName(), - network_->pathEscape()); -} - -string -VerilogReader::instanceVerilogName(const char *inst_name) -{ - return sta::netVerilogName(inst_name, network_->pathEscape()); -} - -string -VerilogReader::netVerilogName(const char *net_name) -{ - return sta::netVerilogName(net_name, network_->pathEscape()); -} - //////////////////////////////////////////////////////////////// -VerilogModule::VerilogModule(const char *name, +VerilogModule::VerilogModule(const string &name, VerilogNetSeq *ports, VerilogStmtSeq *stmts, - VerilogAttributeStmtSeq *attribute_stmts, - string &filename, + VerilogAttrStmtSeq *attr_stmts, + const string &filename, int line, VerilogReader *reader) : VerilogStmt(line), - name_(stringCopy(name)), + name_(name), filename_(filename), ports_(ports), stmts_(stmts), - attribute_stmts_(attribute_stmts) + attr_stmts_(attr_stmts) { parseStmts(reader); } @@ -856,15 +789,14 @@ VerilogModule::~VerilogModule() delete ports_; stmts_->deleteContents(); delete stmts_; - attribute_stmts_->deleteContents(); - delete attribute_stmts_; - stringDelete(name_); + attr_stmts_->deleteContents(); + delete attr_stmts_; } void VerilogModule::parseStmts(VerilogReader *reader) { - StringSet inst_names; + StdStringSet inst_names; for (VerilogStmt *stmt : *stmts_) { if (stmt->isDeclaration()) parseDcl(dynamic_cast(stmt), reader); @@ -879,21 +811,21 @@ VerilogModule::parseDcl(VerilogDcl *dcl, VerilogReader *reader) { for (VerilogDclArg *arg : *dcl->args()) { - const char *net_name = arg->netName(); - if (net_name) { - VerilogDcl *existing_dcl = dcl_map_[net_name]; + if (arg->isNamed()) { + const string &net_name = arg->netName(); + VerilogDcl *existing_dcl = dcl_map_[net_name.c_str()]; if (existing_dcl) { PortDirection *existing_dir = existing_dcl->direction(); if (existing_dir->isInternal()) // wire dcl can be used as modifier for input/inout dcls. // Ignore the wire dcl. - dcl_map_[net_name] = dcl; + dcl_map_[net_name.c_str()] = dcl; else if (dcl->direction()->isTristate()) { if (existing_dir->isOutput()) // tri dcl can be used as modifier for input/output/inout dcls. // Keep the tristate dcl for outputs because it is more specific // but ignore it for inputs and bidirs. - dcl_map_[net_name] = dcl; + dcl_map_[net_name.c_str()] = dcl; } else if (dcl->direction()->isPowerGround() && (existing_dir->isOutput() @@ -901,9 +833,9 @@ VerilogModule::parseDcl(VerilogDcl *dcl, || existing_dir->isBidirect())) // supply0/supply1 dcl can be used as modifier for // input/output/inout dcls. - dcl_map_[net_name] = dcl; + dcl_map_[net_name.c_str()] = dcl; else if (!dcl->direction()->isInternal()) { - string net_vname = reader->netVerilogName(net_name); + string net_vname = netVerilogName(net_name.c_str()); reader->warn(1395, filename_.c_str(), dcl->line(), "signal %s previously declared on line %d.", net_vname.c_str(), @@ -911,7 +843,7 @@ VerilogModule::parseDcl(VerilogDcl *dcl, } } else - dcl_map_[net_name] = dcl; + dcl_map_[net_name.c_str()] = dcl; } } } @@ -920,23 +852,21 @@ VerilogModule::parseDcl(VerilogDcl *dcl, // expansion so errors are only reported once. void VerilogModule::checkInstanceName(VerilogInst *inst, - StringSet &inst_names, + StdStringSet &inst_names, VerilogReader *reader) { - const char *inst_name = inst->instanceName(); - if (inst_names.findKey(inst_name)) { + string inst_name = inst->instanceName(); + if (inst_names.find(inst_name) != inst_names.end()) { int i = 1; - const char *replacement_name = nullptr; + string replacement_name; do { - if (replacement_name) - stringDelete(replacement_name); - replacement_name = stringPrint("%s_%d", inst_name, i++); - } while (inst_names.findKey(replacement_name)); - string inst_vname = reader->instanceVerilogName(inst_name); + replacement_name = stdstrPrint("%s_%d", inst_name.c_str(), i++); + } while (inst_names.find(replacement_name) != inst_names.end()); + string inst_vname = instanceVerilogName(inst_name.c_str()); reader->warn(1396, filename_.c_str(), inst->line(), "instance name %s duplicated - renamed to %s.", inst_vname.c_str(), - replacement_name); + replacement_name.c_str()); inst_name = replacement_name; inst->setInstanceName(inst_name); } @@ -944,9 +874,9 @@ VerilogModule::checkInstanceName(VerilogInst *inst, } VerilogDcl * -VerilogModule::declaration(const char *net_name) +VerilogModule::declaration(const string &net_name) { - return dcl_map_.findKey(net_name); + return dcl_map_.findKey(net_name.c_str()); } //////////////////////////////////////////////////////////////// @@ -956,36 +886,34 @@ VerilogStmt::VerilogStmt(int line) : { } -VerilogInst::VerilogInst(const char *inst_name, - VerilogAttributeStmtSeq* attribute_stmts, +VerilogInst::VerilogInst(const string &inst_name, + VerilogAttrStmtSeq *attr_stmts, const int line) : VerilogStmt(line), - inst_name_(stringCopy(inst_name)), - attribute_stmts_(attribute_stmts) + inst_name_(inst_name), + attr_stmts_(attr_stmts) { } VerilogInst::~VerilogInst() { - stringDelete(inst_name_); - attribute_stmts_->deleteContents(); - delete attribute_stmts_; + attr_stmts_->deleteContents(); + delete attr_stmts_; } void -VerilogInst::setInstanceName(const char *inst_name) +VerilogInst::setInstanceName(const string &inst_name) { - stringDelete(inst_name_); inst_name_ = inst_name; } -VerilogModuleInst::VerilogModuleInst(const char *module_name, - const char *inst_name, +VerilogModuleInst::VerilogModuleInst(const string &module_name, + const string &inst_name, VerilogNetSeq *pins, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line) : - VerilogInst(inst_name, attribute_stmts, line), - module_name_(stringCopy(module_name)), + VerilogInst(inst_name, attr_stmts, line), + module_name_(module_name), pins_(pins) { } @@ -996,7 +924,6 @@ VerilogModuleInst::~VerilogModuleInst() pins_->deleteContents(); delete pins_; } - stringDelete(module_name_); } bool @@ -1016,56 +943,45 @@ VerilogModuleInst::namedPins() } VerilogLibertyInst::VerilogLibertyInst(LibertyCell *cell, - const char *inst_name, - const char **net_names, - VerilogAttributeStmtSeq* attribute_stmts, + const string &inst_name, + const StdStringSeq &net_names, + VerilogAttrStmtSeq *attr_stmts, const int line) : - VerilogInst(inst_name, attribute_stmts, line), + VerilogInst(inst_name, attr_stmts, line), cell_(cell), net_names_(net_names) { } -VerilogLibertyInst::~VerilogLibertyInst() -{ - int port_count = cell_->portBitCount(); - for (int i = 0; i < port_count; i++) { - const char *net_name = net_names_[i]; - if (net_name != VerilogReader::unconnected_net_name_) - stringDelete(net_name); - } - delete [] net_names_; -} - VerilogDcl::VerilogDcl(PortDirection *dir, VerilogDclArgSeq *args, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line) : VerilogStmt(line), dir_(dir), args_(args), - attribute_stmts_(attribute_stmts) + attr_stmts_(attr_stmts) { } VerilogDcl::VerilogDcl(PortDirection *dir, VerilogDclArg *arg, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line) : VerilogStmt(line), dir_(dir) { args_ = new VerilogDclArgSeq; args_->push_back(arg); - attribute_stmts_ = attribute_stmts; + attr_stmts_ = attr_stmts; } VerilogDcl::~VerilogDcl() { args_->deleteContents(); delete args_; - attribute_stmts_->deleteContents(); - delete attribute_stmts_; + attr_stmts_->deleteContents(); + delete attr_stmts_; } void @@ -1074,7 +990,7 @@ VerilogDcl::appendArg(VerilogDclArg *arg) args_->push_back(arg); } -const char * +const string & VerilogDcl::portName() { return (*args_)[0]->netName(); @@ -1084,9 +1000,9 @@ VerilogDclBus::VerilogDclBus(PortDirection *dir, int from_index, int to_index, VerilogDclArgSeq *args, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line) : - VerilogDcl(dir, args, attribute_stmts, line), + VerilogDcl(dir, args, attr_stmts, line), from_index_(from_index), to_index_(to_index) { @@ -1096,9 +1012,9 @@ VerilogDclBus::VerilogDclBus(PortDirection *dir, int from_index, int to_index, VerilogDclArg *arg, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line) : - VerilogDcl(dir, arg, attribute_stmts, line), + VerilogDcl(dir, arg, attr_stmts, line), from_index_(from_index), to_index_(to_index) { @@ -1110,33 +1026,29 @@ VerilogDclBus::size() const return abs(to_index_ - from_index_) + 1; } -VerilogDclArg::VerilogDclArg(const char *net_name) : - net_name_(stringCopy(net_name)), +VerilogDclArg::VerilogDclArg(const string &net_name) : + net_name_(net_name), assign_(nullptr) { } VerilogDclArg::VerilogDclArg(VerilogAssign *assign) : - net_name_(nullptr), assign_(assign) { } VerilogDclArg::~VerilogDclArg() { - stringDelete(net_name_); delete assign_; } -const char * +const string & VerilogDclArg::netName() { - if (net_name_) - return net_name_; - else if (assign_) - return assign_->lhs()->name().c_str(); + if (assign_) + return assign_->lhs()->name(); else - return nullptr; + return net_name_; } VerilogAssign::VerilogAssign(VerilogNet *lhs, @@ -1159,60 +1071,66 @@ VerilogAssign::~VerilogAssign() class VerilogNullNetNameIterator : public VerilogNetNameIterator { public: - VerilogNullNetNameIterator() {} virtual bool hasNext() { return false; } - virtual const char *next() { return nullptr; } + virtual const string &next(); }; +const string & +VerilogNullNetNameIterator::next() +{ + static const string null; + return null; +} + class VerilogOneNetNameIterator : public VerilogNetNameIterator { public: - explicit VerilogOneNetNameIterator(const char *name); - explicit VerilogOneNetNameIterator(string name); + VerilogOneNetNameIterator(const string &name); virtual bool hasNext(); - virtual const char *next(); + virtual const string &next(); protected: - const char *name_; + string name_; + bool has_next_; }; -VerilogOneNetNameIterator::VerilogOneNetNameIterator(const char *name) : - name_(name) +VerilogOneNetNameIterator::VerilogOneNetNameIterator(const string &name) : + name_(name), + has_next_(true) { } bool VerilogOneNetNameIterator::hasNext() { - return name_ != nullptr; + return has_next_; } -const char * +const string & VerilogOneNetNameIterator::next() { - const char *name = name_; - name_ = nullptr; - return name; + has_next_ = false; + return name_; } class VerilogBusNetNameIterator : public VerilogNetNameIterator { public: - VerilogBusNetNameIterator(const char *bus_name, + VerilogBusNetNameIterator(const string bus_name, int from_index, int to_index); virtual bool hasNext(); - virtual const char *next(); + virtual const string &next(); protected: - const char *bus_name_; + const string bus_name_; int from_index_; int to_index_; int index_; string bit_name_; }; -VerilogBusNetNameIterator::VerilogBusNetNameIterator(const char *bus_name, +VerilogBusNetNameIterator::VerilogBusNetNameIterator(const string bus_name, int from_index, int to_index) : bus_name_(bus_name), @@ -1231,7 +1149,7 @@ VerilogBusNetNameIterator::hasNext() && index_ >= to_index_); } -const char * +const string & VerilogBusNetNameIterator::next() { bit_name_ = verilogBusBitName(bus_name_, index_); @@ -1239,38 +1157,36 @@ VerilogBusNetNameIterator::next() index_++; else index_--; - return bit_name_.c_str(); + return bit_name_; } static string -verilogBusBitName(const char *bus_name, +verilogBusBitName(const string &bus_name, int index) { - string bus_bit_name; - stringPrint(bus_bit_name, "%s[%d]", bus_name, index); - return bus_bit_name; + return stdstrPrint("%s[%d]", bus_name.c_str(), index); } class VerilogConstantNetNameIterator : public VerilogNetNameIterator { public: VerilogConstantNetNameIterator(VerilogConstantValue *value, - const char *zero, - const char *one); + const string &zero, + const string &one); virtual bool hasNext(); - virtual const char *next(); + virtual const string &next(); private: VerilogConstantValue *value_; - const char *zero_; - const char *one_; + const string &zero_; + const string &one_; int bit_index_; }; VerilogConstantNetNameIterator:: VerilogConstantNetNameIterator(VerilogConstantValue *value, - const char *zero, - const char *one) : + const string &zero, + const string &one) : value_(value), zero_(zero), one_(one), @@ -1284,7 +1200,7 @@ VerilogConstantNetNameIterator::hasNext() return bit_index_ >= 0; } -const char * +const string & VerilogConstantNetNameIterator::next() { return (*value_)[bit_index_--] ? one_ : zero_; @@ -1298,7 +1214,7 @@ public: VerilogReader *reader); virtual ~VerilogNetConcatNameIterator(); virtual bool hasNext(); - virtual const char *next(); + virtual const string &next(); private: VerilogModule *module_; @@ -1332,7 +1248,7 @@ VerilogNetConcatNameIterator::hasNext() || net_iter_.hasNext(); } -const char * +const string & VerilogNetConcatNameIterator::next() { if (net_name_iter_ && net_name_iter_->hasNext()) @@ -1346,19 +1262,14 @@ VerilogNetConcatNameIterator::next() return net_name_iter_->next(); } } - return nullptr; + static const string null; + return null; } //////////////////////////////////////////////////////////////// const string VerilogNetUnnamed::null_; -VerilogNetNamed::VerilogNetNamed(const char *name) : - VerilogNet(), - name_(name) -{ -} - VerilogNetNamed::VerilogNetNamed(const string &name) : VerilogNet(), name_(name) @@ -1369,13 +1280,7 @@ VerilogNetNamed::~VerilogNetNamed() { } -void -VerilogNetNamed::setName(const char *name) -{ - name_ = name; -} - -VerilogNetScalar::VerilogNetScalar(const char *name) : +VerilogNetScalar::VerilogNetScalar(const string &name) : VerilogNetNamed(name) { } @@ -1399,21 +1304,18 @@ VerilogNetScalar::size(VerilogModule *module) } static VerilogNetNameIterator * -verilogNetScalarNameIterator(const char *name, +verilogNetScalarNameIterator(const string &name, VerilogModule *module) { - if (name) { + if (!name.empty()) { VerilogDcl *dcl = module->declaration(name); if (dcl && dcl->isBus()) { VerilogDclBus *dcl_bus = dynamic_cast(dcl); return new VerilogBusNetNameIterator(name, dcl_bus->fromIndex(), dcl_bus->toIndex()); } - else - return new VerilogOneNetNameIterator(name); } - else - return new VerilogOneNetNameIterator(nullptr); + return new VerilogOneNetNameIterator(name); } VerilogNetNameIterator * @@ -1423,7 +1325,7 @@ VerilogNetScalar::nameIterator(VerilogModule *module, return verilogNetScalarNameIterator(name_.c_str(), module); } -VerilogNetBitSelect::VerilogNetBitSelect(const char *name, +VerilogNetBitSelect::VerilogNetBitSelect(const string &name, int index) : VerilogNetNamed(verilogBusBitName(name, index)), index_(index) @@ -1440,10 +1342,10 @@ VerilogNetNameIterator * VerilogNetBitSelect::nameIterator(VerilogModule *, VerilogReader *) { - return new VerilogOneNetNameIterator(name_.c_str()); + return new VerilogOneNetNameIterator(name_); } -VerilogNetPartSelect::VerilogNetPartSelect(const char *name, +VerilogNetPartSelect::VerilogNetPartSelect(const string &name, int from_index, int to_index): VerilogNetNamed(name), @@ -1468,64 +1370,58 @@ VerilogNetPartSelect::nameIterator(VerilogModule *, return new VerilogBusNetNameIterator(name_.c_str(), from_index_, to_index_); } -VerilogNetConstant::VerilogNetConstant(const char *constant, - VerilogReader *reader) +VerilogNetConstant::VerilogNetConstant(const string *constant, + VerilogReader *reader, + int line) { - parseConstant(constant, reader); + parseConstant(constant, reader, line); } void -VerilogNetConstant::parseConstant(const char *constant, - VerilogReader *reader) +VerilogNetConstant::parseConstant(const string *constant, + VerilogReader *reader, + int line) { - size_t constant_length = strlen(constant); - char *tmp = new char[constant_length + 1]; - char *t = tmp; - const char *c = constant; - - // Copy the constant size to tmp. - while (*c && *c != '\'') - *t++ = *c++; - *t = '\0'; + // Find constant size. + size_t csize_end = constant->find('\''); + string csize = constant->substr(0, csize_end); // Read the constant size. - size_t size = atol(tmp); + size_t size = std::stol(csize); value_ = new VerilogConstantValue(size); // Read the constant base. - const char *base_ptr = c + 1; - char base_ch = *base_ptr; - switch (base_ch) { + size_t base_idx = csize_end + 1; + char base = constant->at(base_idx); + switch (base) { case 'b': case 'B': - parseConstant(constant, constant_length, base_ptr, 2, 1); + parseConstant(constant, base_idx, 2, 1); break; case 'o': case 'O': - parseConstant(constant, constant_length, base_ptr, 8, 3); + parseConstant(constant, base_idx, 8, 3); break; case 'h': case 'H': - parseConstant(constant, constant_length, base_ptr, 16, 4); + parseConstant(constant, base_idx, 16, 4); break; case 'd': case 'D': - parseConstant10(base_ptr + 1, tmp, reader); + parseConstant10(constant, base_idx, reader, line); break; default: case '\0': - VerilogParse_error("unknown constant base.\n"); + reader->report()->fileWarn(1861, reader->filename(), line, + "unknown constant base."); break; } - - stringDelete(tmp); - stringDelete(constant); + delete constant; } void -VerilogNetConstant::parseConstant(const char *constant, - size_t constant_length, - const char *base_ptr, +VerilogNetConstant::parseConstant(const string *constant, + size_t base_idx, int base, int digit_bit_count) { @@ -1534,10 +1430,10 @@ VerilogNetConstant::parseConstant(const char *constant, char value_digit_str[2]; char *end; value_digit_str[1] = '\0'; - const char *c = &constant[constant_length - 1]; size_t bit = 0; + size_t idx = constant->size() - 1; while (bit < size) { - char ch = (c > base_ptr) ? *c-- : '0'; + char ch = (idx > base_idx) ? constant->at(idx--) : '0'; // Skip underscores. if (ch != '_') { value_digit_str[0] = ch; @@ -1553,31 +1449,32 @@ VerilogNetConstant::parseConstant(const char *constant, } void -VerilogNetConstant::parseConstant10(const char *constant_str, - char *tmp, - VerilogReader *reader) +VerilogNetConstant::parseConstant10(const string *constant, + size_t base_idx, + VerilogReader *reader, + int line) { // Copy the constant skipping underscores. - char *t = tmp; - for (const char *c = constant_str; *c; c++) { - char ch = *c; + string tmp; + for (size_t i = base_idx + 1; i < constant->size(); i++) { + char ch = constant->at(i); if (ch != '_') - *t++ = ch; + tmp += ch; } - *t = '\0'; size_t size = value_->size(); - size_t length = strlen(tmp); - size_t max_length = reader->constant10MaxLength(); + size_t length = tmp.size(); + const string &constant10_max = reader->constant10Max(); + size_t max_length = constant10_max.size(); if (length > max_length || (length == max_length - && strcmp(tmp, reader->constant10Max()) > 0)) - reader->warn(1397, reader->filename(), reader->line(), + && tmp > constant10_max)) + reader->warn(1397, reader->filename(), line, "base 10 constant greater than %s not supported.", - reader->constant10Max()); + constant10_max.c_str()); else { - char *end; - VerilogConstant10 value = strtoull(tmp, &end, 10); + size_t *end = nullptr; + VerilogConstant10 value = std::stoull(tmp, end, 10); VerilogConstant10 mask = 1; for (size_t bit = 0; bit < size; bit++) { (*value_)[bit] = (value & mask) != 0; @@ -1638,35 +1535,29 @@ VerilogNetConcat::nameIterator(VerilogModule *module, return new VerilogNetConcatNameIterator(nets_, module, reader); } -VerilogNetPortRef::VerilogNetPortRef(const char *name) : +VerilogNetPortRef::VerilogNetPortRef(const string &name) : VerilogNetScalar(name) { } -VerilogNetPortRefScalarNet::VerilogNetPortRefScalarNet(const char *name) : - VerilogNetPortRef(name), - net_name_(nullptr) +VerilogNetPortRefScalarNet::VerilogNetPortRefScalarNet(const string &name) : + VerilogNetPortRef(name) { } -VerilogNetPortRefScalarNet::VerilogNetPortRefScalarNet(const char *name, - const char *net_name) : +VerilogNetPortRefScalarNet::VerilogNetPortRefScalarNet(const string &name, + const string &net_name) : VerilogNetPortRef(name), - net_name_(stringCopy(net_name)) + net_name_(net_name) { } -VerilogNetPortRefScalarNet::~VerilogNetPortRefScalarNet() -{ - stringDelete(net_name_); -} - int VerilogNetPortRefScalarNet::size(VerilogModule *module) { // VerilogNetScalar::size VerilogDcl *dcl = nullptr; - if (net_name_) + if (!net_name_.empty()) dcl = module->declaration(net_name_); if (dcl) return dcl->size(); @@ -1682,7 +1573,7 @@ VerilogNetPortRefScalarNet::nameIterator(VerilogModule *module, return verilogNetScalarNameIterator(net_name_, module); } -VerilogNetPortRefScalar::VerilogNetPortRefScalar(const char *name, +VerilogNetPortRefScalar::VerilogNetPortRefScalar(const string &name, VerilogNet *net) : VerilogNetPortRef(name), net_(net) @@ -1713,7 +1604,7 @@ VerilogNetPortRefScalar::nameIterator(VerilogModule *module, return new VerilogNullNetNameIterator(); } -VerilogNetPortRefBit::VerilogNetPortRefBit(const char *name, +VerilogNetPortRefBit::VerilogNetPortRefBit(const string &name, int index, VerilogNet *net) : VerilogNetPortRefScalar(name, net), @@ -1721,7 +1612,7 @@ VerilogNetPortRefBit::VerilogNetPortRefBit(const char *name, { } -VerilogNetPortRefPart::VerilogNetPortRefPart(const char *name, +VerilogNetPortRefPart::VerilogNetPortRefPart(const string &name, int from_index, int to_index, VerilogNet *net) : @@ -1736,42 +1627,40 @@ VerilogNetPortRefPart::name() const return name_; } -VerilogAttributeEntry::VerilogAttributeEntry(std::string key, - std::string value) : +VerilogAttrEntry::VerilogAttrEntry(const string &key, + const string &value) : key_(key), value_(value) { } - std::string -VerilogAttributeEntry::key() +VerilogAttrEntry::key() { return key_; } std::string -VerilogAttributeEntry::value() +VerilogAttrEntry::value() { return value_; } -VerilogAttributeStmt::VerilogAttributeStmt( - VerilogAttributeEntrySeq* attribute_sequence): - attribute_sequence_(attribute_sequence) +VerilogAttrStmt::VerilogAttrStmt(VerilogAttrEntrySeq *attrs): + attrs_(attrs) { } -VerilogAttributeStmt::~VerilogAttributeStmt() +VerilogAttrStmt::~VerilogAttrStmt() { - attribute_sequence_->deleteContents(); - delete attribute_sequence_; + attrs_->deleteContents(); + delete attrs_; } -VerilogAttributeEntrySeq* -VerilogAttributeStmt::attribute_sequence() +VerilogAttrEntrySeq* +VerilogAttrStmt::attrs() { - return attribute_sequence_; + return attrs_; } @@ -1781,23 +1670,14 @@ VerilogAttributeStmt::attribute_sequence() // //////////////////////////////////////////////////////////////// -Instance * -linkVerilogNetwork(const char *top_cell_name, - bool make_black_boxes, - Report *report, - NetworkReader *) -{ - return verilog_reader->linkNetwork(top_cell_name, make_black_boxes, report); -} - // Verilog net name to network net map. typedef Map BindingMap; class VerilogBindingTbl { public: - VerilogBindingTbl(const char *zero_net_name_, - const char *one_net_name_); + VerilogBindingTbl(const string &zero_net_name_, + const string &one_net_name_); Net *ensureNetBinding(const char *net_name, Instance *inst, NetworkReader *network); @@ -1807,15 +1687,14 @@ public: Net *net); private: - const char *zero_net_name_; - const char *one_net_name_; + const string &zero_net_name_; + const string &one_net_name_; BindingMap map_; }; Instance * VerilogReader::linkNetwork(const char *top_cell_name, - bool make_black_boxes, - Report *report) + bool make_black_boxes) { if (library_) { Cell *top_cell = network_->findCell(library_, top_cell_name); @@ -1830,9 +1709,9 @@ VerilogReader::linkNetwork(const char *top_cell_name, VerilogNetNameIterator *net_name_iter = mod_port->nameIterator(module, this); while (net_name_iter->hasNext()) { - const char *net_name = net_name_iter->next(); - Port *port = network_->findPort(top_cell, net_name); - Net *net = bindings.ensureNetBinding(net_name, top_instance, network_); + const string &net_name = net_name_iter->next(); + Port *port = network_->findPort(top_cell, net_name.c_str()); + Net *net = bindings.ensureNetBinding(net_name.c_str(), top_instance, network_); // Guard against repeated port name. if (network_->findPin(top_instance, port) == nullptr) { Pin *pin = network_->makePin(top_instance, port, nullptr); @@ -1842,7 +1721,7 @@ VerilogReader::linkNetwork(const char *top_cell_name, delete net_name_iter; } makeModuleInstBody(module, top_instance, &bindings, make_black_boxes); - bool errors = reportLinkErrors(report); + bool errors = reportLinkErrors(); deleteModules(); if (errors) { network_->deleteInstance(top_instance); @@ -1852,12 +1731,12 @@ VerilogReader::linkNetwork(const char *top_cell_name, return top_instance; } else { - report->error(1398, "%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(1399, "%s is not a verilog module.", top_cell_name); + report_->error(1399, "%s is not a verilog module.", top_cell_name); return nullptr; } } @@ -1887,11 +1766,11 @@ VerilogReader::makeModuleInstBody(VerilogModule *module, if (assign) mergeAssignNet(assign, module, inst, bindings); if (dir->isGround()) { - Net *net = bindings->ensureNetBinding(arg->netName(),inst,network_); + Net *net = bindings->ensureNetBinding(arg->netName().c_str(),inst,network_); network_->addConstantNet(net, LogicValue::zero); } if (dir->isPower()) { - Net *net = bindings->ensureNetBinding(arg->netName(),inst,network_); + Net *net = bindings->ensureNetBinding(arg->netName().c_str(),inst,network_); network_->addConstantNet(net, LogicValue::one); } } @@ -1909,32 +1788,32 @@ VerilogReader::makeModuleInstNetwork(VerilogModuleInst *mod_inst, VerilogBindingTbl *parent_bindings, bool make_black_boxes) { - const char *module_name = mod_inst->moduleName(); - Cell *cell = network_->findAnyCell(module_name); + const string &module_name = mod_inst->moduleName(); + Cell *cell = network_->findAnyCell(module_name.c_str()); if (cell == nullptr) { - string inst_vname = verilogName(mod_inst); + string inst_vname = instanceVerilogName(mod_inst->instanceName().c_str()); if (make_black_boxes) { cell = makeBlackBox(mod_inst, parent_module); linkWarn(198, parent_module->filename(), mod_inst->line(), "module %s not found. Creating black box for %s.", - mod_inst->moduleName(), + mod_inst->moduleName().c_str(), inst_vname.c_str()); } else linkError(199, parent_module->filename(), mod_inst->line(), "module %s not found for instance %s.", - mod_inst->moduleName(), + mod_inst->moduleName().c_str(), inst_vname.c_str()); } if (cell) { LibertyCell *lib_cell = network_->libertyCell(cell); if (lib_cell) cell = network_->cell(lib_cell); - Instance *inst = network_->makeInstance(cell, mod_inst->instanceName(), + Instance *inst = network_->makeInstance(cell, mod_inst->instanceName().c_str(), parent); - VerilogAttributeStmtSeq *attribute_stmts = mod_inst->attributeStmts(); - for (VerilogAttributeStmt *stmt : *attribute_stmts) { - for (VerilogAttributeEntry *entry : *stmt->attribute_sequence()) { + VerilogAttrStmtSeq *attr_stmts = mod_inst->attrStmts(); + for (VerilogAttrStmt *stmt : *attr_stmts) { + for (VerilogAttrEntry *entry : *stmt->attrs()) { network_->setAttribute(inst, entry->key(), entry->value()); } } @@ -1975,7 +1854,7 @@ VerilogReader::makeNamedInstPins(Cell *cell, VerilogBindingTbl *parent_bindings, bool is_leaf) { - string inst_vname = verilogName(mod_inst); + string inst_vname = instanceVerilogName(mod_inst->instanceName().c_str()); VerilogNetSeq::Iterator pin_iter(mod_inst->pins()); while (pin_iter.hasNext()) { VerilogNetPortRef *vpin = dynamic_cast(pin_iter.next()); @@ -2042,7 +1921,7 @@ VerilogReader::makeOrderedInstPins(Cell *cell, VerilogNet *net = pin_iter.next(); Port *port = port_iter->next(); if (network_->size(port) != net->size(parent_module)) { - string inst_vname = verilogName(mod_inst); + string inst_vname = instanceVerilogName(mod_inst->instanceName().c_str()); linkWarn(202, parent_module->filename(), mod_inst->line(), "instance %s port %s size %d does not match net size %d.", inst_vname.c_str(), @@ -2080,7 +1959,7 @@ VerilogReader::makeInstPin(Instance *inst, VerilogBindingTbl *parent_bindings, bool is_leaf) { - const char *net_name = nullptr; + string net_name; if (net_name_iter->hasNext()) net_name = net_name_iter->next(); makeInstPin(inst, port, net_name, bindings, parent, parent_bindings, @@ -2090,15 +1969,15 @@ VerilogReader::makeInstPin(Instance *inst, void VerilogReader::makeInstPin(Instance *inst, Port *port, - const char *net_name, + const string &net_name, VerilogBindingTbl *bindings, Instance *parent, VerilogBindingTbl *parent_bindings, bool is_leaf) { Net *net = nullptr; - if (net_name) - net = parent_bindings->ensureNetBinding(net_name, parent, network_); + if (!net_name.empty()) + net = parent_bindings->ensureNetBinding(net_name.c_str(), parent, network_); if (is_leaf) { // Connect leaf pin to net. if (net) @@ -2122,35 +2001,33 @@ VerilogReader::makeLibertyInst(VerilogLibertyInst *lib_inst, { LibertyCell *lib_cell = lib_inst->cell(); Cell *cell = reinterpret_cast(lib_cell); - Instance *inst = network_->makeInstance(cell, lib_inst->instanceName(), + Instance *inst = network_->makeInstance(cell, lib_inst->instanceName().c_str(), parent); - VerilogAttributeStmtSeq *attribute_stmts = lib_inst->attributeStmts(); - for (VerilogAttributeStmt *stmt : *attribute_stmts) { - for (VerilogAttributeEntry *entry : *stmt->attribute_sequence()) { + VerilogAttrStmtSeq *attr_stmts = lib_inst->attrStmts(); + for (VerilogAttrStmt *stmt : *attr_stmts) { + for (VerilogAttrEntry *entry : *stmt->attrs()) { network_->setAttribute(inst, entry->key(), entry->value()); } } - const char **net_names = lib_inst->netNames(); + const StdStringSeq &net_names = lib_inst->netNames(); LibertyCellPortBitIterator port_iter(lib_cell); while (port_iter.hasNext()) { LibertyPort *port = port_iter.next(); - const char *net_name = net_names[port->pinIndex()]; + const string &net_name = net_names[port->pinIndex()]; // net_name may be the name of a single bit bus. - if (net_name) { + if (!net_name.empty()) { Net *net = nullptr; // If the pin is unconnected (ie, .A()) make the pin but not the net. - if (net_name != unconnected_net_name_) { - VerilogDcl *dcl = parent_module->declaration(net_name); - // Check for single bit bus reference .A(BUS) -> .A(BUS[LSB]). - if (dcl && dcl->isBus()) { - VerilogDclBus *dcl_bus = dynamic_cast(dcl); - // Bus is only 1 bit wide. - string bus_name = verilogBusBitName(net_name, dcl_bus->fromIndex()); - net = parent_bindings->ensureNetBinding(bus_name.c_str(), parent, network_); - } - else - net = parent_bindings->ensureNetBinding(net_name, parent, network_); + VerilogDcl *dcl = parent_module->declaration(net_name); + // Check for single bit bus reference .A(BUS) -> .A(BUS[LSB]). + if (dcl && dcl->isBus()) { + VerilogDclBus *dcl_bus = dynamic_cast(dcl); + // Bus is only 1 bit wide. + string bus_name = verilogBusBitName(net_name, dcl_bus->fromIndex()); + net = parent_bindings->ensureNetBinding(bus_name.c_str(), parent, network_); } + else + net = parent_bindings->ensureNetBinding(net_name.c_str(), parent, network_); network_->makePin(inst, reinterpret_cast(port), net); } else @@ -2165,8 +2042,8 @@ Cell * VerilogReader::makeBlackBox(VerilogModuleInst *mod_inst, VerilogModule *parent_module) { - const char *module_name = mod_inst->moduleName(); - Cell *cell = network_->makeCell(library_, module_name, true, + const string &module_name = mod_inst->moduleName(); + Cell *cell = network_->makeCell(library_, module_name.c_str(), true, parent_module->filename()); if (mod_inst->namedPins()) makeBlackBoxNamedPorts(cell, mod_inst, parent_module); @@ -2232,10 +2109,10 @@ VerilogReader::mergeAssignNet(VerilogAssign *assign, VerilogNetNameIterator *lhs_iter = lhs->nameIterator(module, this); VerilogNetNameIterator *rhs_iter = rhs->nameIterator(module, this); while (lhs_iter->hasNext() && rhs_iter->hasNext()) { - const char *lhs_name = lhs_iter->next(); - const char *rhs_name = rhs_iter->next(); - Net *lhs_net = bindings->ensureNetBinding(lhs_name, inst, network_); - Net *rhs_net = bindings->ensureNetBinding(rhs_name, inst, network_); + const string &lhs_name = lhs_iter->next(); + const string &rhs_name = rhs_iter->next(); + Net *lhs_net = bindings->ensureNetBinding(lhs_name.c_str(), inst, network_); + Net *rhs_net = bindings->ensureNetBinding(rhs_name.c_str(), inst, network_); // Merge lower level net into higher level net so that deleting // instances from the bottom up does not reference deleted nets // by referencing the mergedInto field. @@ -2271,8 +2148,8 @@ hierarchyLevel(Net *net, //////////////////////////////////////////////////////////////// -VerilogBindingTbl::VerilogBindingTbl(const char *zero_net_name, - const char *one_net_name) : +VerilogBindingTbl::VerilogBindingTbl(const string &zero_net_name, + const string &one_net_name) : zero_net_name_(zero_net_name), one_net_name_(one_net_name) { @@ -2306,9 +2183,9 @@ VerilogBindingTbl::ensureNetBinding(const char *net_name, if (net == nullptr) { net = network->makeNet(net_name, inst); map_[network->name(net)] = net; - if (stringEq(net_name, zero_net_name_)) + if (net_name == zero_net_name_) network->addConstantNet(net, LogicValue::zero); - if (stringEq(net_name, one_net_name_)) + if (net_name == one_net_name_) network->addConstantNet(net, LogicValue::one); } return net; @@ -2345,7 +2222,7 @@ VerilogReader::linkError(int id, } bool -VerilogReader::reportLinkErrors(Report *report) +VerilogReader::reportLinkErrors() { // Sort errors so they are in line number order rather than the order // they are discovered. @@ -2355,7 +2232,7 @@ VerilogReader::reportLinkErrors(Report *report) while (error_iter.hasNext()) { VerilogError *error = error_iter.next(); // Report as warnings to avoid throwing. - report->fileWarn(error->id(), error->filename(), error->line(), "%s", error->msg()); + report_->fileWarn(error->id(), error->filename(), error->line(), "%s", error->msg()); errors |= !error->warn(); delete error; } @@ -2363,18 +2240,21 @@ VerilogReader::reportLinkErrors(Report *report) return errors; } -} // namespace - //////////////////////////////////////////////////////////////// -// Global namespace -void verilogFlushBuffer(); - -int -VerilogParse_error(const char *msg) +VerilogScanner::VerilogScanner(std::istream *stream, + const char *filename, + Report *report) : + yyFlexLexer(stream), + filename_(filename), + report_(report) { - verilogFlushBuffer(); - sta::verilog_reader->report()->fileError(164, sta::verilog_reader->filename(), - sta::verilog_reader->line(), "%s", msg); - return 0; } + +void +VerilogScanner::error(const char *msg) +{ + report_->fileError(1866, "foo", lineno(), "%s", msg); +} + +} // namespace diff --git a/verilog/VerilogReader.hh b/verilog/VerilogReader.hh new file mode 100644 index 00000000..54adeeaf --- /dev/null +++ b/verilog/VerilogReader.hh @@ -0,0 +1,292 @@ +// OpenSTA, Static Timing Analyzer +// Copyright (c) 2024, Parallax Software, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#pragma once + +#include + +#include "StringSet.hh" +#include "Vector.hh" +#include "Map.hh" +#include "NetworkClass.hh" + +namespace sta { + +class VerilogScanner; +class VerilogParse; +class Debug; +class Report; +class VerilogAttrEntry; +class VerilogAttrStmt; +class VerilogReader; +class VerilogStmt; +class VerilogNet; +class VerilogNetScalar; +class VerilogModule; +class VerilogInst; +class VerilogModuleInst; +class VerilogLibertyInst; +class VerilogDcl; +class VerilogDclBus; +class VerilogDclArg; +class VerilogAssign; +class VerilogNetConcat; +class VerilogNetConstant; +class VerilogNetBitSelect; +class VerilogNetPartSelect; +class StringRegistry; +class VerilogBindingTbl; +class VerilogNetNameIterator; +class VerilogNetPortRef; +class VerilogError; +class LibertyCell; + +typedef Map VerilogModuleMap; +typedef Vector VerilogStmtSeq; +typedef Vector VerilogNetSeq; +typedef Vector VerilogDclArgSeq; +typedef Vector VerilogAttrStmtSeq; +typedef Vector VerilogAttrEntrySeq; +typedef Vector VerilogErrorSeq; + +using std::string; +using std::vector; +using std::set; + +class VerilogReader +{ +public: + VerilogReader(NetworkReader *network); + ~VerilogReader(); + bool read(const char *filename); + + void makeModule(const string *module_name, + VerilogNetSeq *ports, + VerilogStmtSeq *stmts, + VerilogAttrStmtSeq *attr_stmts, + int line); + void makeModule(const string *module_name, + VerilogStmtSeq *port_dcls, + VerilogStmtSeq *stmts, + VerilogAttrStmtSeq *attr_stmts, + int line); + VerilogDcl *makeDcl(PortDirection *dir, + VerilogDclArgSeq *args, + VerilogAttrStmtSeq *attr_stmts, + int line); + VerilogDcl *makeDcl(PortDirection *dir, + VerilogDclArg *arg, + VerilogAttrStmtSeq *attr_stmts, + int line); + VerilogDclArg *makeDclArg(const string *net_name); + VerilogDclArg*makeDclArg(VerilogAssign *assign); + VerilogDclBus *makeDclBus(PortDirection *dir, + int from_index, + int to_index, + VerilogDclArg *arg, + VerilogAttrStmtSeq *attr_stmts, + int line); + VerilogDclBus *makeDclBus(PortDirection *dir, + int from_index, + int to_index, + VerilogDclArgSeq *args, + VerilogAttrStmtSeq *attr_stmts, + int line); + VerilogInst *makeModuleInst(const string *module_name, + const string *inst_name, + VerilogNetSeq *pins, + VerilogAttrStmtSeq *attr_stmts, + const int line); + VerilogAssign *makeAssign(VerilogNet *lhs, + VerilogNet *rhs, + int line); + VerilogNetScalar *makeNetScalar(const string *name); + VerilogNetPortRef *makeNetNamedPortRefScalarNet(const string *port_vname); + VerilogNetPortRef *makeNetNamedPortRefScalarNet(const string *port_name, + const string *net_name); + VerilogNetPortRef *makeNetNamedPortRefBitSelect(const string *port_name, + const string *bus_name, + int index); + VerilogNetPortRef *makeNetNamedPortRefScalar(const string *port_name, + VerilogNet *net); + VerilogNetPortRef *makeNetNamedPortRefBit(const string *port_name, + int index, + VerilogNet *net); + VerilogNetPortRef *makeNetNamedPortRefPart(const string *port_name, + int from_index, + int to_index, + VerilogNet *net); + VerilogNetConcat *makeNetConcat(VerilogNetSeq *nets); + VerilogNetConstant *makeNetConstant(const string *constant, + int line); + VerilogNetBitSelect *makeNetBitSelect(const string *name, + int index); + VerilogNetPartSelect *makeNetPartSelect(const string *name, + int from_index, + int to_index); + VerilogModule *module(Cell *cell); + Instance *linkNetwork(const char *top_cell_name, + bool make_black_boxes); + const char *filename() const { return filename_.c_str(); } + void incrLine(); + Report *report() const { return report_; } + void error(int id, + const char *filename, + int line, + const char *fmt, ...); + void warn(int id, + const char *filename, + int line, + const char *fmt, ...); + const string &zeroNetName() const { return zero_net_name_; } + const string &oneNetName() const { return one_net_name_; } + void deleteModules(); + void reportStmtCounts(); + const string &constant10Max() const { return constant10_max_; } + +protected: + void init(const char *filename); + void makeCellPorts(Cell *cell, + VerilogModule *module, + VerilogNetSeq *ports); + Port *makeCellPort(Cell *cell, + VerilogModule *module, + const string &port_name); + void makeNamedPortRefCellPorts(Cell *cell, + VerilogModule *module, + VerilogNet *mod_port, + StdStringSet &port_names); + void checkModuleDcls(VerilogModule *module, + set &port_names); + void makeModuleInstBody(VerilogModule *module, + Instance *inst, + VerilogBindingTbl *bindings, + bool make_black_boxes); + void makeModuleInstNetwork(VerilogModuleInst *mod_inst, + Instance *parent, + VerilogModule *parent_module, + VerilogBindingTbl *parent_bindings, + bool make_black_boxes); + void makeLibertyInst(VerilogLibertyInst *lib_inst, + Instance *parent, + VerilogModule *parent_module, + VerilogBindingTbl *parent_bindings); + void bindGlobalNets(VerilogBindingTbl *bindings); + void makeNamedInstPins1(Cell *cell, + Instance *inst, + VerilogModuleInst *mod_inst, + VerilogBindingTbl *bindings, + Instance *parent, + VerilogBindingTbl *parent_bindings, + bool is_leaf); + void makeNamedInstPins(Cell *cell, + Instance *inst, + VerilogModuleInst *mod_inst, + VerilogBindingTbl *bindings, + Instance *parent, + VerilogModule *parent_module, + VerilogBindingTbl *parent_bindings, + bool is_leaf); + void makeOrderedInstPins(Cell *cell, + Instance *inst, + VerilogModuleInst *mod_inst, + VerilogBindingTbl *bindings, + Instance *parent, + VerilogModule *parent_module, + VerilogBindingTbl *parent_bindings, + bool is_leaf); + void mergeAssignNet(VerilogAssign *assign, + VerilogModule *module, + Instance *inst, + VerilogBindingTbl *bindings); + void makeInstPin(Instance *inst, + Port *port, + VerilogNetNameIterator *net_name_iter, + VerilogBindingTbl *bindings, + Instance *parent, + VerilogBindingTbl *parent_bindings, + bool is_leaf); + void makeInstPin(Instance *inst, + Port *port, + const string &net_name, + VerilogBindingTbl *bindings, + Instance *parent, + VerilogBindingTbl *parent_bindings, + bool is_leaf); + void linkWarn(int id, + const char *filename, + int line, + const char *msg, ...) + __attribute__((format (printf, 5, 6))); + void linkError(int id, + const char *filename, + int line, + const char *msg, ...) + __attribute__((format (printf, 5, 6))); + bool reportLinkErrors(); + bool haveLinkErrors(); + Cell *makeBlackBox(VerilogModuleInst *mod_inst, + VerilogModule *parent_module); + void makeBlackBoxNamedPorts(Cell *cell, + VerilogModuleInst *mod_inst, + VerilogModule *parent_module); + void makeBlackBoxOrderedPorts(Cell *cell, + VerilogModuleInst *mod_inst, + VerilogModule *parent_module); + bool isBlackBox(Cell *cell); + bool hasScalarNamedPortRefs(LibertyCell *liberty_cell, + VerilogNetSeq *pins); + + string filename_; + Report *report_; + Debug *debug_; + NetworkReader *network_; + + Library *library_; + int black_box_index_; + VerilogModuleMap module_map_; + VerilogErrorSeq link_errors_; + const string zero_net_name_; + const string one_net_name_; + string constant10_max_; + ViewType *view_type_; + bool report_stmt_stats_; + int module_count_; + int inst_mod_count_; + int inst_lib_count_; + int inst_lib_net_arrays_; + int port_names_; + int inst_module_names_; + int inst_names_; + int dcl_count_; + int dcl_bus_count_; + int dcl_arg_count_; + int net_scalar_count_; + int net_scalar_names_; + int net_bus_names_; + int net_part_select_count_; + int net_bit_select_count_; + int net_port_ref_scalar_count_; + int net_port_ref_scalar_net_count_; + int net_port_ref_bit_count_; + int net_port_ref_part_count_; + int net_constant_count_; + int assign_count_; + int concat_count_; +}; + +} // namespace sta + diff --git a/verilog/VerilogReaderPvt.hh b/verilog/VerilogReaderPvt.hh index 852f7fd1..a9f6f9b0 100644 --- a/verilog/VerilogReaderPvt.hh +++ b/verilog/VerilogReaderPvt.hh @@ -16,314 +16,22 @@ #pragma once -#include "Zlib.hh" -#include "Vector.hh" +#include + #include "Map.hh" +#include "Vector.hh" #include "StringSeq.hh" -#include "StringSet.hh" -#include "NetworkClass.hh" - -// Global namespace. -#define YY_INPUT(buf,result,max_size) \ - sta::verilog_reader->getChars(buf, result, max_size) - -int -VerilogParse_error(const char *msg); namespace sta { -using std::string; -using std::vector; -using std::set; - -class Debug; -class Report; -class VerilogAttributeEntry; -class VerilogAttributeStmt; -class VerilogReader; -class VerilogStmt; -class VerilogNet; -class VerilogNetScalar; -class VerilogModule; -class VerilogInst; -class VerilogModuleInst; -class VerilogLibertyInst; -class VerilogDcl; -class VerilogDclBus; -class VerilogDclArg; -class VerilogAssign; -class VerilogNetConcat; -class VerilogNetConstant; -class VerilogNetBitSelect; -class VerilogNetPartSelect; -class StringRegistry; -class VerilogBindingTbl; -class VerilogNetNameIterator; -class VerilogNetPortRef; -class VerilogError; -class LibertyCell; - -typedef Vector VerilogAttributeStmtSeq; -typedef Vector VerilogAttributeEntrySeq; -typedef Vector VerilogNetSeq; -typedef Vector VerilogStmtSeq; -typedef Map VerilogDclMap; -typedef Vector VerilogDclArgSeq; -typedef Map VerilogModuleMap; -typedef Vector VerilogErrorSeq; +typedef Map VerilogDclMap; typedef Vector VerilogConstantValue; -// Max base 10 constant net value (for strtoll). -typedef unsigned long long VerilogConstant10; - -extern VerilogReader *verilog_reader; - -class VerilogReader -{ -public: - explicit VerilogReader(NetworkReader *network); - ~VerilogReader(); - bool read(const char *filename); - // flex YY_INPUT yy_n_chars arg changed definition from int to size_t, - // so provide both forms. - void getChars(char *buf, - size_t &result, - size_t max_size); - void getChars(char *buf, - int &result, - size_t max_size); - void makeModule(const char *module_name, - VerilogNetSeq *ports, - VerilogStmtSeq *stmts, - VerilogAttributeStmtSeq *attribute_stmts, - int line); - void makeModule(const char *module_name, - VerilogStmtSeq *port_dcls, - VerilogStmtSeq *stmts, - VerilogAttributeStmtSeq *attribute_stmts, - int line); - VerilogDcl *makeDcl(PortDirection *dir, - VerilogDclArgSeq *args, - VerilogAttributeStmtSeq* attribute_stmts, - int line); - VerilogDcl *makeDcl(PortDirection *dir, - VerilogDclArg *arg, - VerilogAttributeStmtSeq* attribute_stmts, - int line); - VerilogDclArg *makeDclArg(const char *net_name); - VerilogDclArg*makeDclArg(VerilogAssign *assign); - VerilogDclBus *makeDclBus(PortDirection *dir, - int from_index, - int to_index, - VerilogDclArg *arg, - VerilogAttributeStmtSeq* attribute_stmts, - int line); - VerilogDclBus *makeDclBus(PortDirection *dir, - int from_index, - int to_index, - VerilogDclArgSeq *args, - VerilogAttributeStmtSeq* attribute_stmts, - int line); - VerilogInst *makeModuleInst(const char *module_name, - const char *inst_name, - VerilogNetSeq *pins, - VerilogAttributeStmtSeq* attribute_stmts, - const int line); - VerilogAssign *makeAssign(VerilogNet *lhs, - VerilogNet *rhs, - int line); - VerilogNetScalar *makeNetScalar(const char *name); - VerilogNetPortRef *makeNetNamedPortRefScalarNet(const char *port_vname); - VerilogNetPortRef *makeNetNamedPortRefScalarNet(const char *port_name, - const char *net_name); - VerilogNetPortRef *makeNetNamedPortRefBitSelect(const char *port_name, - const char *bus_name, - int index); - VerilogNetPortRef *makeNetNamedPortRefScalar(const char *port_name, - VerilogNet *net); - VerilogNetPortRef *makeNetNamedPortRefBit(const char *port_name, - int index, - VerilogNet *net); - VerilogNetPortRef *makeNetNamedPortRefPart(const char *port_name, - int from_index, - int to_index, - VerilogNet *net); - VerilogNetConcat *makeNetConcat(VerilogNetSeq *nets); - VerilogNetConstant *makeNetConstant(const char *constant); - VerilogNetBitSelect *makeNetBitSelect(const char *name, - int index); - VerilogNetPartSelect *makeNetPartSelect(const char *name, - int from_index, - int to_index); - VerilogModule *module(Cell *cell); - Instance *linkNetwork(const char *top_cell_name, - bool make_black_boxes, - Report *report); - int line() const { return line_; } - const char *filename() const { return filename_.c_str(); } - void incrLine(); - Report *report() const { return report_; } - void error(int id, - const char *filename, - int line, - const char *fmt, ...); - void warn(int id, - const char *filename, - int line, - const char *fmt, ...); - const char *zeroNetName() const { return zero_net_name_; } - const char *oneNetName() const { return one_net_name_; } - void deleteModules(); - void reportStmtCounts(); - const char *constant10Max() const { return constant10_max_; } - size_t constant10MaxLength() const { return constant10_max_length_; } - string - verilogName(VerilogModuleInst *inst); - string - instanceVerilogName(const char *inst_name); - string - netVerilogName(const char *net_name); - static const char *unconnected_net_name_; - -protected: - void init(const char *filename); - void makeCellPorts(Cell *cell, - VerilogModule *module, - VerilogNetSeq *ports); - Port *makeCellPort(Cell *cell, - VerilogModule *module, - const char *port_name); - void makeNamedPortRefCellPorts(Cell *cell, - VerilogModule *module, - VerilogNet *mod_port, - set &port_names); - void checkModuleDcls(VerilogModule *module, - set &port_names); - void makeModuleInstBody(VerilogModule *module, - Instance *inst, - VerilogBindingTbl *bindings, - bool make_black_boxes); - void makeModuleInstNetwork(VerilogModuleInst *mod_inst, - Instance *parent, - VerilogModule *parent_module, - VerilogBindingTbl *parent_bindings, - bool make_black_boxes); - void makeLibertyInst(VerilogLibertyInst *lib_inst, - Instance *parent, - VerilogModule *parent_module, - VerilogBindingTbl *parent_bindings); - void bindGlobalNets(VerilogBindingTbl *bindings); - void makeNamedInstPins1(Cell *cell, - Instance *inst, - VerilogModuleInst *mod_inst, - VerilogBindingTbl *bindings, - Instance *parent, - VerilogBindingTbl *parent_bindings, - bool is_leaf); - void makeNamedInstPins(Cell *cell, - Instance *inst, - VerilogModuleInst *mod_inst, - VerilogBindingTbl *bindings, - Instance *parent, - VerilogModule *parent_module, - VerilogBindingTbl *parent_bindings, - bool is_leaf); - void makeOrderedInstPins(Cell *cell, - Instance *inst, - VerilogModuleInst *mod_inst, - VerilogBindingTbl *bindings, - Instance *parent, - VerilogModule *parent_module, - VerilogBindingTbl *parent_bindings, - bool is_leaf); - void mergeAssignNet(VerilogAssign *assign, - VerilogModule *module, - Instance *inst, - VerilogBindingTbl *bindings); - void makeInstPin(Instance *inst, - Port *port, - VerilogNetNameIterator *net_name_iter, - VerilogBindingTbl *bindings, - Instance *parent, - VerilogBindingTbl *parent_bindings, - bool is_leaf); - void makeInstPin(Instance *inst, - Port *port, - const char *net_name, - VerilogBindingTbl *bindings, - Instance *parent, - VerilogBindingTbl *parent_bindings, - bool is_leaf); - void linkWarn(int id, - const char *filename, - int line, - const char *msg, ...) - __attribute__((format (printf, 5, 6))); - void linkError(int id, - const char *filename, - int line, - const char *msg, ...) - __attribute__((format (printf, 5, 6))); - bool reportLinkErrors(Report *report); - bool haveLinkErrors(); - Cell *makeBlackBox(VerilogModuleInst *mod_inst, - VerilogModule *parent_module); - void makeBlackBoxNamedPorts(Cell *cell, - VerilogModuleInst *mod_inst, - VerilogModule *parent_module); - void makeBlackBoxOrderedPorts(Cell *cell, - VerilogModuleInst *mod_inst, - VerilogModule *parent_module); - bool isBlackBox(Cell *cell); - bool hasScalarNamedPortRefs(LibertyCell *liberty_cell, - VerilogNetSeq *pins); - - Report *report_; - Debug *debug_; - NetworkReader *network_; - - string filename_; - vector filenames_; - int line_; - gzFile stream_; - - Library *library_; - int black_box_index_; - VerilogModuleMap module_map_; - VerilogErrorSeq link_errors_; - const char *zero_net_name_; - const char *one_net_name_; - const char *constant10_max_; - size_t constant10_max_length_; - ViewType *view_type_; - bool report_stmt_stats_; - int module_count_; - int inst_mod_count_; - int inst_lib_count_; - int inst_lib_net_arrays_; - int port_names_; - int inst_module_names_; - int inst_names_; - int dcl_count_; - int dcl_bus_count_; - int dcl_arg_count_; - int net_scalar_count_; - int net_scalar_names_; - int net_bus_names_; - int net_part_select_count_; - int net_bit_select_count_; - int net_port_ref_scalar_count_; - int net_port_ref_scalar_net_count_; - int net_port_ref_bit_count_; - int net_port_ref_part_count_; - int net_constant_count_; - int assign_count_; - int concat_count_; -}; +typedef vector StdStringSeq; class VerilogStmt { public: - explicit VerilogStmt(int line); + VerilogStmt(int line); virtual ~VerilogStmt() {} virtual bool isInstance() const { return false; } virtual bool isModuleInst() const { return false; } @@ -339,19 +47,19 @@ private: class VerilogModule : public VerilogStmt { public: - VerilogModule(const char *name, + VerilogModule(const string &name, VerilogNetSeq *ports, VerilogStmtSeq *stmts, - VerilogAttributeStmtSeq *attribute_stmts, - string &filename, + VerilogAttrStmtSeq *attr_stmts, + const string &filename, int line, VerilogReader *reader); virtual ~VerilogModule(); - const char *name() { return name_; } + const string &name() { return name_; } const char *filename() { return filename_.c_str(); } - VerilogAttributeStmtSeq *attributeStmts() { return attribute_stmts_; } + VerilogAttrStmtSeq *attrStmts() { return attr_stmts_; } VerilogNetSeq *ports() { return ports_; } - VerilogDcl *declaration(const char *net_name); + VerilogDcl *declaration(const string &net_name); VerilogStmtSeq *stmts() { return stmts_; } VerilogDclMap *declarationMap() { return &dcl_map_; } void parseDcl(VerilogDcl *dcl, @@ -360,15 +68,15 @@ public: private: void parseStmts(VerilogReader *reader); void checkInstanceName(VerilogInst *inst, - StringSet &inst_names, + StdStringSet &inst_names, VerilogReader *reader); - const char *name_; - string &filename_; + string name_; + string filename_; VerilogNetSeq *ports_; VerilogStmtSeq *stmts_; VerilogDclMap dcl_map_; - VerilogAttributeStmtSeq *attribute_stmts_; + VerilogAttrStmtSeq *attr_stmts_; }; class VerilogDcl : public VerilogStmt @@ -376,14 +84,14 @@ class VerilogDcl : public VerilogStmt public: VerilogDcl(PortDirection *dir, VerilogDclArgSeq *args, - VerilogAttributeStmtSeq *attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line); VerilogDcl(PortDirection *dir, VerilogDclArg *arg, - VerilogAttributeStmtSeq *attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line); virtual ~VerilogDcl(); - const char *portName(); + const string &portName(); virtual bool isBus() const { return false; } virtual bool isDeclaration() const { return true; } VerilogDclArgSeq *args() const { return args_; } @@ -395,7 +103,7 @@ public: private: PortDirection *dir_; VerilogDclArgSeq *args_; - VerilogAttributeStmtSeq *attribute_stmts_; + VerilogAttrStmtSeq *attr_stmts_; }; class VerilogDclBus : public VerilogDcl @@ -405,13 +113,13 @@ public: int from_index, int to_index, VerilogDclArgSeq *args, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line); VerilogDclBus(PortDirection *dir, int from_index, int to_index, VerilogDclArg *arg, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, int line); virtual bool isBus() const { return true; } int fromIndex() const { return from_index_; } @@ -427,14 +135,15 @@ private: class VerilogDclArg { public: - explicit VerilogDclArg(const char *net_name); - explicit VerilogDclArg(VerilogAssign *assign); + VerilogDclArg(const string &net_name); + VerilogDclArg(VerilogAssign *assign); ~VerilogDclArg(); - const char *netName(); + const string &netName(); + bool isNamed() const { return assign_ == nullptr; } VerilogAssign *assign() { return assign_; } private: - const char *net_name_; + string net_name_; VerilogAssign *assign_; }; @@ -458,37 +167,37 @@ private: class VerilogInst : public VerilogStmt { public: - VerilogInst(const char *inst_name, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogInst(const string &inst_name, + VerilogAttrStmtSeq *attr_stmts, const int line); virtual ~VerilogInst(); virtual bool isInstance() const { return true; } - const char *instanceName() const { return inst_name_; } - VerilogAttributeStmtSeq *attributeStmts() const { return attribute_stmts_; } - void setInstanceName(const char *inst_name); + const string &instanceName() const { return inst_name_; } + VerilogAttrStmtSeq *attrStmts() const { return attr_stmts_; } + void setInstanceName(const string &inst_name); private: - const char *inst_name_; - VerilogAttributeStmtSeq* attribute_stmts_; + string inst_name_; + VerilogAttrStmtSeq *attr_stmts_; }; class VerilogModuleInst : public VerilogInst { public: - VerilogModuleInst(const char *module_name, - const char *inst_name, + VerilogModuleInst(const string &module_name, + const string &inst_name, VerilogNetSeq *pins, - VerilogAttributeStmtSeq* attribute_stmts, + VerilogAttrStmtSeq *attr_stmts, const int line); virtual ~VerilogModuleInst(); virtual bool isModuleInst() const { return true; } - const char *moduleName() const { return module_name_; } + const string &moduleName() const { return module_name_; } VerilogNetSeq *pins() const { return pins_; } bool namedPins(); bool hasPins(); private: - const char *module_name_; + string module_name_; VerilogNetSeq *pins_; }; @@ -499,18 +208,17 @@ class VerilogLibertyInst : public VerilogInst { public: VerilogLibertyInst(LibertyCell *cell, - const char *inst_name, - const char **net_names, - VerilogAttributeStmtSeq* attribute_stmts, + const string &inst_name, + const StdStringSeq &net_names, + VerilogAttrStmtSeq *attr_stmts, const int line); - virtual ~VerilogLibertyInst(); virtual bool isLibertyInst() const { return true; } LibertyCell *cell() const { return cell_; } - const char **netNames() const { return net_names_; } + const StdStringSeq &netNames() const { return net_names_; } private: LibertyCell *cell_; - const char **net_names_; + StdStringSeq net_names_; }; // Abstract base class for nets. @@ -526,8 +234,6 @@ public: virtual int size(VerilogModule *module) = 0; virtual VerilogNetNameIterator *nameIterator(VerilogModule *module, VerilogReader *reader) = 0; - -private: }; class VerilogNetUnnamed : public VerilogNet @@ -544,14 +250,11 @@ private: class VerilogNetNamed : public VerilogNet { public: - explicit VerilogNetNamed(const char *name); - explicit VerilogNetNamed(const string &name); + VerilogNetNamed(const string &name); virtual ~VerilogNetNamed(); bool isNamed() const override { return true; } virtual bool isScalar() const = 0; const string &name() const override { return name_; } - const string baseName() const { return name_; } - void setName(const char *name); protected: string name_; @@ -561,7 +264,7 @@ protected: class VerilogNetScalar : public VerilogNetNamed { public: - explicit VerilogNetScalar(const char *name); + VerilogNetScalar(const string &name); virtual bool isScalar() const { return true; } virtual int size(VerilogModule *module); virtual VerilogNetNameIterator *nameIterator(VerilogModule *module, @@ -571,7 +274,7 @@ public: class VerilogNetBitSelect : public VerilogNetNamed { public: - VerilogNetBitSelect(const char *name, + VerilogNetBitSelect(const string &name, int index); int index() { return index_; } virtual bool isScalar() const { return false; } @@ -585,7 +288,7 @@ private: class VerilogNetPartSelect : public VerilogNetNamed { public: - VerilogNetPartSelect(const char *name, + VerilogNetPartSelect(const string &name, int from_index, int to_index); virtual bool isScalar() const { return false; } @@ -603,24 +306,26 @@ private: class VerilogNetConstant : public VerilogNetUnnamed { public: - VerilogNetConstant(const char *constant, - VerilogReader *reader); + VerilogNetConstant(const string *constant, + VerilogReader *reader, + int line); virtual ~VerilogNetConstant(); virtual int size(VerilogModule *module); virtual VerilogNetNameIterator *nameIterator(VerilogModule *module, VerilogReader *reader); private: - void parseConstant(const char *constant, - VerilogReader *reader); - void parseConstant(const char *constant, - size_t constant_length, - const char *base_ptr, + void parseConstant(const string *constant, + VerilogReader *reader, + int line); + void parseConstant(const string *constant, + size_t base_idx, int base, int digit_bit_count); - void parseConstant10(const char *constant_str, - char *tmp, - VerilogReader *reader); + void parseConstant10(const string *constant, + size_t base_idx, + VerilogReader *reader, + int line); VerilogConstantValue *value_; }; @@ -628,7 +333,7 @@ private: class VerilogNetConcat : public VerilogNetUnnamed { public: - explicit VerilogNetConcat(VerilogNetSeq *nets); + VerilogNetConcat(VerilogNetSeq *nets); virtual ~VerilogNetConcat(); virtual int size(VerilogModule *module); virtual VerilogNetNameIterator *nameIterator(VerilogModule *module, @@ -642,7 +347,7 @@ private: class VerilogNetPortRef : public VerilogNetScalar { public: - explicit VerilogNetPortRef(const char *name); + VerilogNetPortRef(const string &name); virtual bool isNamedPortRef() { return true; } virtual bool hasNet() = 0; }; @@ -654,27 +359,26 @@ public: class VerilogNetPortRefScalarNet : public VerilogNetPortRef { public: - VerilogNetPortRefScalarNet(const char *name); - VerilogNetPortRefScalarNet(const char *name, - const char *net_name); - virtual ~VerilogNetPortRefScalarNet(); + VerilogNetPortRefScalarNet(const string &name); + VerilogNetPortRefScalarNet(const string &name, + const string &net_name); virtual bool isScalar() const { return true; } virtual bool isNamedPortRefScalarNet() const { return true; } virtual int size(VerilogModule *module); virtual VerilogNetNameIterator *nameIterator(VerilogModule *module, VerilogReader *reader); - virtual bool hasNet() { return net_name_ != nullptr; } - const char *netName() const { return net_name_; } - void setNetName(const char *net_name) { net_name_ = net_name; } + virtual bool hasNet() { return !net_name_.empty(); } + const string &netName() const { return net_name_; } + void setNetName(const string &net_name) { net_name_ = net_name; } private: - const char *net_name_; + string net_name_; }; class VerilogNetPortRefScalar : public VerilogNetPortRef { public: - VerilogNetPortRefScalar(const char *name, + VerilogNetPortRefScalar(const string &name, VerilogNet *net); virtual ~VerilogNetPortRefScalar(); virtual bool isScalar() const { return true; } @@ -690,7 +394,7 @@ private: class VerilogNetPortRefBit : public VerilogNetPortRefScalar { public: - VerilogNetPortRefBit(const char *name, + VerilogNetPortRefBit(const string &name, int index, VerilogNet *net); const string &name() const override { return bit_name_; } @@ -702,7 +406,7 @@ private: class VerilogNetPortRefPart : public VerilogNetPortRefBit { public: - VerilogNetPortRefPart(const char *name, + VerilogNetPortRefPart(const string &name, int from_index, int to_index, VerilogNet *net); @@ -714,33 +418,33 @@ private: }; // Abstract class for iterating over the component nets of a net. -class VerilogNetNameIterator : public Iterator +class VerilogNetNameIterator : public Iterator { }; -class VerilogAttributeStmt +class VerilogAttrStmt { public: - VerilogAttributeStmt(VerilogAttributeEntrySeq *attribute_sequence); - VerilogAttributeEntrySeq *attribute_sequence(); - virtual ~VerilogAttributeStmt(); + VerilogAttrStmt(VerilogAttrEntrySeq *attrs); + VerilogAttrEntrySeq *attrs(); + virtual ~VerilogAttrStmt(); private: - VerilogAttributeEntrySeq *attribute_sequence_; + VerilogAttrEntrySeq *attrs_; }; -class VerilogAttributeEntry +class VerilogAttrEntry { public: - VerilogAttributeEntry(std::string key, - std::string value); - virtual std::string key(); - virtual std::string value(); - virtual ~VerilogAttributeEntry() = default; + VerilogAttrEntry(const string &key, + const string &value); + virtual string key(); + virtual string value(); + virtual ~VerilogAttrEntry() = default; private: - std::string key_; - std::string value_; + string key_; + string value_; }; } // namespace diff --git a/include/sta/VerilogReader.hh b/verilog/VerilogScanner.hh similarity index 52% rename from include/sta/VerilogReader.hh rename to verilog/VerilogScanner.hh index 7f31b353..16612244 100644 --- a/include/sta/VerilogReader.hh +++ b/verilog/VerilogScanner.hh @@ -16,17 +16,38 @@ #pragma once +#ifndef __FLEX_LEXER_H +#include +#endif + +#include "location.hh" +#include "VerilogParse.hh" + namespace sta { -class NetworkReader; +class Report; -// Return true if successful. -bool -readVerilogFile(const char *filename, - NetworkReader *network); +class VerilogScanner : public yyFlexLexer +{ +public: + VerilogScanner(std::istream *stream, + const char *filename, + Report *report); + virtual ~VerilogScanner() {} -void -deleteVerilogReader(); + virtual int yylex(VerilogParse::semantic_type *const yylval, + VerilogParse::location_type *yylloc); + // YY_DECL defined in VerilogLex.ll + // Method body created by flex in VerilogLex.yy.cc -} // namespace sta + void error(const char *msg); + // Get rid of override virtual function warning. + using FlexLexer::yylex; + +private: + const char *filename_; + Report *report_; +}; + +} // namespace diff --git a/verilog/VerilogWriter.cc b/verilog/VerilogWriter.cc index e9d33d6d..9a192163 100644 --- a/verilog/VerilogWriter.cc +++ b/verilog/VerilogWriter.cc @@ -194,9 +194,8 @@ VerilogWriter::writePorts(const Cell *cell) || !network_->direction(port)->isPowerGround()) { if (!first) fprintf(stream_, ",\n "); - string verillg_name = portVerilogName(network_->name(port), - network_->pathEscape()); - fprintf(stream_, "%s", verillg_name.c_str()); + string verilog_name = portVerilogName(network_->name(port)); + fprintf(stream_, "%s", verilog_name.c_str()); first = false; } } @@ -213,8 +212,7 @@ VerilogWriter::writePortDcls(const Cell *cell) PortDirection *dir = network_->direction(port); if (include_pwr_gnd_ || !network_->direction(port)->isPowerGround()) { - string port_vname = portVerilogName(network_->name(port), - network_->pathEscape()); + string port_vname = portVerilogName(network_->name(port)); const char *vtype = verilogPortDir(dir); if (vtype) { fprintf(stream_, " %s", vtype); @@ -252,8 +250,9 @@ VerilogWriter::verilogPortDir(PortDirection *dir) return "inout"; else if (dir == PortDirection::ground()) return "inout"; - else if (dir == PortDirection::internal()) - return nullptr; + else if (dir == PortDirection::internal() + || dir == PortDirection::unknown()) + return "inout"; else { criticalError(268, "unknown port direction"); return nullptr; @@ -285,7 +284,7 @@ VerilogWriter::writeWireDcls(const Instance *inst) range.second = min(range.second, index); } else { - string net_vname = netVerilogName(net_name, network_->pathEscape()); + string net_vname = netVerilogName(net_name); fprintf(stream_, " wire %s;\n", net_vname.c_str());; } } @@ -295,7 +294,7 @@ VerilogWriter::writeWireDcls(const Instance *inst) for (const auto& [bus_name1, range] : bus_ranges) { const char *bus_name = bus_name1.c_str(); - string net_vname = netVerilogName(bus_name, network_->pathEscape()); + string net_vname = netVerilogName(bus_name); fprintf(stream_, " wire [%d:%d] %s;\n", range.first, range.second, @@ -335,7 +334,7 @@ VerilogWriter::writeChild(const Instance *child) Cell *child_cell = network_->cell(child); if (!remove_cells_.hasKey(child_cell)) { const char *child_name = network_->name(child); - string child_vname = instanceVerilogName(child_name, network_->pathEscape()); + string child_vname = instanceVerilogName(child_name); string child_cell_vname = cellVerilogName(network_->name(child_cell)); fprintf(stream_, " %s %s (", child_cell_vname.c_str(), @@ -367,11 +366,10 @@ VerilogWriter::writeInstPin(const Instance *inst, Net *net = network_->net(pin); if (net) { const char *net_name = network_->name(net); - string net_vname = netVerilogName(net_name, network_->pathEscape()); + string net_vname = netVerilogName(net_name); if (!first_port) fprintf(stream_, ",\n "); - string port_vname = portVerilogName(network_->name(port), - network_->pathEscape()); + string port_vname = portVerilogName(network_->name(port)); fprintf(stream_, ".%s(%s)", port_vname.c_str(), net_vname.c_str()); @@ -427,7 +425,7 @@ VerilogWriter::writeInstBusPinBit(const Instance *inst, else // There is no verilog syntax to "skip" a bit in the concatentation. stringPrint(net_name, "_NC%d", unconnected_net_index_++); - string net_vname = netVerilogName(net_name.c_str(), network_->pathEscape()); + string net_vname = netVerilogName(net_name.c_str()); if (!first_member) fprintf(stream_, ",\n "); fprintf(stream_, "%s", net_vname.c_str()); @@ -454,10 +452,8 @@ VerilogWriter::writeAssigns(const Instance *inst) || (include_pwr_gnd_ && network_->direction(port)->isPowerGround())) && !stringEqual(network_->name(port), network_->name(net))) { // Port name is different from net name. - string port_vname = netVerilogName(network_->name(port), - network_->pathEscape()); - string net_vname = netVerilogName(network_->name(net), - network_->pathEscape()); + string port_vname = netVerilogName(network_->name(port)); + string net_vname = netVerilogName(network_->name(net)); fprintf(stream_, " assign %s = %s;\n", port_vname.c_str(), net_vname.c_str()); From 2a4fd08211fbd354edb6c5c7852c3006f130c045 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Tue, 21 Jan 2025 18:54:33 -0700 Subject: [PATCH 02/11] update copyright Signed-off-by: James Cherry --- CMakeLists.txt | 10 +++++++++- app/Main.cc | 10 +++++++++- app/StaApp.i | 10 +++++++++- app/StaMain.cc | 10 +++++++++- dcalc/ArcDcalcWaveforms.cc | 10 +++++++++- dcalc/ArcDcalcWaveforms.hh | 10 +++++++++- dcalc/ArcDelayCalc.cc | 10 +++++++++- dcalc/Arnoldi.hh | 10 +++++++++- dcalc/ArnoldiDelayCalc.cc | 10 +++++++++- dcalc/ArnoldiDelayCalc.hh | 10 +++++++++- dcalc/ArnoldiReduce.cc | 10 +++++++++- dcalc/ArnoldiReduce.hh | 10 +++++++++- dcalc/CcsCeffDelayCalc.cc | 10 +++++++++- dcalc/CcsCeffDelayCalc.hh | 10 +++++++++- dcalc/DcalcAnalysisPt.cc | 10 +++++++++- dcalc/DelayCalc.cc | 10 +++++++++- dcalc/DelayCalc.i | 10 +++++++++- dcalc/DelayCalc.tcl | 10 +++++++++- dcalc/DelayCalcBase.cc | 10 +++++++++- dcalc/DelayCalcBase.hh | 10 +++++++++- dcalc/DmpCeff.cc | 10 +++++++++- dcalc/DmpCeff.hh | 10 +++++++++- dcalc/DmpDelayCalc.cc | 10 +++++++++- dcalc/DmpDelayCalc.hh | 10 +++++++++- dcalc/FindRoot.cc | 10 +++++++++- dcalc/FindRoot.hh | 10 +++++++++- dcalc/GraphDelayCalc.cc | 10 +++++++++- dcalc/LumpedCapDelayCalc.cc | 10 +++++++++- dcalc/LumpedCapDelayCalc.hh | 10 +++++++++- dcalc/NetCaps.cc | 10 +++++++++- dcalc/NetCaps.hh | 10 +++++++++- dcalc/ParallelDelayCalc.cc | 10 +++++++++- dcalc/ParallelDelayCalc.hh | 10 +++++++++- dcalc/PrimaDelayCalc.cc | 10 +++++++++- dcalc/PrimaDelayCalc.hh | 10 +++++++++- dcalc/UnitDelayCalc.cc | 10 +++++++++- dcalc/UnitDelayCalc.hh | 10 +++++++++- doc/ApiChanges.txt | 10 +++++++++- doc/StaApi.txt | 10 +++++++++- etc/TclEncode.tcl | 10 +++++++++- graph/Delay.cc | 10 +++++++++- graph/DelayFloat.cc | 10 +++++++++- graph/DelayNormal1.cc | 10 +++++++++- graph/DelayNormal2.cc | 10 +++++++++- graph/Graph.cc | 10 +++++++++- graph/Graph.i | 10 +++++++++- graph/Graph.tcl | 10 +++++++++- graph/GraphCmp.cc | 10 +++++++++- include/sta/ArcDelayCalc.hh | 10 +++++++++- include/sta/ArrayTable.hh | 10 +++++++++- include/sta/Bdd.hh | 10 +++++++++- include/sta/Bfs.hh | 10 +++++++++- include/sta/CircuitSim.hh | 10 +++++++++- include/sta/ClkNetwork.hh | 10 +++++++++- include/sta/Clock.hh | 10 +++++++++- include/sta/ClockGatingCheck.hh | 10 +++++++++- include/sta/ClockGroups.hh | 10 +++++++++- include/sta/ClockInsertion.hh | 10 +++++++++- include/sta/ClockLatency.hh | 10 +++++++++- include/sta/ConcreteLibrary.hh | 10 +++++++++- include/sta/ConcreteNetwork.hh | 10 +++++++++- include/sta/Corner.hh | 10 +++++++++- include/sta/CycleAccting.hh | 10 +++++++++- include/sta/DataCheck.hh | 10 +++++++++- include/sta/DcalcAnalysisPt.hh | 10 +++++++++- include/sta/Debug.hh | 10 +++++++++- include/sta/Delay.hh | 10 +++++++++- include/sta/DelayCalc.hh | 10 +++++++++- include/sta/DelayFloat.hh | 10 +++++++++- include/sta/DelayNormal1.hh | 10 +++++++++- include/sta/DelayNormal2.hh | 10 +++++++++- include/sta/DeratingFactors.hh | 10 +++++++++- include/sta/DisabledPorts.hh | 10 +++++++++- include/sta/EnumNameMap.hh | 10 +++++++++- include/sta/EquivCells.hh | 10 +++++++++- include/sta/Error.hh | 10 +++++++++- include/sta/ExceptionPath.hh | 10 +++++++++- include/sta/FuncExpr.hh | 10 +++++++++- include/sta/Fuzzy.hh | 10 +++++++++- include/sta/Graph.hh | 10 +++++++++- include/sta/GraphClass.hh | 10 +++++++++- include/sta/GraphCmp.hh | 10 +++++++++- include/sta/GraphDelayCalc.hh | 10 +++++++++- include/sta/Hash.hh | 10 +++++++++- include/sta/HpinDrvrLoad.hh | 10 +++++++++- include/sta/InputDrive.hh | 10 +++++++++- include/sta/InternalPower.hh | 10 +++++++++- include/sta/Iterator.hh | 10 +++++++++- include/sta/LeakagePower.hh | 10 +++++++++- include/sta/Liberty.hh | 10 +++++++++- include/sta/LibertyClass.hh | 10 +++++++++- include/sta/LibertyWriter.hh | 10 +++++++++- include/sta/LinearModel.hh | 10 +++++++++- include/sta/Machine.hh | 10 +++++++++- include/sta/MakeConcreteNetwork.hh | 10 +++++++++- include/sta/MakeConcreteParasitics.hh | 10 +++++++++- include/sta/Map.hh | 10 +++++++++- include/sta/MinMax.hh | 10 +++++++++- include/sta/MinMaxValues.hh | 10 +++++++++- include/sta/Mutex.hh | 10 +++++++++- include/sta/Network.hh | 10 +++++++++- include/sta/NetworkClass.hh | 10 +++++++++- include/sta/NetworkCmp.hh | 10 +++++++++- include/sta/ObjectId.hh | 10 +++++++++- include/sta/ObjectTable.hh | 10 +++++++++- include/sta/Parasitics.hh | 10 +++++++++- include/sta/ParasiticsClass.hh | 10 +++++++++- include/sta/ParseBus.hh | 10 +++++++++- include/sta/Path.hh | 10 +++++++++- include/sta/PathAnalysisPt.hh | 10 +++++++++- include/sta/PathEnd.hh | 10 +++++++++- include/sta/PathExpanded.hh | 10 +++++++++- include/sta/PathGroup.hh | 10 +++++++++- include/sta/PathRef.hh | 10 +++++++++- include/sta/PathVertex.hh | 10 +++++++++- include/sta/PathVertexRep.hh | 10 +++++++++- include/sta/PatternMatch.hh | 10 +++++++++- include/sta/PinPair.hh | 10 +++++++++- include/sta/PortDelay.hh | 10 +++++++++- include/sta/PortDirection.hh | 10 +++++++++- include/sta/PortExtCap.hh | 10 +++++++++- include/sta/PowerClass.hh | 10 +++++++++- include/sta/Property.hh | 10 +++++++++- include/sta/Report.hh | 10 +++++++++- include/sta/ReportStd.hh | 10 +++++++++- include/sta/ReportTcl.hh | 10 +++++++++- include/sta/RiseFallMinMax.hh | 10 +++++++++- include/sta/RiseFallValues.hh | 10 +++++++++- include/sta/Sdc.hh | 10 +++++++++- include/sta/SdcClass.hh | 10 +++++++++- include/sta/SdcCmdComment.hh | 10 +++++++++- include/sta/SdcNetwork.hh | 10 +++++++++- include/sta/Search.hh | 10 +++++++++- include/sta/SearchClass.hh | 10 +++++++++- include/sta/SearchPred.hh | 10 +++++++++- include/sta/Sequential.hh | 10 +++++++++- include/sta/Set.hh | 10 +++++++++- include/sta/Sta.hh | 10 +++++++++- include/sta/StaMain.hh | 10 +++++++++- include/sta/StaState.hh | 10 +++++++++- include/sta/Stats.hh | 10 +++++++++- include/sta/StringSeq.hh | 10 +++++++++- include/sta/StringSet.hh | 10 +++++++++- include/sta/StringUtil.hh | 10 +++++++++- include/sta/TableModel.hh | 10 +++++++++- include/sta/TclTypeHelpers.hh | 10 +++++++++- include/sta/TimingArc.hh | 10 +++++++++- include/sta/TimingModel.hh | 10 +++++++++- include/sta/TimingRole.hh | 10 +++++++++- include/sta/TokenParser.hh | 10 +++++++++- include/sta/Transition.hh | 10 +++++++++- include/sta/Units.hh | 10 +++++++++- include/sta/UnorderedMap.hh | 10 +++++++++- include/sta/UnorderedSet.hh | 10 +++++++++- include/sta/Vector.hh | 10 +++++++++- include/sta/VerilogNamespace.hh | 10 +++++++++- include/sta/VerilogWriter.hh | 10 +++++++++- include/sta/VertexId.hh | 10 +++++++++- include/sta/VertexVisitor.hh | 10 +++++++++- include/sta/VisitPathEnds.hh | 10 +++++++++- include/sta/Wireload.hh | 10 +++++++++- include/sta/WriteSdc.hh | 10 +++++++++- include/sta/Zlib.hh | 10 +++++++++- liberty/EquivCells.cc | 10 +++++++++- liberty/FuncExpr.cc | 10 +++++++++- liberty/InternalPower.cc | 10 +++++++++- liberty/LeakagePower.cc | 10 +++++++++- liberty/Liberty.cc | 10 +++++++++- liberty/Liberty.i | 10 +++++++++- liberty/Liberty.tcl | 10 +++++++++- liberty/LibertyBuilder.cc | 10 +++++++++- liberty/LibertyBuilder.hh | 10 +++++++++- liberty/LibertyExpr.cc | 10 +++++++++- liberty/LibertyExpr.hh | 10 +++++++++- liberty/LibertyExprLex.ll | 10 +++++++++- liberty/LibertyExprParse.yy | 10 +++++++++- liberty/LibertyExprPvt.hh | 10 +++++++++- liberty/LibertyExt.cc | 10 +++++++++- liberty/LibertyLex.ll | 10 +++++++++- liberty/LibertyParse.yy | 10 +++++++++- liberty/LibertyParser.cc | 10 +++++++++- liberty/LibertyParser.hh | 10 +++++++++- liberty/LibertyReader.cc | 10 +++++++++- liberty/LibertyReader.hh | 10 +++++++++- liberty/LibertyReaderPvt.hh | 10 +++++++++- liberty/LibertyWriter.cc | 10 +++++++++- liberty/LinearModel.cc | 10 +++++++++- liberty/Sequential.cc | 10 +++++++++- liberty/TableModel.cc | 10 +++++++++- liberty/TimingArc.cc | 10 +++++++++- liberty/TimingModel.cc | 10 +++++++++- liberty/TimingRole.cc | 10 +++++++++- liberty/Units.cc | 10 +++++++++- liberty/Wireload.cc | 10 +++++++++- network/ConcreteLibrary.cc | 10 +++++++++- network/ConcreteNetwork.cc | 10 +++++++++- network/HpinDrvrLoad.cc | 10 +++++++++- network/Link.tcl | 10 +++++++++- network/Network.cc | 10 +++++++++- network/Network.i | 10 +++++++++- network/Network.tcl | 10 +++++++++- network/NetworkCmp.cc | 10 +++++++++- network/NetworkEdit.i | 10 +++++++++- network/NetworkEdit.tcl | 10 +++++++++- network/ParseBus.cc | 10 +++++++++- network/PortDirection.cc | 10 +++++++++- network/SdcNetwork.cc | 10 +++++++++- network/VerilogNamespace.cc | 10 +++++++++- parasitics/ConcreteParasitics.cc | 10 +++++++++- parasitics/ConcreteParasitics.hh | 10 +++++++++- parasitics/ConcreteParasiticsPvt.hh | 10 +++++++++- parasitics/EstimateParasitics.cc | 10 +++++++++- parasitics/EstimateParasitics.hh | 10 +++++++++- parasitics/Parasitics.cc | 10 +++++++++- parasitics/Parasitics.i | 10 +++++++++- parasitics/Parasitics.tcl | 10 +++++++++- parasitics/ReduceParasitics.cc | 10 +++++++++- parasitics/ReduceParasitics.hh | 10 +++++++++- parasitics/ReportParasiticAnnotation.cc | 10 +++++++++- parasitics/ReportParasiticAnnotation.hh | 10 +++++++++- parasitics/SpefLex.ll | 10 +++++++++- parasitics/SpefNamespace.cc | 10 +++++++++- parasitics/SpefNamespace.hh | 10 +++++++++- parasitics/SpefParse.yy | 10 +++++++++- parasitics/SpefReader.cc | 10 +++++++++- parasitics/SpefReader.hh | 10 +++++++++- parasitics/SpefReaderPvt.hh | 10 +++++++++- power/Power.cc | 10 +++++++++- power/Power.hh | 10 +++++++++- power/Power.i | 10 +++++++++- power/Power.tcl | 10 +++++++++- power/SaifLex.ll | 10 +++++++++- power/SaifParse.yy | 10 +++++++++- power/SaifReader.cc | 10 +++++++++- power/SaifReader.hh | 10 +++++++++- power/SaifReaderPvt.hh | 10 +++++++++- power/VcdParse.cc | 10 +++++++++- power/VcdParse.hh | 10 +++++++++- power/VcdReader.cc | 10 +++++++++- power/VcdReader.hh | 10 +++++++++- sdc/Clock.cc | 10 +++++++++- sdc/ClockGatingCheck.cc | 10 +++++++++- sdc/ClockGroups.cc | 10 +++++++++- sdc/ClockInsertion.cc | 10 +++++++++- sdc/ClockLatency.cc | 10 +++++++++- sdc/CycleAccting.cc | 10 +++++++++- sdc/DataCheck.cc | 10 +++++++++- sdc/DeratingFactors.cc | 10 +++++++++- sdc/DisabledPorts.cc | 10 +++++++++- sdc/ExceptionPath.cc | 10 +++++++++- sdc/InputDrive.cc | 10 +++++++++- sdc/PinPair.cc | 10 +++++++++- sdc/PortDelay.cc | 10 +++++++++- sdc/PortExtCap.cc | 10 +++++++++- sdc/Sdc.cc | 10 +++++++++- sdc/Sdc.i | 10 +++++++++- sdc/Sdc.tcl | 10 +++++++++- sdc/SdcCmdComment.cc | 10 +++++++++- sdc/SdcGraph.cc | 10 +++++++++- sdc/WriteSdc.cc | 10 +++++++++- sdc/WriteSdcPvt.hh | 10 +++++++++- sdf/ReportAnnotation.cc | 10 +++++++++- sdf/ReportAnnotation.hh | 10 +++++++++- sdf/Sdf.i | 10 +++++++++- sdf/Sdf.tcl | 10 +++++++++- sdf/SdfLex.ll | 10 +++++++++- sdf/SdfParse.yy | 10 +++++++++- sdf/SdfReader.cc | 10 +++++++++- sdf/SdfReader.hh | 10 +++++++++- sdf/SdfReaderPvt.hh | 10 +++++++++- sdf/SdfWriter.cc | 10 +++++++++- sdf/SdfWriter.hh | 10 +++++++++- search/Bdd.cc | 10 +++++++++- search/Bfs.cc | 10 +++++++++- search/CheckCapacitanceLimits.cc | 10 +++++++++- search/CheckCapacitanceLimits.hh | 10 +++++++++- search/CheckFanoutLimits.cc | 10 +++++++++- search/CheckFanoutLimits.hh | 10 +++++++++- search/CheckMaxSkews.cc | 10 +++++++++- search/CheckMaxSkews.hh | 10 +++++++++- search/CheckMinPeriods.cc | 10 +++++++++- search/CheckMinPeriods.hh | 10 +++++++++- search/CheckMinPulseWidths.cc | 10 +++++++++- search/CheckMinPulseWidths.hh | 10 +++++++++- search/CheckSlewLimits.cc | 10 +++++++++- search/CheckSlewLimits.hh | 10 +++++++++- search/CheckTiming.cc | 10 +++++++++- search/CheckTiming.hh | 10 +++++++++- search/ClkDelays.hh | 10 +++++++++- search/ClkInfo.cc | 10 +++++++++- search/ClkInfo.hh | 10 +++++++++- search/ClkLatency.cc | 10 +++++++++- search/ClkLatency.hh | 10 +++++++++- search/ClkNetwork.cc | 10 +++++++++- search/ClkSkew.cc | 10 +++++++++- search/ClkSkew.hh | 10 +++++++++- search/Corner.cc | 10 +++++++++- search/Crpr.cc | 10 +++++++++- search/Crpr.hh | 10 +++++++++- search/FindRegister.cc | 10 +++++++++- search/FindRegister.hh | 10 +++++++++- search/GatedClk.cc | 10 +++++++++- search/GatedClk.hh | 10 +++++++++- search/Genclks.cc | 10 +++++++++- search/Genclks.hh | 10 +++++++++- search/Latches.cc | 10 +++++++++- search/Latches.hh | 10 +++++++++- search/Levelize.cc | 10 +++++++++- search/Levelize.hh | 10 +++++++++- search/MakeTimingModel.cc | 10 +++++++++- search/MakeTimingModel.hh | 10 +++++++++- search/MakeTimingModelPvt.hh | 10 +++++++++- search/Path.cc | 10 +++++++++- search/PathAnalysisPt.cc | 10 +++++++++- search/PathEnd.cc | 10 +++++++++- search/PathEnum.cc | 10 +++++++++- search/PathEnum.hh | 10 +++++++++- search/PathEnumed.cc | 10 +++++++++- search/PathEnumed.hh | 10 +++++++++- search/PathExpanded.cc | 10 +++++++++- search/PathGroup.cc | 10 +++++++++- search/PathRef.cc | 10 +++++++++- search/PathVertex.cc | 10 +++++++++- search/PathVertexRep.cc | 10 +++++++++- search/Property.cc | 10 +++++++++- search/ReportPath.cc | 10 +++++++++- search/ReportPath.hh | 10 +++++++++- search/Search.cc | 10 +++++++++- search/Search.i | 10 +++++++++- search/Search.tcl | 10 +++++++++- search/SearchPred.cc | 10 +++++++++- search/Sim.cc | 10 +++++++++- search/Sim.hh | 10 +++++++++- search/Sta.cc | 10 +++++++++- search/StaState.cc | 10 +++++++++- search/Tag.cc | 10 +++++++++- search/Tag.hh | 10 +++++++++- search/TagGroup.cc | 10 +++++++++- search/TagGroup.hh | 10 +++++++++- search/VertexVisitor.cc | 10 +++++++++- search/VisitPathEnds.cc | 10 +++++++++- search/VisitPathGroupVertices.cc | 10 +++++++++- search/VisitPathGroupVertices.hh | 10 +++++++++- search/WorstSlack.cc | 10 +++++++++- search/WorstSlack.hh | 10 +++++++++- spice/WritePathSpice.cc | 10 +++++++++- spice/WritePathSpice.hh | 10 +++++++++- spice/WriteSpice.cc | 10 +++++++++- spice/WriteSpice.hh | 10 +++++++++- spice/WriteSpice.i | 10 +++++++++- spice/WriteSpice.tcl | 10 +++++++++- spice/Xyce.cc | 10 +++++++++- spice/Xyce.hh | 10 +++++++++- tcl/CmdArgs.tcl | 10 +++++++++- tcl/CmdUtil.tcl | 10 +++++++++- tcl/Exception.i | 10 +++++++++- tcl/Init.tcl | 10 +++++++++- tcl/Property.tcl | 10 +++++++++- tcl/Splash.tcl | 12 ++++++++++-- tcl/Sta.tcl | 10 +++++++++- tcl/StaTclTypes.i | 10 +++++++++- tcl/TclTypeHelpers.cc | 10 +++++++++- tcl/Util.tcl | 10 +++++++++- tcl/Variables.tcl | 10 +++++++++- test/regression | 10 +++++++++- test/regression.tcl | 18 +++++++++++++++++- test/regression_vars.tcl | 18 +++++++++++++++++- test/save_ok | 10 +++++++++- util/Debug.cc | 10 +++++++++- util/Error.cc | 10 +++++++++- util/Fuzzy.cc | 10 +++++++++- util/Hash.cc | 10 +++++++++- util/Machine.cc | 10 +++++++++- util/MachineApple.cc | 10 +++++++++- util/MachineLinux.cc | 10 +++++++++- util/MachineUnknown.cc | 10 +++++++++- util/MachineWin32.cc | 10 +++++++++- util/MinMax.cc | 10 +++++++++- util/PatternMatch.cc | 10 +++++++++- util/Report.cc | 10 +++++++++- util/ReportStd.cc | 10 +++++++++- util/ReportTcl.cc | 10 +++++++++- util/RiseFallMinMax.cc | 10 +++++++++- util/RiseFallValues.cc | 10 +++++++++- util/Stats.cc | 10 +++++++++- util/StringSeq.cc | 10 +++++++++- util/StringSet.cc | 10 +++++++++- util/StringUtil.cc | 10 +++++++++- util/TokenParser.cc | 10 +++++++++- util/Transition.cc | 10 +++++++++- util/Util.i | 10 +++++++++- verilog/Verilog.i | 10 +++++++++- verilog/Verilog.tcl | 10 +++++++++- verilog/VerilogLex.ll | 10 +++++++++- verilog/VerilogParse.yy | 10 +++++++++- verilog/VerilogReader.cc | 10 +++++++++- verilog/VerilogReader.hh | 10 +++++++++- verilog/VerilogReaderPvt.hh | 10 +++++++++- verilog/VerilogScanner.hh | 10 +++++++++- verilog/VerilogWriter.cc | 10 +++++++++- 400 files changed, 3617 insertions(+), 401 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ee73737b..6449acd8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. cmake_minimum_required (VERSION 3.10) if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.13) diff --git a/app/Main.cc b/app/Main.cc index 1f417333..4c7e56e9 100644 --- a/app/Main.cc +++ b/app/Main.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "StaMain.hh" #include "StaConfig.hh" // STA_VERSION diff --git a/app/StaApp.i b/app/StaApp.i index dfb0f3b7..fc9d120b 100644 --- a/app/StaApp.i +++ b/app/StaApp.i @@ -1,7 +1,7 @@ %module sta // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,6 +15,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %include "tcl/Exception.i" %include "tcl/StaTclTypes.i" diff --git a/app/StaMain.cc b/app/StaMain.cc index 5c1be7e9..8587a2db 100644 --- a/app/StaMain.cc +++ b/app/StaMain.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "StaMain.hh" diff --git a/dcalc/ArcDcalcWaveforms.cc b/dcalc/ArcDcalcWaveforms.cc index 954ae6eb..4b8d340d 100644 --- a/dcalc/ArcDcalcWaveforms.cc +++ b/dcalc/ArcDcalcWaveforms.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include diff --git a/dcalc/ArcDcalcWaveforms.hh b/dcalc/ArcDcalcWaveforms.hh index 62343183..2cbcf3b5 100644 --- a/dcalc/ArcDcalcWaveforms.hh +++ b/dcalc/ArcDcalcWaveforms.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/dcalc/ArcDelayCalc.cc b/dcalc/ArcDelayCalc.cc index e318fa56..37dadf19 100644 --- a/dcalc/ArcDelayCalc.cc +++ b/dcalc/ArcDelayCalc.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ArcDelayCalc.hh" diff --git a/dcalc/Arnoldi.hh b/dcalc/Arnoldi.hh index 3dc238b1..05a11b71 100644 --- a/dcalc/Arnoldi.hh +++ b/dcalc/Arnoldi.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. // (c) 2018 Nefelus, Inc. // diff --git a/dcalc/ArnoldiDelayCalc.cc b/dcalc/ArnoldiDelayCalc.cc index 38e976e2..4fcf5b4c 100644 --- a/dcalc/ArnoldiDelayCalc.cc +++ b/dcalc/ArnoldiDelayCalc.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. // (c) 2018 Nefelus, Inc. // diff --git a/dcalc/ArnoldiDelayCalc.hh b/dcalc/ArnoldiDelayCalc.hh index 20b0e626..1802b08e 100644 --- a/dcalc/ArnoldiDelayCalc.hh +++ b/dcalc/ArnoldiDelayCalc.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/dcalc/ArnoldiReduce.cc b/dcalc/ArnoldiReduce.cc index 91a36412..5e5ce066 100644 --- a/dcalc/ArnoldiReduce.cc +++ b/dcalc/ArnoldiReduce.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. // (c) 2018 Nefelus, Inc. // diff --git a/dcalc/ArnoldiReduce.hh b/dcalc/ArnoldiReduce.hh index ad49da34..14e5d68a 100644 --- a/dcalc/ArnoldiReduce.hh +++ b/dcalc/ArnoldiReduce.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. // (c) 2018 Nefelus, Inc. // diff --git a/dcalc/CcsCeffDelayCalc.cc b/dcalc/CcsCeffDelayCalc.cc index cab8e115..3fb99fa2 100644 --- a/dcalc/CcsCeffDelayCalc.cc +++ b/dcalc/CcsCeffDelayCalc.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "CcsCeffDelayCalc.hh" diff --git a/dcalc/CcsCeffDelayCalc.hh b/dcalc/CcsCeffDelayCalc.hh index 1be5eab2..663b6607 100644 --- a/dcalc/CcsCeffDelayCalc.hh +++ b/dcalc/CcsCeffDelayCalc.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/dcalc/DcalcAnalysisPt.cc b/dcalc/DcalcAnalysisPt.cc index 3b2b71bd..1c5b89ed 100644 --- a/dcalc/DcalcAnalysisPt.cc +++ b/dcalc/DcalcAnalysisPt.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "StringUtil.hh" #include "DcalcAnalysisPt.hh" diff --git a/dcalc/DelayCalc.cc b/dcalc/DelayCalc.cc index b08bef9a..77fc7ed1 100644 --- a/dcalc/DelayCalc.cc +++ b/dcalc/DelayCalc.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "DelayCalc.hh" diff --git a/dcalc/DelayCalc.i b/dcalc/DelayCalc.i index 9632bb56..bb21bfaa 100644 --- a/dcalc/DelayCalc.i +++ b/dcalc/DelayCalc.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %module dcalc diff --git a/dcalc/DelayCalc.tcl b/dcalc/DelayCalc.tcl index 9709a85e..89ea0862 100644 --- a/dcalc/DelayCalc.tcl +++ b/dcalc/DelayCalc.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. namespace eval sta { diff --git a/dcalc/DelayCalcBase.cc b/dcalc/DelayCalcBase.cc index 074a506a..fcf3986d 100644 --- a/dcalc/DelayCalcBase.cc +++ b/dcalc/DelayCalcBase.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "DelayCalcBase.hh" diff --git a/dcalc/DelayCalcBase.hh b/dcalc/DelayCalcBase.hh index 1726d8b0..23f9cc1a 100644 --- a/dcalc/DelayCalcBase.hh +++ b/dcalc/DelayCalcBase.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/dcalc/DmpCeff.cc b/dcalc/DmpCeff.cc index 0d3c8e91..10030c4f 100644 --- a/dcalc/DmpCeff.cc +++ b/dcalc/DmpCeff.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. // "Performance Computation for Precharacterized CMOS Gates with RC Loads", // Florentin Dartu, Noel Menezes and Lawrence Pileggi, IEEE Transactions diff --git a/dcalc/DmpCeff.hh b/dcalc/DmpCeff.hh index 8ee9eb3d..59aa8007 100644 --- a/dcalc/DmpCeff.hh +++ b/dcalc/DmpCeff.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/dcalc/DmpDelayCalc.cc b/dcalc/DmpDelayCalc.cc index 9745a0cc..9081a65d 100644 --- a/dcalc/DmpDelayCalc.cc +++ b/dcalc/DmpDelayCalc.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "DmpDelayCalc.hh" diff --git a/dcalc/DmpDelayCalc.hh b/dcalc/DmpDelayCalc.hh index c5c8cbd3..aba00ac2 100644 --- a/dcalc/DmpDelayCalc.hh +++ b/dcalc/DmpDelayCalc.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/dcalc/FindRoot.cc b/dcalc/FindRoot.cc index 78826d62..ded4bec0 100644 --- a/dcalc/FindRoot.cc +++ b/dcalc/FindRoot.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2023, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "FindRoot.hh" diff --git a/dcalc/FindRoot.hh b/dcalc/FindRoot.hh index 1a62df8b..e4d4d854 100644 --- a/dcalc/FindRoot.hh +++ b/dcalc/FindRoot.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2023, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/dcalc/GraphDelayCalc.cc b/dcalc/GraphDelayCalc.cc index 01e03d9e..ca6ffd56 100644 --- a/dcalc/GraphDelayCalc.cc +++ b/dcalc/GraphDelayCalc.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "GraphDelayCalc.hh" diff --git a/dcalc/LumpedCapDelayCalc.cc b/dcalc/LumpedCapDelayCalc.cc index a06853bd..66bf9e7f 100644 --- a/dcalc/LumpedCapDelayCalc.cc +++ b/dcalc/LumpedCapDelayCalc.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "LumpedCapDelayCalc.hh" diff --git a/dcalc/LumpedCapDelayCalc.hh b/dcalc/LumpedCapDelayCalc.hh index 06239341..22b927f1 100644 --- a/dcalc/LumpedCapDelayCalc.hh +++ b/dcalc/LumpedCapDelayCalc.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/dcalc/NetCaps.cc b/dcalc/NetCaps.cc index 44fc5924..5aa200ed 100644 --- a/dcalc/NetCaps.cc +++ b/dcalc/NetCaps.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "NetCaps.hh" diff --git a/dcalc/NetCaps.hh b/dcalc/NetCaps.hh index 311a5104..5679d7ae 100644 --- a/dcalc/NetCaps.hh +++ b/dcalc/NetCaps.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/dcalc/ParallelDelayCalc.cc b/dcalc/ParallelDelayCalc.cc index a27f65b9..70eb5404 100644 --- a/dcalc/ParallelDelayCalc.cc +++ b/dcalc/ParallelDelayCalc.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ParallelDelayCalc.hh" diff --git a/dcalc/ParallelDelayCalc.hh b/dcalc/ParallelDelayCalc.hh index 06ddbda7..40c8bc14 100644 --- a/dcalc/ParallelDelayCalc.hh +++ b/dcalc/ParallelDelayCalc.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/dcalc/PrimaDelayCalc.cc b/dcalc/PrimaDelayCalc.cc index 3e46d07e..c8226076 100644 --- a/dcalc/PrimaDelayCalc.cc +++ b/dcalc/PrimaDelayCalc.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PrimaDelayCalc.hh" diff --git a/dcalc/PrimaDelayCalc.hh b/dcalc/PrimaDelayCalc.hh index d89d2e6a..530d9813 100644 --- a/dcalc/PrimaDelayCalc.hh +++ b/dcalc/PrimaDelayCalc.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/dcalc/UnitDelayCalc.cc b/dcalc/UnitDelayCalc.cc index 76fc4a9c..cd215481 100644 --- a/dcalc/UnitDelayCalc.cc +++ b/dcalc/UnitDelayCalc.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "UnitDelayCalc.hh" diff --git a/dcalc/UnitDelayCalc.hh b/dcalc/UnitDelayCalc.hh index d9ed73f8..001dafa2 100644 --- a/dcalc/UnitDelayCalc.hh +++ b/dcalc/UnitDelayCalc.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/doc/ApiChanges.txt b/doc/ApiChanges.txt index 7f3195ba..9dd06296 100644 --- a/doc/ApiChanges.txt +++ b/doc/ApiChanges.txt @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. This file summarizes STA API changes for each release. diff --git a/doc/StaApi.txt b/doc/StaApi.txt index 6e161f27..30a16a9c 100644 --- a/doc/StaApi.txt +++ b/doc/StaApi.txt @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. The STA is built in C++ with heavy use of STL (Standard Template Libraries). It also uses the zlib library to read compressed Liberty, diff --git a/etc/TclEncode.tcl b/etc/TclEncode.tcl index 98127018..7690717c 100755 --- a/etc/TclEncode.tcl +++ b/etc/TclEncode.tcl @@ -3,7 +3,7 @@ exec tclsh $0 ${1+"$@"} # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,6 +17,14 @@ exec tclsh $0 ${1+"$@"} # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. # Usage: TclEncode encoded_filename var_name tcl_init_dir tcl_filename... # Encode the contents of tcl_filenames into a C character array diff --git a/graph/Delay.cc b/graph/Delay.cc index 6f2c6103..cfe32cff 100644 --- a/graph/Delay.cc +++ b/graph/Delay.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Machine.hh" #include "StringUtil.hh" diff --git a/graph/DelayFloat.cc b/graph/DelayFloat.cc index 7ec03e9f..a9a90dcf 100644 --- a/graph/DelayFloat.cc +++ b/graph/DelayFloat.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Delay.hh" diff --git a/graph/DelayNormal1.cc b/graph/DelayNormal1.cc index 603c012d..37aa3d13 100644 --- a/graph/DelayNormal1.cc +++ b/graph/DelayNormal1.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Delay.hh" diff --git a/graph/DelayNormal2.cc b/graph/DelayNormal2.cc index bd444e51..9d445559 100644 --- a/graph/DelayNormal2.cc +++ b/graph/DelayNormal2.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Delay.hh" diff --git a/graph/Graph.cc b/graph/Graph.cc index c341434d..1b6f3249 100644 --- a/graph/Graph.cc +++ b/graph/Graph.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Graph.hh" diff --git a/graph/Graph.i b/graph/Graph.i index 4fc6ec77..de37391a 100644 --- a/graph/Graph.i +++ b/graph/Graph.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %module graph diff --git a/graph/Graph.tcl b/graph/Graph.tcl index 128b55b2..bc59cbb8 100644 --- a/graph/Graph.tcl +++ b/graph/Graph.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. # Graph utilities diff --git a/graph/GraphCmp.cc b/graph/GraphCmp.cc index a4ca3dd9..4001fb82 100644 --- a/graph/GraphCmp.cc +++ b/graph/GraphCmp.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "StringUtil.hh" #include "Network.hh" diff --git a/include/sta/ArcDelayCalc.hh b/include/sta/ArcDelayCalc.hh index 159495ea..5f670189 100644 --- a/include/sta/ArcDelayCalc.hh +++ b/include/sta/ArcDelayCalc.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ArrayTable.hh b/include/sta/ArrayTable.hh index 16fdafce..1f11e394 100644 --- a/include/sta/ArrayTable.hh +++ b/include/sta/ArrayTable.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Bdd.hh b/include/sta/Bdd.hh index 0087fde6..e34a7bd7 100644 --- a/include/sta/Bdd.hh +++ b/include/sta/Bdd.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Bfs.hh b/include/sta/Bfs.hh index e3a27aba..4056303a 100644 --- a/include/sta/Bfs.hh +++ b/include/sta/Bfs.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/CircuitSim.hh b/include/sta/CircuitSim.hh index e0bf24d3..201710db 100644 --- a/include/sta/CircuitSim.hh +++ b/include/sta/CircuitSim.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ClkNetwork.hh b/include/sta/ClkNetwork.hh index 0125a2e7..62d89a78 100644 --- a/include/sta/ClkNetwork.hh +++ b/include/sta/ClkNetwork.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Clock.hh b/include/sta/Clock.hh index 841dfed8..e2b70a31 100644 --- a/include/sta/Clock.hh +++ b/include/sta/Clock.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ClockGatingCheck.hh b/include/sta/ClockGatingCheck.hh index 00facd84..e87cdb74 100644 --- a/include/sta/ClockGatingCheck.hh +++ b/include/sta/ClockGatingCheck.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ClockGroups.hh b/include/sta/ClockGroups.hh index 88ce33fd..50944034 100644 --- a/include/sta/ClockGroups.hh +++ b/include/sta/ClockGroups.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ClockInsertion.hh b/include/sta/ClockInsertion.hh index c0eb9dbf..1496deda 100644 --- a/include/sta/ClockInsertion.hh +++ b/include/sta/ClockInsertion.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ClockLatency.hh b/include/sta/ClockLatency.hh index fa4f07d7..9e05680b 100644 --- a/include/sta/ClockLatency.hh +++ b/include/sta/ClockLatency.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ConcreteLibrary.hh b/include/sta/ConcreteLibrary.hh index 7cf72ee6..98a62075 100644 --- a/include/sta/ConcreteLibrary.hh +++ b/include/sta/ConcreteLibrary.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ConcreteNetwork.hh b/include/sta/ConcreteNetwork.hh index 52782b6a..1ca87061 100644 --- a/include/sta/ConcreteNetwork.hh +++ b/include/sta/ConcreteNetwork.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Corner.hh b/include/sta/Corner.hh index 9ef972ab..015b77bc 100644 --- a/include/sta/Corner.hh +++ b/include/sta/Corner.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/CycleAccting.hh b/include/sta/CycleAccting.hh index c2893f14..2bd06ff3 100644 --- a/include/sta/CycleAccting.hh +++ b/include/sta/CycleAccting.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/DataCheck.hh b/include/sta/DataCheck.hh index 62924e80..589d5365 100644 --- a/include/sta/DataCheck.hh +++ b/include/sta/DataCheck.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/DcalcAnalysisPt.hh b/include/sta/DcalcAnalysisPt.hh index 41b25878..76af5fe8 100644 --- a/include/sta/DcalcAnalysisPt.hh +++ b/include/sta/DcalcAnalysisPt.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Debug.hh b/include/sta/Debug.hh index 66bab1f9..f18414e5 100644 --- a/include/sta/Debug.hh +++ b/include/sta/Debug.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Delay.hh b/include/sta/Delay.hh index 130f7d2b..32491141 100644 --- a/include/sta/Delay.hh +++ b/include/sta/Delay.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/DelayCalc.hh b/include/sta/DelayCalc.hh index 07d77d4d..ff1c9629 100644 --- a/include/sta/DelayCalc.hh +++ b/include/sta/DelayCalc.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/DelayFloat.hh b/include/sta/DelayFloat.hh index 800c7e03..88aeca96 100644 --- a/include/sta/DelayFloat.hh +++ b/include/sta/DelayFloat.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/DelayNormal1.hh b/include/sta/DelayNormal1.hh index 103fe881..e722bc4e 100644 --- a/include/sta/DelayNormal1.hh +++ b/include/sta/DelayNormal1.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/DelayNormal2.hh b/include/sta/DelayNormal2.hh index 5f77eacd..10e7a965 100644 --- a/include/sta/DelayNormal2.hh +++ b/include/sta/DelayNormal2.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/DeratingFactors.hh b/include/sta/DeratingFactors.hh index c5a9fca4..aa4808a0 100644 --- a/include/sta/DeratingFactors.hh +++ b/include/sta/DeratingFactors.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/DisabledPorts.hh b/include/sta/DisabledPorts.hh index 23a50198..6168247c 100644 --- a/include/sta/DisabledPorts.hh +++ b/include/sta/DisabledPorts.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/EnumNameMap.hh b/include/sta/EnumNameMap.hh index 230cf8d0..0bd1464f 100644 --- a/include/sta/EnumNameMap.hh +++ b/include/sta/EnumNameMap.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/EquivCells.hh b/include/sta/EquivCells.hh index d695b79b..af6c1766 100644 --- a/include/sta/EquivCells.hh +++ b/include/sta/EquivCells.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Error.hh b/include/sta/Error.hh index 11acb441..e700a58e 100644 --- a/include/sta/Error.hh +++ b/include/sta/Error.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ExceptionPath.hh b/include/sta/ExceptionPath.hh index c50b5c82..eb0ea5c0 100644 --- a/include/sta/ExceptionPath.hh +++ b/include/sta/ExceptionPath.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/FuncExpr.hh b/include/sta/FuncExpr.hh index 0d4f725d..73a3aeb8 100644 --- a/include/sta/FuncExpr.hh +++ b/include/sta/FuncExpr.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Fuzzy.hh b/include/sta/Fuzzy.hh index b3742ad5..ac4280f0 100644 --- a/include/sta/Fuzzy.hh +++ b/include/sta/Fuzzy.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Graph.hh b/include/sta/Graph.hh index 812fdbb7..3197a378 100644 --- a/include/sta/Graph.hh +++ b/include/sta/Graph.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/GraphClass.hh b/include/sta/GraphClass.hh index 0cde7b59..57fb9424 100644 --- a/include/sta/GraphClass.hh +++ b/include/sta/GraphClass.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/GraphCmp.hh b/include/sta/GraphCmp.hh index 3ee38807..1cafb081 100644 --- a/include/sta/GraphCmp.hh +++ b/include/sta/GraphCmp.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/GraphDelayCalc.hh b/include/sta/GraphDelayCalc.hh index e34a2f55..5488b09b 100644 --- a/include/sta/GraphDelayCalc.hh +++ b/include/sta/GraphDelayCalc.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Hash.hh b/include/sta/Hash.hh index 67036fc0..de5fde5d 100644 --- a/include/sta/Hash.hh +++ b/include/sta/Hash.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/HpinDrvrLoad.hh b/include/sta/HpinDrvrLoad.hh index 74d897d0..dba934cc 100644 --- a/include/sta/HpinDrvrLoad.hh +++ b/include/sta/HpinDrvrLoad.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/InputDrive.hh b/include/sta/InputDrive.hh index 3d6ae532..d353f690 100644 --- a/include/sta/InputDrive.hh +++ b/include/sta/InputDrive.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/InternalPower.hh b/include/sta/InternalPower.hh index 79b4115d..c4411ad6 100644 --- a/include/sta/InternalPower.hh +++ b/include/sta/InternalPower.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Iterator.hh b/include/sta/Iterator.hh index 9ddeac6a..6c1ea621 100644 --- a/include/sta/Iterator.hh +++ b/include/sta/Iterator.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/LeakagePower.hh b/include/sta/LeakagePower.hh index b255839b..6670a356 100644 --- a/include/sta/LeakagePower.hh +++ b/include/sta/LeakagePower.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Liberty.hh b/include/sta/Liberty.hh index b0550f8b..84ade180 100644 --- a/include/sta/Liberty.hh +++ b/include/sta/Liberty.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/LibertyClass.hh b/include/sta/LibertyClass.hh index 295fbb0c..51ecf4a9 100644 --- a/include/sta/LibertyClass.hh +++ b/include/sta/LibertyClass.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/LibertyWriter.hh b/include/sta/LibertyWriter.hh index c9fa3bfc..1b142af5 100644 --- a/include/sta/LibertyWriter.hh +++ b/include/sta/LibertyWriter.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/LinearModel.hh b/include/sta/LinearModel.hh index de085b2c..ecfd38fc 100644 --- a/include/sta/LinearModel.hh +++ b/include/sta/LinearModel.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Machine.hh b/include/sta/Machine.hh index 183fe33f..c66b3ab9 100644 --- a/include/sta/Machine.hh +++ b/include/sta/Machine.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/MakeConcreteNetwork.hh b/include/sta/MakeConcreteNetwork.hh index f8ef2414..3247a6f2 100644 --- a/include/sta/MakeConcreteNetwork.hh +++ b/include/sta/MakeConcreteNetwork.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/MakeConcreteParasitics.hh b/include/sta/MakeConcreteParasitics.hh index 343bc147..9bba835f 100644 --- a/include/sta/MakeConcreteParasitics.hh +++ b/include/sta/MakeConcreteParasitics.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Map.hh b/include/sta/Map.hh index 5622579c..b472d0ee 100644 --- a/include/sta/Map.hh +++ b/include/sta/Map.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/MinMax.hh b/include/sta/MinMax.hh index e2c67c44..4ff72999 100644 --- a/include/sta/MinMax.hh +++ b/include/sta/MinMax.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/MinMaxValues.hh b/include/sta/MinMaxValues.hh index 13fec165..60c06b78 100644 --- a/include/sta/MinMaxValues.hh +++ b/include/sta/MinMaxValues.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Mutex.hh b/include/sta/Mutex.hh index 0e3f5a47..9a96a6ad 100644 --- a/include/sta/Mutex.hh +++ b/include/sta/Mutex.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Network.hh b/include/sta/Network.hh index 44cd2dd1..2a55b93e 100644 --- a/include/sta/Network.hh +++ b/include/sta/Network.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/NetworkClass.hh b/include/sta/NetworkClass.hh index bcda1ba5..3e4653a8 100644 --- a/include/sta/NetworkClass.hh +++ b/include/sta/NetworkClass.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/NetworkCmp.hh b/include/sta/NetworkCmp.hh index ef234de1..c343ccab 100644 --- a/include/sta/NetworkCmp.hh +++ b/include/sta/NetworkCmp.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ObjectId.hh b/include/sta/ObjectId.hh index 3694c598..6f3b7703 100644 --- a/include/sta/ObjectId.hh +++ b/include/sta/ObjectId.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ObjectTable.hh b/include/sta/ObjectTable.hh index eae030f9..50b8533e 100644 --- a/include/sta/ObjectTable.hh +++ b/include/sta/ObjectTable.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Parasitics.hh b/include/sta/Parasitics.hh index a5a34c11..d3b46241 100644 --- a/include/sta/Parasitics.hh +++ b/include/sta/Parasitics.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ParasiticsClass.hh b/include/sta/ParasiticsClass.hh index b898effe..2d35781d 100644 --- a/include/sta/ParasiticsClass.hh +++ b/include/sta/ParasiticsClass.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ParseBus.hh b/include/sta/ParseBus.hh index ebefd23a..64e75304 100644 --- a/include/sta/ParseBus.hh +++ b/include/sta/ParseBus.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Path.hh b/include/sta/Path.hh index 78bdfb1e..1be09c28 100644 --- a/include/sta/Path.hh +++ b/include/sta/Path.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/PathAnalysisPt.hh b/include/sta/PathAnalysisPt.hh index 6ed6c1b4..bd829b61 100644 --- a/include/sta/PathAnalysisPt.hh +++ b/include/sta/PathAnalysisPt.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/PathEnd.hh b/include/sta/PathEnd.hh index 272f87e4..f935cf09 100644 --- a/include/sta/PathEnd.hh +++ b/include/sta/PathEnd.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/PathExpanded.hh b/include/sta/PathExpanded.hh index d943e7c9..3c891bd7 100644 --- a/include/sta/PathExpanded.hh +++ b/include/sta/PathExpanded.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/PathGroup.hh b/include/sta/PathGroup.hh index 586e5525..f60bfea7 100644 --- a/include/sta/PathGroup.hh +++ b/include/sta/PathGroup.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/PathRef.hh b/include/sta/PathRef.hh index 2d4a55a9..cec7b89a 100644 --- a/include/sta/PathRef.hh +++ b/include/sta/PathRef.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/PathVertex.hh b/include/sta/PathVertex.hh index dd0f6f0c..d8726d24 100644 --- a/include/sta/PathVertex.hh +++ b/include/sta/PathVertex.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/PathVertexRep.hh b/include/sta/PathVertexRep.hh index a7dca24e..b31c4ce6 100644 --- a/include/sta/PathVertexRep.hh +++ b/include/sta/PathVertexRep.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/PatternMatch.hh b/include/sta/PatternMatch.hh index e266be85..fd3aaba0 100644 --- a/include/sta/PatternMatch.hh +++ b/include/sta/PatternMatch.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/PinPair.hh b/include/sta/PinPair.hh index 0a8c38d0..7d3f2711 100644 --- a/include/sta/PinPair.hh +++ b/include/sta/PinPair.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/PortDelay.hh b/include/sta/PortDelay.hh index 7bb486e6..1457654f 100644 --- a/include/sta/PortDelay.hh +++ b/include/sta/PortDelay.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/PortDirection.hh b/include/sta/PortDirection.hh index dd2a81cb..186914a9 100644 --- a/include/sta/PortDirection.hh +++ b/include/sta/PortDirection.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/PortExtCap.hh b/include/sta/PortExtCap.hh index ce221edb..2bad21c9 100644 --- a/include/sta/PortExtCap.hh +++ b/include/sta/PortExtCap.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/PowerClass.hh b/include/sta/PowerClass.hh index 9eb7c63e..5b5fbf5f 100644 --- a/include/sta/PowerClass.hh +++ b/include/sta/PowerClass.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Property.hh b/include/sta/Property.hh index c8bf3ab8..c795ed80 100644 --- a/include/sta/Property.hh +++ b/include/sta/Property.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Report.hh b/include/sta/Report.hh index 3cb5766e..eb71e39b 100644 --- a/include/sta/Report.hh +++ b/include/sta/Report.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ReportStd.hh b/include/sta/ReportStd.hh index eb0ef89f..a580b628 100644 --- a/include/sta/ReportStd.hh +++ b/include/sta/ReportStd.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/ReportTcl.hh b/include/sta/ReportTcl.hh index b878549e..37ba416d 100644 --- a/include/sta/ReportTcl.hh +++ b/include/sta/ReportTcl.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/RiseFallMinMax.hh b/include/sta/RiseFallMinMax.hh index 11ba437e..1aacbdd4 100644 --- a/include/sta/RiseFallMinMax.hh +++ b/include/sta/RiseFallMinMax.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/RiseFallValues.hh b/include/sta/RiseFallValues.hh index 827bad22..e3ba0ca7 100644 --- a/include/sta/RiseFallValues.hh +++ b/include/sta/RiseFallValues.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Sdc.hh b/include/sta/Sdc.hh index 75403ca0..7cd7540d 100644 --- a/include/sta/Sdc.hh +++ b/include/sta/Sdc.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/SdcClass.hh b/include/sta/SdcClass.hh index 68f1ef14..f6d7c3f7 100644 --- a/include/sta/SdcClass.hh +++ b/include/sta/SdcClass.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/SdcCmdComment.hh b/include/sta/SdcCmdComment.hh index e344c840..0ad099f1 100644 --- a/include/sta/SdcCmdComment.hh +++ b/include/sta/SdcCmdComment.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/SdcNetwork.hh b/include/sta/SdcNetwork.hh index b30cac0a..f14635f4 100644 --- a/include/sta/SdcNetwork.hh +++ b/include/sta/SdcNetwork.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Search.hh b/include/sta/Search.hh index 8dce6775..74c569f2 100644 --- a/include/sta/Search.hh +++ b/include/sta/Search.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/SearchClass.hh b/include/sta/SearchClass.hh index 88096f0f..fb207de5 100644 --- a/include/sta/SearchClass.hh +++ b/include/sta/SearchClass.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/SearchPred.hh b/include/sta/SearchPred.hh index 18bac219..618dd2ea 100644 --- a/include/sta/SearchPred.hh +++ b/include/sta/SearchPred.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Sequential.hh b/include/sta/Sequential.hh index 7d431f0e..69a89af0 100644 --- a/include/sta/Sequential.hh +++ b/include/sta/Sequential.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Set.hh b/include/sta/Set.hh index f3c632cd..7e08c3b1 100644 --- a/include/sta/Set.hh +++ b/include/sta/Set.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Sta.hh b/include/sta/Sta.hh index 4edd0623..ba6f5686 100644 --- a/include/sta/Sta.hh +++ b/include/sta/Sta.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/StaMain.hh b/include/sta/StaMain.hh index f576aa0a..92a9bbe4 100644 --- a/include/sta/StaMain.hh +++ b/include/sta/StaMain.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/StaState.hh b/include/sta/StaState.hh index 9fc24a5d..111bced3 100644 --- a/include/sta/StaState.hh +++ b/include/sta/StaState.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Stats.hh b/include/sta/Stats.hh index 36cf29b8..7f10effe 100644 --- a/include/sta/Stats.hh +++ b/include/sta/Stats.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/StringSeq.hh b/include/sta/StringSeq.hh index 6188a576..453af7ef 100644 --- a/include/sta/StringSeq.hh +++ b/include/sta/StringSeq.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/StringSet.hh b/include/sta/StringSet.hh index 6670b3b1..7dc66736 100644 --- a/include/sta/StringSet.hh +++ b/include/sta/StringSet.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once #include diff --git a/include/sta/StringUtil.hh b/include/sta/StringUtil.hh index 3b2f6cee..36f1de94 100644 --- a/include/sta/StringUtil.hh +++ b/include/sta/StringUtil.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/TableModel.hh b/include/sta/TableModel.hh index b52a4805..f18c163c 100644 --- a/include/sta/TableModel.hh +++ b/include/sta/TableModel.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/TclTypeHelpers.hh b/include/sta/TclTypeHelpers.hh index 25a6490e..506d3a0c 100644 --- a/include/sta/TclTypeHelpers.hh +++ b/include/sta/TclTypeHelpers.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ArcDelayCalc.hh" #include "StringSet.hh" diff --git a/include/sta/TimingArc.hh b/include/sta/TimingArc.hh index bc593fa0..992369cc 100644 --- a/include/sta/TimingArc.hh +++ b/include/sta/TimingArc.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/TimingModel.hh b/include/sta/TimingModel.hh index 9819b7b2..c2f55c7a 100644 --- a/include/sta/TimingModel.hh +++ b/include/sta/TimingModel.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/TimingRole.hh b/include/sta/TimingRole.hh index 9dc6951b..d3a93015 100644 --- a/include/sta/TimingRole.hh +++ b/include/sta/TimingRole.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/TokenParser.hh b/include/sta/TokenParser.hh index 23888477..f5f1bb20 100644 --- a/include/sta/TokenParser.hh +++ b/include/sta/TokenParser.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Transition.hh b/include/sta/Transition.hh index 42baede9..fca92270 100644 --- a/include/sta/Transition.hh +++ b/include/sta/Transition.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Units.hh b/include/sta/Units.hh index 541a8162..675d7e65 100644 --- a/include/sta/Units.hh +++ b/include/sta/Units.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/UnorderedMap.hh b/include/sta/UnorderedMap.hh index 3e06c879..0c292d8c 100644 --- a/include/sta/UnorderedMap.hh +++ b/include/sta/UnorderedMap.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/UnorderedSet.hh b/include/sta/UnorderedSet.hh index ecb1525e..2d859815 100644 --- a/include/sta/UnorderedSet.hh +++ b/include/sta/UnorderedSet.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Vector.hh b/include/sta/Vector.hh index 3d69e147..001b3713 100644 --- a/include/sta/Vector.hh +++ b/include/sta/Vector.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/VerilogNamespace.hh b/include/sta/VerilogNamespace.hh index a0b2b79e..d793ef6a 100644 --- a/include/sta/VerilogNamespace.hh +++ b/include/sta/VerilogNamespace.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/VerilogWriter.hh b/include/sta/VerilogWriter.hh index 375f76b3..ec44dd30 100644 --- a/include/sta/VerilogWriter.hh +++ b/include/sta/VerilogWriter.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/VertexId.hh b/include/sta/VertexId.hh index 3dffcfde..b56b8b7c 100644 --- a/include/sta/VertexId.hh +++ b/include/sta/VertexId.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/VertexVisitor.hh b/include/sta/VertexVisitor.hh index dfa6ef06..b371ef8e 100644 --- a/include/sta/VertexVisitor.hh +++ b/include/sta/VertexVisitor.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/VisitPathEnds.hh b/include/sta/VisitPathEnds.hh index b9eee013..c91b117d 100644 --- a/include/sta/VisitPathEnds.hh +++ b/include/sta/VisitPathEnds.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Wireload.hh b/include/sta/Wireload.hh index eb7d8c79..d0ea001c 100644 --- a/include/sta/Wireload.hh +++ b/include/sta/Wireload.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/WriteSdc.hh b/include/sta/WriteSdc.hh index 198c15c2..3aa51768 100644 --- a/include/sta/WriteSdc.hh +++ b/include/sta/WriteSdc.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/include/sta/Zlib.hh b/include/sta/Zlib.hh index 0dd14157..8cc50ebe 100644 --- a/include/sta/Zlib.hh +++ b/include/sta/Zlib.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/liberty/EquivCells.cc b/liberty/EquivCells.cc index 5e43cb98..e7c2c0fd 100644 --- a/liberty/EquivCells.cc +++ b/liberty/EquivCells.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "EquivCells.hh" diff --git a/liberty/FuncExpr.cc b/liberty/FuncExpr.cc index 1de36ac3..55dd8821 100644 --- a/liberty/FuncExpr.cc +++ b/liberty/FuncExpr.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "FuncExpr.hh" diff --git a/liberty/InternalPower.cc b/liberty/InternalPower.cc index 40520cc2..5c6c29f9 100644 --- a/liberty/InternalPower.cc +++ b/liberty/InternalPower.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "InternalPower.hh" diff --git a/liberty/LeakagePower.cc b/liberty/LeakagePower.cc index 30d95166..5b53604b 100644 --- a/liberty/LeakagePower.cc +++ b/liberty/LeakagePower.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "LeakagePower.hh" diff --git a/liberty/Liberty.cc b/liberty/Liberty.cc index a1bf89bf..e4893739 100644 --- a/liberty/Liberty.cc +++ b/liberty/Liberty.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Liberty.hh" diff --git a/liberty/Liberty.i b/liberty/Liberty.i index 5103c3cd..43ba05e2 100644 --- a/liberty/Liberty.i +++ b/liberty/Liberty.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %module liberty diff --git a/liberty/Liberty.tcl b/liberty/Liberty.tcl index 6f48dcb1..4297683b 100644 --- a/liberty/Liberty.tcl +++ b/liberty/Liberty.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. # Liberty commands. diff --git a/liberty/LibertyBuilder.cc b/liberty/LibertyBuilder.cc index 9b52db9f..1bbca275 100644 --- a/liberty/LibertyBuilder.cc +++ b/liberty/LibertyBuilder.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "LibertyBuilder.hh" diff --git a/liberty/LibertyBuilder.hh b/liberty/LibertyBuilder.hh index 7aed7212..47c6d6e9 100644 --- a/liberty/LibertyBuilder.hh +++ b/liberty/LibertyBuilder.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/liberty/LibertyExpr.cc b/liberty/LibertyExpr.cc index 3252212f..ef8f31a5 100644 --- a/liberty/LibertyExpr.cc +++ b/liberty/LibertyExpr.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "FuncExpr.hh" diff --git a/liberty/LibertyExpr.hh b/liberty/LibertyExpr.hh index 0bd84c7c..3e15ac35 100644 --- a/liberty/LibertyExpr.hh +++ b/liberty/LibertyExpr.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/liberty/LibertyExprLex.ll b/liberty/LibertyExprLex.ll index 3784e134..34a777c1 100644 --- a/liberty/LibertyExprLex.ll +++ b/liberty/LibertyExprLex.ll @@ -1,7 +1,7 @@ %{ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,6 +15,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. // Liberty function expression lexical analyzer diff --git a/liberty/LibertyExprParse.yy b/liberty/LibertyExprParse.yy index c2b58222..4e974121 100644 --- a/liberty/LibertyExprParse.yy +++ b/liberty/LibertyExprParse.yy @@ -1,7 +1,7 @@ %{ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,6 +15,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. // Liberty function expression parser. diff --git a/liberty/LibertyExprPvt.hh b/liberty/LibertyExprPvt.hh index e9a05bd3..1eea3914 100644 --- a/liberty/LibertyExprPvt.hh +++ b/liberty/LibertyExprPvt.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/liberty/LibertyExt.cc b/liberty/LibertyExt.cc index dc928bff..aa2850e8 100644 --- a/liberty/LibertyExt.cc +++ b/liberty/LibertyExt.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. // This file illustratates how to customize the liberty file reader to // read attributes that are not used by the STA. In this example: diff --git a/liberty/LibertyLex.ll b/liberty/LibertyLex.ll index cfc24677..9acd5c76 100644 --- a/liberty/LibertyLex.ll +++ b/liberty/LibertyLex.ll @@ -1,6 +1,6 @@ %{ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -14,6 +14,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include #include diff --git a/liberty/LibertyParse.yy b/liberty/LibertyParse.yy index 1424fa29..aba2f65e 100644 --- a/liberty/LibertyParse.yy +++ b/liberty/LibertyParse.yy @@ -1,6 +1,6 @@ %{ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -14,6 +14,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include #include diff --git a/liberty/LibertyParser.cc b/liberty/LibertyParser.cc index 45a79802..14ec9c2d 100644 --- a/liberty/LibertyParser.cc +++ b/liberty/LibertyParser.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "LibertyParser.hh" diff --git a/liberty/LibertyParser.hh b/liberty/LibertyParser.hh index bd3a8804..8d48c188 100644 --- a/liberty/LibertyParser.hh +++ b/liberty/LibertyParser.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/liberty/LibertyReader.cc b/liberty/LibertyReader.cc index 5c3d4560..e05e08a7 100644 --- a/liberty/LibertyReader.cc +++ b/liberty/LibertyReader.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "LibertyReader.hh" diff --git a/liberty/LibertyReader.hh b/liberty/LibertyReader.hh index f83340bc..bc1a47a7 100644 --- a/liberty/LibertyReader.hh +++ b/liberty/LibertyReader.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/liberty/LibertyReaderPvt.hh b/liberty/LibertyReaderPvt.hh index 17075187..69db54c7 100644 --- a/liberty/LibertyReaderPvt.hh +++ b/liberty/LibertyReaderPvt.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/liberty/LibertyWriter.cc b/liberty/LibertyWriter.cc index 5360ef0f..684c314c 100644 --- a/liberty/LibertyWriter.cc +++ b/liberty/LibertyWriter.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "LibertyWriter.hh" diff --git a/liberty/LinearModel.cc b/liberty/LinearModel.cc index 6abebfcf..65e94f62 100644 --- a/liberty/LinearModel.cc +++ b/liberty/LinearModel.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "LinearModel.hh" diff --git a/liberty/Sequential.cc b/liberty/Sequential.cc index 970798de..559c6158 100644 --- a/liberty/Sequential.cc +++ b/liberty/Sequential.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Sequential.hh" diff --git a/liberty/TableModel.cc b/liberty/TableModel.cc index fe430ef0..09dc8222 100644 --- a/liberty/TableModel.cc +++ b/liberty/TableModel.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "TableModel.hh" diff --git a/liberty/TimingArc.cc b/liberty/TimingArc.cc index 89219382..e1b1497d 100644 --- a/liberty/TimingArc.cc +++ b/liberty/TimingArc.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "TimingModel.hh" diff --git a/liberty/TimingModel.cc b/liberty/TimingModel.cc index 9436b47b..fe955005 100644 --- a/liberty/TimingModel.cc +++ b/liberty/TimingModel.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "TimingModel.hh" diff --git a/liberty/TimingRole.cc b/liberty/TimingRole.cc index deb4f762..6d699fdb 100644 --- a/liberty/TimingRole.cc +++ b/liberty/TimingRole.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "TimingRole.hh" diff --git a/liberty/Units.cc b/liberty/Units.cc index 4874c19b..70e4e8d3 100644 --- a/liberty/Units.cc +++ b/liberty/Units.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Units.hh" diff --git a/liberty/Wireload.cc b/liberty/Wireload.cc index a501af03..9c8ea3e5 100644 --- a/liberty/Wireload.cc +++ b/liberty/Wireload.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Wireload.hh" diff --git a/network/ConcreteLibrary.cc b/network/ConcreteLibrary.cc index 9cfca944..7c6ebb6a 100644 --- a/network/ConcreteLibrary.cc +++ b/network/ConcreteLibrary.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ConcreteLibrary.hh" diff --git a/network/ConcreteNetwork.cc b/network/ConcreteNetwork.cc index ea184fb1..8123f88e 100644 --- a/network/ConcreteNetwork.cc +++ b/network/ConcreteNetwork.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ConcreteNetwork.hh" diff --git a/network/HpinDrvrLoad.cc b/network/HpinDrvrLoad.cc index 5a9126d9..94477739 100644 --- a/network/HpinDrvrLoad.cc +++ b/network/HpinDrvrLoad.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "HpinDrvrLoad.hh" diff --git a/network/Link.tcl b/network/Link.tcl index a278c710..4dd5bae4 100644 --- a/network/Link.tcl +++ b/network/Link.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. # Network commands. diff --git a/network/Network.cc b/network/Network.cc index da2f3af1..40d70be6 100644 --- a/network/Network.cc +++ b/network/Network.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Network.hh" diff --git a/network/Network.i b/network/Network.i index fcdb0034..e0f59b6b 100644 --- a/network/Network.i +++ b/network/Network.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %module network diff --git a/network/Network.tcl b/network/Network.tcl index 7fc7c1c3..d2d9108a 100644 --- a/network/Network.tcl +++ b/network/Network.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. # Network reporting commands. diff --git a/network/NetworkCmp.cc b/network/NetworkCmp.cc index 16378cbf..e00df131 100644 --- a/network/NetworkCmp.cc +++ b/network/NetworkCmp.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "NetworkCmp.hh" diff --git a/network/NetworkEdit.i b/network/NetworkEdit.i index 70da0dd1..c0fa6527 100644 --- a/network/NetworkEdit.i +++ b/network/NetworkEdit.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %module NetworkEdit diff --git a/network/NetworkEdit.tcl b/network/NetworkEdit.tcl index 38a11555..0f70b461 100644 --- a/network/NetworkEdit.tcl +++ b/network/NetworkEdit.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. # Network editing commands. diff --git a/network/ParseBus.cc b/network/ParseBus.cc index 0df07559..18ca03f3 100644 --- a/network/ParseBus.cc +++ b/network/ParseBus.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ParseBus.hh" diff --git a/network/PortDirection.cc b/network/PortDirection.cc index 7d82e793..693f6908 100644 --- a/network/PortDirection.cc +++ b/network/PortDirection.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PortDirection.hh" diff --git a/network/SdcNetwork.cc b/network/SdcNetwork.cc index 323536a8..207decd7 100644 --- a/network/SdcNetwork.cc +++ b/network/SdcNetwork.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "SdcNetwork.hh" diff --git a/network/VerilogNamespace.cc b/network/VerilogNamespace.cc index 4e264b00..a20cdd23 100644 --- a/network/VerilogNamespace.cc +++ b/network/VerilogNamespace.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "VerilogNamespace.hh" diff --git a/parasitics/ConcreteParasitics.cc b/parasitics/ConcreteParasitics.cc index 5a78c154..0d71d4ec 100644 --- a/parasitics/ConcreteParasitics.cc +++ b/parasitics/ConcreteParasitics.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ConcreteParasitics.hh" diff --git a/parasitics/ConcreteParasitics.hh b/parasitics/ConcreteParasitics.hh index f9259fd2..0c0b91af 100644 --- a/parasitics/ConcreteParasitics.hh +++ b/parasitics/ConcreteParasitics.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/parasitics/ConcreteParasiticsPvt.hh b/parasitics/ConcreteParasiticsPvt.hh index e098b2bb..72c44a9c 100644 --- a/parasitics/ConcreteParasiticsPvt.hh +++ b/parasitics/ConcreteParasiticsPvt.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/parasitics/EstimateParasitics.cc b/parasitics/EstimateParasitics.cc index eeff7430..5f656cfb 100644 --- a/parasitics/EstimateParasitics.cc +++ b/parasitics/EstimateParasitics.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "EstimateParasitics.hh" diff --git a/parasitics/EstimateParasitics.hh b/parasitics/EstimateParasitics.hh index 48cc6aee..689183ea 100644 --- a/parasitics/EstimateParasitics.hh +++ b/parasitics/EstimateParasitics.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/parasitics/Parasitics.cc b/parasitics/Parasitics.cc index a82a96e7..400e9239 100644 --- a/parasitics/Parasitics.cc +++ b/parasitics/Parasitics.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Parasitics.hh" diff --git a/parasitics/Parasitics.i b/parasitics/Parasitics.i index 104ed951..2854d38e 100644 --- a/parasitics/Parasitics.i +++ b/parasitics/Parasitics.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %module parasitics diff --git a/parasitics/Parasitics.tcl b/parasitics/Parasitics.tcl index a4911212..f0c2aa5f 100644 --- a/parasitics/Parasitics.tcl +++ b/parasitics/Parasitics.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. namespace eval sta { diff --git a/parasitics/ReduceParasitics.cc b/parasitics/ReduceParasitics.cc index a4190b3f..d1ac79fb 100644 --- a/parasitics/ReduceParasitics.cc +++ b/parasitics/ReduceParasitics.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ReduceParasitics.hh" diff --git a/parasitics/ReduceParasitics.hh b/parasitics/ReduceParasitics.hh index ec7f8d3d..84a51e64 100644 --- a/parasitics/ReduceParasitics.hh +++ b/parasitics/ReduceParasitics.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/parasitics/ReportParasiticAnnotation.cc b/parasitics/ReportParasiticAnnotation.cc index 41eb3081..d27ac0f4 100644 --- a/parasitics/ReportParasiticAnnotation.cc +++ b/parasitics/ReportParasiticAnnotation.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ReportParasiticAnnotation.hh" diff --git a/parasitics/ReportParasiticAnnotation.hh b/parasitics/ReportParasiticAnnotation.hh index 1607a9bb..eb446c05 100644 --- a/parasitics/ReportParasiticAnnotation.hh +++ b/parasitics/ReportParasiticAnnotation.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/parasitics/SpefLex.ll b/parasitics/SpefLex.ll index 2fd939c1..aeb2972d 100644 --- a/parasitics/SpefLex.ll +++ b/parasitics/SpefLex.ll @@ -1,7 +1,7 @@ %{ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,6 +15,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include #include diff --git a/parasitics/SpefNamespace.cc b/parasitics/SpefNamespace.cc index b58eb7e8..b9178a1f 100644 --- a/parasitics/SpefNamespace.cc +++ b/parasitics/SpefNamespace.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "SpefNamespace.hh" diff --git a/parasitics/SpefNamespace.hh b/parasitics/SpefNamespace.hh index 77bff0c9..15f47ded 100644 --- a/parasitics/SpefNamespace.hh +++ b/parasitics/SpefNamespace.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/parasitics/SpefParse.yy b/parasitics/SpefParse.yy index c61a8a7e..ca1e2101 100755 --- a/parasitics/SpefParse.yy +++ b/parasitics/SpefParse.yy @@ -1,7 +1,7 @@ %{ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,6 +15,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include diff --git a/parasitics/SpefReader.cc b/parasitics/SpefReader.cc index 7b331f99..f115fbf2 100644 --- a/parasitics/SpefReader.cc +++ b/parasitics/SpefReader.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "SpefReader.hh" diff --git a/parasitics/SpefReader.hh b/parasitics/SpefReader.hh index 105f5dd1..3e391348 100644 --- a/parasitics/SpefReader.hh +++ b/parasitics/SpefReader.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/parasitics/SpefReaderPvt.hh b/parasitics/SpefReaderPvt.hh index 44fc7af2..7afc2a98 100644 --- a/parasitics/SpefReaderPvt.hh +++ b/parasitics/SpefReaderPvt.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/power/Power.cc b/power/Power.cc index fe081788..39abd14c 100644 --- a/power/Power.cc +++ b/power/Power.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Power.hh" diff --git a/power/Power.hh b/power/Power.hh index af93792b..23d48d36 100644 --- a/power/Power.hh +++ b/power/Power.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/power/Power.i b/power/Power.i index e9c0ea42..72035c2a 100644 --- a/power/Power.i +++ b/power/Power.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %module power diff --git a/power/Power.tcl b/power/Power.tcl index 1c7e02fe..2a1e47c6 100644 --- a/power/Power.tcl +++ b/power/Power.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. ################################################################ # diff --git a/power/SaifLex.ll b/power/SaifLex.ll index b37061b6..ea2c484f 100644 --- a/power/SaifLex.ll +++ b/power/SaifLex.ll @@ -1,7 +1,7 @@ %{ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,6 +15,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include diff --git a/power/SaifParse.yy b/power/SaifParse.yy index a4e73c9a..b0024f89 100644 --- a/power/SaifParse.yy +++ b/power/SaifParse.yy @@ -1,7 +1,7 @@ %{ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,6 +15,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include diff --git a/power/SaifReader.cc b/power/SaifReader.cc index 0c0925f8..2126545a 100644 --- a/power/SaifReader.cc +++ b/power/SaifReader.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "power/SaifReader.hh" diff --git a/power/SaifReader.hh b/power/SaifReader.hh index d1dd9320..7fa8b988 100644 --- a/power/SaifReader.hh +++ b/power/SaifReader.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/power/SaifReaderPvt.hh b/power/SaifReaderPvt.hh index c744cb08..bf498329 100644 --- a/power/SaifReaderPvt.hh +++ b/power/SaifReaderPvt.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/power/VcdParse.cc b/power/VcdParse.cc index 6fb8c330..7857eff5 100644 --- a/power/VcdParse.cc +++ b/power/VcdParse.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "VcdParse.hh" diff --git a/power/VcdParse.hh b/power/VcdParse.hh index 0f6abafc..bd42be60 100644 --- a/power/VcdParse.hh +++ b/power/VcdParse.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/power/VcdReader.cc b/power/VcdReader.cc index b060f932..6655686b 100644 --- a/power/VcdReader.cc +++ b/power/VcdReader.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "VcdReader.hh" diff --git a/power/VcdReader.hh b/power/VcdReader.hh index c7a2a662..a5a67ef3 100644 --- a/power/VcdReader.hh +++ b/power/VcdReader.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/sdc/Clock.cc b/sdc/Clock.cc index f6c322a3..6ca85055 100644 --- a/sdc/Clock.cc +++ b/sdc/Clock.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Clock.hh" diff --git a/sdc/ClockGatingCheck.cc b/sdc/ClockGatingCheck.cc index 9f003bc2..1e890baf 100644 --- a/sdc/ClockGatingCheck.cc +++ b/sdc/ClockGatingCheck.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ClockGatingCheck.hh" diff --git a/sdc/ClockGroups.cc b/sdc/ClockGroups.cc index 97c6a9ff..850611e5 100644 --- a/sdc/ClockGroups.cc +++ b/sdc/ClockGroups.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ClockGroups.hh" diff --git a/sdc/ClockInsertion.cc b/sdc/ClockInsertion.cc index 78e57224..4c245518 100644 --- a/sdc/ClockInsertion.cc +++ b/sdc/ClockInsertion.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ClockInsertion.hh" diff --git a/sdc/ClockLatency.cc b/sdc/ClockLatency.cc index a2e8bbe8..22fe82ba 100644 --- a/sdc/ClockLatency.cc +++ b/sdc/ClockLatency.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ClockLatency.hh" diff --git a/sdc/CycleAccting.cc b/sdc/CycleAccting.cc index 9de3e939..b25e500f 100644 --- a/sdc/CycleAccting.cc +++ b/sdc/CycleAccting.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "CycleAccting.hh" diff --git a/sdc/DataCheck.cc b/sdc/DataCheck.cc index 6e1ca132..7a2065bb 100644 --- a/sdc/DataCheck.cc +++ b/sdc/DataCheck.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "DataCheck.hh" diff --git a/sdc/DeratingFactors.cc b/sdc/DeratingFactors.cc index a7499f75..34609412 100644 --- a/sdc/DeratingFactors.cc +++ b/sdc/DeratingFactors.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "DeratingFactors.hh" diff --git a/sdc/DisabledPorts.cc b/sdc/DisabledPorts.cc index c2e50d0b..20f2cc36 100644 --- a/sdc/DisabledPorts.cc +++ b/sdc/DisabledPorts.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "DisabledPorts.hh" diff --git a/sdc/ExceptionPath.cc b/sdc/ExceptionPath.cc index bfe31f2b..fa5f6587 100644 --- a/sdc/ExceptionPath.cc +++ b/sdc/ExceptionPath.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ExceptionPath.hh" diff --git a/sdc/InputDrive.cc b/sdc/InputDrive.cc index 606df5f5..35ae01a3 100644 --- a/sdc/InputDrive.cc +++ b/sdc/InputDrive.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "InputDrive.hh" diff --git a/sdc/PinPair.cc b/sdc/PinPair.cc index 586bb3aa..6178a9dd 100644 --- a/sdc/PinPair.cc +++ b/sdc/PinPair.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PinPair.hh" diff --git a/sdc/PortDelay.cc b/sdc/PortDelay.cc index cabd7d0a..4e576260 100644 --- a/sdc/PortDelay.cc +++ b/sdc/PortDelay.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PortDelay.hh" diff --git a/sdc/PortExtCap.cc b/sdc/PortExtCap.cc index ca1663e8..5dfd2180 100644 --- a/sdc/PortExtCap.cc +++ b/sdc/PortExtCap.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PortExtCap.hh" diff --git a/sdc/Sdc.cc b/sdc/Sdc.cc index 99db7c8a..f15c4f9d 100644 --- a/sdc/Sdc.cc +++ b/sdc/Sdc.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Sdc.hh" diff --git a/sdc/Sdc.i b/sdc/Sdc.i index 0fc292fd..c03a8165 100644 --- a/sdc/Sdc.i +++ b/sdc/Sdc.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %module sdc diff --git a/sdc/Sdc.tcl b/sdc/Sdc.tcl index b2382800..d2512ba8 100644 --- a/sdc/Sdc.tcl +++ b/sdc/Sdc.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. ################################################################ # diff --git a/sdc/SdcCmdComment.cc b/sdc/SdcCmdComment.cc index 41aa411a..667cacd0 100644 --- a/sdc/SdcCmdComment.cc +++ b/sdc/SdcCmdComment.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "StringUtil.hh" #include "SdcCmdComment.hh" diff --git a/sdc/SdcGraph.cc b/sdc/SdcGraph.cc index 1e5a2bbb..afd14c70 100644 --- a/sdc/SdcGraph.cc +++ b/sdc/SdcGraph.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Stats.hh" #include "PortDirection.hh" diff --git a/sdc/WriteSdc.cc b/sdc/WriteSdc.cc index 5808f5c3..183d2c17 100644 --- a/sdc/WriteSdc.cc +++ b/sdc/WriteSdc.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "WriteSdc.hh" diff --git a/sdc/WriteSdcPvt.hh b/sdc/WriteSdcPvt.hh index cb4768fd..b75f34f9 100644 --- a/sdc/WriteSdcPvt.hh +++ b/sdc/WriteSdcPvt.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/sdf/ReportAnnotation.cc b/sdf/ReportAnnotation.cc index 1bfdc077..36798f25 100644 --- a/sdf/ReportAnnotation.cc +++ b/sdf/ReportAnnotation.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "sdf/ReportAnnotation.hh" diff --git a/sdf/ReportAnnotation.hh b/sdf/ReportAnnotation.hh index 815b0d3e..eb1b5ff5 100644 --- a/sdf/ReportAnnotation.hh +++ b/sdf/ReportAnnotation.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/sdf/Sdf.i b/sdf/Sdf.i index 61e5dbac..8e35fd0e 100644 --- a/sdf/Sdf.i +++ b/sdf/Sdf.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %module sdf diff --git a/sdf/Sdf.tcl b/sdf/Sdf.tcl index 5bcf0f5b..d84bd17c 100644 --- a/sdf/Sdf.tcl +++ b/sdf/Sdf.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. namespace eval sta { diff --git a/sdf/SdfLex.ll b/sdf/SdfLex.ll index a414000b..60940928 100644 --- a/sdf/SdfLex.ll +++ b/sdf/SdfLex.ll @@ -1,7 +1,7 @@ %{ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,6 +15,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "util/FlexDisableRegister.hh" #include "sdf/SdfReaderPvt.hh" diff --git a/sdf/SdfParse.yy b/sdf/SdfParse.yy index 9f9ae445..593e6aa6 100644 --- a/sdf/SdfParse.yy +++ b/sdf/SdfParse.yy @@ -1,7 +1,7 @@ %{ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -15,6 +15,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include diff --git a/sdf/SdfReader.cc b/sdf/SdfReader.cc index 9e470d91..415f10fe 100644 --- a/sdf/SdfReader.cc +++ b/sdf/SdfReader.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "sdf/SdfReader.hh" diff --git a/sdf/SdfReader.hh b/sdf/SdfReader.hh index 215d30b4..a2b4e064 100644 --- a/sdf/SdfReader.hh +++ b/sdf/SdfReader.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/sdf/SdfReaderPvt.hh b/sdf/SdfReaderPvt.hh index 06103bd5..437ed212 100644 --- a/sdf/SdfReaderPvt.hh +++ b/sdf/SdfReaderPvt.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/sdf/SdfWriter.cc b/sdf/SdfWriter.cc index 5e0fbe0b..0f6f0083 100644 --- a/sdf/SdfWriter.cc +++ b/sdf/SdfWriter.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "sdf/SdfWriter.hh" diff --git a/sdf/SdfWriter.hh b/sdf/SdfWriter.hh index acd2fff3..382faa71 100644 --- a/sdf/SdfWriter.hh +++ b/sdf/SdfWriter.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/Bdd.cc b/search/Bdd.cc index a2598c15..0845c24c 100644 --- a/search/Bdd.cc +++ b/search/Bdd.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Bdd.hh" diff --git a/search/Bfs.cc b/search/Bfs.cc index eced2dd3..fcec71ca 100644 --- a/search/Bfs.cc +++ b/search/Bfs.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Bfs.hh" diff --git a/search/CheckCapacitanceLimits.cc b/search/CheckCapacitanceLimits.cc index c980e025..391ecda1 100644 --- a/search/CheckCapacitanceLimits.cc +++ b/search/CheckCapacitanceLimits.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "CheckCapacitanceLimits.hh" diff --git a/search/CheckCapacitanceLimits.hh b/search/CheckCapacitanceLimits.hh index 98f2382e..cae73774 100644 --- a/search/CheckCapacitanceLimits.hh +++ b/search/CheckCapacitanceLimits.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/CheckFanoutLimits.cc b/search/CheckFanoutLimits.cc index e11843cd..726fbc31 100644 --- a/search/CheckFanoutLimits.cc +++ b/search/CheckFanoutLimits.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "CheckFanoutLimits.hh" diff --git a/search/CheckFanoutLimits.hh b/search/CheckFanoutLimits.hh index 8c3e6652..0af63f3e 100644 --- a/search/CheckFanoutLimits.hh +++ b/search/CheckFanoutLimits.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/CheckMaxSkews.cc b/search/CheckMaxSkews.cc index 258738a4..e2da8420 100644 --- a/search/CheckMaxSkews.cc +++ b/search/CheckMaxSkews.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "CheckMaxSkews.hh" diff --git a/search/CheckMaxSkews.hh b/search/CheckMaxSkews.hh index c5f548d5..e5b070eb 100644 --- a/search/CheckMaxSkews.hh +++ b/search/CheckMaxSkews.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/CheckMinPeriods.cc b/search/CheckMinPeriods.cc index b7e8bcd4..7e3a14c9 100644 --- a/search/CheckMinPeriods.cc +++ b/search/CheckMinPeriods.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "CheckMinPeriods.hh" diff --git a/search/CheckMinPeriods.hh b/search/CheckMinPeriods.hh index 8da1c5c6..871cec50 100644 --- a/search/CheckMinPeriods.hh +++ b/search/CheckMinPeriods.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/CheckMinPulseWidths.cc b/search/CheckMinPulseWidths.cc index f1835b39..eb4821a4 100644 --- a/search/CheckMinPulseWidths.cc +++ b/search/CheckMinPulseWidths.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "CheckMinPulseWidths.hh" diff --git a/search/CheckMinPulseWidths.hh b/search/CheckMinPulseWidths.hh index d493929f..21773cd5 100644 --- a/search/CheckMinPulseWidths.hh +++ b/search/CheckMinPulseWidths.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/CheckSlewLimits.cc b/search/CheckSlewLimits.cc index 9ad90c05..1bb36662 100644 --- a/search/CheckSlewLimits.cc +++ b/search/CheckSlewLimits.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "CheckSlewLimits.hh" diff --git a/search/CheckSlewLimits.hh b/search/CheckSlewLimits.hh index d0a8c3c2..ba907103 100644 --- a/search/CheckSlewLimits.hh +++ b/search/CheckSlewLimits.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/CheckTiming.cc b/search/CheckTiming.cc index 1c84ef83..e90f73de 100644 --- a/search/CheckTiming.cc +++ b/search/CheckTiming.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "CheckTiming.hh" diff --git a/search/CheckTiming.hh b/search/CheckTiming.hh index 6603e87d..150ad322 100644 --- a/search/CheckTiming.hh +++ b/search/CheckTiming.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/ClkDelays.hh b/search/ClkDelays.hh index dacf37f6..1eba8bf5 100644 --- a/search/ClkDelays.hh +++ b/search/ClkDelays.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/ClkInfo.cc b/search/ClkInfo.cc index 0bc2d728..89b10471 100644 --- a/search/ClkInfo.cc +++ b/search/ClkInfo.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ClkInfo.hh" diff --git a/search/ClkInfo.hh b/search/ClkInfo.hh index 3989f368..977f77d6 100644 --- a/search/ClkInfo.hh +++ b/search/ClkInfo.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/ClkLatency.cc b/search/ClkLatency.cc index 0e42b583..334d3e56 100644 --- a/search/ClkLatency.cc +++ b/search/ClkLatency.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ClkLatency.hh" diff --git a/search/ClkLatency.hh b/search/ClkLatency.hh index d7c2470f..8f4e0933 100644 --- a/search/ClkLatency.hh +++ b/search/ClkLatency.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/ClkNetwork.cc b/search/ClkNetwork.cc index fee8131e..663c350c 100644 --- a/search/ClkNetwork.cc +++ b/search/ClkNetwork.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ClkNetwork.hh" diff --git a/search/ClkSkew.cc b/search/ClkSkew.cc index bc6c45f2..7b9ae64b 100644 --- a/search/ClkSkew.cc +++ b/search/ClkSkew.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ClkSkew.hh" diff --git a/search/ClkSkew.hh b/search/ClkSkew.hh index 3c2e28a4..f9b89fd6 100644 --- a/search/ClkSkew.hh +++ b/search/ClkSkew.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/Corner.cc b/search/Corner.cc index 47902c7c..2d1ce8ea 100644 --- a/search/Corner.cc +++ b/search/Corner.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Corner.hh" diff --git a/search/Crpr.cc b/search/Crpr.cc index 92bae4b9..898a21d6 100644 --- a/search/Crpr.cc +++ b/search/Crpr.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Crpr.hh" diff --git a/search/Crpr.hh b/search/Crpr.hh index 114a362c..26bcc4c4 100644 --- a/search/Crpr.hh +++ b/search/Crpr.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/FindRegister.cc b/search/FindRegister.cc index 90973487..32da6eec 100644 --- a/search/FindRegister.cc +++ b/search/FindRegister.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "FindRegister.hh" diff --git a/search/FindRegister.hh b/search/FindRegister.hh index 48dc5474..f9820f9c 100644 --- a/search/FindRegister.hh +++ b/search/FindRegister.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/GatedClk.cc b/search/GatedClk.cc index 6fbaac7a..7e3ea00f 100644 --- a/search/GatedClk.cc +++ b/search/GatedClk.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "GatedClk.hh" diff --git a/search/GatedClk.hh b/search/GatedClk.hh index 55767cac..f69c3b81 100644 --- a/search/GatedClk.hh +++ b/search/GatedClk.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/Genclks.cc b/search/Genclks.cc index 7d264770..c0cebf84 100644 --- a/search/Genclks.cc +++ b/search/Genclks.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Genclks.hh" diff --git a/search/Genclks.hh b/search/Genclks.hh index 2f9d6df0..4b76b06d 100644 --- a/search/Genclks.hh +++ b/search/Genclks.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/Latches.cc b/search/Latches.cc index 3ec2dfe8..2532165c 100644 --- a/search/Latches.cc +++ b/search/Latches.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Latches.hh" diff --git a/search/Latches.hh b/search/Latches.hh index 827b182f..6f4941cf 100644 --- a/search/Latches.hh +++ b/search/Latches.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/Levelize.cc b/search/Levelize.cc index 96536f67..48dcad2c 100644 --- a/search/Levelize.cc +++ b/search/Levelize.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Levelize.hh" diff --git a/search/Levelize.hh b/search/Levelize.hh index 03ae3b4c..2c089ddb 100644 --- a/search/Levelize.hh +++ b/search/Levelize.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/MakeTimingModel.cc b/search/MakeTimingModel.cc index cc90b22e..9de20759 100644 --- a/search/MakeTimingModel.cc +++ b/search/MakeTimingModel.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "MakeTimingModel.hh" #include "MakeTimingModelPvt.hh" diff --git a/search/MakeTimingModel.hh b/search/MakeTimingModel.hh index 60b6662e..0f9c8ea9 100644 --- a/search/MakeTimingModel.hh +++ b/search/MakeTimingModel.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/MakeTimingModelPvt.hh b/search/MakeTimingModelPvt.hh index c22ad730..eb102073 100644 --- a/search/MakeTimingModelPvt.hh +++ b/search/MakeTimingModelPvt.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/Path.cc b/search/Path.cc index c7a91fc9..c592a418 100644 --- a/search/Path.cc +++ b/search/Path.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Path.hh" diff --git a/search/PathAnalysisPt.cc b/search/PathAnalysisPt.cc index fdafdf84..ddcb09fc 100644 --- a/search/PathAnalysisPt.cc +++ b/search/PathAnalysisPt.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PathAnalysisPt.hh" diff --git a/search/PathEnd.cc b/search/PathEnd.cc index 18c29828..5157fc7b 100644 --- a/search/PathEnd.cc +++ b/search/PathEnd.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PathEnd.hh" diff --git a/search/PathEnum.cc b/search/PathEnum.cc index 371b4a9b..0b151b07 100644 --- a/search/PathEnum.cc +++ b/search/PathEnum.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PathEnum.hh" diff --git a/search/PathEnum.hh b/search/PathEnum.hh index b7dab956..859cef80 100644 --- a/search/PathEnum.hh +++ b/search/PathEnum.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/PathEnumed.cc b/search/PathEnumed.cc index 1283b15a..3c0adc87 100644 --- a/search/PathEnumed.cc +++ b/search/PathEnumed.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PathEnumed.hh" diff --git a/search/PathEnumed.hh b/search/PathEnumed.hh index 1203bc28..8613ed69 100644 --- a/search/PathEnumed.hh +++ b/search/PathEnumed.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/PathExpanded.cc b/search/PathExpanded.cc index 8c63e5b2..d3288966 100644 --- a/search/PathExpanded.cc +++ b/search/PathExpanded.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PathExpanded.hh" diff --git a/search/PathGroup.cc b/search/PathGroup.cc index 6bd07a50..119a21c6 100644 --- a/search/PathGroup.cc +++ b/search/PathGroup.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PathGroup.hh" diff --git a/search/PathRef.cc b/search/PathRef.cc index 386df1ed..70401ef6 100644 --- a/search/PathRef.cc +++ b/search/PathRef.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PathRef.hh" diff --git a/search/PathVertex.cc b/search/PathVertex.cc index 09b53880..5bb20a57 100644 --- a/search/PathVertex.cc +++ b/search/PathVertex.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PathVertex.hh" diff --git a/search/PathVertexRep.cc b/search/PathVertexRep.cc index 18e4098d..ebb3cd53 100644 --- a/search/PathVertexRep.cc +++ b/search/PathVertexRep.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PathVertexRep.hh" diff --git a/search/Property.cc b/search/Property.cc index 4b39f0df..de8b2b80 100644 --- a/search/Property.cc +++ b/search/Property.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Property.hh" diff --git a/search/ReportPath.cc b/search/ReportPath.cc index 1661591d..687ec230 100644 --- a/search/ReportPath.cc +++ b/search/ReportPath.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include // reverse diff --git a/search/ReportPath.hh b/search/ReportPath.hh index b709b780..93a27db7 100644 --- a/search/ReportPath.hh +++ b/search/ReportPath.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/Search.cc b/search/Search.cc index 9cc3d1df..49338cf2 100644 --- a/search/Search.cc +++ b/search/Search.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Search.hh" diff --git a/search/Search.i b/search/Search.i index b740da2f..51f6e327 100644 --- a/search/Search.i +++ b/search/Search.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %module search diff --git a/search/Search.tcl b/search/Search.tcl index 15fe5a61..f8f5dc6d 100644 --- a/search/Search.tcl +++ b/search/Search.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. namespace eval sta { diff --git a/search/SearchPred.cc b/search/SearchPred.cc index 8fcb8fac..03baa5f7 100644 --- a/search/SearchPred.cc +++ b/search/SearchPred.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "SearchPred.hh" diff --git a/search/Sim.cc b/search/Sim.cc index deed4142..783b7547 100644 --- a/search/Sim.cc +++ b/search/Sim.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Sim.hh" diff --git a/search/Sim.hh b/search/Sim.hh index 6d3d0c71..958e9d82 100644 --- a/search/Sim.hh +++ b/search/Sim.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/Sta.cc b/search/Sta.cc index 04c6caa9..0b91bd59 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Sta.hh" diff --git a/search/StaState.cc b/search/StaState.cc index 249d2bd9..bf457a2f 100644 --- a/search/StaState.cc +++ b/search/StaState.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "StaState.hh" diff --git a/search/Tag.cc b/search/Tag.cc index 9cb73b5f..3b4ac5de 100644 --- a/search/Tag.cc +++ b/search/Tag.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Tag.hh" diff --git a/search/Tag.hh b/search/Tag.hh index 55a27103..10c77d5d 100644 --- a/search/Tag.hh +++ b/search/Tag.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/TagGroup.cc b/search/TagGroup.cc index bb0b2a6f..b00ed4c6 100644 --- a/search/TagGroup.cc +++ b/search/TagGroup.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "TagGroup.hh" diff --git a/search/TagGroup.hh b/search/TagGroup.hh index ca923bfa..eca1d26a 100644 --- a/search/TagGroup.hh +++ b/search/TagGroup.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/VertexVisitor.cc b/search/VertexVisitor.cc index fc201706..900c7823 100644 --- a/search/VertexVisitor.cc +++ b/search/VertexVisitor.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "VertexVisitor.hh" diff --git a/search/VisitPathEnds.cc b/search/VisitPathEnds.cc index d72d3972..d7d409d9 100644 --- a/search/VisitPathEnds.cc +++ b/search/VisitPathEnds.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "VisitPathEnds.hh" diff --git a/search/VisitPathGroupVertices.cc b/search/VisitPathGroupVertices.cc index 0dfab288..2d4217bc 100644 --- a/search/VisitPathGroupVertices.cc +++ b/search/VisitPathGroupVertices.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "VisitPathGroupVertices.hh" diff --git a/search/VisitPathGroupVertices.hh b/search/VisitPathGroupVertices.hh index bf93cea4..55f585ef 100644 --- a/search/VisitPathGroupVertices.hh +++ b/search/VisitPathGroupVertices.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/search/WorstSlack.cc b/search/WorstSlack.cc index 2aacdc49..f7f798c6 100644 --- a/search/WorstSlack.cc +++ b/search/WorstSlack.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "WorstSlack.hh" diff --git a/search/WorstSlack.hh b/search/WorstSlack.hh index ebe5729c..c304fd6b 100644 --- a/search/WorstSlack.hh +++ b/search/WorstSlack.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/spice/WritePathSpice.cc b/spice/WritePathSpice.cc index 9733dabb..7db01a26 100644 --- a/spice/WritePathSpice.cc +++ b/spice/WritePathSpice.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "WritePathSpice.hh" diff --git a/spice/WritePathSpice.hh b/spice/WritePathSpice.hh index 826e12ce..bf4ab506 100644 --- a/spice/WritePathSpice.hh +++ b/spice/WritePathSpice.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/spice/WriteSpice.cc b/spice/WriteSpice.cc index 84d7b656..14de0f34 100644 --- a/spice/WriteSpice.cc +++ b/spice/WriteSpice.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "spice/WriteSpice.hh" diff --git a/spice/WriteSpice.hh b/spice/WriteSpice.hh index 5a5f8137..373a22fb 100644 --- a/spice/WriteSpice.hh +++ b/spice/WriteSpice.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/spice/WriteSpice.i b/spice/WriteSpice.i index 3a44733b..4078cd19 100644 --- a/spice/WriteSpice.i +++ b/spice/WriteSpice.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %module write_gate_spice diff --git a/spice/WriteSpice.tcl b/spice/WriteSpice.tcl index 200df1e8..af15905b 100644 --- a/spice/WriteSpice.tcl +++ b/spice/WriteSpice.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. namespace eval sta { diff --git a/spice/Xyce.cc b/spice/Xyce.cc index 7635fe6a..618b65b1 100644 --- a/spice/Xyce.cc +++ b/spice/Xyce.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Xyce.hh" diff --git a/spice/Xyce.hh b/spice/Xyce.hh index 94b84693..848c9987 100644 --- a/spice/Xyce.hh +++ b/spice/Xyce.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/tcl/CmdArgs.tcl b/tcl/CmdArgs.tcl index 3cab4a07..c1a59889 100644 --- a/tcl/CmdArgs.tcl +++ b/tcl/CmdArgs.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. ################################################################ # diff --git a/tcl/CmdUtil.tcl b/tcl/CmdUtil.tcl index 34f50db1..deb4c51f 100644 --- a/tcl/CmdUtil.tcl +++ b/tcl/CmdUtil.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. namespace eval sta { diff --git a/tcl/Exception.i b/tcl/Exception.i index 2211c529..39d73c46 100644 --- a/tcl/Exception.i +++ b/tcl/Exception.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %exception { try { $function } diff --git a/tcl/Init.tcl b/tcl/Init.tcl index 4c2df17c..bb5c5fd7 100644 --- a/tcl/Init.tcl +++ b/tcl/Init.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. proc init_sta_cmds {} { global auto_index diff --git a/tcl/Property.tcl b/tcl/Property.tcl index 68660784..4e08b5dd 100644 --- a/tcl/Property.tcl +++ b/tcl/Property.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. namespace eval sta { diff --git a/tcl/Splash.tcl b/tcl/Splash.tcl index 5f3f1b3f..60b49931 100644 --- a/tcl/Splash.tcl +++ b/tcl/Splash.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. namespace eval sta { @@ -25,7 +33,7 @@ namespace eval sta { define_cmd_args show_splash {} proc show_splash {} { - report_line "OpenSTA [sta::version] [string range [sta::git_sha1] 0 9] Copyright (c) 2024, Parallax Software, Inc. + report_line "OpenSTA [sta::version] [string range [sta::git_sha1] 0 9] Copyright (c) 2025, Parallax Software, Inc. License GPLv3: GNU GPL version 3 This is free software, and you are free to change and redistribute it diff --git a/tcl/Sta.tcl b/tcl/Sta.tcl index 4be84978..76fd474f 100644 --- a/tcl/Sta.tcl +++ b/tcl/Sta.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. namespace eval sta { diff --git a/tcl/StaTclTypes.i b/tcl/StaTclTypes.i index d3668654..b5f6b5e5 100644 --- a/tcl/StaTclTypes.i +++ b/tcl/StaTclTypes.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. // Swig TCL input/output type parsers. %{ diff --git a/tcl/TclTypeHelpers.cc b/tcl/TclTypeHelpers.cc index 2dcbf8ac..d8da8e44 100644 --- a/tcl/TclTypeHelpers.cc +++ b/tcl/TclTypeHelpers.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "TclTypeHelpers.hh" diff --git a/tcl/Util.tcl b/tcl/Util.tcl index 5f35d8a7..3a3919a0 100644 --- a/tcl/Util.tcl +++ b/tcl/Util.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. # The sta namespace is used for all commands defined by the sta. # Use define_cmd_args to define command arguments for the help diff --git a/tcl/Variables.tcl b/tcl/Variables.tcl index 01e45d0e..a019c295 100644 --- a/tcl/Variables.tcl +++ b/tcl/Variables.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. namespace eval sta { diff --git a/test/regression b/test/regression index f7731a61..2688454a 100755 --- a/test/regression +++ b/test/regression @@ -3,7 +3,7 @@ exec tclsh $0 ${1+"$@"} # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,6 +17,14 @@ exec tclsh $0 ${1+"$@"} # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. # Usage: regression help | test1 [test2...] # where test is all or the name of a tcl script in $STA/test diff --git a/test/regression.tcl b/test/regression.tcl index 1beb7090..b24bf4e1 100755 --- a/test/regression.tcl +++ b/test/regression.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,22 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. # regression -help | [-threads threads] [-valgrind] [-report_stats] test1 [test2...] diff --git a/test/regression_vars.tcl b/test/regression_vars.tcl index 40f08d79..2d8ccbe1 100644 --- a/test/regression_vars.tcl +++ b/test/regression_vars.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,22 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. # Regression variables. diff --git a/test/save_ok b/test/save_ok index 19af6802..7eb25bc3 100755 --- a/test/save_ok +++ b/test/save_ok @@ -3,7 +3,7 @@ exec tclsh $0 ${1+"$@"} # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,6 +17,14 @@ exec tclsh $0 ${1+"$@"} # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. # Directory containing tests. set test_dir [file dirname [info script]] diff --git a/util/Debug.cc b/util/Debug.cc index 656d6972..4116379c 100644 --- a/util/Debug.cc +++ b/util/Debug.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Debug.hh" diff --git a/util/Error.cc b/util/Error.cc index 06d24073..b198c4a4 100644 --- a/util/Error.cc +++ b/util/Error.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Error.hh" diff --git a/util/Fuzzy.cc b/util/Fuzzy.cc index 1a5f3a13..b6c69e6e 100644 --- a/util/Fuzzy.cc +++ b/util/Fuzzy.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Fuzzy.hh" diff --git a/util/Hash.cc b/util/Hash.cc index 45bb58d8..2160ec1c 100644 --- a/util/Hash.cc +++ b/util/Hash.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Hash.hh" diff --git a/util/Machine.cc b/util/Machine.cc index 785d6900..d387e994 100644 --- a/util/Machine.cc +++ b/util/Machine.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #if defined(_WIN32) #include "MachineWin32.cc" diff --git a/util/MachineApple.cc b/util/MachineApple.cc index d06145ff..220df772 100644 --- a/util/MachineApple.cc +++ b/util/MachineApple.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Machine.hh" diff --git a/util/MachineLinux.cc b/util/MachineLinux.cc index 26fc6d12..104b8717 100644 --- a/util/MachineLinux.cc +++ b/util/MachineLinux.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Machine.hh" diff --git a/util/MachineUnknown.cc b/util/MachineUnknown.cc index 4b8f1415..0a28118b 100644 --- a/util/MachineUnknown.cc +++ b/util/MachineUnknown.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Machine.hh" diff --git a/util/MachineWin32.cc b/util/MachineWin32.cc index ee90f3ae..3fec862f 100644 --- a/util/MachineWin32.cc +++ b/util/MachineWin32.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Machine.hh" diff --git a/util/MinMax.cc b/util/MinMax.cc index 5c7ed750..27b598b8 100644 --- a/util/MinMax.cc +++ b/util/MinMax.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "MinMax.hh" diff --git a/util/PatternMatch.cc b/util/PatternMatch.cc index b8faf6c4..94b32641 100644 --- a/util/PatternMatch.cc +++ b/util/PatternMatch.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "PatternMatch.hh" #include diff --git a/util/Report.cc b/util/Report.cc index 2c2f0b4e..d3fdda65 100644 --- a/util/Report.cc +++ b/util/Report.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Report.hh" diff --git a/util/ReportStd.cc b/util/ReportStd.cc index f929249a..abf088d3 100644 --- a/util/ReportStd.cc +++ b/util/ReportStd.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ReportStd.hh" diff --git a/util/ReportTcl.cc b/util/ReportTcl.cc index 5994c518..a8b9c159 100644 --- a/util/ReportTcl.cc +++ b/util/ReportTcl.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "ReportTcl.hh" diff --git a/util/RiseFallMinMax.cc b/util/RiseFallMinMax.cc index 22081616..2a692ff9 100644 --- a/util/RiseFallMinMax.cc +++ b/util/RiseFallMinMax.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "RiseFallMinMax.hh" diff --git a/util/RiseFallValues.cc b/util/RiseFallValues.cc index a9ce0af2..6dd4fda4 100644 --- a/util/RiseFallValues.cc +++ b/util/RiseFallValues.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "RiseFallValues.hh" diff --git a/util/Stats.cc b/util/Stats.cc index 94e2dd54..ccf1675f 100644 --- a/util/Stats.cc +++ b/util/Stats.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Stats.hh" diff --git a/util/StringSeq.cc b/util/StringSeq.cc index f9f167c0..67d51a4b 100644 --- a/util/StringSeq.cc +++ b/util/StringSeq.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "StringSeq.hh" diff --git a/util/StringSet.cc b/util/StringSet.cc index 57d09bfe..22d0d303 100644 --- a/util/StringSet.cc +++ b/util/StringSet.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "StringSet.hh" diff --git a/util/StringUtil.cc b/util/StringUtil.cc index 685ae389..52de6928 100644 --- a/util/StringUtil.cc +++ b/util/StringUtil.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "StringUtil.hh" diff --git a/util/TokenParser.cc b/util/TokenParser.cc index bb659553..dba068df 100644 --- a/util/TokenParser.cc +++ b/util/TokenParser.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "TokenParser.hh" diff --git a/util/Transition.cc b/util/Transition.cc index 289aac02..cf327424 100644 --- a/util/Transition.cc +++ b/util/Transition.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "Transition.hh" diff --git a/util/Util.i b/util/Util.i index 5ae1f6c6..674a40e0 100644 --- a/util/Util.i +++ b/util/Util.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %module util diff --git a/verilog/Verilog.i b/verilog/Verilog.i index 8b528ea8..63561423 100644 --- a/verilog/Verilog.i +++ b/verilog/Verilog.i @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %module verilog diff --git a/verilog/Verilog.tcl b/verilog/Verilog.tcl index 6a9031e4..bf024119 100644 --- a/verilog/Verilog.tcl +++ b/verilog/Verilog.tcl @@ -1,5 +1,5 @@ # OpenSTA, Static Timing Analyzer -# Copyright (c) 2024, Parallax Software, Inc. +# Copyright (c) 2025, Parallax Software, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. namespace eval sta { diff --git a/verilog/VerilogLex.ll b/verilog/VerilogLex.ll index 392dc8c2..91d304d8 100644 --- a/verilog/VerilogLex.ll +++ b/verilog/VerilogLex.ll @@ -1,6 +1,6 @@ %{ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -14,6 +14,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "VerilogNamespace.hh" #include "verilog/VerilogReader.hh" diff --git a/verilog/VerilogParse.yy b/verilog/VerilogParse.yy index 4bcacb46..124f3014 100644 --- a/verilog/VerilogParse.yy +++ b/verilog/VerilogParse.yy @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. %require "3.0" %skeleton "lalr1.cc" diff --git a/verilog/VerilogReader.cc b/verilog/VerilogReader.cc index 3500725d..40fc45b6 100644 --- a/verilog/VerilogReader.cc +++ b/verilog/VerilogReader.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "verilog/VerilogReader.hh" diff --git a/verilog/VerilogReader.hh b/verilog/VerilogReader.hh index 54adeeaf..0108e0a4 100644 --- a/verilog/VerilogReader.hh +++ b/verilog/VerilogReader.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/verilog/VerilogReaderPvt.hh b/verilog/VerilogReaderPvt.hh index a9f6f9b0..35be91f1 100644 --- a/verilog/VerilogReaderPvt.hh +++ b/verilog/VerilogReaderPvt.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/verilog/VerilogScanner.hh b/verilog/VerilogScanner.hh index 16612244..193c3bb3 100644 --- a/verilog/VerilogScanner.hh +++ b/verilog/VerilogScanner.hh @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #pragma once diff --git a/verilog/VerilogWriter.cc b/verilog/VerilogWriter.cc index 9a192163..57bece2a 100644 --- a/verilog/VerilogWriter.cc +++ b/verilog/VerilogWriter.cc @@ -1,5 +1,5 @@ // OpenSTA, Static Timing Analyzer -// Copyright (c) 2024, Parallax Software, Inc. +// Copyright (c) 2025, Parallax Software, Inc. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -13,6 +13,14 @@ // // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. #include "VerilogWriter.hh" From 1f595c0589fbd7592dd6c5d86f2c30f349c64b32 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 22 Jan 2025 11:16:14 -0700 Subject: [PATCH 03/11] comments Signed-off-by: James Cherry --- etc/FindMessages.tcl | 28 ++++++++++++++++++++++------ etc/TclEncode.tcl | 2 +- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/etc/FindMessages.tcl b/etc/FindMessages.tcl index 325a2bc1..a844de79 100755 --- a/etc/FindMessages.tcl +++ b/etc/FindMessages.tcl @@ -2,13 +2,29 @@ # The next line is executed by /bin/sh, but not Tcl \ exec tclsh $0 ${1+"$@"} -# Parallax Static Timing Analyzer -# Copyright (c) 2020, Parallax Software, Inc. -# All rights reserved. +# OpenSTA, Static Timing Analyzer +# Copyright (c) 2025, Parallax Software, Inc. # -# No part of this document may be copied, transmitted or -# disclosed in any form or fashion without the express -# written consent of Parallax Software, Inc. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. +# +# Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# +# This notice may not be removed or altered from any source distribution. # Find warning/error message IDs and detect collisions. # Usage: FindMessages.tcl > doc/messages.txt diff --git a/etc/TclEncode.tcl b/etc/TclEncode.tcl index 7690717c..54300e0b 100755 --- a/etc/TclEncode.tcl +++ b/etc/TclEncode.tcl @@ -30,7 +30,7 @@ exec tclsh $0 ${1+"$@"} # Encode the contents of tcl_filenames into a C character array # named var_name in the file encoded_filename. # Each TCL file is encoded as a separate string of three digit decimal numbers -# that is unencoded and evaled on startup of the application. +# that is unencoded and evaled on startup of the application. # The init variable character array is terminated with a NULL pointer. set encoded_filename [lindex $argv 0] From eb7fe840557c12552b81d43caf9eeaec2d8ac0f9 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Sat, 25 Jan 2025 10:01:09 -0700 Subject: [PATCH 04/11] readme Signed-off-by: James Cherry --- README.md | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c7bd9fdb..cbb6106f 100644 --- a/README.md +++ b/README.md @@ -98,9 +98,6 @@ bison 3.8.2 3.8.2 flex 2.6.4 2.6.4 ``` -Note that flex versions before 2.6.4 contain 'register' declarations that -are illegal in c++17. - External library dependencies: ``` Ubuntu Darwin License @@ -111,12 +108,11 @@ zLib 1.2.5 1.2.8 zlib optional ``` The [TCL readline library](https://tclreadline.sourceforge.net/tclreadline.html) -links the GNU readline library to the TCL interpreter for command line editing -On OSX, Homebrew does not support tclreadline, but the macports system does -(see https://www.macports.org). To enable TCL readline support use the following -Cmake option: See (https://tclreadline.sourceforge.net/) for TCL readline -documentation. To change the overly verbose default prompt, add something this -to your ~/.sta init file: +links the GNU readline library to the TCL interpreter for command line +editing To enable TCL readline support use the following Cmake option: +See (https://tclreadline.sourceforge.net/) for TCL readline +documentation. To change the overly verbose default prompt, add +something this to your ~/.sta init file: ``` if { ![catch {package require tclreadline}] } { @@ -148,7 +144,7 @@ make You can use the "configure --prefix" option and "make install" to install CUDD in a different directory. -### Installing with CMake +### Building with CMake Use the following commands to checkout the git repository and build the OpenSTA library and excutable. @@ -206,6 +202,24 @@ interactively. docker run -i -v $HOME:/data OpenSTA ``` +## Build on Macos/Darwin + +THe XCode versions of Tcl, Flex and Bison cannot be used to build OpenSTA. +Use Homebrew to install them. + + brew install cmake swig flex bison tcl-tk zlib + +Set these variables before using cmake to cirumvent the Xcode versions. + + # flex/bison override apple version + export PATH="$(brew --prefix bison)/bin:${PATH}" + export PATH="$(brew --prefix flex)/bin:${PATH}" + export CMAKE_INCLUDE_PATH="$(brew --prefix flex)/include" + export CMAKE_LIBRARY_PATH="$(brew --prefix flex)/lib;$(brew --prefix bison)/lib" + +Homebrew does not support tclreadline, but the macports system does +(see https://www.macports.org). + ## Bug Reports Use the Issues tab on the github repository to report bugs. From fafbcb216eb89a9ab2efb0c4a6958ead177ff689 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Sat, 25 Jan 2025 11:21:40 -0700 Subject: [PATCH 05/11] verilog parser commit aa52884df77545280835532c21cb4d024eda5573 Author: James Cherry Date: Sat Jan 25 11:20:33 2025 -0700 zlib optional Signed-off-by: James Cherry commit 5a46e0e5d1d9fe806d290fa34a4ad4aa0a9e4899 Author: James Cherry Date: Fri Jan 24 19:19:33 2025 -0700 verilog prefix Signed-off-by: James Cherry commit 1b1fbf41c96f96a4c4b9f8b66f16f27688cb47a8 Author: James Cherry Date: Fri Jan 24 17:09:32 2025 -0700 blank Signed-off-by: James Cherry commit 72488094a4696414ce5c37a4ab5bb78f4a9750c1 Author: James Cherry Date: Fri Jan 24 16:47:55 2025 -0700 verilog parse reorg Signed-off-by: James Cherry Signed-off-by: James Cherry --- CMakeLists.txt | 3 +-- include/sta/Zlib.hh | 6 ++++++ verilog/VerilogLex.ll | 10 +++++---- verilog/VerilogParse.yy | 44 +++++++++++++-------------------------- verilog/VerilogReader.cc | 5 ++--- verilog/VerilogScanner.hh | 12 ++++++----- 6 files changed, 36 insertions(+), 44 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6449acd8..c69dadc2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -307,7 +307,7 @@ flex_target(VerilogLex ${STA_HOME}/verilog/VerilogLex.ll bison_target(VerilogParse ${STA_HOME}/verilog/VerilogParse.yy ${CMAKE_CURRENT_BINARY_DIR}/VerilogParse.cc # centos7 bison 3.0.4 < 3.3.0 uses parser_class_name instead of api.parsr.class - COMPILE_FLAGS -Wno-deprecated) + COMPILE_FLAGS "-Wno-deprecated") add_flex_bison_dependency(VerilogLex VerilogParse) # Sdf scan/parse. @@ -319,7 +319,6 @@ bison_target(SdfParse ${STA_HOME}/sdf/SdfParse.yy ${CMAKE_CURRENT_BINARY_DIR}/Sd ) add_flex_bison_dependency(SdfLex SdfParse) - # Saif scan/parse. flex_target(SaifLex ${STA_HOME}/power/SaifLex.ll ${CMAKE_CURRENT_BINARY_DIR}/SaifLex.cc COMPILE_FLAGS --prefix=SaifLex_ diff --git a/include/sta/Zlib.hh b/include/sta/Zlib.hh index 8cc50ebe..7a9399de 100644 --- a/include/sta/Zlib.hh +++ b/include/sta/Zlib.hh @@ -32,10 +32,12 @@ #ifdef ZLIB_FOUND #include +#include "util/gzstream.hh" #else // ZLIB_FOUND #include +#include #define gzFile FILE* #define gzopen fopen @@ -44,4 +46,8 @@ #define gzprintf fprintf #define Z_NULL nullptr +namespace gzstream { +typedef std::ifstream igzstream; +} + #endif // ZLIB_FOUND diff --git a/verilog/VerilogLex.ll b/verilog/VerilogLex.ll index 91d304d8..097ac6c6 100644 --- a/verilog/VerilogLex.ll +++ b/verilog/VerilogLex.ll @@ -23,31 +23,33 @@ // // This notice may not be removed or altered from any source distribution. +#include "util/FlexDisableRegister.hh" #include "VerilogNamespace.hh" #include "verilog/VerilogReader.hh" #include "verilog/VerilogReaderPvt.hh" #include "VerilogParse.hh" #include "verilog/VerilogScanner.hh" -#include "util/FlexDisableRegister.hh" #undef YY_DECL #define YY_DECL \ int \ -sta::VerilogScanner::yylex(sta::VerilogParse::semantic_type *const yylval, \ - sta::VerilogParse::location_type *loc) +sta::VerilogScanner::lex(sta::VerilogParse::semantic_type *const yylval, \ + sta::VerilogParse::location_type *loc) // update location on matching #define YY_USER_ACTION loc->step(); loc->columns(yyleng); typedef sta::VerilogParse::token token; - %} %option c++ %option yyclass="sta::VerilogScanner" +%option prefix="Verilog" %option noyywrap %option never-interactive %option stack +%option yylineno +/* %option debug */ %x COMMENT %x QSTRING diff --git a/verilog/VerilogParse.yy b/verilog/VerilogParse.yy index 124f3014..fbb6ced4 100644 --- a/verilog/VerilogParse.yy +++ b/verilog/VerilogParse.yy @@ -22,45 +22,18 @@ // // This notice may not be removed or altered from any source distribution. -%require "3.0" -%skeleton "lalr1.cc" -%debug -%defines -%define api.namespace {sta} - -// bison 3.0.4 for centos7 -%define parser_class_name {VerilogParse} -// bison 3.3.2 -//%define api.parser.class {VerilogParse} - -%code requires { - namespace sta { - class VerilogReadcer; - class VerilogScanner; - } -} - -%locations - -%parse-param { VerilogScanner *scanner } -%parse-param { VerilogReader *reader } - %{ #include #include -#include #include "Report.hh" #include "PortDirection.hh" #include "verilog/VerilogReader.hh" #include "verilog/VerilogReaderPvt.hh" #include "verilog/VerilogScanner.hh" -%} - -%code { #undef yylex -#define yylex scanner->yylex +#define yylex scanner->lex // warning: variable 'yynerrs_' set but not used #pragma GCC diagnostic ignored "-Wunused-but-set-variable" @@ -73,10 +46,21 @@ sta::VerilogParse::error(const location_type &loc, { reader->report()->fileError(164,reader->filename(),loc.begin.line,"%s",msg.c_str()); } +%} -} - +%require "3.0" +%skeleton "lalr1.cc" +%debug +%define api.namespace {sta} +%locations %define parse.assert +%parse-param { VerilogScanner *scanner } +%parse-param { VerilogReader *reader } + +// bison 3.0.4 for centos7 +%define parser_class_name {VerilogParse} +// bison 3.3.2 +//%define api.parser.class {VerilogParse} %union { int ival; diff --git a/verilog/VerilogReader.cc b/verilog/VerilogReader.cc index 40fc45b6..664a0d38 100644 --- a/verilog/VerilogReader.cc +++ b/verilog/VerilogReader.cc @@ -26,8 +26,7 @@ #include -#include "util/gzstream.hh" - +#include "Zlib.hh" #include "Debug.hh" #include "Report.hh" #include "Error.hh" @@ -2262,7 +2261,7 @@ VerilogScanner::VerilogScanner(std::istream *stream, void VerilogScanner::error(const char *msg) { - report_->fileError(1866, "foo", lineno(), "%s", msg); + report_->fileError(1866, filename_, lineno(), "%s", msg); } } // namespace diff --git a/verilog/VerilogScanner.hh b/verilog/VerilogScanner.hh index 193c3bb3..2a080ac9 100644 --- a/verilog/VerilogScanner.hh +++ b/verilog/VerilogScanner.hh @@ -25,6 +25,8 @@ #pragma once #ifndef __FLEX_LEXER_H +#undef yyFlexLexer +#define yyFlexLexer VerilogFlexLexer #include #endif @@ -35,7 +37,7 @@ namespace sta { class Report; -class VerilogScanner : public yyFlexLexer +class VerilogScanner : public VerilogFlexLexer { public: VerilogScanner(std::istream *stream, @@ -43,15 +45,15 @@ public: Report *report); virtual ~VerilogScanner() {} - virtual int yylex(VerilogParse::semantic_type *const yylval, - VerilogParse::location_type *yylloc); + virtual int lex(VerilogParse::semantic_type *const yylval, + VerilogParse::location_type *yylloc); // YY_DECL defined in VerilogLex.ll - // Method body created by flex in VerilogLex.yy.cc + // Method body created by flex in VerilogLex.cc void error(const char *msg); // Get rid of override virtual function warning. - using FlexLexer::yylex; + using yyFlexLexer::yylex; private: const char *filename_; From c9a872670722370ab7152d15690f9fbfd9c22ff4 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Sat, 25 Jan 2025 11:34:04 -0700 Subject: [PATCH 06/11] c++ sdf reader commit da9f267cbb3ed711bff3d2e2c1470fa12f7de26c Author: James Cherry Date: Sat Jan 25 11:31:41 2025 -0700 zlib optional Signed-off-by: James Cherry commit dfbe36202ef77f77e1a7c42163db9f6a5d9a8380 Author: James Cherry Date: Fri Jan 24 19:24:05 2025 -0700 sdf use option for prefix Signed-off-by: James Cherry commit bd7fc399ddfa472e25606c92421c123a725181da Author: James Cherry Date: Fri Jan 24 18:57:46 2025 -0700 mv sdf error to reader Signed-off-by: James Cherry commit 088d43b0e5c90b0bc24c64384164f1bcc50c5165 Author: James Cherry Date: Fri Jan 24 18:48:28 2025 -0700 sdf lex use option for previs Signed-off-by: James Cherry commit 6ccf8c33bd8c44fdd914d9a36fa703a7594353e2 Author: James Cherry Date: Fri Jan 24 17:10:07 2025 -0700 sdf error Signed-off-by: James Cherry commit 43794955a9f79a2900bb8e4cef030a907347627a Author: James Cherry Date: Fri Jan 24 16:13:00 2025 -0700 SdfParse reorg sections Signed-off-by: James Cherry commit 666062124f5718a512092fcdd295827cfb2b6c51 Author: James Cherry Date: Fri Jan 24 16:07:51 2025 -0700 sdf lex previs Signed-off-by: James Cherry commit 83e9925e09817f39d60ae0292fd9eed5e6c40f43 Author: James Cherry Date: Fri Jan 24 16:05:11 2025 -0700 sdf clenup directives Signed-off-by: James Cherry commit dd71619af605abdaaaa9feb0800eb78e225828d6 Author: James Cherry Date: Fri Jan 24 11:41:47 2025 -0700 sdf parse valgrind pass Signed-off-by: James Cherry commit c068e6512824ac27a99fdaa6dcd9a908ee991857 Author: James Cherry Date: Fri Jan 24 08:45:39 2025 -0700 sdf parse Signed-off-by: James Cherry commit 454602fbd464387442cd1e296f3f0e3b5c366e52 Author: James Cherry Date: Thu Jan 23 21:50:24 2025 -0700 sdf parse passes Signed-off-by: James Cherry commit a352451c163f95f82446f2a25d39706f68ae98d6 Author: James Cherry Date: Thu Jan 23 19:15:09 2025 -0700 sdf parse pass all but 1 Signed-off-by: James Cherry commit 87d537582134a767a13ec4596957b7d7a8e1edfd Author: James Cherry Date: Thu Jan 23 12:53:15 2025 -0700 sdf parse report_checks4 Signed-off-by: James Cherry commit c2ee81a51d4fba1281bf452055c9113af7a0de1f Author: James Cherry Date: Thu Jan 23 12:30:25 2025 -0700 sdf link Signed-off-by: James Cherry commit d71e4b0c8f95256ab3ec9e53e26218baaa3c9f8c Author: James Cherry Date: Thu Jan 23 12:02:45 2025 -0700 sdf parse compiles Signed-off-by: James Cherry commit 6ca6800d5cd52640e275bf7eb77a8b1db85e2957 Author: James Cherry Date: Wed Jan 22 18:19:27 2025 -0700 sdf reader c++ Signed-off-by: James Cherry Signed-off-by: James Cherry --- CMakeLists.txt | 12 +- sdf/SdfLex.ll | 171 +++++++++++---------- sdf/SdfParse.yy | 184 +++++++++++----------- sdf/SdfReader.cc | 362 +++++++++++++++++++++----------------------- sdf/SdfReaderPvt.hh | 75 ++++----- sdf/SdfScanner.hh | 66 ++++++++ 6 files changed, 457 insertions(+), 413 deletions(-) create mode 100644 sdf/SdfScanner.hh diff --git a/CMakeLists.txt b/CMakeLists.txt index c69dadc2..4940f6bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -311,12 +311,12 @@ bison_target(VerilogParse ${STA_HOME}/verilog/VerilogParse.yy add_flex_bison_dependency(VerilogLex VerilogParse) # Sdf scan/parse. -flex_target(SdfLex ${STA_HOME}/sdf/SdfLex.ll ${CMAKE_CURRENT_BINARY_DIR}/SdfLex.cc - COMPILE_FLAGS --prefix=SdfLex_ - ) -bison_target(SdfParse ${STA_HOME}/sdf/SdfParse.yy ${CMAKE_CURRENT_BINARY_DIR}/SdfParse.cc - COMPILE_FLAGS --name-prefix=SdfParse_ - ) +flex_target(SdfLex ${STA_HOME}/sdf/SdfLex.ll + ${CMAKE_CURRENT_BINARY_DIR}/SdfLex.cc) +bison_target(SdfParse ${STA_HOME}/sdf/SdfParse.yy + ${CMAKE_CURRENT_BINARY_DIR}/SdfParse.cc + # centos7 bison 3.0.4 < 3.3.0 uses parser_class_name instead of api.parsr.class + COMPILE_FLAGS "-Wno-deprecated") add_flex_bison_dependency(SdfLex SdfParse) # Saif scan/parse. diff --git a/sdf/SdfLex.ll b/sdf/SdfLex.ll index 60940928..33d0a349 100644 --- a/sdf/SdfLex.ll +++ b/sdf/SdfLex.ll @@ -1,5 +1,4 @@ %{ - // OpenSTA, Static Timing Analyzer // Copyright (c) 2025, Parallax Software, Inc. // @@ -27,23 +26,28 @@ #include "util/FlexDisableRegister.hh" #include "sdf/SdfReaderPvt.hh" #include "SdfParse.hh" +#include "sdf/SdfScanner.hh" -#define YY_NO_INPUT +#undef YY_DECL +#define YY_DECL \ +int \ +sta::SdfScanner::lex(sta::SdfParse::semantic_type *const yylval, \ + sta::SdfParse::location_type *loc) -static std::string sdf_token; - -void -sdfFlushBuffer() -{ - YY_FLUSH_BUFFER; -} +// update location on matching +#define YY_USER_ACTION loc->step(); loc->columns(yyleng); +typedef sta::SdfParse::token token; %} -/* %option debug */ +%option c++ +%option yyclass="sta::SdfScanner" +%option prefix="Sdf" %option noyywrap -%option nounput %option never-interactive +%option stack +%option yylineno +/* %option debug */ %x COMMENT %x QUOTE @@ -62,140 +66,139 @@ EOL \r?\n "*/" { BEGIN INITIAL; } . -{EOL} { sta::sdf_reader->incrLine(); } +{EOL} { loc->lines(); loc->step(); } <> { - SdfParse_error("unterminated comment"); + error("unterminated comment"); BEGIN(INITIAL); yyterminate(); } } -"\"" { BEGIN QUOTE; sdf_token.erase(); } +"\"" { BEGIN QUOTE; token_.clear(); } { -"\\". { sdf_token += yytext[1]; } +"\\". { token_ += yytext[1]; } "\"" { BEGIN INITIAL; - SdfParse_lval.string = sta::stringCopy(sdf_token.c_str()); - return QSTRING; + yylval->string = new string(token_); + return token::QSTRING; } -. { sdf_token += yytext[0]; } +. { token_ += yytext[0]; } <> { - SdfParse_error("unterminated quoted string"); + error("unterminated quoted string"); BEGIN(INITIAL); yyterminate(); } } -"//"[^\n]*{EOL} { sta::sdf_reader->incrLine(); } +"//"[^\n]*{EOL} { loc->lines(); loc->step(); } ("-"|"+")?([0-9]*)("."[0-9]+)([eE]("-"|"+")?[0-9]+)? { - SdfParse_lval.number = static_cast(atof(yytext)); - return FNUMBER; + yylval->number = atof(yytext); + return token::FNUMBER; } "+"?[0-9]+ { - SdfParse_lval.integer = atoi(yytext); - return DNUMBER; + yylval->integer = atoi(yytext); + return token::DNUMBER; } ":"|"{"|"}"|"["|"]"|","|"*"|";"|"="|"-"|"+"|"|"|"("|")"|{HCHAR} { return ((int) yytext[0]); } -ABSOLUTE { return ABSOLUTE; } -CELL { return CELL; } -CELLTYPE { return CELLTYPE; } -DATE { return DATE; } -DELAY { return DELAY; } -DELAYFILE { return DELAYFILE; } -DESIGN { return DESIGN; } -DEVICE { return DEVICE; } -DIVIDER { return DIVIDER; } -HOLD { return HOLD; } -INCREMENTAL|INCREMENT { return INCREMENTAL; } -INSTANCE { return INSTANCE; } -INTERCONNECT { return INTERCONNECT; } -IOPATH { return IOPATH; } -NOCHANGE { return NOCHANGE; } -PERIOD { return PERIOD; } -PORT { return PORT; } -PROCESS { return PROCESS; } -PROGRAM { return PROGRAM; } -RECOVERY { return RECOVERY; } -RECREM { return RECREM; } -REMOVAL { return REMOVAL; } -RETAIN { return RETAIN; } -SDFVERSION { return SDFVERSION; } -SETUP { return SETUP; } -SETUPHOLD { return SETUPHOLD; } -SKEW { return SKEW; } -TEMPERATURE { return TEMPERATURE; } -TIMESCALE { return TIMESCALE; } -TIMINGCHECK { return TIMINGCHECK; } -VENDOR { return VENDOR; } -VERSION { return PVERSION; } -VOLTAGE { return VOLTAGE; } -WIDTH { return WIDTH; } -negedge { return NEGEDGE; } -posedge { return POSEDGE; } - -CONDELSE { return CONDELSE; } +ABSOLUTE { return token::ABSOLUTE; } +CELL { return token::CELL; } +CELLTYPE { return token::CELLTYPE; } +DATE { return token::DATE; } +DELAY { return token::DELAY; } +DELAYFILE { return token::DELAYFILE; } +DESIGN { return token::DESIGN; } +DEVICE { return token::DEVICE; } +DIVIDER { return token::DIVIDER; } +HOLD { return token::HOLD; } +INCREMENTAL|INCREMENT { return token::INCREMENTAL; } +INSTANCE { return token::INSTANCE; } +INTERCONNECT { return token::INTERCONNECT; } +IOPATH { return token::IOPATH; } +NOCHANGE { return token::NOCHANGE; } +PERIOD { return token::PERIOD; } +PORT { return token::PORT; } +PROCESS { return token::PROCESS; } +PROGRAM { return token::PROGRAM; } +RECOVERY { return token::RECOVERY; } +RECREM { return token::RECREM; } +REMOVAL { return token::REMOVAL; } +RETAIN { return token::RETAIN; } +SDFVERSION { return token::SDFVERSION; } +SETUP { return token::SETUP; } +SETUPHOLD { return token::SETUPHOLD; } +SKEW { return token::SKEW; } +TEMPERATURE { return token::TEMPERATURE; } +TIMESCALE { return token::TIMESCALE; } +TIMINGCHECK { return token::TIMINGCHECK; } +VENDOR { return token::VENDOR; } +VERSION { return token::PVERSION; } +VOLTAGE { return token::VOLTAGE; } +WIDTH { return token::WIDTH; } +negedge { return token::NEGEDGE; } +posedge { return token::POSEDGE; } +CONDELSE { return token::CONDELSE; } COND { BEGIN COND_EXPR; - sdf_token.erase(); - return COND; + token_.clear(); + return token::COND; } "("{BLANK}*IOPATH { BEGIN INITIAL; - SdfParse_lval.string = sta::stringCopy(sdf_token.c_str()); - return EXPR_OPEN_IOPATH; + yylval->string = new string(token_); + return token::EXPR_OPEN_IOPATH; } "(" { /* Timing check conditions don't allow parens, * so use the paren as a marker for the end of the expr. */ - if (sta::sdf_reader->inTimingCheck()) { + if (reader_->inTimingCheck()) { BEGIN INITIAL; - SdfParse_lval.string= sta::stringCopy(sdf_token.c_str()); - return EXPR_OPEN; - } - else - sdf_token += yytext[0]; + yylval->string = new string(token_); + return token::EXPR_OPEN; } + else + token_ += yytext[0]; +} {BLANK}+{ID}{BLANK}*")" { /* (COND expr port) */ - if (sta::sdf_reader->inTimingCheck()) { + if (reader_->inTimingCheck()) { BEGIN INITIAL; /* remove trailing ")" */ - yytext[strlen(yytext)-1] = '\0'; - sdf_token += yytext; - SdfParse_lval.string= sta::stringCopy(sdf_token.c_str()); + string cond_id(token_); + cond_id += yytext; + yylval->string = new string(cond_id.substr(0, cond_id.size() - 1)); /* No way to pass expr and id separately, so pass them together. */ - return EXPR_ID_CLOSE; + return token::EXPR_ID_CLOSE; } - else - sdf_token += yytext; - } + else + token_ += yytext[0]; +} {BLANK} {} -. { sdf_token += yytext[0]; } +. { token_ += yytext[0]; } {ID} { - SdfParse_lval.string = sta::stringCopy(yytext); - return ID; + yylval->string = new string(yytext); + return token::ID; } -{EOL} { sta::sdf_reader->incrLine(); } +{EOL} { loc->lines(); loc->step(); } {BLANK} { /* Ignore blanks. */ } diff --git a/sdf/SdfParse.yy b/sdf/SdfParse.yy index 593e6aa6..11ef84a3 100644 --- a/sdf/SdfParse.yy +++ b/sdf/SdfParse.yy @@ -1,5 +1,3 @@ -%{ - // OpenSTA, Static Timing Analyzer // Copyright (c) 2025, Parallax Software, Inc. // @@ -24,25 +22,41 @@ // // This notice may not be removed or altered from any source distribution. +%{ #include #include "sdf/SdfReaderPvt.hh" +#include "sdf/SdfScanner.hh" -int SdfLex_lex(); -#define SdfParse_lex SdfLex_lex -// use yacc generated parser errors -#define YYERROR_VERBOSE +#undef yylex +#define yylex scanner->lex -#define YYDEBUG 1 +// warning: variable 'yynerrs_' set but not used +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#define loc_line(loc) loc.begin.line %} +%require "3.0" +%skeleton "lalr1.cc" +%debug +%define api.namespace {sta} +%locations +%define parse.assert +%parse-param { SdfScanner *scanner } +%parse-param { SdfReader *reader } + +// bison 3.0.4 for centos7 +%define parser_class_name {SdfParse} +// bison 3.3.2 +//%define api.parser.class {SdfParse} + // expected shift/reduce conflicts %expect 4 %union { char character; - const char *string; + std::string *string; float number; float *number_ptr; int integer; @@ -72,10 +86,10 @@ int SdfLex_lex(); %type port_transition %type hchar -%start file +// Used by error recovery. +%destructor { delete $$; } QSTRING -%{ -%} +%start file %% @@ -90,23 +104,22 @@ header: // technically the ordering of these statements is fixed by the spec header_stmt: - '(' SDFVERSION QSTRING ')' { sta::stringDelete($3); } -| '(' DESIGN QSTRING ')' { sta::stringDelete($3); } -| '(' DATE QSTRING ')' { sta::stringDelete($3); } -| '(' VENDOR QSTRING ')' { sta::stringDelete($3); } -| '(' PROGRAM QSTRING ')' { sta::stringDelete($3); } -| '(' PVERSION QSTRING ')' { sta::stringDelete($3); } -| '(' DIVIDER hchar ')' { sta::sdf_reader->setDivider($3); } -| '(' VOLTAGE triple ')' { sta::sdf_reader->deleteTriple($3); } + '(' SDFVERSION QSTRING ')' { delete $3; } +| '(' DESIGN QSTRING ')' { delete $3; } +| '(' DATE QSTRING ')' { delete $3; } +| '(' VENDOR QSTRING ')' { delete $3; } +| '(' PROGRAM QSTRING ')' { delete $3; } +| '(' PVERSION QSTRING ')' { delete $3; } +| '(' DIVIDER hchar ')' { reader->setDivider($3); } +| '(' VOLTAGE triple ')' { reader->deleteTriple($3); } | '(' VOLTAGE NUMBER ')' | '(' VOLTAGE ')' // Illegal SDF (from OC). -| '(' PROCESS QSTRING ')' { sta::stringDelete($3); } +| '(' PROCESS QSTRING ')' { delete $3; } | '(' PROCESS ')' // Illegal SDF (from OC). | '(' TEMPERATURE NUMBER ')' -| '(' TEMPERATURE triple ')' { sta::sdf_reader->deleteTriple($3); } +| '(' TEMPERATURE triple ')' { reader->deleteTriple($3); } | '(' TEMPERATURE ')' // Illegal SDF (from OC). -| '(' TIMESCALE NUMBER ID ')' - { sta::sdf_reader->setTimescale($3, $4); } +| '(' TIMESCALE NUMBER ID ')' { reader->setTimescale($3, $4); } ; hchar: @@ -116,7 +129,7 @@ hchar: { $$ = '.'; } ; -number_opt: { $$ = NULL; } +number_opt: { $$ = nullptr; } | NUMBER { $$ = new float($1); } ; @@ -127,21 +140,21 @@ cells: cell: '(' CELL celltype cell_instance timing_specs ')' - { sta::sdf_reader->cellFinish(); } + { reader->cellFinish(); } ; celltype: '(' CELLTYPE QSTRING ')' - { sta::sdf_reader->setCell($3); } + { reader->setCell($3); } ; cell_instance: '(' INSTANCE ')' - { sta::sdf_reader->setInstance(NULL); } + { reader->setInstance(nullptr); } | '(' INSTANCE '*' ')' - { sta::sdf_reader->setInstanceWildcard(); } + { reader->setInstanceWildcard(); } | '(' INSTANCE path ')' - { sta::sdf_reader->setInstance($3); } + { reader->setInstance($3); } ; timing_specs: @@ -160,10 +173,10 @@ deltypes: deltype: '(' ABSOLUTE - { sta::sdf_reader->setInIncremental(false); } + { reader->setInIncremental(false); } del_defs ')' | '(' INCREMENTAL - { sta::sdf_reader->setInIncremental(true); } + { reader->setInIncremental(true); } del_defs ')' ; @@ -173,28 +186,28 @@ del_defs: path: ID - { $$ = sta::sdf_reader->unescaped($1); } + { $$ = reader->unescaped($1); } | path hchar ID - { $$ = sta::sdf_reader->makePath($1, sta::sdf_reader->unescaped($3)); } + { $$ = reader->makePath($1, reader->unescaped($3)); } ; del_def: '(' IOPATH port_spec port_instance retains delval_list ')' - { sta::sdf_reader->iopath($3, $4, $6, NULL, false); } + { reader->iopath($3, $4, $6, nullptr, false); } | '(' CONDELSE '(' IOPATH port_spec port_instance retains delval_list ')' ')' - { sta::sdf_reader->iopath($5, $6, $8, NULL, true); } + { reader->iopath($5, $6, $8, nullptr, true); } | '(' COND EXPR_OPEN_IOPATH port_spec port_instance retains delval_list ')' ')' - { sta::sdf_reader->iopath($4, $5, $7, $3, false); } + { reader->iopath($4, $5, $7, $3, false); } | '(' INTERCONNECT port_instance port_instance delval_list ')' - { sta::sdf_reader->interconnect($3, $4, $5); } + { reader->interconnect($3, $4, $5); } | '(' PORT port_instance delval_list ')' - { sta::sdf_reader->port($3, $4); } + { reader->port($3, $4); } | '(' DEVICE delval_list ')' - { sta::sdf_reader->device($3); } + { reader->device($3); } | '(' DEVICE port_instance delval_list ')' - { sta::sdf_reader->device($3, $4); } + { reader->device($3, $4); } ; retains: @@ -204,12 +217,12 @@ retains: retain: '(' RETAIN delval_list ')' - { sta::sdf_reader->deleteTripleSeq($3); } + { reader->deleteTripleSeq($3); } ; delval_list: value - { $$ = sta::sdf_reader->makeTripleSeq(); $$->push_back($1); } + { $$ = reader->makeTripleSeq(); $$->push_back($1); } | delval_list value { $1->push_back($2); $$ = $1; } ; @@ -219,80 +232,77 @@ tchk_defs: ; tchk_def: - '(' SETUP { sta::sdf_reader->setInTimingCheck(true); } + '(' SETUP { reader->setInTimingCheck(true); } port_tchk port_tchk value ')' - { sta::sdf_reader->timingCheck(sta::TimingRole::setup(), $4, $5, $6); - sta::sdf_reader->setInTimingCheck(false); + { reader->timingCheck(sta::TimingRole::setup(), $4, $5, $6); + reader->setInTimingCheck(false); } -| '(' HOLD { sta::sdf_reader->setInTimingCheck(true); } +| '(' HOLD { reader->setInTimingCheck(true); } port_tchk port_tchk value ')' - { sta::sdf_reader->timingCheck(sta::TimingRole::hold(), $4, $5, $6); - sta::sdf_reader->setInTimingCheck(false); + { reader->timingCheck(sta::TimingRole::hold(), $4, $5, $6); + reader->setInTimingCheck(false); } -| '(' SETUPHOLD { sta::sdf_reader->setInTimingCheck(true); } +| '(' SETUPHOLD { reader->setInTimingCheck(true); } port_tchk port_tchk value value ')' - { sta::sdf_reader->timingCheckSetupHold($4, $5, $6, $7); - sta::sdf_reader->setInTimingCheck(false); + { reader->timingCheckSetupHold($4, $5, $6, $7); + reader->setInTimingCheck(false); } -| '(' RECOVERY { sta::sdf_reader->setInTimingCheck(true); } +| '(' RECOVERY { reader->setInTimingCheck(true); } port_tchk port_tchk value ')' - { sta::sdf_reader->timingCheck(sta::TimingRole::recovery(),$4,$5,$6); - sta::sdf_reader->setInTimingCheck(false); + { reader->timingCheck(sta::TimingRole::recovery(),$4,$5,$6); + reader->setInTimingCheck(false); } -| '(' REMOVAL { sta::sdf_reader->setInTimingCheck(true); } +| '(' REMOVAL { reader->setInTimingCheck(true); } port_tchk port_tchk value ')' - { sta::sdf_reader->timingCheck(sta::TimingRole::removal(),$4,$5,$6); - sta::sdf_reader->setInTimingCheck(false); + { reader->timingCheck(sta::TimingRole::removal(),$4,$5,$6); + reader->setInTimingCheck(false); } -| '(' RECREM { sta::sdf_reader->setInTimingCheck(true); } +| '(' RECREM { reader->setInTimingCheck(true); } port_tchk port_tchk value value ')' - { sta::sdf_reader->timingCheckRecRem($4, $5, $6, $7); - sta::sdf_reader->setInTimingCheck(false); + { reader->timingCheckRecRem($4, $5, $6, $7); + reader->setInTimingCheck(false); } -| '(' SKEW { sta::sdf_reader->setInTimingCheck(true); } +| '(' SKEW { reader->setInTimingCheck(true); } port_tchk port_tchk value ')' // Sdf skew clk/ref are reversed from liberty. - { sta::sdf_reader->timingCheck(sta::TimingRole::skew(),$5,$4,$6); - sta::sdf_reader->setInTimingCheck(false); + { reader->timingCheck(sta::TimingRole::skew(),$5,$4,$6); + reader->setInTimingCheck(false); } -| '(' WIDTH { sta::sdf_reader->setInTimingCheck(true); } +| '(' WIDTH { reader->setInTimingCheck(true); } port_tchk value ')' - { sta::sdf_reader->timingCheckWidth($4, $5); - sta::sdf_reader->setInTimingCheck(false); + { reader->timingCheckWidth($4, $5); + reader->setInTimingCheck(false); } -| '(' PERIOD { sta::sdf_reader->setInTimingCheck(true); } +| '(' PERIOD { reader->setInTimingCheck(true); } port_tchk value ')' - { sta::sdf_reader->timingCheckPeriod($4, $5); - sta::sdf_reader->setInTimingCheck(false); + { reader->timingCheckPeriod($4, $5); + reader->setInTimingCheck(false); } -| '(' NOCHANGE { sta::sdf_reader->setInTimingCheck(true); } +| '(' NOCHANGE { reader->setInTimingCheck(true); } port_tchk port_tchk value value ')' - { sta::sdf_reader->timingCheckNochange($4, $5, $6, $7); - sta::sdf_reader->setInTimingCheck(false); + { reader->timingCheckNochange($4, $5, $6, $7); + reader->setInTimingCheck(false); } ; port: ID - { $$ = sta::sdf_reader->unescaped($1); } + { $$ = reader->unescaped($1); } | ID '[' DNUMBER ']' - { const char *bus_name = sta::sdf_reader->unescaped($1); - $$ = sta::stringPrint("%s[%d]", bus_name, $3); - sta::stringDelete(bus_name); - } + { $$ = reader->makeBusName($1, $3); } ; port_instance: port | path hchar port - { $$ = sta::sdf_reader->makePath($1, $3); } + { $$ = reader->makePath($1, $3); } ; port_spec: port_instance - { $$=sta::sdf_reader->makePortSpec(sta::Transition::riseFall(),$1,NULL); } + { $$=reader->makePortSpec(sta::Transition::riseFall(),$1,nullptr); } | '(' port_transition port_instance ')' - { $$ = sta::sdf_reader->makePortSpec($2, $3, NULL); } + { $$ = reader->makePortSpec($2, $3, nullptr); } ; port_transition: @@ -303,19 +313,19 @@ port_transition: port_tchk: port_spec | '(' COND EXPR_ID_CLOSE - { $$ = sta::sdf_reader->makeCondPortSpec($3); } + { $$ = reader->makeCondPortSpec($3); } | '(' COND EXPR_OPEN port_transition port_instance ')' ')' - { $$ = sta::sdf_reader->makePortSpec($4, $5, $3); } + { $$ = reader->makePortSpec($4, $5, $3); } ; value: '(' ')' { - $$ = sta::sdf_reader->makeTriple(); + $$ = reader->makeTriple(); } | '(' NUMBER ')' { - $$ = sta::sdf_reader->makeTriple($2); + $$ = reader->makeTriple($2); } | '(' triple ')' { $$ = $2; } ; @@ -324,17 +334,17 @@ triple: NUMBER ':' number_opt ':' number_opt { float *fp = new float($1); - $$ = sta::sdf_reader->makeTriple(fp, $3, $5); + $$ = reader->makeTriple(fp, $3, $5); } | number_opt ':' NUMBER ':' number_opt { float *fp = new float($3); - $$ = sta::sdf_reader->makeTriple($1, fp, $5); + $$ = reader->makeTriple($1, fp, $5); } | number_opt ':' number_opt ':' NUMBER { float *fp = new float($5); - $$ = sta::sdf_reader->makeTriple($1, $3, fp); + $$ = reader->makeTriple($1, $3, fp); } ; diff --git a/sdf/SdfReader.cc b/sdf/SdfReader.cc index 415f10fe..768f093e 100644 --- a/sdf/SdfReader.cc +++ b/sdf/SdfReader.cc @@ -27,8 +27,10 @@ #include #include +#include "Zlib.hh" #include "Error.hh" #include "Debug.hh" +#include "Stats.hh" #include "Report.hh" #include "MinMax.hh" #include "TimingArc.hh" @@ -39,13 +41,12 @@ #include "DcalcAnalysisPt.hh" #include "Sdc.hh" #include "sdf/SdfReaderPvt.hh" - -extern int -SdfParse_parse(); -extern int SdfParse_debug; +#include "sdf/SdfScanner.hh" namespace sta { +using std::to_string; + class SdfTriple { public: @@ -63,22 +64,20 @@ private: class SdfPortSpec { public: - SdfPortSpec(Transition *tr, - const char *port, - const char *cond); + SdfPortSpec(const Transition *tr, + const string *port, + const string *cond); ~SdfPortSpec(); - const char *port() const { return port_; } - Transition *transition() const { return tr_; } - const char *cond() const { return cond_; } + const string *port() const { return port_; } + const Transition *transition() const { return tr_; } + const string *cond() const { return cond_; } private: - Transition *tr_; - const char *port_; - const char *cond_; // timing checks only + const Transition *tr_; + const string *port_; + const string *cond_; // timing checks only }; -SdfReader *sdf_reader = nullptr; - bool readSdf(const char *filename, const char *path, @@ -95,9 +94,7 @@ readSdf(const char *filename, sta->sdc()->analysisType(), unescaped_dividers, incremental_only, cond_use, sta); - sdf_reader = &reader; bool success = reader.read(); - sdf_reader = nullptr; return success; } @@ -121,7 +118,6 @@ SdfReader::SdfReader(const char *filename, unescaped_dividers_(unescaped_dividers), is_incremental_only_(is_incremental_only), cond_use_(cond_use), - line_(1), divider_('/'), escape_('\\'), instance_(nullptr), @@ -143,13 +139,14 @@ SdfReader::~SdfReader() bool SdfReader::read() { - // Use zlib to uncompress gzip'd files automagically. - stream_ = gzopen(filename_, "rb"); - //::SdfParse_debug = 1; - if (stream_) { - // yyparse returns 0 on success. - bool success = (::SdfParse_parse() == 0); - gzclose(stream_); + gzstream::igzstream stream(filename_); + if (stream.good()) { + Stats stats(debug_, report_); + SdfScanner scanner(&stream, filename_, this, report_); + scanner_ = &scanner; + SdfParse parser(&scanner, this); + bool success = (parser.parse() == 0); + stats.report("Read sdf"); return success; } else @@ -164,28 +161,28 @@ SdfReader::setDivider(char divider) void SdfReader::setTimescale(float multiplier, - const char *units) + const string *units) { if (multiplier == 1.0 || multiplier == 10.0 || multiplier == 100.0) { - if (stringEq(units, "us")) + if (*units == "us") timescale_ = multiplier * 1E-6F; - else if (stringEq(units, "ns")) + else if (*units == "ns") timescale_ = multiplier * 1E-9F; - else if (stringEq(units, "ps")) + else if (*units == "ps") timescale_ = multiplier * 1E-12F; else sdfError(180, "TIMESCALE units not us, ns, or ps."); } else sdfError(181, "TIMESCALE multiplier not 1, 10, or 100."); - stringDelete(units); + delete units; } void -SdfReader::interconnect(const char *from_pin_name, - const char *to_pin_name, +SdfReader::interconnect(const string *from_pin_name, + const string *to_pin_name, SdfTripleSeq *triples) { // Ignore non-incremental annotations in incremental only mode. @@ -202,38 +199,41 @@ SdfReader::interconnect(const char *from_pin_name, bool to_is_hier = network_->isHierarchical(to_pin); if (from_is_hier || to_is_hier) { if (from_is_hier) - sdfError(182, "pin %s is a hierarchical pin.", from_pin_name); + sdfError(182, "pin %s is a hierarchical pin.", + from_pin_name->c_str()); if (to_is_hier) - sdfError(183, "pin %s is a hierarchical pin.", to_pin_name); + sdfError(183, "pin %s is a hierarchical pin.", + to_pin_name->c_str()); } else sdfWarn(184, "INTERCONNECT from %s to %s not found.", - from_pin_name, to_pin_name); + from_pin_name->c_str(), + to_pin_name->c_str()); } } else { if (from_pin == nullptr) - sdfWarn(185, "pin %s not found.", from_pin_name); + sdfWarn(185, "pin %s not found.", from_pin_name->c_str()); if (to_pin == nullptr) - sdfWarn(186, "pin %s not found.", to_pin_name); + sdfWarn(186, "pin %s not found.", to_pin_name->c_str()); } } - stringDelete(from_pin_name); - stringDelete(to_pin_name); + delete from_pin_name; + delete to_pin_name; deleteTripleSeq(triples); } void -SdfReader::port(const char *to_pin_name, +SdfReader::port(const string *to_pin_name, SdfTripleSeq *triples) { // Ignore non-incremental annotations in incremental only mode. if (!(is_incremental_only_ && !in_incremental_)) { Pin *to_pin = (instance_) - ? network_->findPinRelative(instance_, to_pin_name) - : network_->findPin(to_pin_name); + ? network_->findPinRelative(instance_, to_pin_name->c_str()) + : network_->findPin(to_pin_name->c_str()); if (to_pin == nullptr) - sdfWarn(187, "pin %s not found.", to_pin_name); + sdfWarn(187, "pin %s not found.", to_pin_name->c_str()); else { Vertex *vertex = graph_->pinLoadVertex(to_pin); VertexInEdgeIterator edge_iter(vertex, graph_); @@ -244,7 +244,7 @@ SdfReader::port(const char *to_pin_name, } } } - stringDelete(to_pin_name); + delete to_pin_name; deleteTripleSeq(triples); } @@ -295,16 +295,16 @@ SdfReader::setEdgeDelays(Edge *edge, } void -SdfReader::setCell(const char *cell_name) +SdfReader::setCell(const string *cell_name) { cell_name_ = cell_name; } void -SdfReader::setInstance(const char *instance_name) +SdfReader::setInstance(const string *instance_name) { if (instance_name) { - if (stringEq(instance_name, "*")) { + if (*instance_name == "*") { notSupported("INSTANCE wildcards"); instance_ = nullptr; } @@ -313,17 +313,17 @@ SdfReader::setInstance(const char *instance_name) if (instance_) { Cell *inst_cell = network_->cell(instance_); const char *inst_cell_name = network_->name(inst_cell); - if (cell_name_ && !stringEqual(inst_cell_name, cell_name_)) + if (cell_name_ && !stringEq(inst_cell_name, cell_name_->c_str())) sdfWarn(190, "instance %s cell %s does not match enclosing cell %s.", - instance_name, + instance_name->c_str(), inst_cell_name, - cell_name_); + cell_name_->c_str()); } } } else instance_ = nullptr; - stringDelete(instance_name); + delete instance_name; } void @@ -336,26 +336,26 @@ SdfReader::setInstanceWildcard() void SdfReader::cellFinish() { - stringDelete(cell_name_); + delete cell_name_; cell_name_ = nullptr; instance_ = nullptr; } void SdfReader::iopath(SdfPortSpec *from_edge, - const char *to_port_name, + const string *to_port_name, SdfTripleSeq *triples, - const char *cond, + const string *cond, bool condelse) { if (instance_) { - const char *from_port_name = from_edge->port(); + const string *from_port_name = from_edge->port(); Cell *cell = network_->cell(instance_); Port *from_port = findPort(cell, from_port_name); Port *to_port = findPort(cell, to_port_name); if (from_port && to_port) { - Pin *from_pin = network_->findPin(instance_, from_port_name); - Pin *to_pin = network_->findPin(instance_, to_port_name); + Pin *from_pin = network_->findPin(instance_, from_port); + Pin *to_pin = network_->findPin(instance_, to_port); // Do not report an error if the pin is not found because the // instance may not have the pin. if (from_pin && to_pin) { @@ -405,27 +405,27 @@ SdfReader::iopath(SdfPortSpec *from_edge, if (!matched) sdfWarn(191, "cell %s IOPATH %s -> %s not found.", network_->cellName(instance_), - from_port_name, - to_port_name); + from_port_name->c_str(), + to_port_name->c_str()); } } } } - stringDelete(to_port_name); - deletePortSpec(from_edge); + delete to_port_name; + delete from_edge; deleteTripleSeq(triples); - stringDelete(cond); + delete cond; } Port * SdfReader::findPort(const Cell *cell, - const char *port_name) + const string *port_name) { - Port *port = network_->findPort(cell, port_name); + Port *port = network_->findPort(cell, port_name->c_str()); if (port == nullptr) sdfWarn(194, "instance %s port %s not found.", network_->pathName(instance_), - port_name); + port_name->c_str()); return port; } @@ -436,16 +436,16 @@ SdfReader::timingCheck(TimingRole *role, SdfTriple *triple) { if (instance_) { - const char *data_port_name = data_edge->port(); - const char *clk_port_name = clk_edge->port(); + const string *data_port_name = data_edge->port(); + const string *clk_port_name = clk_edge->port(); Cell *cell = network_->cell(instance_); Port *data_port = findPort(cell, data_port_name); Port *clk_port = findPort(cell, clk_port_name); if (data_port && clk_port) timingCheck1(role, data_port, data_edge, clk_port, clk_edge, triple); } - deletePortSpec(data_edge); - deletePortSpec(clk_edge); + delete data_edge; + delete clk_edge; deleteTriple(triple); } @@ -514,8 +514,8 @@ SdfReader::annotateCheckEdges(Pin *data_pin, bool match_generic) { bool matched = false; - const char *cond_start = data_edge->cond(); - const char *cond_end = clk_edge->cond(); + const string *cond_start = data_edge->cond(); + const string *cond_end = clk_edge->cond(); // Timing check graph edges from clk to data. Vertex *to_vertex = graph_->pinLoadVertex(data_pin); // Fanin < fanout, so search for driver from load. @@ -556,11 +556,11 @@ SdfReader::timingCheckWidth(SdfPortSpec *edge, // Ignore non-incremental annotations in incremental only mode. if (!(is_incremental_only_ && !in_incremental_) && instance_) { - const char *port_name = edge->port(); + const string *port_name = edge->port(); Cell *cell = network_->cell(instance_); Port *port = findPort(cell, port_name); if (port) { - Pin *pin = network_->findPin(instance_, port_name); + Pin *pin = network_->findPin(instance_, port_name->c_str()); if (pin) { const RiseFall *rf = edge->transition()->asRiseFall(); Edge *edge; @@ -571,7 +571,7 @@ SdfReader::timingCheckWidth(SdfPortSpec *edge, } } } - deletePortSpec(edge); + delete edge; deleteTriple(triple); } @@ -603,8 +603,8 @@ SdfReader::timingCheckSetupHold1(SdfPortSpec *data_edge, TimingRole *setup_role, TimingRole *hold_role) { - const char *data_port_name = data_edge->port(); - const char *clk_port_name = clk_edge->port(); + const string *data_port_name = data_edge->port(); + const string *clk_port_name = clk_edge->port(); Cell *cell = network_->cell(instance_); Port *data_port = findPort(cell, data_port_name); Port *clk_port = findPort(cell, clk_port_name); @@ -612,8 +612,8 @@ SdfReader::timingCheckSetupHold1(SdfPortSpec *data_edge, timingCheck1(setup_role, data_port, data_edge, clk_port, clk_edge, setup_triple); timingCheck1(hold_role, data_port, data_edge, clk_port, clk_edge, hold_triple); } - deletePortSpec(data_edge); - deletePortSpec(clk_edge); + delete data_edge; + delete clk_edge; deleteTriple(setup_triple); deleteTriple(hold_triple); } @@ -625,12 +625,12 @@ SdfReader::timingCheckPeriod(SdfPortSpec *edge, // Ignore non-incremental annotations in incremental only mode. if (!(is_incremental_only_ && !in_incremental_) && instance_) { - const char *port_name = edge->port(); + const string *port_name = edge->port(); Cell *cell = network_->cell(instance_); Port *port = findPort(cell, port_name); if (port) { // Edge specifier is ignored for period checks. - Pin *pin = network_->findPin(instance_, port_name); + Pin *pin = network_->findPin(instance_, port_name->c_str()); if (pin) { float **values = triple->values(); float *value_ptr = values[triple_min_index_]; @@ -648,7 +648,7 @@ SdfReader::timingCheckPeriod(SdfPortSpec *edge, } } } - deletePortSpec(edge); + delete edge; deleteTriple(triple); } @@ -659,8 +659,8 @@ SdfReader::timingCheckNochange(SdfPortSpec *data_edge, SdfTriple *after_triple) { notSupported("NOCHANGE"); - deletePortSpec(data_edge); - deletePortSpec(clk_edge); + delete data_edge; + delete clk_edge; deleteTriple(before_triple); deleteTriple(after_triple); } @@ -682,7 +682,7 @@ SdfReader::device(SdfTripleSeq *triples) } void -SdfReader::device(const char *to_port_name, +SdfReader::device(const string *to_port_name, SdfTripleSeq *triples) { // Ignore non-incremental annotations in incremental only mode. @@ -691,11 +691,11 @@ SdfReader::device(const char *to_port_name, Cell *cell = network_->cell(instance_); Port *to_port = findPort(cell, to_port_name); if (to_port) { - Pin *to_pin = network_->findPin(instance_, to_port_name); + Pin *to_pin = network_->findPin(instance_, to_port_name->c_str()); setDevicePinDelays(to_pin, triples); } } - stringDelete(to_port_name); + delete to_port_name; deleteTripleSeq(triples); } @@ -798,7 +798,7 @@ SdfReader::setEdgeArcDelaysCondUse(Edge *edge, } bool -SdfReader::condMatch(const char *sdf_cond, +SdfReader::condMatch(const string *sdf_cond, const char *lib_cond) { // If the sdf is not conditional it matches any library condition. @@ -806,7 +806,7 @@ SdfReader::condMatch(const char *sdf_cond, return true; else if (sdf_cond && lib_cond) { // Match sdf_cond and lib_cond ignoring blanks. - const char *c1 = sdf_cond; + const char *c1 = sdf_cond->c_str(); const char *c2 = lib_cond; char ch1, ch2; do { @@ -827,44 +827,35 @@ SdfReader::condMatch(const char *sdf_cond, SdfPortSpec * SdfReader::makePortSpec(Transition *tr, - const char *port, - const char *cond) + const string *port, + const string *cond) { - SdfPortSpec *port_spec = new SdfPortSpec(tr, port, cond); - stringDelete(port); - stringDelete(cond); - return port_spec; + return new SdfPortSpec(tr, port, cond); } SdfPortSpec * -SdfReader::makeCondPortSpec(const char *cond_port) +SdfReader::makeCondPortSpec(const string *cond_port) { // Search from end to find port name because condition may contain spaces. - string cond_port1(cond_port); + string cond_port1(*cond_port); trimRight(cond_port1); auto port_idx = cond_port1.find_last_of(" "); if (port_idx != cond_port1.npos) { - string port1 = cond_port1.substr(port_idx + 1); + string *port1 = new string(cond_port1.substr(port_idx + 1)); auto cond_end = cond_port1.find_last_not_of(" ", port_idx); if (cond_end != cond_port1.npos) { - string cond1 = cond_port1.substr(0, cond_end + 1); + string *cond1 = new string(cond_port1.substr(0, cond_end + 1)); SdfPortSpec *port_spec = new SdfPortSpec(Transition::riseFall(), - port1.c_str(), - cond1.c_str()); - stringDelete(cond_port); + port1, + cond1); + delete cond_port; return port_spec; } } - stringDelete(cond_port); + delete cond_port; return nullptr; } -void -SdfReader::deletePortSpec(SdfPortSpec *edge) -{ - delete edge; -} - SdfTripleSeq * SdfReader::makeTripleSeq() { @@ -925,91 +916,70 @@ SdfReader::setInIncremental(bool incr) in_incremental_ = incr; } -const char * -SdfReader::unescaped(const char *token) +string * +SdfReader::unescaped(const string *token) { char path_escape = network_->pathEscape(); char path_divider = network_->pathDivider(); - char *unescaped = new char[strlen(token) + 1]; - char *u = unescaped; - size_t token_length = strlen(token); - + size_t token_length = token->size(); + string *unescaped = new string; for (size_t i = 0; i < token_length; i++) { - char ch = token[i]; + char ch = (*token)[i]; if (ch == escape_) { - char next_ch = token[i + 1]; + char next_ch = (*token)[i + 1]; if (next_ch == divider_) { // Escaped divider. // Translate sdf escape to network escape. - *u++ = path_escape; + *unescaped += path_escape; // Translate sdf divider to network divider. - *u++ = path_divider; + *unescaped += path_divider; } else if (next_ch == '[' || next_ch == ']' || next_ch == escape_) { // Escaped bus bracket or escape. // Translate sdf escape to network escape. - *u++ = path_escape; - *u++ = next_ch; + *unescaped += path_escape; + *unescaped += next_ch; } else // Escaped non-divider character. - *u++ = next_ch; + *unescaped += next_ch; i++; } else // Just the normal noises. - *u++ = ch; + *unescaped += ch; } - *u = '\0'; - debugPrint(debug_, "sdf_name", 1, "token %s -> %s", token, unescaped); - stringDelete(token); + debugPrint(debug_, "sdf_name", 1, "unescape %s -> %s", + token->c_str(), + unescaped->c_str()); + delete token; return unescaped; } -// Translate sdf divider to network divider. -char * -SdfReader::makePath(const char *head, - const char *tail) +string * +SdfReader::makePath(const string *head, + const string *tail) { - char *path = stringPrint("%s%c%s", - head, - network_->pathDivider(), - tail); - sta::stringDelete(head); - sta::stringDelete(tail); + string *path = new string(*head); + *path += network_->pathDivider(); + *path += *tail; + delete head; + delete tail; return path; } -void -SdfReader::incrLine() +string * +SdfReader::makeBusName(string *base_name, + int index) { - line_++; -} - -void -SdfReader::getChars(char *buf, - size_t &result, - size_t max_size) -{ - char *status = gzgets(stream_, buf, max_size); - if (status == Z_NULL) - result = 0; // YY_nullptr - else - result = strlen(buf); -} - -void -SdfReader::getChars(char *buf, - int &result, - size_t max_size) -{ - char *status = gzgets(stream_, buf, max_size); - if (status == Z_NULL) - result = 0; // YY_nullptr - else - result = strlen(buf); + string *bus_name = unescaped(base_name); + *bus_name += '['; + *bus_name += to_string(index); + *bus_name += ']'; + delete base_name; + return bus_name; } void @@ -1024,7 +994,7 @@ SdfReader::sdfWarn(int id, { va_list args; va_start(args, fmt); - report_->vfileWarn(id, filename_, line_, fmt, args); + report_->vfileWarn(id, filename_, scanner_->lineno(), fmt, args); va_end(args); } @@ -1034,35 +1004,35 @@ SdfReader::sdfError(int id, { va_list args; va_start(args, fmt); - report_->vfileError(id, filename_, line_, fmt, args); + report_->vfileError(id, filename_, scanner_->lineno(), fmt, args); va_end(args); } Pin * -SdfReader::findPin(const char *name) +SdfReader::findPin(const string *name) { if (path_) { - string path_name = path_; + string path_name(path_); path_name += divider_; - path_name += name; + path_name += *name; Pin *pin = network_->findPin(path_name.c_str()); return pin; } else - return network_->findPin(name); + return network_->findPin(name->c_str()); } Instance * -SdfReader::findInstance(const char *name) +SdfReader::findInstance(const string *name) { string inst_name; if (path_) { inst_name = path_; inst_name += divider_; - inst_name += name; + inst_name += *name; } else - inst_name = name; + inst_name = *name; Instance *inst = network_->findInstance(inst_name.c_str()); if (inst == nullptr) sdfWarn(195, "instance %s not found.", inst_name.c_str()); @@ -1071,19 +1041,19 @@ SdfReader::findInstance(const char *name) //////////////////////////////////////////////////////////////// -SdfPortSpec::SdfPortSpec(Transition *tr, - const char *port, - const char *cond) : +SdfPortSpec::SdfPortSpec(const Transition *tr, + const string *port, + const string *cond) : tr_(tr), - port_(stringCopy(port)), - cond_(stringCopy(cond)) + port_(port), + cond_(cond) { } SdfPortSpec::~SdfPortSpec() { - stringDelete(port_); - stringDelete(cond_); + delete port_; + delete cond_; } //////////////////////////////////////////////////////////////// @@ -1114,16 +1084,32 @@ SdfTriple::hasValue() const return values_[0] || values_[1] || values_[2]; } -} // namespace +//////////////////////////////////////////////////////////////// -// Global namespace - -void sdfFlushBuffer(); - -int -SdfParse_error(const char *msg) +SdfScanner::SdfScanner(std::istream *stream, + const char *filename, + SdfReader *reader, + Report *report) : + yyFlexLexer(stream), + filename_(filename), + reader_(reader), + report_(report) { - sdfFlushBuffer(); - sta::sdf_reader->sdfError(196, "%s.\n", msg); - return 0; } + +void +SdfScanner::error(const char *msg) +{ + report_->fileError(1866, filename_, lineno(), "%s", msg); +} + +//////////////////////////////////////////////////////////////// + +void +SdfParse::error(const location_type &loc, + const string &msg) +{ + reader->report()->fileError(164,reader->filename(),loc.begin.line,"%s",msg.c_str()); +} + +} // namespace diff --git a/sdf/SdfReaderPvt.hh b/sdf/SdfReaderPvt.hh index 437ed212..b70b80e8 100644 --- a/sdf/SdfReaderPvt.hh +++ b/sdf/SdfReaderPvt.hh @@ -24,7 +24,6 @@ #pragma once -#include "Zlib.hh" #include "Vector.hh" #include "TimingRole.hh" #include "Transition.hh" @@ -34,20 +33,12 @@ #include "SdcClass.hh" #include "StaState.hh" -// Header for SdfReader.cc to communicate with SdfLex.cc, SdfParse.cc - -// global namespace - -#define YY_INPUT(buf,result,max_size) \ - sta::sdf_reader->getChars(buf, result, max_size) -int -SdfParse_error(const char *msg); - namespace sta { class Report; class SdfTriple; class SdfPortSpec; +class SdfScanner; typedef Vector SdfTripleSeq; @@ -67,7 +58,8 @@ public: bool read(); void setDivider(char divider); - void setTimescale(float multiplier, const char *units); + void setTimescale(float multiplier, + const string *units); void setPortDeviceDelay(Edge *edge, SdfTripleSeq *triples, bool from_trans); @@ -88,17 +80,17 @@ public: int triple_index, int arc_delay_index, const MinMax *min_max); - void setInstance(const char *instance_name); + void setInstance(const string *instance_name); void setInstanceWildcard(); void cellFinish(); - void setCell(const char *cell_name); - void interconnect(const char *from_pin_name, - const char *to_pin_name, + void setCell(const string *cell_name); + void interconnect(const string *from_pin_name, + const string *to_pin_name, SdfTripleSeq *triples); void iopath(SdfPortSpec *from_edge, - const char *to_port_name, + const string *to_port_name, SdfTripleSeq *triples, - const char *cond, + const string *cond, bool condelse); void timingCheck(TimingRole *role, SdfPortSpec *data_edge, @@ -126,10 +118,10 @@ public: SdfPortSpec *clk_edge, SdfTriple *before_triple, SdfTriple *after_triple); - void port(const char *to_pin_name, + void port(const string *to_pin_name, SdfTripleSeq *triples); void device(SdfTripleSeq *triples); - void device(const char *to_pin_name, + void device(const string *to_pin_name, SdfTripleSeq *triples); SdfTriple *makeTriple(); @@ -141,29 +133,20 @@ public: SdfTripleSeq *makeTripleSeq(); void deleteTripleSeq(SdfTripleSeq *triples); SdfPortSpec *makePortSpec(Transition *tr, - const char *port, - const char *cond); - SdfPortSpec *makeCondPortSpec(const char *cond_port); - const char *unescaped(const char *token); - char *makePath(const char *head, - const char *tail); + const string *port, + const string *cond); + SdfPortSpec *makeCondPortSpec(const string *cond_port); + string *unescaped(const string *token); + string *makePath(const string *head, + const string *tail); // Parser state used to control lexer for COND handling. bool inTimingCheck() { return in_timing_check_; } void setInTimingCheck(bool in); bool inIncremental() const { return in_incremental_; } void setInIncremental(bool incr); - - // flex YY_INPUT yy_n_chars arg changed definition from int to size_t, - // so provide both forms. - void getChars(char *buf, - size_t &result, - size_t max_size); - void getChars(char *buf, - int &result, - size_t max_size); - void incrLine(); + string *makeBusName(string *bus_name, + int index); const char *filename() { return filename_; } - int line() { return line_; } void sdfWarn(int id, const char *fmt, ...); void sdfError(int id, @@ -178,11 +161,11 @@ private: Edge *findCheckEdge(Pin *from_pin, Pin *to_pin, TimingRole *sdf_role, - const char *cond_start, - const char *cond_end); + const string *cond_start, + const string *cond_end); Edge *findWireEdge(Pin *from_pin, Pin *to_pin); - bool condMatch(const char *sdf_cond, + bool condMatch(const string *sdf_cond, const char *lib_cond); void timingCheck1(TimingRole *role, Port *data_port, @@ -197,18 +180,18 @@ private: TimingRole *sdf_role, SdfTriple *triple, bool match_generic); - void deletePortSpec(SdfPortSpec *edge); - Pin *findPin(const char *name); - Instance *findInstance(const char *name); + Pin *findPin(const string *name); + Instance *findInstance(const string *name); void setEdgeDelays(Edge *edge, SdfTripleSeq *triples, const char *sdf_cmd); void setDevicePinDelays(Pin *to_pin, SdfTripleSeq *triples); Port *findPort(const Cell *cell, - const char *port_name); + const string *port_name); const char *filename_; + SdfScanner *scanner_; const char *path_; // Which values to pull out of the sdf triples. int triple_min_index_; @@ -221,12 +204,10 @@ private: bool is_incremental_only_; MinMaxAll *cond_use_; - int line_; - gzFile stream_; char divider_; char escape_; Instance *instance_; - const char *cell_name_; + const string *cell_name_; bool in_timing_check_; bool in_incremental_; float timescale_; @@ -234,6 +215,4 @@ private: static const int null_index_ = -1; }; -extern SdfReader *sdf_reader; - } // namespace diff --git a/sdf/SdfScanner.hh b/sdf/SdfScanner.hh new file mode 100644 index 00000000..a4e117f0 --- /dev/null +++ b/sdf/SdfScanner.hh @@ -0,0 +1,66 @@ +// OpenSTA, Static Timing Analyzer +// Copyright (c) 2025, Parallax Software, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. + +#pragma once + +#ifndef __FLEX_LEXER_H +#undef yyFlexLexer +#define yyFlexLexer SdfFlexLexer +#include +#endif + +#include "location.hh" +#include "SdfParse.hh" + +namespace sta { + +class Report; + +class SdfScanner : public SdfFlexLexer +{ +public: + SdfScanner(std::istream *stream, + const char *filename, + SdfReader *reader, + Report *report); + virtual ~SdfScanner() {} + + virtual int lex(SdfParse::semantic_type *const yylval, + SdfParse::location_type *yylloc); + // YY_DECL defined in SdfLex.ll + // Method body created by flex in SdfLex.cc + + void error(const char *msg); + + // Get rid of override virtual function warning. + using FlexLexer::yylex; + +private: + string token_; + const char *filename_; + SdfReader *reader_; + Report *report_; +}; + +} // namespace From fb6e7f9fa742157ca1bffcc7f665c2eb7308103b Mon Sep 17 00:00:00 2001 From: James Cherry Date: Mon, 27 Jan 2025 08:33:35 -0700 Subject: [PATCH 07/11] liberty parser c++ commit 1abf72bc3430d34a51d82992f1c753f0274a662a Author: James Cherry Date: Mon Jan 27 08:01:04 2025 -0700 rm unused lib visitors Signed-off-by: James Cherry commit 1e76acfc7829a8ba82f96d369fae6225a7361844 Author: James Cherry Date: Sun Jan 26 21:15:46 2025 -0700 verilog/sdf stream->is_open Signed-off-by: James Cherry commit c4a57c0354ffb6c4edfc3269d56a937c11ad9609 Author: James Cherry Date: Sun Jan 26 19:54:41 2025 -0700 leak Signed-off-by: James Cherry commit b992ed1124a862cb04f0c7617a4575f916c3fe01 Author: James Cherry Date: Sun Jan 26 16:39:16 2025 -0700 liberty mv string_buf to scanner Signed-off-by: James Cherry commit 894cbfa5d5b731738dcc60d492689fad9d13bd40 Author: James Cherry Date: Sun Jan 26 16:29:42 2025 -0700 liberty use regex to parse include file Signed-off-by: James Cherry commit 176225849d3fcac0b2be1a5b623270c386daed3d Author: James Cherry Date: Sun Jan 26 15:48:09 2025 -0700 liberty include filename Signed-off-by: James Cherry commit 516e12721d7185015d8c29e8b16fa185f0f46983 Author: James Cherry Date: Sun Jan 26 15:31:18 2025 -0700 liberty include Signed-off-by: James Cherry commit 32098a2159798dfbb80140927949bb36f480093d Author: James Cherry Date: Sun Jan 26 15:01:47 2025 -0700 liberty include Signed-off-by: James Cherry commit 880214e632d756c3199b000fee88fd4fdffac371 Author: James Cherry Date: Sun Jan 26 13:55:02 2025 -0700 liberty include Signed-off-by: James Cherry commit ad1efca842a6d7ee608ffd5a19a69885786b77fa Author: James Cherry Date: Sun Jan 26 10:11:07 2025 -0700 liberty passes all but include Signed-off-by: James Cherry commit e71cf1f39dd09e81cf2b0e5a12dcf51675f2a6fd Author: James Cherry Date: Sun Jan 26 10:01:08 2025 -0700 liberty parser use class compiles Signed-off-by: James Cherry commit 02dea0ff753b0fa12f280661a46e2c0ef2432357 Author: James Cherry Date: Sat Jan 25 19:08:06 2025 -0700 liberty parser compiles Signed-off-by: James Cherry Signed-off-by: James Cherry --- CMakeLists.txt | 18 +- liberty/LibertyLex.ll | 132 ++++------ liberty/LibertyParse.yy | 87 ++++--- liberty/LibertyParser.cc | 490 +++++++++++++++++------------------- liberty/LibertyParser.hh | 94 +++---- liberty/LibertyReader.cc | 34 ++- liberty/LibertyReaderPvt.hh | 29 +-- liberty/LibertyScanner.hh | 74 ++++++ sdf/SdfParse.yy | 2 - sdf/SdfReader.cc | 17 +- sdf/SdfReaderPvt.hh | 4 +- sdf/SdfScanner.hh | 6 +- util/gzstream.hh | 3 +- verilog/VerilogReader.cc | 2 +- 14 files changed, 495 insertions(+), 497 deletions(-) create mode 100644 liberty/LibertyScanner.hh diff --git a/CMakeLists.txt b/CMakeLists.txt index 4940f6bc..3bf9dafb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -273,6 +273,15 @@ set(STA_TCL_FILES find_package(FLEX) find_package(BISON) +# Liberty scan/parse. +flex_target(LibertyLex ${STA_HOME}/liberty/LibertyLex.ll + ${CMAKE_CURRENT_BINARY_DIR}/LibertyLex.cc) +bison_target(LibertyParse ${STA_HOME}/liberty/LibertyParse.yy + ${CMAKE_CURRENT_BINARY_DIR}/LibertyParse.cc + # centos7 bison 3.0.4 < 3.3.0 uses parser_class_name instead of api.parsr.class + COMPILE_FLAGS "-Wno-deprecated") +add_flex_bison_dependency(LibertyLex LibertyParse) + # LibertyExpr scan/parse. flex_target(LibertyExprLex ${STA_HOME}/liberty/LibertyExprLex.ll ${CMAKE_CURRENT_BINARY_DIR}/LibertyExprLex.cc @@ -283,15 +292,6 @@ bison_target(LibertyExprParse ${STA_HOME}/liberty/LibertyExprParse.yy ) add_flex_bison_dependency(LibertyExprLex LibertyExprParse) -# Liberty scan/parse. -flex_target(LibertyLex ${STA_HOME}/liberty/LibertyLex.ll ${CMAKE_CURRENT_BINARY_DIR}/LibertyLex.cc - COMPILE_FLAGS --prefix=LibertyLex_ - ) -bison_target(LibertyParse ${STA_HOME}/liberty/LibertyParse.yy ${CMAKE_CURRENT_BINARY_DIR}/LibertyParse.cc - COMPILE_FLAGS "--name-prefix=LibertyParse_ -v" - ) -add_flex_bison_dependency(LibertyLex LibertyParse) - # Spef scan/parse. flex_target(SpefLex ${STA_HOME}/parasitics/SpefLex.ll ${CMAKE_CURRENT_BINARY_DIR}/SpefLex.cc COMPILE_FLAGS --prefix=SpefLex_ diff --git a/liberty/LibertyLex.ll b/liberty/LibertyLex.ll index 9acd5c76..1bac5e9f 100644 --- a/liberty/LibertyLex.ll +++ b/liberty/LibertyLex.ll @@ -29,33 +29,29 @@ #include "util/FlexDisableRegister.hh" #include "liberty/LibertyParser.hh" #include "LibertyParse.hh" +#include "liberty/LibertyScanner.hh" -#define YY_NO_INPUT +#undef YY_DECL +#define YY_DECL \ +int \ +sta::LibertyScanner::lex(sta::LibertyParse::semantic_type *const yylval, \ + sta::LibertyParse::location_type *loc) -#if defined(YY_FLEX_MAJOR_VERSION) \ - && defined(YY_FLEX_MINOR_VERSION) \ - && YY_FLEX_MAJOR_VERSION >=2 \ - && (YY_FLEX_MINOR_VERSION > 5 \ - || (YY_FLEX_MINOR_VERSION == 5 \ - && defined(YY_FLEX_SUBMINOR_VERSION) \ - && YY_FLEX_SUBMINOR_VERSION >= 31)) - #define INCLUDE_SUPPORTED -#endif +// update location on matching +#define YY_USER_ACTION loc->step(); loc->columns(yyleng); -static std::string string_buf; - -void -libertyParseFlushBuffer() -{ - YY_FLUSH_BUFFER; -} +typedef sta::LibertyParse::token token; %} -/* %option debug */ +%option c++ +%option yyclass="sta::LibertyScanner" +%option prefix="Liberty" %option noyywrap -%option nounput %option never-interactive +%option stack +%option yylineno +/* %option debug */ %x comment %x qstring @@ -86,21 +82,20 @@ TOKEN_END {PUNCTUATION}|[ \t\r\n] EOL \r?\n %% -{PUNCTUATION} { return ((int) LibertyLex_text[0]); } +{PUNCTUATION} { return ((int) yytext[0]); } {FLOAT}{TOKEN_END} { /* Push back the TOKEN_END character. */ - yyless(LibertyLex_leng - 1); - LibertyParse_lval.number = static_cast(strtod(LibertyLex_text, - NULL)); - return FLOAT; + yyless(yyleng - 1); + yylval->number = strtod(yytext, nullptr); + return token::FLOAT; } {ALPHA}({ALPHA}|_|{DIGIT})*{TOKEN_END} { /* Push back the TOKEN_END character. */ - yyless(LibertyLex_leng - 1); - LibertyParse_lval.string = sta::stringCopy(LibertyLex_text); - return KEYWORD; + yyless(yyleng - 1); + yylval->string = sta::stringCopy(yytext); + return token::KEYWORD; } {PIN_NAME}{TOKEN_END} | @@ -111,106 +106,75 @@ EOL \r?\n {BUS_STYLE}{TOKEN_END} | {TOKEN}{TOKEN_END} { /* Push back the TOKEN_END character. */ - yyless(LibertyLex_leng - 1); - LibertyParse_lval.string = sta::stringCopy(LibertyLex_text); - return STRING; + yyless(yyleng - 1); + yylval->string = sta::stringCopy(yytext); + return token::STRING; } -\\?{EOL} { sta::libertyIncrLine(); } +\\?{EOL} { loc->lines(); loc->step(); } "include_file"[ \t]*"(".+")"[ \t]*";"? { -#ifdef INCLUDE_SUPPORTED - if (sta::libertyInInclude()) - sta::libertyParseError("nested include_file's are not supported"); - else { - char *filename = &yytext[strlen("include_file")]; - /* Skip blanks between include_file and '('. */ - while (isspace(*filename) && *filename != '\0') - filename++; - /* Skip '('. */ - filename++; - /* Skip blanks between '(' and filename. */ - while (isspace(*filename) && *filename != '\0') - filename++; - char *filename_end = strpbrk(filename, ")"); - if (filename_end == NULL) - sta::libertyParseError("include_file missing ')'"); - else { - /* Trim trailing blanks. */ - while (isspace(filename_end[-1]) && filename_end > filename) - filename_end--; - *filename_end = '\0'; - sta::libertyIncludeBegin(filename); - yypush_buffer_state(yy_create_buffer(nullptr, YY_BUF_SIZE)); - BEGIN(INITIAL); - } - } -#else - sta::libertyParseError("include_file is not supported."); -#endif -} + if (includeBegin()) { + BEGIN(INITIAL); + } + } "/*" BEGIN(comment); /* Straight out of the flex man page. */ [^*\r\n]* /* eat anything that's not a '*' */ "*"+[^*/\r\n]* /* eat up '*'s not followed by '/'s */ -{EOL} sta::libertyIncrLine(); +{EOL} { loc->lines(); loc->step(); } "*"+"/" BEGIN(INITIAL); \" { - string_buf.erase(); + token_.clear(); BEGIN(qstring); } \" { BEGIN(INITIAL); - LibertyParse_lval.string = sta::stringCopy(string_buf.c_str()); - return STRING; + yylval->string = stringCopy(token_.c_str()); + return token::STRING; } {EOL} { - LibertyParse_error("unterminated string constant"); + error("unterminated string constant"); BEGIN(INITIAL); - LibertyParse_lval.string = sta::stringCopy(string_buf.c_str()); - return STRING; + yylval->string = stringCopy(token_.c_str()); + return token::STRING; } \\{EOL} { /* Line continuation. */ - sta::libertyIncrLine(); + loc->lines(); loc->step(); } \\. { /* Escaped character. */ - string_buf += '\\'; - string_buf += LibertyLex_text[1]; + token_ += '\\'; + token_ += yytext[1]; } [^\\\r\n\"]+ { /* Anything but escape, return or double quote */ - string_buf += LibertyLex_text; + token_ += yytext; } <> { - LibertyParse_error("unterminated string constant"); + error("unterminated string constant"); BEGIN(INITIAL); yyterminate(); } {BLANK}* {} /* Send out of bound characters to parser. */ -. { return (int) LibertyLex_text[0]; } +. { return (int) yytext[0]; } -<> { -#ifdef INCLUDE_SUPPORTED - if (sta::libertyInInclude()) { - sta::libertyIncludeEnd(); - yypop_buffer_state(); - } - else -#endif - yyterminate(); -} +<> { if (stream_prev_) + fileEnd(); + else + yyterminate(); + } %% diff --git a/liberty/LibertyParse.yy b/liberty/LibertyParse.yy index aba2f65e..df362a2e 100644 --- a/liberty/LibertyParse.yy +++ b/liberty/LibertyParse.yy @@ -1,4 +1,3 @@ -%{ // OpenSTA, Static Timing Analyzer // Copyright (c) 2025, Parallax Software, Inc. // @@ -23,25 +22,41 @@ // // This notice may not be removed or altered from any source distribution. +%{ #include -#include #include "StringUtil.hh" #include "liberty/LibertyParser.hh" +#include "liberty/LibertyScanner.hh" -int LibertyLex_lex(); -#define LibertyParse_lex LibertyLex_lex -// Use yacc generated parser errors. -#define YYERROR_VERBOSE +#undef yylex +#define yylex scanner->lex -#define YYDEBUG 1 +// warning: variable 'yynerrs_' set but not used +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#define loc_line(loc) loc.begin.line %} +%require "3.0" +%skeleton "lalr1.cc" +%debug +%define api.namespace {sta} +%locations +%define parse.assert +%parse-param { LibertyScanner *scanner } +%parse-param { LibertyParser *reader } + +// bison 3.0.4 for centos7 +%define parser_class_name {LibertyParse} +// bison 3.3.2 +//%define api.parser.class {LibertyParse} + +%expect 2 + %union { char *string; float number; - int line; char ch; sta::LibertyAttrValue *attr_value; sta::LibertyAttrValueSeq *attr_values; @@ -61,16 +76,10 @@ int LibertyLex_lex(); %type attr_values %type attr_value %type string expr expr_term expr_term1 volt_expr -%type line %type expr_op volt_op -%expect 2 - %start file -%{ -%} - %% file: @@ -78,26 +87,22 @@ file: ; group: - KEYWORD '(' ')' line '{' - { sta::libertyGroupBegin($1, nullptr, $4); } + KEYWORD '(' ')' '{' + { reader->groupBegin($1, nullptr, loc_line(@1)); } '}' semi_opt - { $$ = sta::libertyGroupEnd(); } -| KEYWORD '(' ')' line '{' - { sta::libertyGroupBegin($1, nullptr, $4); } + { $$ = reader->groupEnd(); } +| KEYWORD '(' ')' '{' + { reader->groupBegin($1, nullptr, loc_line(@1)); } statements '}' semi_opt - { $$ = sta::libertyGroupEnd(); } -| KEYWORD '(' attr_values ')' line '{' - { sta::libertyGroupBegin($1, $3, $5); } + { $$ = reader->groupEnd(); } +| KEYWORD '(' attr_values ')' '{' + { reader->groupBegin($1, $3, loc_line(@1)); } '}' semi_opt - { $$ = sta::libertyGroupEnd(); } -| KEYWORD '(' attr_values ')' line '{' - { sta::libertyGroupBegin($1, $3, $5); } + { $$ = reader->groupEnd(); } +| KEYWORD '(' attr_values ')' '{' + { reader->groupBegin($1, $3, loc_line(@1)); } statements '}' semi_opt - { $$ = sta::libertyGroupEnd(); } - ; - -line: /* empty */ - { $$ = sta::libertyLine(); } + { $$ = reader->groupEnd(); } ; statements: @@ -113,15 +118,15 @@ statement: ; simple_attr: - KEYWORD ':' attr_value line semi_opt - { $$ = sta::makeLibertySimpleAttr($1, $3, $4); } + KEYWORD ':' attr_value semi_opt + { $$ = reader->makeSimpleAttr($1, $3, loc_line(@1)); } ; complex_attr: - KEYWORD '(' ')' line semi_opt - { $$ = sta::makeLibertyComplexAttr($1, nullptr, $4); } -| KEYWORD '(' attr_values ')' line semi_opt - { $$ = sta::makeLibertyComplexAttr($1, $3, $5); } + KEYWORD '(' ')' semi_opt + { $$ = reader->makeComplexAttr($1, nullptr, loc_line(@1)); } +| KEYWORD '(' attr_values ')' semi_opt + { $$ = reader->makeComplexAttr($1, $3, loc_line(@1)); } ; attr_values: @@ -140,8 +145,8 @@ attr_values: ; variable: - string '=' FLOAT line semi_opt - { $$ = sta::makeLibertyVariable($1, $3, $4); } + string '=' FLOAT semi_opt + { $$ = reader->makeVariable($1, $3, loc_line(@1)); } ; string: @@ -153,11 +158,11 @@ string: attr_value: FLOAT - { $$ = sta::makeLibertyFloatAttrValue($1); } + { $$ = reader->makeFloatAttrValue($1); } | expr - { $$ = sta::makeLibertyStringAttrValue($1); } + { $$ = reader->makeStringAttrValue($1); } | volt_expr - { $$ = sta::makeLibertyStringAttrValue($1); } + { $$ = reader->makeStringAttrValue($1); } ; /* Voltage expressions are ignored. */ diff --git a/liberty/LibertyParser.cc b/liberty/LibertyParser.cc index 14ec9c2d..c568aa20 100644 --- a/liberty/LibertyParser.cc +++ b/liberty/LibertyParser.cc @@ -26,106 +26,124 @@ #include #include +#include +#include "Zlib.hh" #include "Report.hh" #include "Error.hh" #include "StringUtil.hh" - -// Global namespace - -int -LibertyParse_parse(); +#include "LibertyScanner.hh" namespace sta { -typedef Vector LibertyGroupSeq; - -static const char *liberty_filename; -static gzFile liberty_stream; -static int liberty_line; -// Previous lex reader state for include files. -static const char *liberty_filename_prev; -static int liberty_line_prev; -static gzFile liberty_stream_prev; - -static LibertyGroupVisitor *liberty_group_visitor; -static LibertyGroupSeq liberty_group_stack; -static Report *liberty_report; - -static LibertyStmt * -makeLibertyDefine(LibertyAttrValueSeq *values, - int line); -static LibertyAttrType -attrValueType(const char *value_type_name); -static LibertyGroupType -groupType(const char *group_type_name); - -//////////////////////////////////////////////////////////////// - void parseLibertyFile(const char *filename, LibertyGroupVisitor *library_visitor, Report *report) { - liberty_stream = gzopen(filename, "r"); - if (liberty_stream) { - liberty_group_visitor = library_visitor; - liberty_group_stack.clear(); - liberty_filename = filename; - liberty_filename_prev = nullptr; - liberty_stream_prev = nullptr; - liberty_line = 1; - liberty_report = report; - LibertyParse_parse(); - gzclose(liberty_stream); + std::istream *stream = new gzstream::igzstream(filename); + if (stream->good()) { + LibertyParser reader(filename, library_visitor, report); + LibertyScanner scanner(stream, filename, &reader, report); + LibertyParse parser(&scanner, &reader); + parser.parse(); + delete stream; + } + else { + delete stream; + throw FileNotReadable(filename); + } +} + +LibertyParser::LibertyParser(const char *filename, + LibertyGroupVisitor *library_visitor, + Report *report) : + filename_(filename), + group_visitor_(library_visitor), + report_(report) +{ +} + +void +LibertyParser::setFilename(const string &filename) +{ + filename_ = filename; +} + +LibertyStmt * +LibertyParser::makeDefine(LibertyAttrValueSeq *values, + int line) +{ + LibertyDefine *define = nullptr; + if (values->size() == 3) { + const char *define_name = (*values)[0]->stringValue(); + const char *group_type_name = (*values)[1]->stringValue(); + const char *value_type_name = (*values)[2]->stringValue(); + LibertyAttrType value_type = attrValueType(value_type_name); + LibertyGroupType group_type = groupType(group_type_name); + define = new LibertyDefine(stringCopy(define_name), group_type, + value_type, line); + LibertyGroup *group = this->group(); + group->addDefine(define); } else - throw FileNotReadable(filename); + report_->fileWarn(24, filename_.c_str(), line, + "define does not have three arguments."); + return define; } -void -libertyGetChars(char *buf, - int &result, - size_t max_size) +// The Liberty User Guide Version 2001.08 fails to define the strings +// used to define valid attribute types. Beyond "string" these are +// guesses. +LibertyAttrType +LibertyParser::attrValueType(const char *value_type_name) { - char *status = gzgets(liberty_stream, buf, max_size); - if (status == Z_NULL) - result = 0; // YY_nullptr + if (stringEq(value_type_name, "string")) + return LibertyAttrType::attr_string; + else if (stringEq(value_type_name, "integer")) + return LibertyAttrType::attr_int; + else if (stringEq(value_type_name, "float")) + return LibertyAttrType::attr_double; + else if (stringEq(value_type_name, "boolean")) + return LibertyAttrType::attr_boolean; else - result = strlen(buf); + return LibertyAttrType::attr_unknown; } -void -libertyGetChars(char *buf, - size_t &result, - size_t max_size) +LibertyGroupType +LibertyParser::groupType(const char *group_type_name) { - char *status = gzgets(liberty_stream, buf, max_size); - if (status == Z_NULL) - result = 0; // YY_nullptr + if (stringEq(group_type_name, "library")) + return LibertyGroupType::library; + else if (stringEq(group_type_name, "cell")) + return LibertyGroupType::cell; + else if (stringEq(group_type_name, "pin")) + return LibertyGroupType::pin; + else if (stringEq(group_type_name, "timing")) + return LibertyGroupType::timing; else - result = strlen(buf); + return LibertyGroupType::unknown; } void -libertyGroupBegin(const char *type, - LibertyAttrValueSeq *params, - int line) +LibertyParser::groupBegin(const char *type, + LibertyAttrValueSeq *params, + int line) { LibertyGroup *group = new LibertyGroup(type, params, line); - liberty_group_visitor->begin(group); - liberty_group_stack.push_back(group); + group_visitor_->begin(group); + group_stack_.push_back(group); } LibertyGroup * -libertyGroupEnd() +LibertyParser::groupEnd() { - LibertyGroup *group = libertyGroup(); - liberty_group_visitor->end(group); - liberty_group_stack.pop_back(); + LibertyGroup *group = this->group(); + group_visitor_->end(group); + group_stack_.pop_back(); LibertyGroup *parent = - liberty_group_stack.empty() ? nullptr : liberty_group_stack.back(); - if (parent && liberty_group_visitor->save(group)) { + group_stack_.empty() ? nullptr : group_stack_.back(); + if (parent && group_visitor_->save(group)) { parent->addSubgroup(group); return group; } @@ -135,6 +153,92 @@ libertyGroupEnd() } } +LibertyGroup * +LibertyParser::group() +{ + return group_stack_.back(); +} + +void +LibertyParser::deleteGroups() +{ + group_stack_.deleteContentsClear(); +} + +LibertyStmt * +LibertyParser::makeSimpleAttr(const char *name, + LibertyAttrValue *value, + int line) +{ + LibertyAttr *attr = new LibertySimpleAttr(name, value, line); + group_visitor_->visitAttr(attr); + LibertyGroup *group = this->group(); + if (group && group_visitor_->save(attr)) { + group->addAttribute(attr); + return attr; + } + else { + delete attr; + return nullptr; + } +} + +LibertyStmt * +LibertyParser::makeComplexAttr(const char *name, + LibertyAttrValueSeq *values, + int line) +{ + // Defines have the same syntax as complex attributes. + // Detect and convert them. + if (stringEq(name, "define")) { + LibertyStmt *define = makeDefine(values, line); + stringDelete(name); + LibertyAttrValueSeq::Iterator attr_iter(values); + while (attr_iter.hasNext()) + delete attr_iter.next(); + delete values; + return define; + } + else { + LibertyAttr *attr = new LibertyComplexAttr(name, values, line); + group_visitor_->visitAttr(attr); + if (group_visitor_->save(attr)) { + LibertyGroup *group = this->group(); + group->addAttribute(attr); + return attr; + } + delete attr; + return nullptr; + } +} + +LibertyStmt * +LibertyParser::makeVariable(char *var, + float value, + int line) +{ + LibertyVariable *variable = new LibertyVariable(var, value, line); + group_visitor_->visitVariable(variable); + if (group_visitor_->save(variable)) + return variable; + else { + delete variable; + return nullptr; + } +} + +LibertyAttrValue * +LibertyParser::makeStringAttrValue(char *value) +{ + return new LibertyStringAttrValue(value); +} + +LibertyAttrValue * +LibertyParser::makeFloatAttrValue(float value) +{ + return new LibertyFloatAttrValue(value); +} + //////////////////////////////////////////////////////////////// LibertyStmt::LibertyStmt(int line) : @@ -274,31 +378,6 @@ LibertyAttr::~LibertyAttr() stringDelete(name_); } -LibertyStmt * -makeLibertySimpleAttr(const char *name, - LibertyAttrValue *value, - int line) -{ - LibertyAttr *attr = new LibertySimpleAttr(name, value, line); - if (liberty_group_visitor) - liberty_group_visitor->visitAttr(attr); - LibertyGroup *group = libertyGroup(); - if (group && liberty_group_visitor->save(attr)) { - group->addAttribute(attr); - return attr; - } - else { - delete attr; - return nullptr; - } -} - -LibertyGroup * -libertyGroup() -{ - return liberty_group_stack.back(); -} - LibertySimpleAttr::LibertySimpleAttr(const char *name, LibertyAttrValue *value, int line) : @@ -319,37 +398,6 @@ LibertySimpleAttr::values() const return nullptr; } -LibertyStmt * -makeLibertyComplexAttr(const char *name, - LibertyAttrValueSeq *values, - int line) -{ - // Defines have the same syntax as complex attributes. - // Detect and convert them. - if (stringEq(name, "define")) { - LibertyStmt *define = makeLibertyDefine(values, line); - stringDelete(name); - LibertyAttrValueSeq::Iterator attr_iter(values); - while (attr_iter.hasNext()) - delete attr_iter.next(); - delete values; - return define; - } - else { - LibertyAttr *attr = new LibertyComplexAttr(name, values, line); - if (liberty_group_visitor) { - liberty_group_visitor->visitAttr(attr); - if (liberty_group_visitor->save(attr)) { - LibertyGroup *group = libertyGroup(); - group->addAttribute(attr); - return attr; - } - } - delete attr; - return nullptr; - } -} - LibertyComplexAttr::LibertyComplexAttr(const char *name, LibertyAttrValueSeq *values, int line) : @@ -375,12 +423,6 @@ LibertyComplexAttr::firstValue() return nullptr; } -LibertyAttrValue * -makeLibertyStringAttrValue(char *value) -{ - return new LibertyStringAttrValue(value); -} - LibertyStringAttrValue::LibertyStringAttrValue(const char *value) : LibertyAttrValue(), value_(value) @@ -405,12 +447,6 @@ LibertyStringAttrValue::stringValue() return value_; } -LibertyAttrValue * -makeLibertyFloatAttrValue(float value) -{ - return new LibertyFloatAttrValue(value); -} - LibertyFloatAttrValue::LibertyFloatAttrValue(float value) : value_(value) { @@ -431,61 +467,6 @@ LibertyFloatAttrValue::stringValue() //////////////////////////////////////////////////////////////// -static LibertyStmt * -makeLibertyDefine(LibertyAttrValueSeq *values, - int line) -{ - LibertyDefine *define = nullptr; - if (values->size() == 3) { - const char *define_name = (*values)[0]->stringValue(); - const char *group_type_name = (*values)[1]->stringValue(); - const char *value_type_name = (*values)[2]->stringValue(); - LibertyAttrType value_type = attrValueType(value_type_name); - LibertyGroupType group_type = groupType(group_type_name); - define = new LibertyDefine(stringCopy(define_name), group_type, - value_type, line); - LibertyGroup *group = libertyGroup(); - group->addDefine(define); - } - else - liberty_report->fileWarn(24, liberty_filename, line, - "define does not have three arguments."); - return define; -} - -// The Liberty User Guide Version 2001.08 fails to define the strings -// used to define valid attribute types. Beyond "string" these are -// guesses. -static LibertyAttrType -attrValueType(const char *value_type_name) -{ - if (stringEq(value_type_name, "string")) - return LibertyAttrType::attr_string; - else if (stringEq(value_type_name, "integer")) - return LibertyAttrType::attr_int; - else if (stringEq(value_type_name, "float")) - return LibertyAttrType::attr_double; - else if (stringEq(value_type_name, "boolean")) - return LibertyAttrType::attr_boolean; - else - return LibertyAttrType::attr_unknown; -} - -static LibertyGroupType -groupType(const char *group_type_name) -{ - if (stringEq(group_type_name, "library")) - return LibertyGroupType::library; - else if (stringEq(group_type_name, "cell")) - return LibertyGroupType::cell; - else if (stringEq(group_type_name, "pin")) - return LibertyGroupType::pin; - else if (stringEq(group_type_name, "timing")) - return LibertyGroupType::timing; - else - return LibertyGroupType::unknown; -} - LibertyDefine::LibertyDefine(const char *name, LibertyGroupType group_type, LibertyAttrType value_type, @@ -504,21 +485,6 @@ LibertyDefine::~LibertyDefine() //////////////////////////////////////////////////////////////// -LibertyStmt * -makeLibertyVariable(char *var, - float value, - int line) -{ - LibertyVariable *variable = new LibertyVariable(var, value, line); - liberty_group_visitor->visitVariable(variable); - if (liberty_group_visitor->save(variable)) - return variable; - else { - delete variable; - return nullptr; - } -} - LibertyVariable::LibertyVariable(const char *var, float value, int line) : @@ -535,82 +501,78 @@ LibertyVariable::~LibertyVariable() //////////////////////////////////////////////////////////////// +LibertyScanner::LibertyScanner(std::istream *stream, + const char *filename, + LibertyParser *reader, + Report *report) : + yyFlexLexer(stream), + stream_(stream), + filename_(filename), + reader_(reader), + report_(report), + stream_prev_(nullptr) +{ +} + bool -libertyInInclude() +LibertyScanner::includeBegin() { - return liberty_filename_prev != nullptr; -} + if (stream_prev_ != nullptr) + error("nested include_file's are not supported"); + else { + // include_file(filename); + std::regex include_regexp("include_file *\\( *([^)]+) *\\) *;?"); + std::cmatch matches; + if (std::regex_match(yytext, matches, include_regexp)) { + string filename = matches[1].str(); + gzstream::igzstream *stream = new gzstream::igzstream(filename.c_str()); + if (stream->is_open()) { + yypush_buffer_state(yy_create_buffer(stream, 256)); -void -libertyIncludeBegin(const char *filename) -{ - gzFile stream = gzopen(filename, "r" ); - if (stream) { - liberty_stream_prev = liberty_stream; - liberty_filename_prev = liberty_filename; - liberty_line_prev = liberty_line; + filename_prev_ = filename_; + stream_prev_ = stream_; - liberty_stream = stream; - liberty_filename = filename; - liberty_line = 1; + filename_ = filename; + reader_->setFilename(filename); + stream_ = stream; + return true; + } + else { + report_->fileWarn(25, filename_.c_str(), yylineno, + "cannot open include file %s.", filename.c_str()); + delete stream; + } + } + else + error("include_file syntax error."); } - else - liberty_report->fileWarn(25, sta::liberty_filename, sta::liberty_line, - "cannot open include file %s.", filename); + return false; } void -libertyIncludeEnd() +LibertyScanner::fileEnd() { - gzclose(liberty_stream); - liberty_stream = liberty_stream_prev; - liberty_filename = liberty_filename_prev; - liberty_line = liberty_line_prev; + if (stream_prev_) + delete stream_; + stream_ = stream_prev_; + filename_ = filename_prev_; + stream_prev_ = nullptr; - liberty_filename_prev = nullptr; - liberty_stream_prev = nullptr; + yypop_buffer_state(); } void -libertyIncrLine() +LibertyScanner::error(const char *msg) { - sta::liberty_line++; -} - -int -libertyLine() -{ - return liberty_line; + report_->fileError(1866, filename_.c_str(), lineno(), "%s", msg); } void -libertyParseError(const char *fmt, ...) +LibertyParse::error(const location_type &loc, + const string &msg) { - va_list args; - va_start(args, fmt); - sta::liberty_report->vfileError(25, sta::liberty_filename, sta::liberty_line, - fmt, args); - va_end(args); -} - -void -deleteLibertyGroups() -{ - liberty_group_stack.deleteContentsClear(); + reader->report()->fileError(164, reader->filename().c_str(), + loc.begin.line, "%s", msg.c_str()); } } // namespace - -//////////////////////////////////////////////////////////////// -// Global namespace - -void libertyParseFlushBuffer(); - -int -LibertyParse_error(const char *msg) -{ - libertyParseFlushBuffer(); - sta::liberty_report->fileError(26, sta::liberty_filename, sta::liberty_line, - "%s.", msg); - return 0; -} diff --git a/liberty/LibertyParser.hh b/liberty/LibertyParser.hh index 8d48c188..4006f37a 100644 --- a/liberty/LibertyParser.hh +++ b/liberty/LibertyParser.hh @@ -43,6 +43,7 @@ class LibertyAttrValue; class LibertyVariable; class LibertySubgroupIterator; class LibertyAttrIterator; +class LibertyScanner; typedef Vector LibertyStmtSeq; typedef Vector LibertyGroupSeq; @@ -53,25 +54,50 @@ typedef Vector LibertyAttrValueSeq; typedef Map LibertyVariableMap; typedef MapLibertyGroupVisitorMap; typedef LibertyAttrValueSeq::Iterator LibertyAttrValueIterator; +typedef Vector LibertyGroupSeq; enum class LibertyAttrType { attr_string, attr_int, attr_double, attr_boolean, attr_unknown }; enum class LibertyGroupType { library, cell, pin, timing, unknown }; -// flex YY_INPUT yy_n_chars arg changed definition from int to size_t, -// so provide both forms. -void -libertyGetChars(char *buf, - size_t &result, - size_t max_size); -void -libertyGetChars(char *buf, - int &result, - size_t max_size); +class LibertyParser +{ +public: + LibertyParser(const char *filename, + LibertyGroupVisitor *library_visitor, + Report *report); + const string &filename() const { return filename_; } + void setFilename(const string &filename); + Report *report() const { return report_; } + LibertyStmt *makeDefine(LibertyAttrValueSeq *values, + int line); + LibertyAttrType attrValueType(const char *value_type_name); + LibertyGroupType groupType(const char *group_type_name); + void groupBegin(const char *type, + LibertyAttrValueSeq *params, + int line); + LibertyGroup *groupEnd(); + LibertyGroup *group(); + void deleteGroups(); + LibertyStmt *makeSimpleAttr(const char *name, + LibertyAttrValue *value, + int line); + LibertyStmt *makeComplexAttr(const char *name, + LibertyAttrValueSeq *values, + int line); + LibertyAttrValue *makeStringAttrValue(char *value); + LibertyAttrValue *makeFloatAttrValue(float value); + LibertyStmt *makeVariable(char *var, + float value, + int line); -#define YY_INPUT(buf,result,max_size) \ - sta::libertyGetChars(buf, result, max_size) +private: + string filename_; + LibertyGroupVisitor *group_visitor_; + Report *report_; + LibertyGroupSeq group_stack_; +}; // Abstract base class for liberty statements. class LibertyStmt @@ -289,52 +315,8 @@ public: virtual bool save(LibertyVariable *variable) = 0; }; -void -libertyIncludeBegin(const char *filename); -void -libertyIncludeEnd(); -bool -libertyInInclude(); -void -libertyIncrLine(); -void -libertyParseError(const char *fmt, - ...); -int -libertyLine(); - void parseLibertyFile(const char *filename, LibertyGroupVisitor *library_visitor, Report *report); -void -libertyGroupBegin(const char *type, - LibertyAttrValueSeq *params, - int line); -LibertyGroup * -libertyGroupEnd(); -LibertyGroup * -libertyGroup(); -LibertyStmt * -makeLibertyComplexAttr(const char *name, - LibertyAttrValueSeq *values, - int line); -LibertyStmt * -makeLibertySimpleAttr(const char *name, - LibertyAttrValue *value, - int line); -LibertyAttrValue * -makeLibertyFloatAttrValue(float value); -LibertyAttrValue * -makeLibertyStringAttrValue(char *value); -LibertyStmt * -makeLibertyVariable(char *var, - float value, - int line); - } // namespace - -// Global namespace. -int -LibertyParse_error(const char *msg); - diff --git a/liberty/LibertyReader.cc b/liberty/LibertyReader.cc index e05e08a7..4acff872 100644 --- a/liberty/LibertyReader.cc +++ b/liberty/LibertyReader.cc @@ -110,6 +110,7 @@ LibertyReader::init(const char *filename, in_bus_ = false; in_bundle_ = false; in_ccsn_ = false; + in_ecsm_waveform_ = false; sequential_ = nullptr; statetable_ = nullptr; timing_ = nullptr; @@ -570,6 +571,9 @@ LibertyReader::defineVisitors() &LibertyReader::endCcsn); defineGroupVisitor("output_ccb", &LibertyReader::beginCcsn, &LibertyReader::endCcsn); + + defineGroupVisitor("ecsm_waveform", &LibertyReader::beginEcsmWaveform, + &LibertyReader::endEcsmWaveform); } void @@ -1520,7 +1524,7 @@ LibertyReader::visitIndex(int index, { if (tbl_template_ // Ignore index_xx in ecsm_waveform groups. - && !stringEq(libertyGroup()->type(), "ecsm_waveform")) { + && !in_ecsm_waveform_) { FloatSeq *axis_values = readFloatSeq(attr, 1.0F); if (axis_values) { if (axis_values->empty()) @@ -4657,7 +4661,7 @@ LibertyReader::visitValues(LibertyAttr *attr) { if (tbl_template_ // Ignore values in ecsm_waveform groups. - && !stringEq(libertyGroup()->type(), "ecsm_waveform")) + && !in_ecsm_waveform_) makeTable(attr, table_model_scale_); } @@ -5667,6 +5671,32 @@ LibertyReader::visitVoltageName(LibertyAttr *attr) } } +// Contents Ignored. +void +LibertyReader::beginCcsn(LibertyGroup *) +{ + in_ccsn_ = true; +} + +void +LibertyReader::endCcsn(LibertyGroup *) +{ + in_ccsn_ = false; +} + +// Contents Ignored. +void +LibertyReader::beginEcsmWaveform(LibertyGroup *) +{ + in_ecsm_waveform_ = true; +} + +void +LibertyReader::endEcsmWaveform(LibertyGroup *) +{ + in_ecsm_waveform_ = false; +} + //////////////////////////////////////////////////////////////// LibertyFunc::LibertyFunc(const char *expr, diff --git a/liberty/LibertyReaderPvt.hh b/liberty/LibertyReaderPvt.hh index 69db54c7..7e952f09 100644 --- a/liberty/LibertyReaderPvt.hh +++ b/liberty/LibertyReaderPvt.hh @@ -490,30 +490,10 @@ public: void visitDriverWaveformRiseFall(LibertyAttr *attr, const RiseFall *rf); - // ccsn (not implemented, this is needed to properly ignore ccsn groups) - void beginCcsn(LibertyGroup *) { in_ccsn_ = true; } - void endCcsn(LibertyGroup *) { in_ccsn_ = false; } - - // Visitors for derived classes to overload. - virtual void beginGroup1(LibertyGroup *) {} - virtual void beginGroup2(LibertyGroup *) {} - virtual void beginGroup3(LibertyGroup *) {} - virtual void beginGroup4(LibertyGroup *) {} - virtual void beginGroup5(LibertyGroup *) {} - virtual void endGroup1(LibertyGroup *) {} - virtual void endGroup2(LibertyGroup *) {} - virtual void endGroup3(LibertyGroup *) {} - virtual void endGroup4(LibertyGroup *) {} - virtual void endGroup5(LibertyGroup *) {} - virtual void visitAttr1(LibertyAttr *) {} - virtual void visitAttr2(LibertyAttr *) {} - virtual void visitAttr3(LibertyAttr *) {} - virtual void visitAttr4(LibertyAttr *) {} - virtual void visitAttr5(LibertyAttr *) {} - virtual void visitAttr6(LibertyAttr *) {} - virtual void visitAttr7(LibertyAttr *) {} - virtual void visitAttr8(LibertyAttr *) {} - virtual void visitAttr9(LibertyAttr *) {} + void beginCcsn(LibertyGroup *group); + void endCcsn(LibertyGroup *group); + void beginEcsmWaveform(LibertyGroup *group); + void endEcsmWaveform(LibertyGroup *group); protected: TimingModel *makeScalarCheckModel(float value, @@ -641,6 +621,7 @@ protected: bool in_bus_; bool in_bundle_; bool in_ccsn_; + bool in_ecsm_waveform_; TableAxisVariable axis_var_[3]; FloatSeq *axis_values_[3]; int type_bit_from_; diff --git a/liberty/LibertyScanner.hh b/liberty/LibertyScanner.hh new file mode 100644 index 00000000..4e35c0cd --- /dev/null +++ b/liberty/LibertyScanner.hh @@ -0,0 +1,74 @@ +// OpenSTA, Static Timing Analyzer +// Copyright (c) 2025, Parallax Software, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. +// +// Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// This notice may not be removed or altered from any source distribution. + +#pragma once + +#ifndef __FLEX_LEXER_H +#undef yyFlexLexer +#define yyFlexLexer LibertyFlexLexer +#include +#endif + +#include "location.hh" +#include "LibertyParse.hh" + +namespace sta { + +class Report; +class LibertyParser; + +class LibertyScanner : public LibertyFlexLexer +{ +public: + LibertyScanner(std::istream *stream, + const char *filename, + LibertyParser *reader, + Report *report); + virtual ~LibertyScanner() {} + + virtual int lex(LibertyParse::semantic_type *const yylval, + LibertyParse::location_type *yylloc); + // YY_DECL defined in LibertyLex.ll + // Method body created by flex in LibertyLex.cc + + // Get rid of override virtual function warning. + using FlexLexer::yylex; + +private: + bool includeBegin(); + void fileEnd(); + void error(const char *msg); + + std::istream *stream_; + string filename_; + LibertyParser *reader_; + Report *report_; + string token_; + + // Previous lex state for include files. + string filename_prev_; + std::istream *stream_prev_; +}; + +} // namespace diff --git a/sdf/SdfParse.yy b/sdf/SdfParse.yy index 11ef84a3..1730daf7 100644 --- a/sdf/SdfParse.yy +++ b/sdf/SdfParse.yy @@ -33,8 +33,6 @@ // warning: variable 'yynerrs_' set but not used #pragma GCC diagnostic ignored "-Wunused-but-set-variable" - -#define loc_line(loc) loc.begin.line %} %require "3.0" diff --git a/sdf/SdfReader.cc b/sdf/SdfReader.cc index 768f093e..9d561613 100644 --- a/sdf/SdfReader.cc +++ b/sdf/SdfReader.cc @@ -139,8 +139,8 @@ SdfReader::~SdfReader() bool SdfReader::read() { - gzstream::igzstream stream(filename_); - if (stream.good()) { + gzstream::igzstream stream(filename_.c_str()); + if (stream.is_open()) { Stats stats(debug_, report_); SdfScanner scanner(&stream, filename_, this, report_); scanner_ = &scanner; @@ -150,7 +150,7 @@ SdfReader::read() return success; } else - throw FileNotReadable(filename_); + throw FileNotReadable(filename_.c_str()); } void @@ -994,7 +994,7 @@ SdfReader::sdfWarn(int id, { va_list args; va_start(args, fmt); - report_->vfileWarn(id, filename_, scanner_->lineno(), fmt, args); + report_->vfileWarn(id, filename_.c_str(), scanner_->lineno(), fmt, args); va_end(args); } @@ -1004,7 +1004,7 @@ SdfReader::sdfError(int id, { va_list args; va_start(args, fmt); - report_->vfileError(id, filename_, scanner_->lineno(), fmt, args); + report_->vfileError(id, filename_.c_str(), scanner_->lineno(), fmt, args); va_end(args); } @@ -1087,7 +1087,7 @@ SdfTriple::hasValue() const //////////////////////////////////////////////////////////////// SdfScanner::SdfScanner(std::istream *stream, - const char *filename, + const string &filename, SdfReader *reader, Report *report) : yyFlexLexer(stream), @@ -1100,7 +1100,7 @@ SdfScanner::SdfScanner(std::istream *stream, void SdfScanner::error(const char *msg) { - report_->fileError(1866, filename_, lineno(), "%s", msg); + report_->fileError(1866, filename_.c_str(), lineno(), "%s", msg); } //////////////////////////////////////////////////////////////// @@ -1109,7 +1109,8 @@ void SdfParse::error(const location_type &loc, const string &msg) { - reader->report()->fileError(164,reader->filename(),loc.begin.line,"%s",msg.c_str()); + reader->report()->fileError(164,reader->filename().c_str(), + loc.begin.line,"%s",msg.c_str()); } } // namespace diff --git a/sdf/SdfReaderPvt.hh b/sdf/SdfReaderPvt.hh index b70b80e8..64b00eaf 100644 --- a/sdf/SdfReaderPvt.hh +++ b/sdf/SdfReaderPvt.hh @@ -146,7 +146,7 @@ public: void setInIncremental(bool incr); string *makeBusName(string *bus_name, int index); - const char *filename() { return filename_; } + const string &filename() const { return filename_; } void sdfWarn(int id, const char *fmt, ...); void sdfError(int id, @@ -190,7 +190,7 @@ private: Port *findPort(const Cell *cell, const string *port_name); - const char *filename_; + string filename_; SdfScanner *scanner_; const char *path_; // Which values to pull out of the sdf triples. diff --git a/sdf/SdfScanner.hh b/sdf/SdfScanner.hh index a4e117f0..ef74ccd3 100644 --- a/sdf/SdfScanner.hh +++ b/sdf/SdfScanner.hh @@ -41,7 +41,7 @@ class SdfScanner : public SdfFlexLexer { public: SdfScanner(std::istream *stream, - const char *filename, + const string &filename, SdfReader *reader, Report *report); virtual ~SdfScanner() {} @@ -57,10 +57,10 @@ public: using FlexLexer::yylex; private: - string token_; - const char *filename_; + string filename_; SdfReader *reader_; Report *report_; + string token_; }; } // namespace diff --git a/util/gzstream.hh b/util/gzstream.hh index a6e7803e..ec2ded6c 100644 --- a/util/gzstream.hh +++ b/util/gzstream.hh @@ -193,7 +193,8 @@ public: igzstream() : std::istream( &buf) {} igzstream( const char* name, int open_mode = std::ios::in) : gzstreambase( name, open_mode), std::istream( &buf) {} - gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); } + int is_open() { return buf.is_open(); } + gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); } void open( const char* name, int open_mode = std::ios::in) { gzstreambase::open( name, open_mode); } diff --git a/verilog/VerilogReader.cc b/verilog/VerilogReader.cc index 664a0d38..3ddc9b22 100644 --- a/verilog/VerilogReader.cc +++ b/verilog/VerilogReader.cc @@ -168,7 +168,7 @@ bool VerilogReader::read(const char *filename) { gzstream::igzstream stream(filename); - if (stream.good()) { + if (stream.is_open()) { Stats stats(debug_, report_); VerilogScanner scanner(&stream, filename, report_); VerilogParse parser(&scanner, this); From ed9ea90a7daca0b0146fcb0b58632d3a39b3f53b Mon Sep 17 00:00:00 2001 From: James Cherry Date: Mon, 27 Jan 2025 08:37:48 -0700 Subject: [PATCH 08/11] readme Signed-off-by: James Cherry --- README.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index cbb6106f..8cc16e05 100644 --- a/README.md +++ b/README.md @@ -245,15 +245,6 @@ Command files should not have absolute filenames like These obviously are not portable. Use filenames relative to the test case directory. -## Authors - -* James Cherry - -* William Scott authored the arnoldi delay calculator at Blaze, Inc - which was subsequently licensed to Nefelus, Inc that has graciously - contributed it to OpenSTA. - - ## Contributions Contributors must sign the Contributor License Agreement (doc/CLA.txt) @@ -266,6 +257,17 @@ Contributions that claim 4% performance improvements in OpenROAD flow scripts will largely be ignored. Small performance improvements simply do not justify the time requied to audit and verify the changes. +Contributions that add dependencies on external libraries like boost +will not be accepted. + +## Authors + +* James Cherry + +* William Scott authored the arnoldi delay calculator at Blaze, Inc + which was subsequently licensed to Nefelus, Inc that has graciously + contributed it to OpenSTA. + ## License OpenSTA, Static Timing Analyzer From 4e5ab7ca26b790606e3dad342a8181eaa21a0f09 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Mon, 27 Jan 2025 10:57:58 -0700 Subject: [PATCH 09/11] vcd use unuordered_map Signed-off-by: James Cherry --- power/VcdReader.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/power/VcdReader.cc b/power/VcdReader.cc index 6655686b..24c539dd 100644 --- a/power/VcdReader.cc +++ b/power/VcdReader.cc @@ -25,7 +25,7 @@ #include "VcdReader.hh" #include -#include +#include #include "VcdParse.hh" #include "Debug.hh" @@ -43,7 +43,7 @@ using std::abs; using std::min; using std::to_string; using std::vector; -using std::map; +using std::unordered_map; // Transition count and high time for duty cycle for a group of pins // for one bit of vcd ID. @@ -116,7 +116,7 @@ VcdCount::highTime(VcdTime time_max) const // VcdCount[bit] typedef vector VcdCounts; // ID -> VcdCount[bit] -typedef map VcdIdCountsMap; +typedef unordered_map VcdIdCountsMap; class VcdCountReader : public VcdReader { @@ -290,7 +290,7 @@ VcdCountReader::varAppendValue(const string &id, VcdTime time, char value) { - auto itr = vcd_count_map_.find(id); + const auto &itr = vcd_count_map_.find(id); if (itr != vcd_count_map_.end()) { VcdCounts &vcd_counts = itr->second; if (debug_->check("read_vcd_activities", 3)) { @@ -316,7 +316,7 @@ VcdCountReader::varAppendBusValue(const string &id, VcdTime time, int64_t bus_value) { - auto itr = vcd_count_map_.find(id); + const auto &itr = vcd_count_map_.find(id); if (itr != vcd_count_map_.end()) { VcdCounts &vcd_counts = itr->second; for (size_t bit_idx = 0; bit_idx < vcd_counts.size(); bit_idx++) { From 1c0c6e06f35a85403a410e6c9dc72b9d8cea0cec Mon Sep 17 00:00:00 2001 From: James Cherry Date: Tue, 28 Jan 2025 08:56:40 -0700 Subject: [PATCH 10/11] recerse bbffa9b4 a976bbac for performance issues Signed-off-by: James Cherry --- include/sta/Search.hh | 3 +-- search/Search.cc | 17 +++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/sta/Search.hh b/include/sta/Search.hh index 74c569f2..e1dfeb4f 100644 --- a/include/sta/Search.hh +++ b/include/sta/Search.hh @@ -261,10 +261,9 @@ public: const PathAnalysisPt *path_ap); ClkInfo *thruClkInfo(PathVertex *from_path, ClkInfo *from_clk_info, - bool from_is_clk, Edge *edge, + Vertex *to_vertex, const Pin *to_pin, - bool to_is_clk, const MinMax *min_max, const PathAnalysisPt *path_ap); ClkInfo *clkInfoWithCrprClkPath(ClkInfo *from_clk_info, diff --git a/search/Search.cc b/search/Search.cc index 49338cf2..bb217733 100644 --- a/search/Search.cc +++ b/search/Search.cc @@ -2170,8 +2170,10 @@ PathVisitor::visitFromPath(const Pin *from_pin, // passed thru reg/latch D->Q edges. && from_tag->isClock())) { const RiseFall *clk_rf = clk_edge ? clk_edge->transition() : nullptr; - ClkInfo *to_clk_info = search_->clkInfoWithCrprClkPath(from_clk_info, - from_path, path_ap); + ClkInfo *to_clk_info = from_clk_info; + if (network_->direction(to_pin)->isInternal()) + to_clk_info = search_->clkInfoWithCrprClkPath(from_clk_info, + from_path, path_ap); to_tag = search_->fromRegClkTag(from_pin, from_rf, clk, clk_rf, to_clk_info, to_pin, to_rf, min_max, path_ap); @@ -2425,8 +2427,8 @@ Search::thruClkTag(PathVertex *from_path, && to_propagates_clk && (role->isWire() || role == TimingRole::combinational())); - ClkInfo *to_clk_info = thruClkInfo(from_path, from_clk_info, from_is_clk, - edge, to_pin, to_is_clk, + ClkInfo *to_clk_info = thruClkInfo(from_path, from_clk_info, + edge, to_vertex, to_pin, min_max, path_ap); Tag *to_tag = mutateTag(from_tag,from_pin,from_rf,from_is_clk,from_clk_info, to_pin, to_rf, to_is_clk, to_is_reg_clk, false, @@ -2438,10 +2440,9 @@ Search::thruClkTag(PathVertex *from_path, ClkInfo * Search::thruClkInfo(PathVertex *from_path, ClkInfo *from_clk_info, - bool from_is_clk, Edge *edge, - const Pin *to_pin, - bool to_is_clk, + Vertex *to_vertex, + const Pin *to_pin, const MinMax *min_max, const PathAnalysisPt *path_ap) { @@ -2472,7 +2473,7 @@ Search::thruClkInfo(PathVertex *from_path, PathVertex *to_crpr_clk_path = nullptr; if (sdc_->crprActive() - && from_is_clk && !to_is_clk) { + && to_vertex->isRegClk()) { to_crpr_clk_path = from_path; changed = true; } From 6907f5b3fe44427c40fc9a5f42394ec25297c670 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Tue, 28 Jan 2025 09:11:05 -0700 Subject: [PATCH 11/11] mv VerilogReader.hh to include/sta Signed-off-by: James Cherry --- {verilog => include/sta}/VerilogReader.hh | 0 search/Sta.cc | 2 +- verilog/VerilogLex.ll | 2 +- verilog/VerilogParse.yy | 2 +- verilog/VerilogReader.cc | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename {verilog => include/sta}/VerilogReader.hh (100%) diff --git a/verilog/VerilogReader.hh b/include/sta/VerilogReader.hh similarity index 100% rename from verilog/VerilogReader.hh rename to include/sta/VerilogReader.hh diff --git a/search/Sta.cc b/search/Sta.cc index 0b91bd59..5c349726 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -40,7 +40,7 @@ #include "SdcNetwork.hh" #include "MakeConcreteNetwork.hh" #include "PortDirection.hh" -#include "verilog/VerilogReader.hh" +#include "VerilogReader.hh" #include "Graph.hh" #include "GraphCmp.hh" #include "Sdc.hh" diff --git a/verilog/VerilogLex.ll b/verilog/VerilogLex.ll index 097ac6c6..01c9e06b 100644 --- a/verilog/VerilogLex.ll +++ b/verilog/VerilogLex.ll @@ -25,7 +25,7 @@ #include "util/FlexDisableRegister.hh" #include "VerilogNamespace.hh" -#include "verilog/VerilogReader.hh" +#include "VerilogReader.hh" #include "verilog/VerilogReaderPvt.hh" #include "VerilogParse.hh" #include "verilog/VerilogScanner.hh" diff --git a/verilog/VerilogParse.yy b/verilog/VerilogParse.yy index fbb6ced4..c020c601 100644 --- a/verilog/VerilogParse.yy +++ b/verilog/VerilogParse.yy @@ -28,7 +28,7 @@ #include "Report.hh" #include "PortDirection.hh" -#include "verilog/VerilogReader.hh" +#include "VerilogReader.hh" #include "verilog/VerilogReaderPvt.hh" #include "verilog/VerilogScanner.hh" diff --git a/verilog/VerilogReader.cc b/verilog/VerilogReader.cc index 3ddc9b22..bc722459 100644 --- a/verilog/VerilogReader.cc +++ b/verilog/VerilogReader.cc @@ -22,7 +22,7 @@ // // This notice may not be removed or altered from any source distribution. -#include "verilog/VerilogReader.hh" +#include "VerilogReader.hh" #include