跳到主要内容
Timing Engine · CURRENT

iSTA · 静态时序分析

静态时序分析引擎,支持 NLDM/Elmore/CCS 延迟模型。Agent 可以按需对 dirty cone 做增量分析、获取 typed timing report、识别关键路径——不会被无关路径的细节淹没。

Timing Engine CURRENT Tcl API Python SDK MCP
agent — iSTA
# Agent calls iSTA for timing
>>> client.call("iSTA.analyze",
...   design_ref="snap_7f3a",
...   scenarios=["func_typical", "func_worst"],
...   paths=100)
[iSTA] NLDM delay calc done   wns=0.032ns
[iSTA] path enumeration done  tns=-0.45ns
[iSTA] critical paths top     100 paths
→ coverage: 98.4% endpoints
iSTA timingNLDM delayElmore modelCCS currentWNS slackTNS totalSDC constraintSPEF parasiticsiSTA timingNLDM delayElmore modelCCS currentWNS slackTNS totalSDC constraintSPEF parasitics

核心能力

多模型延迟计算

iSTA 支持业界三种标准延迟模型:NLDM (Non-Linear Delay Model) 用于快速估算、Elmore 模型用于 RC 树的一阶矩延迟计算、CCS (Composite Current Source) 用于高精度 signoff 级延迟。Agent 可在不同流程阶段选择不同模型——在早期布局探索中用 NLDM 快速扫参,在 signoff 阶段切换到 CCS 做精确验证。延迟计算的所有中间结果(单元延迟、线延迟、slew 值)均可通过 AiEDA Library 导出为结构化向量。

增量时序分析 (Dirty Cone)

这是 iSTA 对 Agent 工作流最有价值的能力。当上游工具 (如 iPL) 修改了部分单元的布局或 iTO 优化了局部路径后,Agent 无需对整个设计重新做全芯片 STA。设置 dirty_only=true,iSTA 仅追踪被标记为 dirty 的单元和网络的扇入扇出锥 (fan-in/fan-out cone),只在这些受限区域内更新延迟并重新计算 slack。典型场景下,增量分析的运行时间仅为全芯片分析的 5% 到 15%,使 Agent 可以在秒级延迟内获得时序反馈。

Typed Timing Report

iSTA 生成结构化、分类的时序报告,而非传统工具中的文本 dump。Agent 通过 paths 参数指定返回的关键路径数量,结果按照 endpoint 分组并附带每条路径的详细 stage 信息(单元、延迟、slew、slack)。报告还包含 coverage 字段说明被分析的端点比例,以及 provenance 字段记录分析的上下文——使用了哪个 corner、哪些 parasitics 文件、哪些约束。这让 Agent 能在不解析日志文件的前提下理解时序状态。

多场景并行分析

一次 iSTA.analyze 调用可同时分析多个 PVT 场景 (Process, Voltage, Temperature),如 ["func_typical", "func_worst", "func_best"]。结果按场景分组返回,Agent 可以直接对比不同 corner 下的 WNS/TNS 和最差路径。多场景分析在引擎内部通过并行线程执行,充分利用多核 CPU。

Agent 调用方式

iSTA 提供三种等价的调用协议。

Python
MCP
Tcl

Python SDK

from ieda import Client

client = Client("http://localhost:9099")

# Full timing analysis across multiple scenarios
timing = client.call(
    "iSTA.analyze",
    design_ref="snap_7f3a",
    scenarios=["func_typical", "func_worst"],
    paths=100,
)

# Structured access
print(timing.wns)              # -0.032  (ns, negative = violation)
print(timing.tns)              # -0.45   (total negative slack)
for p in timing.critical_paths[:3]:
    print(p.slack, p.startpoint, p.endpoint)
print(timing.endpoint_slacks.keys())

# Incremental: only re-analyze dirty cones
incr = client.call(
    "iSTA.analyze",
    design_ref="snap_7f3a_v2",
    scenarios=["func_worst"],
    dirty_only=True,
    endpoints=timing.dirty_set,  # from upstream tool
)
print(incr.coverage)  # CoverageReport: what was analyzed

输入/输出契约

Request Schema — iSTA.analyze

参数类型必需默认值说明
design_refstring设计快照引用,包含网表、parasitics、约束
scenariosstring[]PVT 场景列表,如 ["func_typical", "func_worst"]
pathsint100返回的最差关键路径数量
endpointsstring[][] (全部)限定分析的端点列表,用于聚焦特定路径
dirty_onlybooltrue是否仅对 dirty cone 做增量分析

Result Schema

字段类型说明
wnsfloat最差负 slack (Worst Negative Slack),正值为无违例
tnsfloat总负 slack (Total Negative Slack)
critical_pathsPath[]关键路径列表,每条含 startpoint、endpoint、slack、stage 详情
endpoint_slacksmap[string]float所有被分析端点的 slack 映射表
coverageCoverageReport覆盖率报告:被分析端点数/总端点、跳过原因
provenanceProvenanceInfo分析来源信息:使用的 corner、parasitics 文件版本、约束文件

在流程中的位置

iSTA 是贯穿全流程的基础设施——它不只在时序签核阶段出现。

  RTL
   ↓
 iMap (综合)      ←→ iSTA (综合后时序检查)
   ↓
 iFP (布图规划)    ←→ iSTA (早期时序估算)
   ↓
 iPDN (电源网络)   ←→ iSTA (IR-drop 感知时序)
   ↓
 iPL (布局)       ←→ iSTA (布局后时序标注 → 增量分析)
   ↓
 iCTS (时钟树)    ←→ iSTA (时钟延迟分析 + skew)
   ↓
 iTO (时序优化)   ←→ iSTA (每步优化后增量验证)
   ↓
 iRT (布线)       ←→ iSTA (布线后带 parasitics 签核)
   ↓
 iECO (工程变更)   ←→ iSTA (局部增量验证)
   ↓
 Signoff         ←→ iSTA (多 corner 全芯片签核)
贯穿全流程iSTA 是唯一从 RTL 到 signoff 全程参与的基础设施。每步物理实现工具 (iPL、iCTS、iRT) 都会触发增量时序分析。
上游依赖iRCX (寄生参数提取)、Liberty (.lib) 工艺库、SDC 约束文件
下游消费者iTO (时序优化引擎) 直接消费 iSTA 的关键路径报告来指导 buffer sizing、gate sizing、VT swap 等优化操作

时序数据即时可学习

iSTA 的每份时序报告均通过 AiEDA Library 导出为结构化张量,供 AiSTA 模型训练与推理。