核心能力
多模型延迟计算
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 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_ref | string | 是 | — | 设计快照引用,包含网表、parasitics、约束 |
scenarios | string[] | 是 | — | PVT 场景列表,如 ["func_typical", "func_worst"] |
paths | int | 否 | 100 | 返回的最差关键路径数量 |
endpoints | string[] | 否 | [] (全部) | 限定分析的端点列表,用于聚焦特定路径 |
dirty_only | bool | 否 | true | 是否仅对 dirty cone 做增量分析 |
Result Schema
| 字段 | 类型 | 说明 |
|---|---|---|
wns | float | 最差负 slack (Worst Negative Slack),正值为无违例 |
tns | float | 总负 slack (Total Negative Slack) |
critical_paths | Path[] | 关键路径列表,每条含 startpoint、endpoint、slack、stage 详情 |
endpoint_slacks | map[string]float | 所有被分析端点的 slack 映射表 |
coverage | CoverageReport | 覆盖率报告:被分析端点数/总端点、跳过原因 |
provenance | ProvenanceInfo | 分析来源信息:使用的 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 全芯片签核)