Coder Social home page Coder Social logo

malaksadek / statictiminganalyzer Goto Github PK

View Code? Open in Web Editor NEW
6.0 3.0 3.0 1.23 MB

A Logic Circuit Static Timing Analyzer Implemented in Python 🔌 ⚡ (2018)

License: GNU General Public License v3.0

Python 0.60% HTML 99.34% C 0.06%
python verilog verilog-hdl static-timing-analysis scl json logic-gates logic-circuit graph-algorithms c html

statictiminganalyzer's Introduction

Static Timing Analyzer

A Logic Circuit Static Timing Analyzer implemented in Python 🔌 ⚡ (2018)

The analyzer is implemented over several parts and outputs HTML files. It functions on Gate Level Netlists obtained from custom designs created in Verilog & C. Using as inputs a SCL JSON file and JSON files containing Timing Constraints, Net Capacitances, and Clock Skews, the system:

  1. Fetches the module name from the GUI and finds it in the gate level netlist file
  2. Searches for each gate in the standard cell library (SCL)
  3. Determines if it is sequential or combinational
  4. Finds its output capacitance from the net capacitance file and the SCL, and its input slew from the SCL (first gate assumed to have max input slew) to find each timing arc for either rising or falling using the gate’s unate
  5. Adds the gate as a node in the DAG, and stores its delay as the maximum delay of all the timing arcs (A-Y, B-Y, C-Y or CLK-Q)

If the logic is combinational, it:

  1. Adds the delay of the gate to the Tpd of the current path and to the total delay of the current path

If the logic is sequential, it:

  1. Calculates TCQ as the timing arc CLK-Q as mentioned in step 5
  2. Calculates Tskew using the clock skews file by finding the clock that has the same ID as the current flip flop and tracing a random path to that clock through the clock tree generated based on the module chosen
  3. Finds Tsetup and Thold using transition time of pin D (input slew) and transition time of pin CLK (Tskew), chooses rising or falling based on triggering edge
  4. Adds the delay of the gate to the total delay of the current path

Finally, it:

  1. For each path, it identifies its type using the current gate’s type and the previous gates’ types
  2. Adds edges between nodes in DAG based on wire connections
  3. Calculates arrival and required time and slack for each node
  4. Finds critical path by examining the total delay of each identified path and taking the maximum
  5. Checks for setup and hold violations using Tcycle from the timing constrains file
  6. Displays the report and DAG in the GUI

picture alt picture alt

Contact

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.