commit 08c062d3dd1d0cea846407dda0b5fd75ca64329c
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Mar 25 16:17:42 2025 -0700
ApiChanges.txt
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit ef72112a00419e466e19b5c1442cac6f2835adaa
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 23 12:37:10 2025 -0700
crpr29/30
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 2065acfbfbaa84307fde1c46ff51a1c619c45f50
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 23 12:33:55 2025 -0700
compile error
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit d3133015b90b59f7e8e934c20d1ed8449d543d7b
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Mar 17 15:20:55 2025 -0700
rebase falout
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 8a4b81755765db823e18ffb497f1fb3f0c64ec7b
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Mar 17 09:22:01 2025 -0700
rebase fallout
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 7ef00dcaa4ed0b6db3f4205da47013e4f2ef1049
Author: James Cherry <cherry@parallaxsw.com>
Date: Sat Mar 15 17:00:51 2025 -0700
deleteEdge clear to path prev_paths
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 912dacbca8f5c286f623f13659c831be6ed4d93e
Author: James Cherry <cherry@parallaxsw.com>
Date: Sat Mar 15 12:05:06 2025 -0700
undo 7f8c7adb
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 9944c2ec907e9f07ab46f71af55ec947f3815de0
Author: James Cherry <cherry@parallaxsw.com>
Date: Fri Mar 14 21:25:10 2025 -0700
rm Path::path()
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit a42c28b8447466a445cd8f6fb022eb42e6dcc0f2
Author: James Cherry <cherry@parallaxsw.com>
Date: Fri Mar 14 17:12:17 2025 -0700
const
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 3f72adf1b5ad5581adc81afd3e00be7343ae4183
Author: James Cherry <cherry@parallaxsw.com>
Date: Fri Mar 14 17:03:04 2025 -0700
PathExpanded rm prev_arcs_
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 25879e66eddf9f12db38705807e1270459661810
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Mar 13 12:34:12 2025 -0700
worst path init path
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 5c7a4fbdf3b8823a1944074a7eb663c6ea8e32df
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Mar 13 10:47:02 2025 -0700
delete edge -> xelete paths of to vertex
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit aa8d3035489de2cd25f27f7531177193be7a40ac
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Mar 13 09:17:27 2025 -0700
debug
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 53741b6c624b1313b0464a31e3900472d0b7c8d2
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Mar 13 08:50:01 2025 -0700
debug
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit cdebd8f3e476e5a2afab1a949449b75dcec9ed97
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Mar 13 08:14:58 2025 -0700
dbg network_edit
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 60cc960439e65cda8cd244723456b81242ced458
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Mar 13 07:42:22 2025 -0700
dbg network edit
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit f4e4264ac1c11dafddbe18971ca35127a0ffc171
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Mar 11 19:23:17 2025 -0700
rm PathVertex.hh
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit aeba9b293f095aecd01d0f5d16de51640f3d2381
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Mar 11 13:33:21 2025 -0700
PathEnum rm divEdge
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit ad97706562da7ceb41b9fbf4c882083de36d578d
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Mar 11 13:18:38 2025 -0700
genclks use path vector
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit a9c2563199d0cee3dee3d420c70f8117cfd69221
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Mar 11 12:42:12 2025 -0700
group_path_count, end_path_count use size_t
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit f16309a8e09e22964b998bf1b7e0922fbb9f02c1
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Mar 11 12:30:08 2025 -0700
Path rm uused
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 51295613c4ab6a6a4170080252397e2846a61bf1
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Mar 11 12:22:23 2025 -0700
network_edit3
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 5de6da2190460183cf07d0d4ffc1d1c6ebbe3e10
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Mar 11 10:33:09 2025 -0700
leak
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit f52dbc18ce08bd2b14d7107b61a57e614b1e3a07
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Mar 11 08:06:56 2025 -0700
valgrind 3 leaks left
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit de1a3727d908c4494f3039ff714ddb939d3390b5
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Mar 10 18:21:50 2025 -0700
Path::prevPath
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit c40aadcac8d2cd6d6dd8ba18f2e9db607358a01f
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Mar 10 18:21:31 2025 -0700
clk_skew init
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 041c97194553e7f7a4746f506be251ee42eb83ee
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Mar 10 07:38:49 2025 -0700
delete path groups before paths
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit fb4aed589f9f67ddb39f4260cb2901764cf49a98
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 9 17:23:27 2025 -0700
leak
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 70b3062872cefdcf1358847025bc7bb1a85f4a5b
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 9 17:09:45 2025 -0700
1 failure
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 92cd7c33c1eb22e4f574a767a645c5db1c9efe4d
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 9 11:19:59 2025 -0700
7 failures
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 537ec153a5f8ab30d800cd36130e7668047b67af
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 9 09:05:31 2025 -0700
11 failures
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit df514124c4daaf90175a89138ed954e20573e02f
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 9 08:37:00 2025 -0700
25 failures
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 0096e8ee5a83194aee84da2cba95f410931f5c0e
Author: James Cherry <cherry@parallaxsw.com>
Date: Sat Mar 8 16:05:04 2025 -0700
33 failures
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 02ba7ffdf38b538cd1659df25837d37e8317e741
Author: James Cherry <cherry@parallaxsw.com>
Date: Fri Mar 7 21:39:53 2025 -0700
delete path groups before pahts
Signed-Off-by: James Cherry <cherry@parallaxsw.com>
commit 270dbad6bc9303f9255256b5b85cac84deb27a94
Author: James Cherry <cherry@parallaxsw.com>
Date: Fri Mar 7 18:27:52 2025 -0700
no seg faults, 42 failures
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 3ceca5981fd6032294523cd23dc1334b9619f6a0
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Mar 6 15:43:28 2025 -0700
multiclk1,2 seg fault
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 0441c00dc172817cc1a39bbb740d6369cf163869
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Mar 6 15:29:47 2025 -0700
gated_clocks15
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 7a1f87737e9c8247acd2c78138ee482d46123952
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Mar 6 09:05:09 2025 -0700
nworst, crpr
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 74b52e5ac0ed9dac5b7c31835393c4e2dd30ca95
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Mar 5 17:18:47 2025 -0700
check_timiing6
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 93bddf0d940e9b833d5bc47d5af8b3bdefac67a5
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Mar 5 17:13:24 2025 -0700
nworst10
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit f1edddbffb2e0d23bc3f4a10733203b9756f2e2e
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Mar 5 16:22:25 2025 -0700
path enum
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit c57d241b668d305f0492e55e273b3411320692b4
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Mar 5 16:09:11 2025 -0700
most nwost pass
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit c6fca38e28571e5f2d63236aa67233d572c3a1d6
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Mar 5 09:15:47 2025 -0700
most genclks
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 82f5e6e9252987433f9699919c5716b3a4321a5d
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Mar 4 17:51:29 2025 -0700
genclks
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 19f4035496e004c543110b063482928e55bddbc9
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Mar 4 17:33:28 2025 -0700
nworst1
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit edafefa4e4f98291a3edebe5c7b3e2630988723f
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Mar 4 15:02:38 2025 -0700
path enum
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 3e4684fd67eacdb474574eee9e51741e75bba907
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Mar 3 21:07:18 2025 -0700
rm unused Path* files
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 3f04819c01002f8b5eec0f4b8f0caf6798f3a20f
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Mar 3 19:43:35 2025 -0700
more regressions pass
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 276d70283cda14dfd6c48d1e2e4f45d326bf286c
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Mar 3 10:43:30 2025 -0700
arrival1
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 383a480450833741144b57383bb40a33310fad44
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 2 19:23:40 2025 -0700
arrival1 no segfault
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 36e3a6b8d8b19f185a5a71fb4547e17586ea2c44
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 2 18:40:23 2025 -0700
VertexPathIterator
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 083c76201e1a5482726e5856f124b15a523453d6
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 2 18:18:15 2025 -0700
report_checks3 passes
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 834c076b7e2cb733655d917881463c76ce6196f6
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 2 14:10:34 2025 -0800
links
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 371792b1e6dd44ad0c72399b999d86cd2557cbe1
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 2 13:37:33 2025 -0800
link errors
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 158e9dafa6d11e0a4fd4e7ef253b0b6cb7595bf6
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 2 12:30:29 2025 -0800
compiles
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 8df515dab15c0744abe04eae7e4a7d7688455f03
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 2 09:41:51 2025 -0800
PathEnd compiles
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit d94f241d0803376b1526f32e4f5111d081c604af
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Mar 2 07:42:51 2025 -0800
compile progress
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 591997e3bb496c4cc2fd6963c3798a8e17b8f587
Author: James Cherry <cherry@parallaxsw.com>
Date: Sat Mar 1 10:42:11 2025 -0800
path unification
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 | ||
| spice | ||
| tcl | ||
| test | ||
| util | ||
| verilog | ||
| .clang-format | ||
| .dockerignore | ||
| .gitignore | ||
| CMakeLists.txt | ||
| Dockerfile.centos7 | ||
| Dockerfile.ubuntu22.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
- VCD power acitivies
- SAIF power acitivies
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/ChangeLog.txt for changes to commands. See doc/StaApi.txt for timing engine API documentation.
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.
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 from source
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.
Ubuntu Macos
22.04.2 14.5
cmake 3.24.2 3.29.2
clang 15.0.0
gcc 11.4.0
tcl 8.6 8.6.16
swig 4.1.0 4.1.1
bison 3.8.2 3.8.2
flex 2.6.4 2.6.4
External library dependencies:
Ubuntu Darwin License
eigen 3.4.0 3.4.0 MPL2 required
cudd 3.0.0 3.0.0 BSD required
tclreadline 2.3.8 2.3.8 BSD optional
zLib 1.2.5 1.2.8 zlib optional
The TCL readline library 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}] } {
proc tclreadline::prompt1 {} {
return "> "
}
}
The Zlib library is an optional. If CMake finds libz, OpenSTA can read Liberty, 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, constant propagation, power activity propagation and spice netlist generation.
CUDD is available here.
Unpack and build CUDD.
tar xvfz cudd-3.0.0.tar.gz
cd cudd-3.0.0
./configure
make
You can use the "configure --prefix" option and "make install" to install CUDD in a different directory.
Building with CMake
Use the following commands to checkout the git repository and build the OpenSTA library and excutable.
git clone https://github.com/parallaxsw/OpenSTA.git
cd OpenSTA
mkdir build
cd build
cmake -DCUDD_DIR=<CUDD_INSTALL_DIR> ,.
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_DIR - 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 the CMAKE_INSTALL_PREFIX option.
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.
Build with Docker
An alternative way to build and run OpenSTA is with Docker. After installing Docker, the following command builds a Docker image.
cd OpenSTA
docker build --file Dockerfile.ubuntu22.04 --tag OpenSTA .
To run a docker container using the OpenSTA image, use the -v option to docker to mount direcories with data to use and -i to run 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.
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.
Contributions
Contributors must sign the Contributor License Agreement (doc/CLA.txt) when submitting pull requests.
All contributors should read doc/CodingGuidelines.txt for nodes on making code that adheres to the existing naming and formatting style.
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, abseil and Intel TBB will not be accepted.
As the author of OpenSTA I vastly prefer writing code to reviewing code. I don't have the patience to go round after round to correct code formatting that is not consistent with the rest of the code.
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/.