# OpenSTA, Static Timing Analyzer # Copyright (c) 2019, 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 . Builds are supported with cmake. Builds with Autotools are supported for compatibility but are deprecated. Building with Cmake ------------------- The build dependency versions are show below. Other versions may work, but these are the versions used for development. from Ubuntu Xcode 18.04.1 10.1 clang 9.1.0 10.0.0 gcc 3.3.2 7.3.0 tcl 8.2 8.6 8.6.6 swig 1.3.28 3.0.12 3.0.12 bison 1.35 3.0.4 2.3 flex 2.5.4 2.6.4 2.5.35 Building with cmake requires bison, flex and swig. These packages are optional: libz 1.1.4 1.2.5 1.2.8 cudd 2.4.1 3.0.0 CUDD is a BDD package that is used to improve conditional timing arc handling. It is available here: https://www.davidkebo.com/source/cudd_versions/cudd-3.0.0.tar.gz https://sourceforge.net/projects/cudd-mirror/ Note that the file hierarchy of the CUDD installation changed with version 3.0. This build only supports the 3.0 layout but only small changes to configure.ac are required to support older versions. The Zlib library is an optional. If the configure script finds libz, OpenSTA can read Verilog, SDF, SPF, and SPEF files compressed with gzip. Use the following commands to checkout the git repository build the OpenSTA library and excutable. git clone https://xp-dev.com/git/opensta cd opensta mkdir build cd build cmake .. make 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 TCL_LIB - path to tcl library TCL_HEADER - path to tcl.h CMAKE_INSTALL_PREFIX If TCL_LIB is specified the cmake script will attempt to locate the header from its path. The default install directory is /usr/local. To install in a different directory with cmake use: cmake .. -DCMAKE_INSTALL_PREFIX= or use the DESTDIR variable with make. make DESTDIR= install Building from a tarfile ----------------------- Use the following commands to unpack the dist file and compile it. tar zvfz opensta-.tgz cd opensta- ./configure [options...] make With no options, configure builds an optimized executable. The resulting executable is app/sta. configure options: -h, --help display configure help and exit --enable-debug enable debug --enable-asan enable AddressSanitizer --enable-gprof enable gprof profiling --enable-gcov enable gcov profiling --enable-32bit force 32 bit compile --with-include=dirs directories to search for include files --with-lib=dirs directories to search for libraries --with-tcl=dirs directories to search for Tcl init files --with-cudd=path use Cudd BDD package, defaults to $CUDD --with-visualstudio use Microcruft Visual Studio C++ compiler If the configure script fails to find any of the TCL, Zlib or CUDD files, use the --with-include, --with-lib, --with-tcl, --with-cudd options to add directories to search for the files. The configure -help option lists the generic configure options that are not described above. The default arguments to configure disable shared libraries. To build with shared libraries use the --enable-shared option. Building with GNU Autotools --------------------------- Building with GNU Autotools the additional build dependencies shown below. from Ubuntu Xcode 18.04.1 10.1 autoconf 2.53 2.69 2.69 automake 1.6.3 1.15.1 1.16.1 libtool 1.4.2 2.4.6 2.4.6 Use the following commands to checkout the git repository and compile it. git clone https://xp-dev.com/git/opensta git checkout master|branch ./bootstrap ./configure [options...] make Building on Windoz ------------------ The Win32 API does not natively support the pthreads API. The pthreads-win32 package is one way to get support for pthreads for 32 bit builds. It is available from www.sourceware.org/pthreads-win32. If the configure script does not find pthreads.h the build proceeds without thread support. Use a .bat file to start a cygwin shell that has its path set to support the Microcruft cl compiler by calling the vsvars32.bat script from the Visual C++ installation. tcsh-startup.bat @echo off call "c:\Microsoft Visual Studio 9.0\Common7\Tools\vsvars.bat" set path=c:\cygwin\bin;%PATH% c:\cygwin\bin\tcsh cmake is supposedly more compatible with the windoz environment so you may have better luck wih it. Configure and build from the shell. Note that tcl and zlib must be built with the Visual C++ compiler to link to the sta libraries. ./bootstrap ./configure --with-visualstudio # Rebuild flex/bison files because include files are different. make maintainer-clean Good luck and don't bother me with windoz specific issues. I am happy to say I haven't owned a windoz machine in 20 years. Submitting Bug Reports ---------------------- All bug reports should attach a testcase, preferably in the following form: A gzip'd tar file that unpacks into a directory with the same name as the tar file A file named README that describes the problem All commands in one .tcl file (usually run.tcl) for small cases No calls to "exit" No shell scripts to envoke the sta.