综合 Synthesis
概念解析
定义与起源
术语定义:逻辑综合(Logic Synthesis)是数字IC设计中最关键的一步——将RTL(硬件描述语言)转换为门级网表的自动过程。综合工具(如Design Compiler)读入RTL(SystemVerilog/VHDL)和标准单元库(.lib)——经过两阶段:编译(elaboration,解析RTL为通用逻辑表示)和优化(optimization,将通用逻辑映射到具体标准单元——同时优化时序、面积、功耗)。
综合是RTL设计师和物理设计工程师之间的桥梁。综合的输出是一张"门级网表"——它说了"这个设计由哪些门组成、它们怎么连"——但没有说"这些门放在芯片的什么位置"。综合的质量直接决定了后续物理设计的天花板。
核心要义
第一,综合=翻译+优化。 翻译:RTL的always块→寄存器+组合逻辑。if/else→MUX。case→decoder。优化:合并等效逻辑、移除冗余、共享公共子表达式。综合后的网表在功能上和RTL等价(由等价性检查证明)——但在结构上可以完全不同。
第二,综合的约束(Constraint)=优化的目标函数。 时钟周期约束告诉工具"所有路径必须在这个时间窗口内完成"。输入/输出延迟约束告诉工具"外部世界的数据什么时候到/什么时候要走"。面积约束(最大面积=0)告诉工具"用最小面积实现"。约束质量决定综合质量——垃圾约束=垃圾网表。
第三,拓扑综合(Topographical Synthesis)=综合时考虑物理信息。 传统综合只看逻辑——不考虑物理位置。拓扑综合读入floorplan信息——在优化时预估线延迟——避免产生物理上不可实现的逻辑结构(如扇出500的buffer)。DC Ultra和Fusion Compiler都是拓扑综合工具。
实践应用
* 约束质量决定80%的综合QoR:写好时钟约束、IO延迟约束、false path、multicycle path——综合工具才能做出正确优化。 * 综合后STA是质量检查:综合后跑PrimeTime——看WNS/TNS——如果差太多——回去调约束或RTL。 * Incremental Synthesis处理ECO:设计改了一小部分——不需要重综合全部——只综合改动部分+接口。
实战案例
- 某DSP的综合约束翻车:综合时用了一个over-optimistic的时钟周期约束(1.2ns)。综合工具拼了命优化——插了大量大驱动buffer——面积比预期大30%。松约束到1.5ns——面积正常——物理设计轻松收敛。 - 拓扑综合救了时序:传统综合的线延迟模型估算误差40%——物理设计后WNS=-80ps。改用拓扑综合(DC Ultra)——预估线延迟误差降到12%——WNS=-15ps——物理设计轻松修。 - 综合的模块边界优化:某设计在模块边界上有2000+条跨模块路径。默认综合不允许跨模块优化——导致边界上buffer重复。开hierarchical optimization——跨模块共享逻辑——面积降8%。
常见误区
误区一:综合=工具自动做就行。 综合工具的默认配置是"安全"的——不是最优的。调优综合参数(constraint、effort level、优化策略)可以将QoR提升15-30%。
误区二:综合越快越好。 快的综合(runtime优化)牺牲QoR。好的综合需要在runtime和QoR之间平衡。Top partition通常用high effort——其他模块用medium。
误区三:综合面积=芯片面积。 综合面积是"逻辑面积"——不包括物理实现中的空白区域、电源网格、IO pad。芯片实际面积通常是综合面积的1.3-1.6倍。
相关论文
- SystemVerilog陷阱的回归 - 缩小综合与布局布线之间的差距 - 相信我,我是Design Compiler:综合行为与变化的Slack - SystemVerilog对FPGA设计有用吗?(\ - 使用Design Compiler Graphical进行拥塞预测与缓解 - DC Explorer:用于早期设计探索的快速综合 - 利用DCT/DCG实现高频设计的方法研究 - 重定时流水线多种低功耗方法的优异权衡 - 一种可以自动完善物理约束的快速综合设计方法 - 面向布局布线的 RTL 改进 - 使用C到RTL等价性检查验证AI非线性运算 - 面向布局布线的RTL改进 - 下一代RTL综合:未来十年的RTL综合