核心能力
iMap 是 iEDA 工具链中 RTL→GDS 流程的第一站,负责将寄存器传输级(RTL)设计描述转换为目标工艺库的门级网表。iMap 内部基于 AIG(And-Inverter Graph)作为中间表示,支持 FPGA 和 ASIC 双目标工艺映射。对于 Agent 使用场景,iMap 的关键价值在于暴露综合中间状态——Agent 可以读取 cut 集合、AIG 结构、area/depth 估计值,并据此做出比固定脚本更智能的综合决策。
具体来说,Agent 可以在以下场景中使用 iMap:综合策略探索——尝试 depth-oriented 与 area-oriented 两种映射策略,对比结果后选择更优方案;工艺库适配——在多个 target 工艺库中运行 mapping,根据面积/时序/功耗 trade-off 自动选择最优映射;cut 级别优化——对关键路径上的节点优先分配更大的 k-feasible cut 参数,在非关键路径上收紧 cut 尺寸以控制面积;逻辑重构引导——在 AIG 层面识别可 rewrite/balance 的子图,对优化后的 AIG 重新执行 mapping 并比较 QoR。
在 AI 辅助场景下,iMap 与 AiMap(学习模型)协同工作:AiMap 可以学习历史映射决策与最终 PPA 的关联,预测对新设计的优选综合参数;Agent 将 AiMap 的推荐参数注入 iMap 调用,执行实际综合并获得可验证的结果——形成"预测→执行→验证→反馈"的闭环。
iMap 的工艺映射算法基于 priority-cut 框架,支持 k-feasible cut enumeration、cut function computation(truth table)、cut domination pruning、以及 choice computation 移除 structural bias。这些算法细节对 Agent 透明,但 Agent 可以通过调整 k 值、priority cut 数量上限、area flow vs edge flow 权重等超参数来影响映射质量。Agent 还能 inspect mapping 后的 LUT network 结构,识别冗余或次优的 cone 覆盖,触发 local area/edge recovery 优化。
Agent 调用方式
# Agent 调用 iMap 进行逻辑综合
from ieda_client import IEDAClient
client = IEDAClient()
# 基础综合 —— 默认 effort
result = client.call("iMap.synthesize",
design_ref="snap_7f3a",
tech="sky130",
effort="standard")
# 带约束的综合 —— Agent 可注入 SDC
result = client.call("iMap.synthesize",
design_ref="snap_7f3a",
tech="sky130",
effort="aggressive",
constraints={ "clock_period": 2.5, "max_area": 50000 },
optimization_goals=["area", "timing"])
# Agent 读取结果,决定下一步策略
print(f"Netlist: {result['netlist_ref']}")
print(f"Area: {result['area']} um²")
print(f"Gates: {result['gate_count']}")
{
"tool": "iMap.synthesize",
"arguments": {
"design_ref": "snap_7f3a",
"tech": "sky130",
"effort": "standard"
}
}
# Tcl 交互式综合流程
iMap::set_technology sky130
iMap::read_design snap_7f3a
iMap::set_effort standard
iMap::synthesize -design snap_7f3a -tech sky130 -effort standard
iMap::report_area
iMap::report_timing
iMap::write_netlist -format verilog -output snap_7f3a_synth.v
输入 / 输出契约
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
design_ref | string | 是 | 设计中唯一标识符,对应 iDB 中已加载的设计实例 |
tech | string | 是 | 目标工艺名称:sky130 / gf180 / nangate45 / asap7 |
effort | string | 是 | 综合力度:quick / standard / aggressive |
constraints | SDCRef | 否 | 时序约束引用(clock period、input/output delay 等) |
optimization_goals | string[] | 否 | 优化目标列表:area / timing / power / routability |
| 返回字段 | 类型 | 说明 |
|---|---|---|
netlist_ref | string | 综合后门级网表在 iDB 中的引用 ID |
area | float | 估计总面积(μm²) |
gate_count | int | 映射后的标准单元数量 |
timing_estimate | TimingEstimate | 包含 WNS、TNS、critical paths 的时序估计 |
design_ref | string | 回传设计引用,用于链式调用 |
在流程中的位置
RTL (Verilog/VHDL)
│
▼
┌─────────────┐
│ iMap │ ← 当前工具:逻辑综合与工艺映射
│ Synthesis │
└──────┬──────┘
│ netlist
▼
┌─────────────┐
│ iNO │ 网表优化(扇出修复、缓冲插入)
│ Netlist Opt │
└──────┬──────┘
│
▼
┌─────────────┐
│ iFP │ 布图规划(Die/Core/IO/Macro)
│ Floorplan │
└──────┬──────┘
│
··· 后续步骤 ···
│
▼
GDSII