diff --git a/doc/ChangeLog.txt b/doc/ChangeLog.txt index 73dedf7b..42fe61ef 100644 --- a/doc/ChangeLog.txt +++ b/doc/ChangeLog.txt @@ -20,7 +20,7 @@ The command line options have changed to the following: .... Builds using Autotools/configure are no longer supported. -Use CMake as documented in README.mb. +Use CMake as documented in README.md. .... @@ -79,17 +79,24 @@ input and .measure statement for each gate delay and pin slew. .... -The report_checks, find_timing_paths commands now support an +The report_checks and report_check_types commands now support an -unconstrained flag. report_checks -unconstrained - find_timing_paths -unconstrained + report_check_types -unconstrained The sta_report_unconstrained_paths variable will be supported for -for compatibility in this current release. +for compatibility in the current release. .... +The transition_time path reporting field has been renamed to slew. + + report_checks -fields {slew} + report_check_types -fields {slew} + +... + The read_parasitics command has been renamed read_spef and no longer supports the SPF format. @@ -125,6 +132,10 @@ total_negative_slack and worst_negative_slack respectively. report_tns report_wns + report_worst_slack + +The set_clock_sense command was deprecated by SDC 2.1. +Use set_sense -type clock instead. Release 1.11.0 2017/08/18 ------------------------- diff --git a/doc/OpenSTA.odt b/doc/OpenSTA.odt index ada6d878..cb48d45f 100644 Binary files a/doc/OpenSTA.odt and b/doc/OpenSTA.odt differ diff --git a/network/ConcreteLibrary.hh b/network/ConcreteLibrary.hh index ebb84eb7..547a0a1b 100644 --- a/network/ConcreteLibrary.hh +++ b/network/ConcreteLibrary.hh @@ -91,7 +91,7 @@ public: virtual ConcreteLibrary *library() const { return library_; } virtual const char *name() const { return name_; } virtual const char *filename() const { return filename_; } - LibertyCell *libertyCell() { return liberty_cell_; } + LibertyCell *libertyCell() const { return liberty_cell_; } void setLibertyCell(LibertyCell *cell); virtual int portBitCount() const { return port_bit_count_; } virtual ConcretePort *findPort(const char *name) const; diff --git a/network/ConcreteNetwork.cc b/network/ConcreteNetwork.cc index fb0ea0c6..0e7fece6 100644 --- a/network/ConcreteNetwork.cc +++ b/network/ConcreteNetwork.cc @@ -553,12 +553,25 @@ ConcreteNetwork::libertyCell(Cell *cell) const return ccell->libertyCell(); } +const LibertyCell * +ConcreteNetwork::libertyCell(const Cell *cell) const +{ + const ConcreteCell *ccell = reinterpret_cast(cell); + return ccell->libertyCell(); +} + Cell * ConcreteNetwork::cell(LibertyCell *cell) const { return reinterpret_cast(cell); } +const Cell * +ConcreteNetwork::cell(const LibertyCell *cell) const +{ + return reinterpret_cast(cell); +} + const char * ConcreteNetwork::filename(const Cell *cell) { diff --git a/network/ConcreteNetwork.hh b/network/ConcreteNetwork.hh index 6fe3e74e..a754e8f6 100644 --- a/network/ConcreteNetwork.hh +++ b/network/ConcreteNetwork.hh @@ -76,7 +76,9 @@ public: virtual const char *name(const Cell *cell) const; virtual Library *library(const Cell *cell) const; virtual LibertyCell *libertyCell(Cell *cell) const; + virtual const LibertyCell *libertyCell(const Cell *cell) const; virtual Cell *cell(LibertyCell *cell) const; + virtual const Cell *cell(const LibertyCell *cell) const; virtual const char *filename(const Cell *cell); virtual Port *findPort(const Cell *cell, const char *name) const; diff --git a/network/Network.cc b/network/Network.cc index 7a9e38f6..f577034f 100644 --- a/network/Network.cc +++ b/network/Network.cc @@ -52,7 +52,7 @@ Network::isLinked() const LibertyLibrary * Network::libertyLibrary(const Cell *cell) const { - return libertyCell(const_cast(cell))->libertyLibrary(); + return libertyCell(cell)->libertyLibrary(); } LibertyLibrary * diff --git a/network/Network.hh b/network/Network.hh index 79c97381..f7ccbade 100644 --- a/network/Network.hh +++ b/network/Network.hh @@ -132,10 +132,11 @@ public: // Cell functions. virtual const char *name(const Cell *cell) const = 0; virtual Library *library(const Cell *cell) const = 0; - virtual LibertyLibrary *libertyLibrary(const Cell *cell) const - __attribute__ ((deprecated)); + virtual LibertyLibrary *libertyLibrary(const Cell *cell) const; // Find the corresponding liberty cell. + virtual const LibertyCell *libertyCell(const Cell *cell) const = 0; virtual LibertyCell *libertyCell(Cell *cell) const = 0; + virtual const Cell *cell(const LibertyCell *cell) const = 0; virtual Cell *cell(LibertyCell *cell) const = 0; // Filename may return null. virtual const char *filename(const Cell *cell) = 0; diff --git a/network/SdcNetwork.cc b/network/SdcNetwork.cc index 4b5ec7b5..94140ccf 100644 --- a/network/SdcNetwork.cc +++ b/network/SdcNetwork.cc @@ -592,12 +592,24 @@ NetworkNameAdapter::libertyCell(Cell *cell) const return network_->libertyCell(cell); } +const LibertyCell * +NetworkNameAdapter::libertyCell(const Cell *cell) const +{ + return network_->libertyCell(cell); +} + Cell * NetworkNameAdapter::cell(LibertyCell *cell) const { return network_->cell(cell); } +const Cell * +NetworkNameAdapter::cell(const LibertyCell *cell) const +{ + return network_->cell(cell); +} + Port * NetworkNameAdapter::findPort(const Cell *cell, const char *name) const diff --git a/network/SdcNetwork.hh b/network/SdcNetwork.hh index 5a12eaaf..5e92d299 100644 --- a/network/SdcNetwork.hh +++ b/network/SdcNetwork.hh @@ -47,7 +47,9 @@ public: virtual const char *name(const Cell *cell) const; virtual Library *library(const Cell *cell) const; virtual LibertyCell *libertyCell(Cell *cell) const; + virtual const LibertyCell *libertyCell(const Cell *cell) const; virtual Cell *cell(LibertyCell *cell) const; + virtual const Cell *cell(const LibertyCell *cell) const; virtual const char *filename(const Cell *cell); virtual Port *findPort(const Cell *cell, const char *name) const; diff --git a/tcl/Search.tcl b/tcl/Search.tcl index 76dcdb2c..0b6b1f19 100644 --- a/tcl/Search.tcl +++ b/tcl/Search.tcl @@ -133,7 +133,7 @@ proc delays_are_inf { delays } { define_cmd_args "report_path" \ {[-min|-max]\ [-format full|full_clock|full_clock_expanded|short|end|summary]\ - [-fields [capacitance|transition_time|input_pin|net]\ + [-fields [capacitance|slew|input_pin|net]\ [-digits digits] [-no_line_splits]\ [> filename] [>> filename]\ pin ^|r|rise|v|f|fall} @@ -254,7 +254,9 @@ proc parse_report_path_options { cmd args_var default_format set report_input_pin [expr [lsearch $fields "input*"] != -1] set report_cap [expr [lsearch $fields "cap*"] != -1] set report_net [expr [lsearch $fields "net*"] != -1] - set report_slew [expr [lsearch $fields "trans*"] != -1] + # transition_time - compatibility 06/24/2019 + set report_slew [expr [lsearch $fields "slew*"] != -1 \ + || [lsearch $fields "trans*"] != -1] } else { set report_input_pin 0 set report_cap 0 diff --git a/tcl/Sta.tcl b/tcl/Sta.tcl index f93a30c7..6dae23ad 100644 --- a/tcl/Sta.tcl +++ b/tcl/Sta.tcl @@ -292,7 +292,7 @@ define_sta_cmd_args "report_checks" \ [-sort_by_slack]\ [-path_group group_name]\ [-format full|full_clock|full_clock_expanded|short|end|summary]\ - [-fields [capacitance|transition_time|input_pin|net]]\ + [-fields [capacitance|slew|input_pin|net]]\ [-digits digits]\ [-no_line_splits]\ [> filename] [>> filename]}