Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

OpenSTA engine

License

NotificationsYou must be signed in to change notification settings

The-OpenROAD-Project/OpenSTA

Repository files navigation

This is effectively a fork ofparallaxsw/OpenSTA. All issues and PRs should be filed there.

Parallax Static Timing Analyzer

OpenSTA is a gate level static timing verifier. As a stand-aloneexecutable it can be used to verify the timing of a design usingstandard 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, specifytiming 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 atiming engine. By using a network adapter, OpenSTA can access the hostnetlist 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 andis also licensed for commerical applications by Parallax Software withoutthe GPL's requirements.

OpenSTA is open source, meaning the sources are published and can becompiled locally. Derivative works are supported as long as theyadhere to the GPL license requirements. However, OpenSTA is notsupported by a public community of developers as many other opensource projects are. The copyright and develpment are exclusive toParallax Software.

Removing copyright and license notices from OpenSTA sources (or anyother open source project for that matter) is illegal. This should beobvious, but the author of OpenSTA has discovered two different caseswhere the copyright and license were removed from source files thatwere copied.

The official git repository is located athttps://github.com/parallaxsw/OpenSTA.git. Any forks from this codebase have not passed extensive regression testing which is notpublicly available.

Build from source

OpenSTA is built with CMake.

Prerequisites

The build dependency versions are show below. Other versions maywork, but these are the versions used for development.

         Ubuntu   Macos        22.04.2   14.5cmake    3.24.2    3.29.2clang             15.0.0gcc      11.4.0tcl       8.6      8.6.16swig      4.1.0    4.1.1bison     3.8.2    3.8.2flex      2.6.4    2.6.4

External library dependencies:

           Ubuntu   Darwin  Licenseeigen       3.4.0   3.4.0   MPL2  requiredcudd        3.0.0   3.0.0   BSD   requiredtclreadline 2.3.8   2.3.8   BSD   optionalzLib        1.2.5   1.2.8   zlib  optional

TheTCL readline librarylinks the GNU readline library to the TCL interpreter for command lineediting To enable TCL readline support use the following Cmake option:See (https://tclreadline.sourceforge.net/) for TCL readlinedocumentation. To change the overly verbose default prompt, addsomething 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 canread Liberty, Verilog, SDF, SPF, and SPEF files compressed with gzip.

CUDD is a binary decision diageram (BDD) package that is used toimprove conditional timing arc handling, constant propagation, poweractivity propagation and spice netlist generation.

CUDD is availablehere.

Unpack and build CUDD.

tar xvfz cudd-3.0.0.tar.gzcd cudd-3.0.0./configuremake

You can use the "configure --prefix" option and "make install" to install CUDDin a different directory.

Building with CMake

Use the following commands to checkout the git repository and build theOpenSTA library and excutable.

git clone https://github.com/parallaxsw/OpenSTA.gitcd OpenSTAmkdir buildcd buildcmake -DCUDD_DIR=<CUDD_INSTALL_DIR> ,.make

The default build type is release to compile optimized code.The resulting executable is inapp/sta.The library without amain() procedure isapp/libSTA.a.

Optional CMake variables passed as -D= arguments to CMake are show below.

CMAKE_BUILD_TYPE DEBUG|RELEASECMAKE_CXX_FLAGS - additional compiler flagsTCL_LIBRARY - path to tcl libraryTCL_HEADER - path to tcl.hCUDD_DIR - path to cudd installationZLIB_ROOT - path to zlibCMAKE_INSTALL_PREFIX

IfTCL_LIBRARY is specified the CMake script will attempt to locatethe 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 toCMakeLists.txt you may need to clean outexisting CMake cached variable values by deleting all of thefiles in the build directory.

Build with Docker

An alternative way to build and run OpenSTA is withDocker. After installing Docker, thefollowing command builds a Docker image.

cd OpenSTAdocker build --file Dockerfile.ubuntu22.04 --tag OpenSTA .

To run a docker container using the OpenSTA image, use the -v optionto docker to mount direcories with data to use and -i to runinteractively.

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(seehttps://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 issueshould be a short description of the problem. Attach a test case toreproduce the issue as described below. Issues without test cases areunlikely to get a response.

The files in the test case should be collected into a directory namedYYYYMMDD where YYYY is the year, MM is the month, and DD is theday (this format allows "ls" to report them in chronological order).The contents of the directory should be collected into a compressedtarfile named YYYYMMDD.tgz.

The test case should have a tcl command file recreates the issue namedrun.tcl. If there are more than one command file using the same datafiles, there should be separate command files, run1.tcl, run2.tcletc. 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 testcase 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 onmaking code that adheres to the existing naming and formatting style.

Contributions that claim 4% performance improvements in OpenROAD flowscripts will largely be ignored. Small performance improvementssimply 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 reviewingcode. I don't have the patience to go round after round to correctcode formatting that is not consistent with the rest of the code.

Authors

  • James Cherry

  • William Scott authored the arnoldi delay calculator at Blaze, Incwhich was subsequently licensed to Nefelus, Inc that has graciouslycontributed it to OpenSTA.

License

OpenSTA, Static Timing AnalyzerCopyright (c) 2023, Parallax Software, Inc.

This program is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe 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 ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.

You should have received a copy of the GNU General Public Licensealong with this program. If not, seehttps://www.gnu.org/licenses/.


[8]ページ先頭

©2009-2025 Movatter.jp