RTL Bench PRO

Static Timing Analysis (STA): Evaluating Silicon Delays

Functional simulation confirms that your design operates correctly in theory, but only Static Timing Analysis (STA) verifies that electrical signals arrive within setup and hold constraints across physical silicon gates.

1. The fundamentals of setup & hold constraints

In a synchronous digital circuit, data is launched from one flip-flop on a clock edge, propagates through combinational logic gates, and must settle at the receiving flip-flop before the next clock edge arrives.

💡 The Setup Timing Margin: For any register-to-register path with clock period Tclk:
T_launch + T_clk_to_q + T_comb + T_setup <= T_capture + T_clk
  • Tclk_to_q (Clock-to-Q Delay): Time required for data to emerge at output pin Q after the clock edge triggers.
  • Tcomb (Combinational Delay): Total propagation time through logic gates (adders, multiplexers, NAND/NOR).
  • Tsetup (Setup Time): Required duration data must remain stable at input pin D before the active capturing clock edge.
  • Setup Slack (Ssetup): Calculated as T_required - T_arrival. Positive slack means timing closure is met; negative slack denotes a timing violation.

2. How standard-cell Liberty (.lib) lookup models work

Gate propagation delays are not static constants—they vary depending on input transition slew (tr) and output capacitive load (CL). Semiconductor foundries characterize standard cell libraries into 2D Non-Linear Delay Model (NLDM) lookup tables defined in the industry-standard Liberty format:

Foundry PDK Standard Cell Library Nominal Voltage / Corner Primary Gate Example
SkyWater 130nm sky130_fd_sc_hd 1.8V / TT / 25°C sky130_fd_sc_hd__and2_1
GlobalFoundries 180nm gf180mcu_fd_sc_mcu9t5v0 3.3V / TT / 25°C gf180mcu_fd_sc_mcu9t5v0__addf_1
IHP 130nm BiCMOS sg13g2 1.2V / TT / 25°C sg13g2_xor2_1

Under the hood: Pre-characterized linear delay parameters

Commercial STA engines evaluate massive 2D tables from multi-megabyte Liberty files, which can introduce noticeable file-I/O overhead in a browser environment. RTL Bench optimizes this by distilling cell timing characterizations into lightweight pre-compiled parameters: pin capacitance (cin_pf), intrinsic base delay (intrinsic_ns), and capacitive load sensitivity (load_sens_ns_per_pf):

// Example: IHP SG13G2 2-input AND gate cell parameters
"and2": {
  "drives": {
    "1": {
      "cin_pf": 0.00254,
      "intrinsic_ns": 0.07311,
      "load_sens_ns_per_pf": 2.78078,
      "fall_intrinsic_ns": 0.06426,
      "fall_load_sens_ns_per_pf": 2.23317
    },
    "2": {
      "cin_pf": 0.00255,
      "intrinsic_ns": 0.09563,
      "load_sens_ns_per_pf": 1.39782,
      "fall_intrinsic_ns": 0.08371,
      "fall_load_sens_ns_per_pf": 1.12135
    }
  }
}
💡 A Hint on Drive Strength Scaling: Notice what happens when the drive strength increases from 1 to 2. While the gate's intrinsic base delay increases slightly due to larger internal transistor geometry, its load sensitivity drops almost in half. On nets with multiple downstream fan-outs, higher drive gates overcome capacitive load impedance significantly faster.

Synthesizable example: Pipelined multiply-accumulate (MAC)

The following 8-bit accumulator creates a classic reg2reg critical path through an adder stage:

module mac_unit (
  input  wire       clk,
  input  wire       rst_n,
  input  wire [7:0] a,
  input  wire [7:0] b,
  output reg  [15:0] acc_out
);
  wire [15:0] mult_prod = a * b;

  always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
      acc_out <= 16'd0;
    else
      acc_out <= acc_out + mult_prod; // Critical path: register feedback adder
  end
endmodule

3. How RTL Bench executes browser-based STA

Running enterprise STA tools like Synopsys PrimeTime or Cadence Tempus requires complex TCL scripts and heavy workstation hardware. RTL Bench provides an instant timing report through an optimized cloud pipeline:

  • Generic Technology Mapping: Yosys synthesizes the HDL down to generic gates (techmap -map +/techmap.v) scoped to the top-level module.
  • SHA-256 Techmap Caching: Because the gate-level netlist depends only on your source and not on the chosen foundry PDK, repeat runs hit a server-side cache, evaluating in under 50ms.
  • Topological Liberty Graph Traversal: The backend engine loads pre-compiled Liberty models for SkyWater 130nm, GF180, or IHP SG13G2, calculating cell propagation delays across all four path categories.

4. The four canonical path classifications

Path Class Startpoint Endpoint Primary Constraint
reg2reg Source Flip-Flop (Q pin) Destination Flip-Flop (D pin) Determines maximum operating clock frequency (Fmax)
in2reg Primary Input Port Destination Flip-Flop (D pin) Input delay and interface setup margin
reg2out Source Flip-Flop (Q pin) Primary Output Port External board interface setup requirement
in2out Primary Input Port Primary Output Port Pure unclocked feedthrough propagation delay
⚠️ Feedthrough Hazards: in2out paths bypass registers completely. If an asynchronous input is routed directly to an output pin through combinatorial logic, downstream devices on your board will suffer from glitch-induced timing violations.

Frequently asked questions

What is Static Timing Analysis (STA) in digital IC design?

Static Timing Analysis (STA) is a method of verifying the timing performance of a digital circuit without requiring dynamic input vectors or testbench simulations. It exhaustively computes the worst-case propagation delay across every path to guarantee that data arrives before the next clock edge.

Which foundry PDKs are supported in RTL Bench STA?

RTL Bench supports standard-cell Liberty timing characterizations for SkyWater 130nm (sky130_fd_sc_hd), GlobalFoundries 180nm (gf180mcu), and IHP SG13G2 130nm BiCMOS at nominal TT corners.

How does setup slack determine the maximum clock frequency (Fmax)?

Setup slack is defined as Data Required Time minus Data Arrival Time. If the longest critical path delay plus the register setup time is Tcrit, the minimum clock period is Tmin = Tcrit, yielding a maximum frequency of Fmax = 1 / Tmin.

Next

Run timing analysis in STA viewer →