综合 Synthesis
综合 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倍。