Core capabilities
Activity-provenance power breakdown
iPA supports static (no activity file) and dynamic (VCD/SAIF) power calculation. In dynamic mode, iPA computes per-cell switching activity in each time window from the activity file and aggregates by module hierarchy. Via iPA.analyze, Agents get total_power, dynamic/leakage components, and per-module power breakdown—tracing exactly which functional scenario and submodule contribute most power.
Power-to-IR-drop causal tracing
iIR builds on iPA power results to analyze IR-drop across the power grid, mapping high-power modules to grid nodes and IR-drop values. Agents can query the root-cause module for each IR-drop hotspot instead of receiving context-free voltage-drop numbers. That enables targeted local P/G reinforcement rather than blindly adding stripes globally.
Automatic hotspot detection
iPA/iIR synthesize power density and IR-drop severity into a hotspot list. Each entry includes module name, coordinate bounds, power density, peak IR-drop, and severity (critical/warning/info). Agents can pass hotspot lists directly to iPDN as target regions for local P/G reinforcement, closing the power-integrity optimization loop.
Agent calling patterns
iPA/iIR expose three equivalent calling protocols.
Python SDK
from ieda import Client client = Client("http://localhost:9099") # Dynamic power analysis with activity file result = client.call( "iPA.analyze", design_ref="snap_7f3a", scenario="func_typical", mode="dynamic", activity_file=vcd_ref, intent_ref="power_profile_v1", ) print(result.total_power) # 128.5 (mW) print(result.power_breakdown) # {"dynamic": 94.2, "leakage": 34.3} print(result.ir_drop_map) # <binary grid> print(result.hot_spots) # ["core/alu", "core/l2_cache"] # Static IR-drop check only ir = client.call( "iIR.analyze", design_ref="snap_7f3a", pdn_ref="pdn_v3", ) print(ir.worst_drop) # 42 (mV)
Input / output contract
Request Schema — iPA.analyze
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
design_ref | string | Yes | — | design snapshot reference |
mode | "static" | "dynamic" | Yes | — | Static (no activity file) or dynamic (VCD/SAIF) power analysis |
scenario | string | Yes | — | Operating scenario name (e.g. func_typical) |
activity_file | string | No (static mode) | "" | VCD/SAIF activity file path or reference (required in dynamic mode) |
intent_ref | string | Yes | — | Agent intent reference |
Result Schema
| Field | Type | Description |
|---|---|---|
total_power | float | Total power (mW) |
power_breakdown | object | {dynamic, leakage} components |
ir_drop_map | binary | IR-drop heatmap grid data |
hot_spots | object[] | Hotspot list with module name, IR-drop value, and severity |
warnings | string[] | Non-fatal warning messages |
Role in the flow
┌──────────┐
│ iPL │ placement complete
└────┬─────┘
│
▼
┌──────────┐
│ iPDN │ power grid
└────┬─────┘
│
▼
┌──────────┐
│ iCTS │ Clock tree synthesis
└────┬─────┘
│
▼
┌──────────┐
│ iRT │ routing complete
└────┬─────┘
│
▼
┌──────────────────────────────────────────┐
│ iPA / iIR ◆ │
│ power calculation (static/dynamic) │
│ IR-drop analysis → hotspot output │
│ ↑ Input: placement + routing + RC parasitics + activity files │
│ ↓ Output: power breakdown + IR map │
└──────────────────┬───────────────────────┘
│
▼
┌──────────────┐
│ iPNP │ local P/G reinforcement
└──────────────┘