commit 87130be63ddbf1a7fb65986b02839eb4c0b13168
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Feb 27 09:49:02 2024 -0700
ccs ceff delay calc
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit de0dd38dabda2f7ef51b49c196c2787a0d3c5784
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Feb 27 07:40:11 2024 -0700
dcalc public funcs
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit dd7fcb12f929b9b0a391653cad42e617f9cbdd3b
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 26 09:08:37 2024 -0700
mv CircuitSim.hh to include
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 9663e46d28ece544ee1453f229990c9db9e0efec
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Feb 25 17:58:57 2024 -0700
ArcDcalcArg
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 76b0588034faaefd2302c865c441975f76386d3f
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Feb 25 15:36:46 2024 -0700
ensureVoltageWaveforms
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit f88e67b861c56752e5b36efe2b552ba0077a7180
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Feb 25 15:00:02 2024 -0700
const
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 8f32cc571dcadee0185b08f951a1f79d46e7984d
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Feb 25 14:57:51 2024 -0700
Graph::gateEdgeArc
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit ac3cb35cb6732d7ecbf0532d7351a3ff2a917fc9
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Feb 25 14:31:30 2024 -0700
ConcreteParasiticSubNodeMap, ConcreteParasiticPinNodeMap use id cmp
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit cbfe4eac463036c26a64701239d7651d91a09778
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Feb 25 14:08:41 2024 -0700
WriteSpice
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 8b5d30f1a8b1ccb8c9cbd9d7ba93418907c41b2a
Author: James Cherry <cherry@parallaxsw.com>
Date: Sat Feb 24 09:45:46 2024 -0700
emplace_push
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 5335a2eaaf737ed7c7a8cff30654a68c4ac4c8e4
Author: James Cherry <cherry@parallaxsw.com>
Date: Fri Feb 23 16:19:30 2024 -0700
Parasitics::findParasiticNode
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit ce92f3caf28afb0e0384799f08166cfb0aecfea0
Author: James Cherry <cherry@parallaxsw.com>
Date: Fri Feb 23 15:53:28 2024 -0700
Parasitics::findParasiticNode
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 0c591430c725a3ebd50d2892673dca76e023dc32
Author: James Cherry <cherry@parallaxsw.com>
Date: Fri Feb 23 09:03:18 2024 -0700
Parsitics::name(node) const
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 499c297e64d1487388f549843ff9ea05e8555cfc
Author: James Cherry <cherry@parallaxsw.com>
Date: Fri Feb 23 09:03:07 2024 -0700
write_spice umr
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 6984c398dbce9e6266fab8377a844bc518481d9d
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Feb 22 18:42:34 2024 -0700
gcc warning
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit edec16519806013623194d8201e804dec81a51dd
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Feb 22 17:54:11 2024 -0700
no cuddification
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 4a0e1070c179b2f8615b604c362359ce4b3a0e2e
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Feb 22 17:29:46 2024 -0700
sim const
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 2e941fafa631f6b9bc0f82784b9146de2449e9c5
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Feb 22 17:29:39 2024 -0700
sdc comment
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 1c12f56aee7115fcb06807b5b6c626d1a419ccdc
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Feb 21 13:13:29 2024 -0700
Sim use Bdd class
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit b70c41d5caec56c3001b834141b6dab89bb933ed
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Feb 20 12:18:27 2024 -0700
write_spice coupling caps
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 614d2cd41a1a9cf850dbe480954a5f58ee0dc21e
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 19 14:37:30 2024 -0700
write_spice time offset
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit f0ba1fca0dfca384e6fb0be302bba9ced71ee41c
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 19 10:59:18 2024 -0700
class Bdd for cudd
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 24c94756334fce5e70e97ce0ee31375ae4e59b84
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Feb 18 08:58:30 2024 -0700
WriteSpice
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 47a4505d88bdfe4a85056895f8b7d842e07dce8d
Author: James Cherry <cherry@parallaxsw.com>
Date: Fri Feb 16 21:34:23 2024 -0700
default sim ngspice
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 06e279555a076e218f0a9c308e8937a6fc8fdea4
Author: James Cherry <cherry@parallaxsw.com>
Date: Fri Feb 16 21:34:01 2024 -0700
WriteSpice refactor
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 06e3f0734edbbbd69ad063e97d1d8cca92a83aea
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Feb 15 15:18:35 2024 -0700
mv report_dcalc to DelayCalc.tcl
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 922056471a6d380699bbd0623f95637401d23eff
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Feb 15 14:27:31 2024 -0700
WriteSpice::cell_spice_port_names_
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 732922ead68097e3f7da268ecc5ae2ca2daa4492
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Feb 15 13:35:13 2024 -0700
WritePathSpice.hh
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 8cd6e2ffc6ad66e831630273b5eacd192259191e
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Feb 15 10:11:39 2024 -0700
small
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit f7f6bfb49f43ddc3e45c294f89c8814d60df5220
Author: James Cherry <cherry@parallaxsw.com>
Date: Thu Feb 15 09:48:09 2024 -0700
refactor WritePathSpice
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit f74db730c3e8c67a24d531266510e4376db463d3
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Feb 14 09:22:01 2024 -0700
Sta.hh
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 051532deef203cae97e32e8af7a2348bfd8912cc
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Feb 14 08:14:44 2024 -0700
PowerClass.hh
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit bfb8357d1093e5d3da14e708acd21fc21ba3b0dd
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Feb 14 08:08:56 2024 -0700
doc
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 8fe28ec91b234d9d8210019aa46a2e8107aa497a
Author: James Cherry <cherry@parallaxsw.com>
Date: Wed Feb 14 07:32:34 2024 -0700
ClkSkew use seq instead of set
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit c4e3a3a0315ab4f6160a707e838423bb734f5363
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Feb 13 19:26:45 2024 -0700
report_clock_latency
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 51fb6657d9706c7443e1c269cfe63cf080b05d50
Author: James Cherry <cherry@parallaxsw.com>
Date: Tue Feb 13 11:10:11 2024 -0700
report_clock_latency
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit e639ee129d13e1c11b34bca0762b8136b18563f3
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 12 11:19:06 2024 -0700
ClkSkew use map
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit e91d3ea8142a73b7b607dfdf53b3fce8e2f16984
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 12 10:18:27 2024 -0700
report_clock_skew report format
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit c650b7ec63b83382ba9cec7d187ffee8a031c2ce
Author: James Cherry <cherry@parallaxsw.com>
Date: Mon Feb 12 09:22:29 2024 -0700
report_clock_skew include macro clock_tree_path_delay
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit cf14b230a9944b95ba43ef7c09e553d9014990eb
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Feb 11 11:03:29 2024 -0700
clk skew range iter
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit e7e0342e063ac876d00d03fd1ff0eab1715cfde4
Author: James Cherry <cherry@parallaxsw.com>
Date: Sun Feb 11 08:11:29 2024 -0700
write_spice sensitize and3
Signed-off-by: James Cherry <cherry@parallaxsw.com>
commit 743ceb676c763ac5bcbf05e630a4da1b507c537d
Author: James Cherry <cherry@parallaxsw.com>
Date: Sat Feb 10 18:07:04 2024 -0700
write spice
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/.