跳到主要内容
Synth Engine · CURRENT

iMap · 逻辑综合

逻辑综合与工艺映射引擎。Agent 可以探索不同的综合策略候选、比较面积/时序 trade-off、在单元库中选择最优映射——而不是依赖固定的综合脚本。

开源 EDAAgent 可调用MCP 接口GPL-3.0
agent — imap
# Agent-driven logic synthesis
[iMap ] tech mapping     sky130
[iMap ] area estimate     12450
[iMap ] gate count          842
→ agent selects optimal strategy
iMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout modeliMapsynthesisiFPfloorplaniPDNpoweriPLplacementiCTSclockiTOoptimizationiRTroutingiSTAtimingAiEDAdesign dataiPCLlayout model
RTL→Netlist第一步
Agent可调用
MCP标准化接口
GPL-3.0开源许可

核心能力

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 调用方式

Python
MCP
Tcl
# 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_refstring设计中唯一标识符,对应 iDB 中已加载的设计实例
techstring目标工艺名称:sky130 / gf180 / nangate45 / asap7
effortstring综合力度:quick / standard / aggressive
constraintsSDCRef时序约束引用(clock period、input/output delay 等)
optimization_goalsstring[]优化目标列表:area / timing / power / routability
返回字段类型说明
netlist_refstring综合后门级网表在 iDB 中的引用 ID
areafloat估计总面积(μm²)
gate_countint映射后的标准单元数量
timing_estimateTimingEstimate包含 WNS、TNS、critical paths 的时序估计
design_refstring回传设计引用,用于链式调用

在流程中的位置

RTL (Verilog/VHDL)
        │
        ▼
  ┌─────────────┐
  │   iMap      │  ← 当前工具:逻辑综合与工艺映射
  │  Synthesis   │
  └──────┬──────┘
         │  netlist
         ▼
  ┌─────────────┐
  │    iNO      │  网表优化(扇出修复、缓冲插入)
  │  Netlist Opt │
  └──────┬──────┘
         │
         ▼
  ┌─────────────┐
  │    iFP      │  布图规划(Die/Core/IO/Macro)
  │  Floorplan   │
  └──────┬──────┘
         │
    ··· 后续步骤 ···
         │
         ▼
       GDSII
上游:RTL 设计(Verilog / VHDL 源文件) 下游:iNO(网表优化)→ iFP(布图规划) 协同:iSTA(综合后时序验证)

相关资源

论文

Chatterjee S, et al. "Priority Cuts: A New Approach to Cut-Based Technology Mapping." IEEE TCAD, 2004.

查看 →

论文

Jang S, et al. "WireMap: FPGA Technology Mapping for Improved Routability." ACM TRETS, 2009.

查看 →

AiMap 模型

面向工艺映射的学习模型:预测 cut 选择与 mapping 策略的最优超参数。

进入 →

GitHub

iMap 源代码于 iEDA 仓库 src/iFPGA 路径下。

GitHub →

关联工具

iNO · 网表优化 —— 综合后网表清理与缓冲插入,为物理实现准备干净输入。

iNO →

关联工具

iFP · 布图规划 —— 接收综合网表,定义芯片物理框架。

iFP →

让 Agent 驱动综合决策

不再依赖固定脚本——用可观测的中间状态与可验证的结果闭环每次综合。