commit 5eb41d9304fe43d22dcf32b5346a6c9705c0d0b3
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Feb 8 11:49:16 2024 -0700
tcl endpoint_count
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit ffb0e0a083edbbdc3753b829641ba26730d3d882
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Feb 8 10:51:36 2024 -0700
ArcDelayCalc::reduceParasitic
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit ed167b218ed026b0b7427301ace67c3d22cc969a
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Feb 7 22:46:40 2024 -0700
parasitics makeResistor/capacitor rm network arg
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 41244abfcfdee20ddc9aa8ac80cac2e3e7f68146
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Feb 7 17:08:04 2024 -0700
arnoldi coupling caps
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit a14d6880be0dc22bf008cae63ec93880c8347ccf
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Feb 7 07:28:31 2024 -0700
parasiticLoad
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 1cacbd7da71c7f8c5ac311caabd03bb74b66e675
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Feb 7 07:21:49 2024 -0700
parasitic resistor/capacitor index -> id
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 6c749158cc94e5a91376721a8ccb71a8a4d020d5
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Feb 6 21:42:03 2024 -0700
arnoldi
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 4ffa6002224d76321287f64448929e5ef0ec6edd
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Feb 6 18:27:33 2024 -0700
arnoldi parasitic leak
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit a9666dd7c44126b262c7bd1170db69fafa5ef327
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Feb 6 17:05:24 2024 -0700
arnoldi parasitic leak
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit eca0e8b5ea3b4dbb22a1a2ed11018e6e40229b3f
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Feb 6 14:40:38 2024 -0700
comment
Signed-Off-by: James Cherry <cherry@parallaxsw.com>
commit 0263245b5e2412ebefbedc67babf23e1ac047c7b
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Feb 6 14:24:51 2024 -0700
CouplingCap -> Capacitor
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit f9da059814fb09c44cc3529a9a787c3c2192a4e9
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Feb 6 09:31:00 2024 -0700
rm parasitic network array if empty
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 28c2728e5f2859839818ef228aac51fd0100ae65
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Feb 6 08:13:03 2024 -0700
parasitic resistor name -> id
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 045fd7efa3ae8b1cf07c5aa421f3119022e3895a
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 5 21:09:39 2024 -0700
Map -> map
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 8f7d18eed14a8173d91fd98a4e345a16d168b0ee
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 5 21:04:35 2024 -0700
ParasiticResistor, ParasiticCapacitor
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit e2df87a10febc573c77b51a22e82d2d1f6f52af9
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 5 17:06:34 2024 -0700
rm ParasticNode::devices
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 07133b72b73d204d16f964472c38907c18f9758d
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 5 16:52:43 2024 -0700
Parsitic network nodes instead of nodeIterator
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 48c08673b11d0c328ed7d70606b6c7a979d9d0b8
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 5 16:34:31 2024 -0700
mv otherNode to Parasitics
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 99fccc76937c25c68454d8db667306bff2a142ae
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 5 16:29:23 2024 -0700
ParasiticNetwork resistor/capacitor array
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 9de49992ad403d7bc3468c53201d50825d7b961c
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 5 09:42:01 2024 -0700
SpefNameMap
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit f296850201debeb2cfe1fd0b9c61c3c196f00d65
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 5 09:11:17 2024 -0700
comments
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 86ca29b9bdeb732c1a596c196e0c4bf91de3ee37
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 5 08:29:53 2024 -0700
rm Parasitics::reduceTo
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 880bf458d473004ee5d3dc33baa62c9e643ddaec
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Feb 4 20:15:05 2024 -0700
loadCap
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 67322e686f4703a2a5d9cdd1dd66534814662fe4
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Feb 4 09:39:21 2024 -0700
report_parasitic_annotation
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 8ef4e9841bca62a5879e74da83cacee70fa50b2f
Author: James Cherry <cherry@parallaxsw.com>
Date: Sat Feb 3 19:13:27 2024 -0700
ParasiticAnalysisPt use string
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 109a85ab37b5a869a72738ac6a6cd84e4a1d1ac4
Author: James Cherry <cherry@parallaxsw.com>
Date: Sat Feb 3 18:59:02 2024 -0700
rm ParasiticAnalysisPt::min_max_
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit bb7874537d20a1fe905779fe46d783dba14e2db6
Author: James Cherry <cherry@parallaxsw.com>
Date: Sat Feb 3 12:21:28 2024 -0700
parasitics rm pole_residue pointer
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 9e1e2c484e5cd088a08afc278f25b9fcf2cc5dd9
Author: James Cherry <cherry@parallaxsw.com>
Date: Sat Feb 3 11:54:22 2024 -0700
parasitics rm loads pointer
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit cb4a7f870b2371a2ac6b3ce1d340bb5d3c24791a
Author: James Cherry <cherry@parallaxsw.com>
Date: Sat Feb 3 08:05:55 2024 -0700
parasitics use override
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 8e0f84c4fec0411ad3626c836710545531ef219d
Author: James Cherry <cherry@parallaxsw.com>
Date: Sat Feb 3 07:53:59 2024 -0700
Parasitics::unannotatedLoads
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 6b45e369e7be158616219258e6e9a675e87fd8ca
Author: James Cherry <cherry@parallaxsw.com>
Date: Fri Feb 2 12:27:23 2024 -0700
format
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 27e820b36caf7867d20307c7045e86486819db6b
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Feb 1 18:01:51 2024 -0700
rm op_cond args
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 351ed53925c7cc9815f75c34a0320b0dc50445d4
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Jan 31 17:35:15 2024 -0700
rm GraphDelayCalc::loadPins()
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 3341c7caff595dab0b7519ab5103958aadfe1510
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Jan 31 17:31:56 2024 -0700
read_spef arg check
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 7d0c1e78b42e33d5298efefa87a982f28f51bc57
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Jan 31 10:53:35 2024 -0700
arnoldi use parasitics api
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 86b39ac10e5c6556a9b0b5b7bce016884cd935ee
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Jan 31 10:30:47 2024 -0700
range iter
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 469fad36af69cc8b76e4dfc88a085962795d7c46
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Jan 30 16:43:46 2024 -0700
read_spef -reduce
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 2b88aa471f083ae895f6277c2c844e308451fff9
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Jan 29 20:31:47 2024 -0700
Paraasitics::connectionPin() -> pin()
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 7b9ff7e228b215b3121b7e7189d9c0c18ced3ef3
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Jan 29 17:12:32 2024 -0700
ParasiticNode::isExternal()
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 889c27af846ed1cdf76295da5262836378ab9162
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Jan 29 11:17:59 2024 -0700
rm redundant op_cond arg
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 7d7ce5e7809bc80f36dd81cb05615a87433ed315
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Jan 29 11:03:42 2024 -0700
mv estimatePiElmore to Parasitics
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 04e1757b3c8b4e9f5cffbe3b03214fc065fb1c2c
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Jan 29 09:09:28 2024 -0700
ParasiticNode un-virtual
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 016ce50f82cbb68f9536d3ed5fd511b2f82f4439
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Jan 28 17:26:04 2024 -0700
parasitics coupling cap api
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 1748629fb462b24b43002ecd3fe1679d367752f4
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Jan 28 11:12:46 2024 -0700
Parasitics::value rm ap arg
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 1272cb86bcae5960c9af7d589f99f1488aa0b322
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Jan 28 11:10:57 2024 -0700
read_spef rm -quiet arg
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 3d86a9d86115dde5f20eb4bb8ca15f0c85de5810
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Jan 28 11:01:24 2024 -0700
reduce min_max arg
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit f7abfd5e72e0f74b9ffabf6306bbf809b62d4e98
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Jan 28 10:59:29 2024 -0700
rm spef_reader
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit e3550523b1964b2137419240f748a0b44c3322b6
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Jan 28 10:58:24 2024 -0700
reducers rm op_cond arg
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit cec793accb3db5c41cdb51f85c8530ffc1e085db
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Jan 28 10:08:45 2024 -0700
rm NullParastics
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 6596d35f6da51cbacb2c21588715773d3b5edb64
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Jan 28 10:03:29 2024 -0700
ArcDelayCalc::reduceParasitic
Signed-off-by: James Cherry <cherry@parallaxsw.com>
Signed-off-by: James Cherry <cherry@parallaxsw.com>
|
||
|---|---|---|
| app | ||
| cmake | ||
| dcalc | ||
| doc | ||
| etc | ||
| examples | ||
| graph | ||
| include/sta | ||
| jenkins | ||
| liberty | ||
| network | ||
| parasitics | ||
| power | ||
| sdc | ||
| sdf | ||
| search | ||
| tcl | ||
| test | ||
| util | ||
| verilog | ||
| .clang-format | ||
| .dockerignore | ||
| .gitignore | ||
| CMakeLists.txt | ||
| Dockerfile | ||
| Dockerfile.ubuntu_18.04 | ||
| Jenkinsfile | ||
| LICENSE | ||
| README.md | ||
README.md
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 documentation. See doc/StaApi.txt for timing engine API documentation. See doc/ChangeLog.txt for changes to commands.
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 is open source, meaning the sources are published and can be compiled locally. Derivative works are supported as long as they adhere to the GPL license requirements. However, OpenSTA is not supported by a public community of developers as many other open source projects are. The copyright and develpment are exclusive to Parallax Software. OpenSTA does not solicit or accept external code contributions.
Removing copyright and license notices from OpenSTA sources (or any other open source project for that matter) is illegal. This should be obvious, but the author of OpenSTA has discovered two different cases where the copyright and license were removed from source files that were copied.
The official git repository is located at https://github.com/parallaxsw/OpenSTA.git. Any forks from this code base have not passed extensive regression testing which is not publicly available.
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
22.04.2 11.3
cmake 3.10.2 3.24.2 3.16.2
clang 9.1.0 14.0.3
gcc 3.3.2 11.3.0
tcl 8.4 8.6 8.6.6
swig 1.3.28 4.1.0 4.0.1
bison 1.35 3.0.2 3.8.2
flex 2.5.4 2.6.4 2.6.4
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.
License
OpenSTA, Static Timing Analyzer Copyright (c) 2023, Parallax Software, Inc.
This 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/.