diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..5cb51cff --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +.gitignore +Dockerfile +README +INSTALL diff --git a/Dockerfile b/Dockerfile index d668bda1..295a1e27 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,16 @@ FROM ubuntu:18.04 +LABEL author="James Cherry" +LABEL maintainer="Abdelrahman Hosny " +# install basics +ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ - apt-get install -y wget apt-utils git + apt-get install -y wget apt-utils git cmake gcc tcl-dev swig bison flex # download CUDD RUN wget https://www.davidkebo.com/source/cudd_versions/cudd-3.0.0.tar.gz && \ - tar -xvf cudd-3.0.0.tar.gz - -# install main dependencies -ARG DEBIAN_FRONTEND=noninteractive -RUN apt-get update && \ - apt-get install -y cmake gcc tcl tcl-dev swig bison flex + tar -xvf cudd-3.0.0.tar.gz && \ + rm cudd-3.0.0.tar.gz # install CUDD RUN cd cudd-3.0.0 && \ @@ -19,13 +19,14 @@ RUN cd cudd-3.0.0 && \ make && \ make install -# clone and install OpenSTA -RUN git clone https://github.com/abk-openroad/OpenSTA.git && \ - cd OpenSTA && \ +# copy files and install OpenSTA +RUN mkdir OpenSTA +COPY . OpenSTA +RUN cd OpenSTA && \ mkdir build && \ cd build && \ cmake .. -DCUDD=$HOME/cudd && \ make # Run sta on entry -CMD OpenSTA/app/sta +ENTRYPOINT ["OpenSTA/app/sta"] diff --git a/README b/README index 55507ba9..d4dc8361 100644 --- a/README +++ b/README @@ -1,59 +1,69 @@ # 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 . +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 . Parallax Gate Level Static Timing Analyzer -See INSTALL for installation and build instructions. -Standard file formats - Verilog - Liberty - SDC - SDF - RSPF/DSPF/SPEF +## Install -Exception path support - False path - Multicycle path - Min/Max 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 +See INSTALL for installation and build instructions. Alternatively, run using Docker as described in the next section -Clocks - Generated - Latency - Source latency (insertion delay) - Uncertainty - Propagated/Ideal - Gated clock checks - Multiple frequency clocks +## Run using Docker +1. 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/). +2. Navigate to the directory where you have the input files. +3. Run OpenSTA as a binary using `docker run -it -v $(pwd):/data openroad/opensta` +4. From 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 `-f` flag as follows `docker run -it -v $(pwd):/data openroad/opensta -f /data/cmd_file`. Note that the path after `-f` is the path inside container, not on the guest machine. -Delay calculation - Integrated Dartu/Menezes/Pileggi RC effective capacitance algorithm - External delay calculator API +## Standard file formats -Analysis - Report timing checks -from, -through, -to, multiple paths to endpoint - Report delay calculation - Check timing setup +* Verilog +* Liberty +* SDC +* SDF +* RSPF/DSPF/SPEF -Search Engine - Query based incremental update of delays, arrival and required times - Simulator to propagate constants from constraints and netlist tie high/low +## Exception path support +* False path +* Multicycle path +* Min/Max 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 -Timing engine library - Network adapter uses external netlist database without duplicating any data +## Clocks +* Generated +* Latency +* Source latency (insertion delay) +* Uncertainty +* Propagated/Ideal +* Gated clock checks +* Multiple frequency clocks + +## 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 + +## Search Engine +* Query based incremental update of delays, arrival and required times +* Simulator to propagate constants from constraints and netlist tie high/low + +## Timing engine library +* Network adapter uses external netlist database without duplicating any data