The first GPU-accelerated, fully-featured static timing analysis (STA) engine

Now free for academic and evaluation use.

Features

Steiner tree
(optional)

Delay
calculation

Arrival
propagation

Top-k path
search

End-to-end GPU-accelerated

Timing Exceptions

  • set_disable_timing
  • set_false_path
  • set_multicycle_path
  • set_max_delay
  • create_generated_clock
  • ... and many more!

Delay Modeling

  • Elmore delay
  • NLDM
  • Arnoldi reduced-order model
  • External delay annotation (.sdf)
  • ("CCS Coming soon)

Interoperability

  • Read industry standard .v, .lib, .sdc
  • Build Netlist directly from your database
  • Extract parasitics from pin positions (FLUTE)
  • Operate on GPU-raw internal arrays

Awards

ACM Student Research Competition (SRC) 2022

(Undergraduate)

First Place

ICCAD 2024 CAD Contest Problem C

(GPU-accelerated timing-driven gate sizing)

First Place

ISPD 2025 Contest

(Performance-driven large scale global routing)

First Place

Download the library

HeteroSTA is released as a dynamic library (.so) and a corresponding C header file (.h). Use the following link to download the latest release v1.0 (preview version).

The release contains two libraries for CPU-only and GPU-enabled machines, respectively.

The dynamic library allows you to easily integrate HeteroSTA into your existing EDA applications such as placers, routers, etc. to build a powerful timing optimization pipeline - see the code and the docs to learn how to do that!

To run HeteroSTA using GPU, you need to have a NVIDIA GPU with compute capability >= 5.2 and have the CUDA driver installed.

Obtain a license

HeteroSTA is free for academic and non-commercial use. You need to obtain a license and it is automatically granted without any waiting. Simply fill in your contact information below.

Loading...

After submission, an email from heterosta@pkueda.org.cn will be sent to you. By verifying your email address, we will send you a string which looks likelic:heterosta:xxxxxxxx. Fill that into your program entry between heterosta_init_license(...) to initialize the license.

Getting involved

Full documentation can be read here.

Bug report, feature request, questions are welcome! Please raise them at GitHub Issues.