#timing #analysis #engine #static #net #delay #gb-sta

sys stagraph

A graph-based static timing analysis (GB-STA) engine

1 unstable release

0.1.0 Apr 30, 2023

#74 in #timing

AGPL-3.0-only

80KB
2K SLoC

Rust 1K SLoC // 0.0% comments C++ 807 SLoC // 0.2% comments

STAGraph

A graph-based static timing analysis (GB-STA) engine.

Feature

  • High-order net delay calculation.
  • GPU acceleration.

Implementation details

Units

The units are fixed to the following, throughout the entire STA engine. E.g., input libs, parasitics, constraints are all scaled to this set, and output are also in these units.

  • time: 1ps
  • voltage: 1V
  • current: 1mA
  • power: 1uW ( not used yet as we don't support power analysis )
  • resistance: 1kOhm
  • capacitance: 1ff

It can be verified that:

  • res * cap == time;
  • cur == volt / res;

The fixation of such units is helpful in keeping the code consistent, and make full use of the IEEE 754 precisions.

MIN/MAX and Corners

We intend to support a single corner only. Multi-corner should run multiple instances of this STA engine on different hosts/cards to reduce memory footprint.

This also means, we only calculate one of MIN/MAX for every GB-STA core instance. You need to specify which merge strategy to use before propagation. To achieve a complete analysis, You can run the core for two times and combine them to yield setup/hold reports.

Dependencies

~8–18MB
~269K SLoC