commit be70d30ae05665021254b0d7e69fb8d2f0a82890 Author: James Cherry <[email protected]> Date: Tue Jan 17 17:04:49 2023 -0700 cmp Signed-off-by: James Cherry <[email protected]> commit 4d4ef96948afe3d6a00c4521aeb5bc74274f5737 Author: James Cherry <[email protected]> Date: Tue Jan 17 16:08:50 2023 -0700 rvo, const Signed-off-by: James Cherry <[email protected]> commit bb584e4264af2bea867b17d07e8d38c0e9eb0025 Author: James Cherry <[email protected]> Date: Tue Jan 17 15:05:00 2023 -0700 const Signed-off-by: James Cherry <[email protected]> commit a08fe558bca6b769b2728882258bd85aed990a27 Author: James Cherry <[email protected]> Date: Tue Jan 17 14:57:33 2023 -0700 LibertyPortPair no ptrs Signed-off-by: James Cherry <[email protected]> commit 4d3bd60c109d1ce9d0589d746f4968fa7bebd90d Author: James Cherry <[email protected]> Date: Tue Jan 17 14:13:07 2023 -0700 cleanup Signed-off-by: James Cherry <[email protected]> commit dc25ff77771cfbe26f9318bad2b3c45879614783 Author: James Cherry <[email protected]> Date: Tue Jan 17 14:06:13 2023 -0700 const Signed-off-by: James Cherry <[email protected]> commit 06e81586ce11a0cc06948ed78fef99353077d69e Author: James Cherry <[email protected]> Date: Tue Jan 17 14:01:10 2023 -0700 sortByName Signed-off-by: James Cherry <[email protected]> commit 9d8592aff5b246f83e47e1b94490e3cef8d8e119 Author: James Cherry <[email protected]> Date: Tue Jan 17 11:57:17 2023 -0700 sort pred Signed-off-by: James Cherry <[email protected]> commit 462a8e14df8b561ddfc842addc62c4b8435b6347 Author: James Cherry <[email protected]> Date: Tue Jan 17 11:09:57 2023 -0700 const Signed-off-by: James Cherry <[email protected]> commit 69f71505b684e88b22d395510429497e87bf1015 Author: James Cherry <[email protected]> Date: Tue Jan 17 10:45:14 2023 -0700 flush ConstPortSeq Signed-off-by: James Cherry <[email protected]> commit 6429d578b78eac3fe7e99fcd67a120789932b2eb Author: James Cherry <[email protected]> Date: Tue Jan 17 09:19:15 2023 -0700 rm ConstNetSet Signed-off-by: James Cherry <[email protected]> commit f247930b16e40560b957a36af68947249ed1ef04 Author: James Cherry <[email protected]> Date: Tue Jan 17 08:50:50 2023 -0700 sortPathNames Signed-off-by: James Cherry <[email protected]> commit 4ca2b0e0af7252c7bcbc65cf141d0ce40634d329 Author: James Cherry <[email protected]> Date: Mon Jan 16 10:14:05 2023 -0700 const Signed-off-by: James Cherry <[email protected]> commit 3d18640d2ebc4aae3098c7e7242a554fcb64fd42 Author: James Cherry <[email protected]> Date: Mon Jan 16 09:41:27 2023 -0700 set_input/ouput_delay -reference_pin Signed-off-by: James Cherry <[email protected]> commit d4a0854dd2102f46f96a94fb9eb8749f1593a85f Author: James Cherry <[email protected]> Date: Mon Jan 16 09:13:46 2023 -0700 PinPairSet no malloc Signed-off-by: James Cherry <[email protected]> commit a6f1583fc6a856c5ecc0dcb15a1d8b1f61e30718 Author: James Cherry <[email protected]> Date: Mon Jan 16 08:53:33 2023 -0700 no malloc for EdgePins Signed-off-by: James Cherry <[email protected]> commit c8e4b92e8b619109d6aa3c141c720646067ccb4b Author: James Cherry <[email protected]> Date: Mon Jan 16 06:31:08 2023 +0000 leak commit abab99e0fc3e466d914f6c1705aa08cdc204df51 Author: James Cherry <[email protected]> Date: Mon Jan 16 06:07:36 2023 +0000 leaks commit d1913b554bb6e98b89673d80d2295f552eb4ffca Author: James Cherry <[email protected]> Date: Sun Jan 15 19:48:39 2023 -0700 LibertyCell::checkCornerCell Signed-off-by: James Cherry <[email protected]> commit bcc172237d48deed647374f9592bac70bd2d5425 Author: James Cherry <[email protected]> Date: Sun Jan 15 18:19:47 2023 -0700 rvo Signed-off-by: James Cherry <[email protected]> commit 8ef9800b87f5e5548055a13afc21397f28a6bcf7 Author: James Cherry <[email protected]> Date: Sun Jan 15 18:07:46 2023 -0700 sdc net id Signed-off-by: James Cherry <[email protected]> commit d7235abed04ced4e2d84e91bf9968e621268567d Author: James Cherry <[email protected]> Date: Sun Jan 15 16:00:27 2023 -0700 range iter Signed-off-by: James Cherry <[email protected]> commit a22f91a3c54c644574339d1126821d9bc8045bd6 Author: James Cherry <[email protected]> Date: Sun Jan 15 15:52:50 2023 -0700 range iter Signed-off-by: James Cherry <[email protected]> commit 762615ce3de91d950eeaaa4680549a45b13e0e0a Author: James Cherry <[email protected]> Date: Sun Jan 15 15:42:19 2023 -0700 range iter Signed-off-by: James Cherry <[email protected]> commit 7e0c531613d343d23f064c24873bf5a498f6f4ce Author: James Cherry <[email protected]> Date: Sun Jan 15 12:26:49 2023 -0700 rm removeLoadCaps, removeNetLoadCaps Signed-off-by: James Cherry <[email protected]> commit f2e88c6082e2d4605e9849348008bf4065401fc8 Author: James Cherry <[email protected]> Date: Sun Jan 15 12:21:03 2023 -0700 sdc rm map ptrs Signed-off-by: James Cherry <[email protected]> commit b5939666188c0b94dfe957e22bbd8a92f4786125 Author: James Cherry <[email protected]> Date: Sun Jan 15 11:36:16 2023 -0700 sdc rm map ptrs Signed-off-by: James Cherry <[email protected]> commit a435081bafe10260743319f53a59cbe2ed0388b7 Author: James Cherry <[email protected]> Date: Sun Jan 15 08:43:37 2023 -0700 sdc rm map ptrs Signed-off-by: James Cherry <[email protected]> commit acfb247559db7b726d47f203613488df0f7add53 Author: James Cherry <[email protected]> Date: Sun Jan 15 08:38:07 2023 -0700 sdc rm map ptrs Signed-off-by: James Cherry <[email protected]> commit 7541b71da92ea15085615988a1e6ea1d4d53d8d6 Author: James Cherry <[email protected]> Date: Sun Jan 15 08:00:55 2023 -0700 sdc rm map ptrs Signed-off-by: James Cherry <[email protected]> commit d033210132656ea68fa834228575b9def1d02d90 Author: James Cherry <[email protected]> Date: Sun Jan 15 07:52:03 2023 -0700 sdc rm map ptrs Signed-off-by: James Cherry <[email protected]> commit ca6e9ecb7821b83ab024c4fee6df8f7fc8fc2ce2 Author: James Cherry <[email protected]> Date: Sun Jan 15 07:38:12 2023 -0700 instance_pvt_maps_ Signed-off-by: James Cherry <[email protected]> commit 631e4209b596386f5818045d521784db5239f58d Author: James Cherry <[email protected]> Date: Sun Jan 15 07:26:42 2023 -0700 rm GroupPathIterator Signed-off-by: James Cherry <[email protected]> commit 059c32afa87617fff530c9afa1ef8005a136739d Author: James Cherry <[email protected]> Date: Sat Jan 14 20:07:44 2023 -0700 rm ClockIterator Signed-off-by: James Cherry <[email protected]> commit c65fe873a6a6696220bbb44c4ecac87d5ca978ac Author: James Cherry <[email protected]> Date: Sat Jan 14 19:45:58 2023 -0700 rvo Signed-off-by: James Cherry <[email protected]> commit ce15c9a0cc78915acddc2f03749573d989ae96d6 Author: James Cherry <[email protected]> Date: Sun Jan 15 01:04:03 2023 +0000 leaks commit f97955a0c7e70b65ceb3f697ff47c0524a9b3cd4 Author: James Cherry <[email protected]> Date: Sat Jan 14 01:17:58 2023 +0000 leaks commit 7cdd65684adeb14e02827f5d93e7fab3b19af5dd Author: James Cherry <[email protected]> Date: Fri Jan 13 16:07:47 2023 -0700 leaks Signed-off-by: James Cherry <[email protected]> commit ee97c7e50394a3927458e7ef09c5dbeb27719d15 Author: James Cherry <[email protected]> Date: Fri Jan 13 11:52:48 2023 -0700 swig rm Tmp collections Signed-off-by: James Cherry <[email protected]> commit c49935da8704e41459280971b7645fccd97e3d13 Author: James Cherry <[email protected]> Date: Fri Jan 13 11:18:36 2023 -0700 swig rm Tmp types Signed-off-by: James Cherry <[email protected]> commit 4320b00ce700914843006f592126cd8cc1c4657a Author: James Cherry <[email protected]> Date: Fri Jan 13 10:55:10 2023 -0700 swig rm TmpPinSet, TmpPinSeq Signed-off-by: James Cherry <[email protected]> commit ff6004910980c9b09b41f63a553a4481404cc539 Author: James Cherry <[email protected]> Date: Fri Jan 13 10:45:06 2023 -0700 swig rm Tmp collections Signed-off-by: James Cherry <[email protected]> commit 9a5bf5c1a3e5a6d2996b3ab327fa2f3015f2ff20 Author: James Cherry <[email protected]> Date: Fri Jan 13 10:15:29 2023 -0700 swig rm one TmpPinSet Signed-off-by: James Cherry <[email protected]> commit f441116b56e23849485b2393b30e7086c33165a8 Author: James Cherry <[email protected]> Date: Fri Jan 13 09:16:56 2023 -0700 leak Signed-off-by: James Cherry <[email protected]> commit 050b08df8618340b568d9cd41fd3d5f052e2c680 Author: James Cherry <[email protected]> Date: Fri Jan 13 09:10:53 2023 -0700 leak Signed-off-by: James Cherry <[email protected]> commit be8c17f3a715ab53140748dc1d94698209965cf9 Author: James Cherry <[email protected]> Date: Fri Jan 13 08:59:06 2023 -0700 leak Signed-off-by: James Cherry <[email protected]> commit e43b82f8fb52eaeda90e3c7e76cf350ae6735ebd Author: James Cherry <[email protected]> Date: Thu Jan 12 18:57:49 2023 -0700 range iter Signed-off-by: James Cherry <[email protected]> commit 8db56209de7805ac2574fd2f76170bf68afd156d Author: James Cherry <[email protected]> Date: Thu Jan 12 18:08:54 2023 -0700 GroupPathSet net id Signed-off-by: James Cherry <[email protected]> commit cb7917f9827c2ea3afebd735cd4508405a0d77d4 Author: James Cherry <[email protected]> Date: Thu Jan 12 12:00:15 2023 -0700 DataCheckLess net id Signed-off-by: James Cherry <[email protected]> commit d9da3c62d7a76699c6ad62cebb1f5c39f89722fa Author: James Cherry <[email protected]> Date: Thu Jan 12 11:42:27 2023 -0700 rm hashPtr uses Signed-off-by: James Cherry <[email protected]> commit 5bbea162bb1e023aba813598c7992c740ddf9d0b Author: James Cherry <[email protected]> Date: Thu Jan 12 11:30:12 2023 -0700 EdgePins has use net id Signed-off-by: James Cherry <[email protected]> commit df38405e2ebaabdd7bbf99f3b19d78b25bd95720 Author: James Cherry <[email protected]> Date: Thu Jan 12 09:51:38 2023 -0700 ExceptionPath hash use net id Signed-off-by: James Cherry <[email protected]> commit 9a6dcfa54c54c9f50b14248a2449c70c20a0d977 Author: James Cherry <[email protected]> Date: Thu Jan 12 08:56:49 2023 -0700 ClockInsertion, ClockLatency net id Signed-off-by: James Cherry <[email protected]> commit dbb6dc0b8c93812458df31e93f08e0dbd74e8105 Author: James Cherry <[email protected]> Date: Thu Jan 12 08:34:03 2023 -0700 ExceptionStateSet obj id Signed-off-by: James Cherry <[email protected]> commit 70b8721c48ec0816289ee09b664c332ee095875f Author: James Cherry <[email protected]> Date: Thu Jan 12 08:14:37 2023 -0700 ClockGroups cmp Signed-off-by: James Cherry <[email protected]> commit 4c6c4ca191a99cd8541e106fec3202ee14968f39 Author: James Cherry <[email protected]> Date: Thu Jan 12 07:38:17 2023 -0700 ClockGroup typedef to ClockSet Signed-off-by: James Cherry <[email protected]> commit 66f425315e16deee5f00b05c0a505766e7afbf01 Author: James Cherry <[email protected]> Date: Wed Jan 11 20:32:38 2023 -0700 set cmps Signed-off-by: James Cherry <[email protected]> commit a94866c7828af5b6714e3e4fffc13bdaf5155c0e Author: James Cherry <[email protected]> Date: Wed Jan 11 19:08:09 2023 -0700 net use id Signed-off-by: James Cherry <[email protected]> commit 6348320908f42ebb5262117182e13d0024f65537 Author: James Cherry <[email protected]> Date: Wed Jan 11 11:52:13 2023 -0700 exception id cmp Signed-off-by: James Cherry <[email protected]> commit 0edfca41b6d6408ac17f8dfe10e697c55146c1ef Author: James Cherry <[email protected]> Date: Wed Jan 11 10:47:02 2023 -0700 range iter Signed-off-by: James Cherry <[email protected]> commit 44ad77985da9f0b9e7f4780e3f233c8d94fa7db7 Author: James Cherry <[email protected]> Date: Wed Jan 11 08:27:58 2023 -0700 non-ptr set cmp Signed-off-by: James Cherry <[email protected]> commit 36de7d88c3fa683465604a9e16b2fc1f6bc5fdd0 Author: James Cherry <[email protected]> Date: Wed Jan 11 08:00:54 2023 -0700 range iteration Signed-off-by: James Cherry <[email protected]> commit 4a31a2c8d9bdae58b09af8c05a64702ea3ac6c15 Author: James Cherry <[email protected]> Date: Tue Jan 10 16:43:54 2023 -0700 tcl types Signed-off-by: James Cherry <[email protected]> commit 056a7447b494a4c8ecc9764650d78a5bed3d87e8 Author: James Cherry <[email protected]> Date: Tue Jan 10 16:10:36 2023 -0700 tcl types Signed-off-by: James Cherry <[email protected]> commit 97239554c7625ba50ee729260f08eda7dec02365 Author: James Cherry <[email protected]> Date: Tue Jan 10 13:10:42 2023 -0700 use RVO Signed-off-by: James Cherry <[email protected]> commit c3247d8937d483102e3e1f2b69d7ac1d331ba9d4 Author: James Cherry <[email protected]> Date: Mon Jan 9 22:41:20 2023 -0700 swig template seq's Signed-off-by: James Cherry <[email protected]> commit 5431c06feb256adb46858819fcf5d513cfa6b5ec Author: James Cherry <[email protected]> Date: Mon Jan 9 20:50:24 2023 -0700 swig set in template Signed-off-by: James Cherry <[email protected]> commit 592ad641bf01d3beb862314a0d8986f66e258642 Author: James Cherry <[email protected]> Date: Mon Jan 9 17:27:25 2023 -0700 network return containers Signed-off-by: James Cherry <[email protected]> commit c95f8b77e0d6bd5ffa5ba8102413c70883c756e1 Author: James Cherry <[email protected]> Date: Mon Jan 9 12:15:37 2023 -0700 PinSeq const Signed-off-by: James Cherry <[email protected]> commit 702e7f9ba2f901066a38f32e67b35602b6c7bbdf Author: James Cherry <[email protected]> Date: Mon Jan 9 12:02:29 2023 -0700 InstanceSeq const Signed-off-by: James Cherry <[email protected]> commit 44fc25ba4a15e4ae570d74af27c9435872a126e0 Author: James Cherry <[email protected]> Date: Mon Jan 9 12:01:45 2023 -0700 NetSeq const Signed-off-by: James Cherry <[email protected]> commit 03b2725c81f5d52c33c875b55056c11d482144f1 Author: James Cherry <[email protected]> Date: Mon Jan 9 11:33:18 2023 -0700 rm PortPair Signed-off-by: James Cherry <[email protected]> commit 3fb82a7344dc053171c9883a113764ba691ab827 Author: James Cherry <[email protected]> Date: Mon Jan 9 11:20:53 2023 -0700 PinSet id Signed-off-by: James Cherry <[email protected]> commit 3dd31f027e15d40d62a11d0a88ef2a115f01fb73 Author: James Cherry <[email protected]> Date: Sun Jan 8 15:03:33 2023 -0700 InstanceSet id Signed-off-by: James Cherry <[email protected]> commit a91dea5cc0af3bede36b3faed13adb05239ff907 Author: James Cherry <[email protected]> Date: Sun Jan 8 11:40:15 2023 -0700 NetSet id Signed-off-by: James Cherry <[email protected]> commit b91e4b6410134eccae7969ddcfb0b27933b2e746 Author: James Cherry <[email protected]> Date: Sun Jan 8 10:44:47 2023 -0700 CellSet, PortSet id Signed-off-by: James Cherry <[email protected]> commit 6f891f77fae5a6b19c1454a1a4b4e3dfae0b5c50 Author: James Cherry <[email protected]> Date: Sun Jan 8 10:29:25 2023 -0700 network object sets Signed-off-by: James Cherry <[email protected]> commit eb8c627a57ecc6e7c5846a01d62b090ff91c08bf Author: James Cherry <[email protected]> Date: Sun Jan 8 10:09:00 2023 -0700 PinSet1 Signed-off-by: James Cherry <[email protected]> commit 8e864ecbdf87000fbb3c3097c39f06173c941e35 Author: James Cherry <[email protected]> Date: Sat Jan 7 17:13:03 2023 -0700 concrete network object id Signed-off-by: James Cherry <[email protected]> Signed-off-by: James Cherry <[email protected]>
Parallax Static Timing Analyzer
OpenSTA is a gate level static timing verifier. As a stand-alone executable it can be used to verify the timing of a design using standard file formats.
- Verilog netlist
- Liberty library
- SDC timing constraints
- SDF delay annotation
- SPEF parasitics
OpenSTA uses a TCL command interpreter to read the design, specify timing constraints and print timing reports.
Clocks
- Generated
- Latency
- Source latency (insertion delay)
- Uncertainty
- Propagated/Ideal
- Gated clock checks
- Multiple frequency clocks
Exception paths
- False path
- Multicycle path
- Min/Max path delay
- Exception points
- -from clock/pin/instance -through pin/net -to clock/pin/instance
- Edge specific exception points
- -rise_from/-fall_from, -rise_through/-fall_through, -rise_to/-fall_to
Delay calculation
- Integrated Dartu/Menezes/Pileggi RC effective capacitance algorithm
- External delay calculator API
Analysis
- Report timing checks -from, -through, -to, multiple paths to endpoint
- Report delay calculation
- Check timing setup
Timing Engine
OpenSTA is architected to be easily bolted on to other tools as a timing engine. By using a network adapter, OpenSTA can access the host netlist data structures without duplicating them.
- Query based incremental update of delays, arrival and required times
- Simulator to propagate constants from constraints and netlist tie high/low
See doc/OpenSTA.pdf for command documentiaton. See doc/StaApi.txt for timing engine API documentiaton. See doc/ChangeLog.txt for changes to commands.
Build
OpenSTA is built with CMake.
Prerequisites
The build dependency versions are show below. Other versions may work, but these are the versions used for development.
from Ubuntu Xcode
18.04.1 11.3
cmake 3.10.2 3.10.2 3.16.2
clang 9.1.0 11.0.0
gcc 3.3.2 7.3.0
tcl 8.4 8.6 8.6.6
swig 1.3.28 3.0.12 4.0.1
bison 1.35 3.0.4 3.5
flex 2.5.4 2.6.4 2.5.35
Note that flex versions before 2.6.4 contain 'register' declarations that are illegal in c++17.
These packages are optional:
tclreadline 2.3.8
libz 1.1.4 1.2.5 1.2.8
cudd 2.4.1 3.0.0
The TCL readline library 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:
cmake .. -DUSE_TCL_READLINE=ON
The Zlib library is an optional. If CMake finds libz, OpenSTA can read Verilog, SDF, SPF, and SPEF files compressed with gzip.
CUDD is a binary decision diageram (BDD) package that is used to improve conditional timing arc handling. OpenSTA does not require it to be installed. It is available here or here.
Note that the file hierarchy of the CUDD installation changed with version 3.0. Some changes to CMakeLists.txt are required to support older versions.
Use the USE_CUDD option to look for the cudd library. Use the CUDD_DIR option to set the install directory if it is not in one of the normal install directories.
When building CUDD you may use the --prefix option to configure to
install in a location other than the default (/usr/local/lib).
cd $HOME/cudd-3.0.0
mkdir $HOME/cudd
./configure --prefix $HOME/cudd
make
make install
cd <opensta>/build
cmake .. -DUSE_CUDD=ON -DCUDD_DIR=$HOME/cudd
Installing with CMake
Use the following commands to checkout the git repository and build the OpenSTA library and excutable.
git clone https://github.com/The-OpenROAD-Project/OpenSTA.git
cd OpenSTA
mkdir build
cd build
cmake ..
make
The default build type is release to compile optimized code.
The resulting executable is in app/sta.
The library without a main() procedure is app/libSTA.a.
Optional CMake variables passed as -D= arguments to CMake are show below.
CMAKE_BUILD_TYPE DEBUG|RELEASE
CMAKE_CXX_FLAGS - additional compiler flags
TCL_LIBRARY - path to tcl library
TCL_HEADER - path to tcl.h
CUDD - path to cudd installation
ZLIB_ROOT - path to zlib
CMAKE_INSTALL_PREFIX
If TCL_LIBRARY is specified the CMake script will attempt to locate
the header from the library path.
The default install directory is /usr/local.
To install in a different directory with CMake use:
cmake .. -DCMAKE_INSTALL_PREFIX=<prefix_path>
If you make changes to CMakeLists.txt you may need to clean out
existing CMake cached variable values by deleting all of the
files in the build directory.
Bug Reports
Use the Issues tab on the github repository to report bugs.
Each issue/bug should be a separate issue. The subject of the issue should be a short description of the problem. Attach a test case to reproduce the issue as described below. Issues without test cases are unlikely to get a response.
The files in the test case should be collected into a directory named YYYYMMDD where YYYY is the year, MM is the month, and DD is the day (this format allows "ls" to report them in chronological order). The contents of the directory should be collected into a compressed tarfile named YYYYMMDD.tgz.
The test case should have a tcl command file recreates the issue named run.tcl. If there are more than one command file using the same data files, there should be separate command files, run1.tcl, run2.tcl etc. The bug report can refer to these command files by name.
Command files should not have absolute filenames like "/home/cho/OpenSTA_Request/write_path_spice/dump_spice" in them. 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
External code contributions are not supported.
https://en.wikipedia.org/wiki/Contributor_License_Agreement https://opensource.google/docs/cla/
License
OpenSTA is dual licensed. It is released under GPL v3 as OpenSTA and is also licensed for commerical applications by Parallax Software without the GPL's requirements.
OpenSTA, Static Timing Analyzer Copyright (c) 2022, Parallax Software, Inc.
This 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 https://www.gnu.org/licenses/.