• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

app/H08-Jul-2021-360262

cmake/H03-May-2022-289261

dcalc/H03-May-2022-8,2516,676

doc/H03-May-2022-

etc/H08-Jul-2021-16592

examples/H07-May-2022-293265

graph/H08-Jul-2021-2,7602,284

include/sta/H08-Jul-2021-19,74614,262

jenkins/H08-Jul-2021-1611

liberty/H08-Jul-2021-16,62014,261

network/H08-Jul-2021-6,5605,500

parasitics/H08-Jul-2021-6,5825,407

sdc/H08-Jul-2021-15,19513,087

sdf/H08-Jul-2021-3,8143,214

search/H03-May-2022-38,43732,522

tcl/H08-Jul-2021-16,14813,300

test/H08-Jul-2021-1,112853

util/H08-Jul-2021-2,9482,209

verilog/H08-Jul-2021-4,1303,530

.clang-formatH A D08-Jul-2021856 3029

.dockerignoreH A D08-Jul-202137 54

.gitignoreH A D08-Jul-2021225 2721

DockerfileH A D08-Jul-20212.2 KiB6754

Dockerfile.ubuntu_18.04H A D08-Jul-2021768 3327

JenkinsfileH A D08-Jul-2021200 1615

LICENSEH A D08-Jul-202134.3 KiB675553

README.mdH A D08-Jul-20217.4 KiB234178

README.md

1# Parallax Static Timing Analyzer
2
3OpenSTA is a gate level static timing verifier. As a stand-alone
4executable it can be used to verify the timing of a design using
5standard file formats.
6
7* Verilog netlist
8* Liberty library
9* SDC timing constraints
10* SDF delay annotation
11* SPEF parasitics
12
13OpenSTA uses a TCL command interpreter to read the design, specify
14timing constraints and print timing reports.
15
16##### Clocks
17* Generated
18* Latency
19* Source latency (insertion delay)
20* Uncertainty
21* Propagated/Ideal
22* Gated clock checks
23* Multiple frequency clocks
24
25##### Exception paths
26* False path
27* Multicycle path
28* Min/Max path delay
29* Exception points
30*  -from clock/pin/instance -through pin/net -to clock/pin/instance
31*  Edge specific exception points
32*   -rise_from/-fall_from, -rise_through/-fall_through, -rise_to/-fall_to
33
34##### Delay calculation
35* Integrated Dartu/Menezes/Pileggi RC effective capacitance algorithm
36* External delay calculator API
37
38##### Analysis
39* Report timing checks -from, -through, -to, multiple paths to endpoint
40* Report delay calculation
41* Check timing setup
42
43##### Timing Engine
44OpenSTA is architected to be easily bolted on to other tools as a
45timing engine.  By using a network adapter, OpenSTA can access the host
46netlist data structures without duplicating them.
47
48* Query based incremental update of delays, arrival and required times
49* Simulator to propagate constants from constraints and netlist tie high/low
50
51See doc/OpenSTA.pdf for command documentiaton.
52See doc/StaApi.txt for timing engine API documentiaton.
53See doc/ChangeLog.txt for changes to commands.
54
55## Build
56
57OpenSTA is built with CMake.
58
59### Prerequisites
60
61The build dependency versions are show below.  Other versions may
62work, but these are the versions used for development.
63
64```
65         from   Ubuntu   Xcode
66                18.04.1  11.3
67cmake    3.10.2 3.10.2   3.16.2
68clang    9.1.0           11.0.0
69gcc      3.3.2   7.3.0
70tcl      8.4     8.6     8.6.6
71swig     1.3.28  3.0.12  4.0.1
72bison    1.35    3.0.4   3.5
73flex     2.5.4   2.6.4   2.5.35
74```
75
76Note that flex versions before 2.6.4 contain 'register' declarations that
77are illegal in c++17.
78
79These packages are **optional**:
80
81```
82libz     1.1.4   1.2.5     1.2.8
83cudd             2.4.1     3.0.0
84```
85
86CUDD is a binary decision diageram (BDD) package that is used to
87improve conditional timing arc handling. OpenSTA does not require it
88to be installed. It is available
89[here](https://www.davidkebo.com/source/cudd_versions/cudd-3.0.0.tar.gz)
90or [here](https://sourceforge.net/projects/cudd-mirror/).
91
92Note that the file hierarchy of the CUDD installation changed with version 3.0.
93Some changes to CMakeLists.txt are required to support older versions.
94
95Use the USE_CUDD option to look for the cudd library.
96Use the CUDD_DIR option to set the install directory if it is not in
97one of the normal install directories.
98
99When building CUDD you may use the `--prefix ` option to `configure` to
100install in a location other than the default (`/usr/local/lib`).
101```
102cd $HOME/cudd-3.0.0
103mkdir $HOME/cudd
104./configure --prefix $HOME/cudd
105make
106make install
107
108cd <opensta>/build
109cmake .. -DUSE_CUDD -DCUDD_DIR=$HOME/cudd
110```
111
112The Zlib library is an optional.  If CMake finds libz, OpenSTA can
113read Verilog, SDF, SPF, and SPEF files compressed with gzip.
114
115### Installing with CMake
116
117Use the following commands to checkout the git repository and build the
118OpenSTA library and excutable.
119
120```
121git clone https://github.com/The-OpenROAD-Project/OpenSTA.git
122cd OpenSTA
123mkdir build
124cd build
125cmake ..
126make
127```
128The default build type is release to compile optimized code.
129The resulting executable is in `app/sta`.
130The library without a `main()` procedure is `app/libSTA.a`.
131
132Optional CMake variables passed as -D<var>=<value> arguments to CMake are show below.
133
134```
135CMAKE_BUILD_TYPE DEBUG|RELEASE
136CMAKE_CXX_FLAGS - additional compiler flags
137TCL_LIBRARY - path to tcl library
138TCL_HEADER - path to tcl.h
139CUDD - path to cudd installation
140ZLIB_ROOT - path to zlib
141CMAKE_INSTALL_PREFIX
142```
143
144If `TCL_LIBRARY` is specified the CMake script will attempt to locate
145the header from the library path.
146
147The default install directory is `/usr/local`.
148To install in a different directory with CMake use:
149
150```
151cmake .. -DCMAKE_INSTALL_PREFIX=<prefix_path>
152```
153
154If you make changes to `CMakeLists.txt` you may need to clean out
155existing CMake cached variable values by deleting all of the
156files in the build directory.
157
158### Run using Docker
159
160OpenSTA can be run as a [Docker](https://www.docker.com/) container.
161
162* Install Docker on [Windows](https://docs.docker.com/docker-for-windows/), [Mac](https://docs.docker.com/docker-for-mac/) or [Linux](https://docs.docker.com/install/).
163* Navigate to the directory where you have the input files.
164* Run OpenSTA as a binary using
165````
166docker run -it -v $(pwd):/data openroad/opensta
167````
168
169From the interactive terminal, use OpenSTA commands. You can read input files from `/data` directory inside the docker container (e.g. `read_liberty /data/liberty.lib`). You can use OpenSTA in non-interactive mode by passing a command file using the `-f` flag as follows.
170```
171docker run -it -v $(pwd):/data openroad/opensta /data/cmd_file
172```
173Note that the path after `-f` is the path inside container, not on the guest machine.
174
175## Bug Reports
176
177Use the Issues tab on the github repository to report bugs.
178
179Each issue/bug should be a separate issue. The subject of the issue
180should be a short description of the problem. Attach a test case to
181reproduce the issue as described below. Issues without test cases are
182unlikely to get a response.
183
184The files in the test case should be collected into a directory named
185YYYYMMDD where YYYY is the year, MM is the month, and DD is the
186day (this format allows "ls" to report them in chronological order).
187The contents of the directory should be collected into a compressed
188tarfile named YYYYMMDD.tgz.
189
190The test case should have a tcl command file recreates the issue named
191run.tcl. If there are more than one command file using the same data
192files, there should be separate command files, run1.tcl, run2.tcl
193etc. The bug report can refer to these command files by name.
194
195Command files should not have absolute filenames like
196"/home/cho/OpenSTA_Request/write_path_spice/dump_spice" in them.
197These obviously are not portable. Use filenames relative to the test
198case directory.
199
200## Authors
201
202* James Cherry
203
204* William Scott authored the arnoldi delay calculator at Blaze, Inc which was subsequently licensed to Nefelus, Inc that has graciously contributed it to OpenSTA.
205
206## Contributions
207
208External code contributions are not supported.
209
210https://en.wikipedia.org/wiki/Contributor_License_Agreement
211https://opensource.google/docs/cla/
212
213## License
214
215OpenSTA is dual licensed. It is released under GPL v3 as OpenSTA and
216is also licensed for commerical applications by Parallax Software without
217the GPL's requirements.
218
219OpenSTA, Static Timing Analyzer
220Copyright (c) 2021, Parallax Software, Inc.
221
222This program is free software: you can redistribute it and/or modify
223it under the terms of the GNU General Public License as published by
224the Free Software Foundation, either version 3 of the License, or
225(at your option) any later version.
226
227This program is distributed in the hope that it will be useful,
228but WITHOUT ANY WARRANTY; without even the implied warranty of
229MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
230GNU General Public License for more details.
231
232You should have received a copy of the GNU General Public License
233along with this program.  If not, see <https://www.gnu.org/licenses/>.
234