1. Fusion Compiler物理实现全景

在先进工艺节点下,数字集成电路的物理实现早已不是“把网表摆到版图上”这么简单。一个7nm或5nm的SoC,往往包含数亿个标准单元、上千个宏单元、多电压域、多时钟域,以及复杂的物理约束与时序约束。传统流程把综合、布局、时钟树综合、布线、签核拆成多个独立工具,每个工具都有自己的数据模型,工具之间靠文件传递信息。这种“文件驱动”的流程在28nm还能勉强应付,到了16nm以下就暴露出严重问题:数据转换丢失信息、时序与物理信息割裂、迭代周期长、结果收敛困难。

Fusion Compiler(简称FC)正是Synopsys为应对这一挑战推出的融合式物理实现平台。它的核心思想可以用一句话概括:用统一的数据模型,把RTL到GDSII的全流程放在同一个引擎里完成,让时序、物理、功耗、面积的信息在整个流程中始终一致、实时可见。

从RTL到GDSII:物理实现到底在做什么

先建立整体认知。数字IC的物理实现,输入是RTL代码和工艺库,输出是可供流片的GDSII版图。中间要完成的事情,按逻辑顺序大致分为几个阶段:

  • 综合(Synthesis):把RTL转换成门级网表,映射到工艺库的标准单元上,同时做初步的时序和面积优化。
  • 布局规划(Floorplan):确定芯片尺寸、宏单元位置、电源网络、I/O摆放,为后续布局布线搭建“骨架”。
  • 布局(Placement):把标准单元摆放到合法位置,同时优化时序、拥塞和功耗。
  • 时钟树综合(CTS):构建时钟网络,控制时钟偏斜(skew)和插入延迟(latency),保证时序收敛。
  • 布线(Routing):完成所有信号线的物理连接,满足设计规则和时序要求。
  • 签核(Signoff):用更精确的引擎做时序、功耗、物理验证,确认设计可以流片。

传统流程中,这些阶段分属不同工具,每个工具都要重新读入设计、重新建立数据模型。FC的做法是把它们统一到一个引擎里,数据模型只有一份,各阶段共享同一份时序、物理和约束信息。

统一数据模型:融合架构的基石

FC最核心的技术资产是它的统一数据模型。传统流程中,综合工具输出网表,布局工具读入网表后重新建立物理数据库,CTS工具再读入布局结果重建时钟模型。每一次“重建”都意味着信息损失和精度下降。FC的统一数据模型把网表、物理布局、时序约束、功耗信息、工艺库全部放在同一个内存数据库中,任何阶段的优化都能看到全局信息。

这带来几个直接好处。第一,时序信息始终是最新的。布局阶段做的优化,CTS阶段能直接看到;CTS阶段插入的缓冲器,布线阶段能立即感知。第二,物理信息始终是准确的。时序优化时能知道单元的实际位置和布线拥塞情况,不会出现“时序优化完了发现布不通”的尴尬。第三,约束信息只有一份。SDC约束、UPF电源约束、物理约束统一管理,不会出现工具之间约束不一致的问题。

统一数据模型不是简单的“数据放在一起”,而是让时序、物理、功耗三个维度的信息在同一个优化引擎里实时交互。这是FC区别于传统“点工具拼接”流程的根本所在。

融合架构的核心价值:从“串行迭代”到“并行收敛”

传统流程的典型问题是串行迭代。综合做完做布局,布局做完做CTS,CTS做完做布线,每一步都要等上一步完全结束。如果布线后发现时序不满足,就要回到布局甚至综合阶段重新来一遍。一次迭代可能几天甚至几周,先进工艺下迭代十几次是常态。

FC的融合架构把这种串行迭代变成了并行收敛。因为所有引擎共享同一个数据模型,布局阶段就可以调用全局布线引擎做拥塞预估,CTS阶段可以调用时序引擎做实时分析,布线阶段可以调用功耗引擎做动态功耗优化。各引擎之间不是“传递文件”,而是“共享内存”。

具体来说,FC的融合体现在几个层面:

  • 时序与物理融合:布局时实时做时序分析,时序优化时实时看物理拥塞,避免“时序好了但布不通”。
  • 综合与布局融合:物理感知的综合(physically-aware synthesis)在综合阶段就考虑布局信息,减少后期迭代。
  • 时钟与数据路径融合:CTS与数据路径优化同时进行,避免时钟树做完后数据路径时序恶化。
  • 签核与实现融合:签核引擎与实现引擎共享数据模型,签核发现的问题可以直接在实现引擎里修复。

一张图看懂FC的融合流程

下面这张图展示了FC从RTL到GDSII的完整流程,以及统一数据模型如何贯穿始终。图中左侧是输入,中间是FC的融合引擎,右侧是输出,底部是贯穿全流程的统一数据模型。

Fusion Compiler 从 RTL 到 GDSII 的融合流程 输入 RTL 代码 工艺库 (.db) SDC 约束 UPF 电源意图 物理约束 Fusion Compiler 融合引擎 综合 + 物理感知优化 Synthesis / Physical Aware 布局规划 + 布局 Floorplan / Placement 时钟树综合 CTS / Clock Optimization 布线 + 后布线优化 Routing / Post-Route Opt 签核级时序 / 功耗 / 物理验证 Signoff Timing / Power / Physical Verification 实时反馈 输出 GDSII 版图 门级网表 时序报告 功耗报告 物理验证结果 统一数据模型 Unified Data Model 网表 · 物理布局 · 时序约束 · 功耗信息 · 工艺库 · 电源意图 实时读写

融合架构带来的实际收益

从工程实践角度看,FC的融合架构带来的收益可以量化为几个方面。首先是迭代周期缩短。传统流程一次完整迭代可能需要3到5天,FC因为各阶段共享数据、实时反馈,一次迭代可以压缩到1天以内。其次是结果质量提升。时序、物理、功耗同时优化,PPA(Power, Performance, Area)结果通常比传统流程好5%到15%。第三是收敛确定性提高。因为所有信息实时一致,不会出现“签核发现的问题在实现阶段无法复现”的情况。

举个具体的例子。在传统流程中,布局阶段做完时序优化,CTS阶段插入时钟树后,数据路径的时序往往会恶化,因为时钟树占用了布线资源、增加了延迟。工程师需要重新做布局优化,甚至重新做综合。在FC中,CTS阶段的数据路径优化和时钟树构建是同时进行的,引擎知道时钟树会占用哪些资源、会增加多少延迟,数据路径优化会提前补偿这些影响。结果是CTS后时序恶化大幅减少,迭代次数明显降低。

理解FC的融合架构,关键要抓住“统一数据模型”和“实时反馈”两个点。统一数据模型让信息不丢失,实时反馈让优化不滞后。这两点结合起来,才实现了从串行迭代到并行收敛的转变。

学习FC物理实现的方法建议

对于初学者,建议按“先通流程、再钻细节”的顺序学习。先理解从RTL到GDSII的完整流程,知道每个阶段在做什么、输入输出是什么、关键约束有哪些。然后深入每个阶段的具体命令和参数,比如布局阶段的place_opt、CTS阶段的clock_opt、布线阶段的route_opt。最后学习如何用FC的统一数据模型做跨阶段优化,比如在布局阶段调用时序引擎做物理感知的时序优化。

实际项目中,FC的使用通常从fc_shell开始,读入设计、约束和库文件,然后按流程执行各个阶段。每个阶段都有对应的报告命令,比如report_timing、report_congestion、report_power,用来观察结果、判断是否收敛。如果结果不满足要求,可以回到前一阶段调整参数或约束,因为数据模型是统一的,不需要重新读入设计。