网表 Netlist
概念解析
定义与起源
术语定义:网表(Netlist)是数字IC设计中最核心的中间交换格式——它描述了一个电路的所有逻辑单元(cell instances)和它们之间的连接(nets)。网表不包含物理信息(没有坐标)——它只是"谁连到谁"的拓扑图。RTL综合的输出是门级网表——物理设计的输入也是门级网表——网表是设计和实现的"合同"。
网表的格式演进反映了EDA工业史:EDIF(1980s,第一个标准格式)→Verilog网表(1990s,业界最广泛使用)→SPEF(带寄生参数的网表)→DEF(物理信息+网表)。门级网表是RTL和GDSII之间的关键桥梁。
核心要义
第一,网表=实例(instances)+连接(nets)。 每个instance是一个标准单元(AND/OR/FF/MUX等)或宏单元(IP block、memory)。每个net是一组被连接在一起的instance端口。网表不包含:逻辑函数(这只是连接关系)、物理位置、时序信息(在SDF里)、寄生参数(在SPEF里)。
第二,网表的"黄金标准"问题:哪个版本是权威? 设计流程中有多个网表版本共存:综合后的网表、DFT插入后的网表、CTS后的网表、ECO后的网表。每一个都和前一个"应该"等价——但不是真等价。等价性检查(Formality)就是证明网表之间的等价性。
第三,网表的质量直接影响物理设计的难度。 一个"干净"的网表:没有undriven inputs、没有multi-driven nets、没有combinational loops(组合逻辑环)、命名规范、层次清晰。一个"脏"网表会让物理设计工具跑得慢、QoR差、甚至跑不出来。
实践应用
* 网表命名规范是团队协作的基础:好的命名规则让你在网表中一眼看出信号的来源和去向。 * 网表大小是工具选择的关键:1000万instance以上的网表需要分布式工具(多台机器并行)。 * 网表格式转换是EDA互操作的核心:Synopsys工具用 Milkyway 数据库,Cadence工具用 OA 数据库——网表是两种数据库互通的中介。
实战案例
- 某SoC的网表爆炸:RTL只有50万行——综合后的门级网表有1200万instances。网表太大——Innovus花了24小时才读完。解决方案:partition设计——分4个子模块各自跑PnR——顶层只做assembly。 - 网表不一致的恐怖故事:综合团队和物理设计团队用了不同版本的网表——物理设计跑了一周后发现结果对不上。根因:中间有一次ECO的网表没有同步给物理设计团队。从那以后——网表版本控制被纳入CI。 - SPEF让时序signoff更准确:网表+SPEF(寄生参数)=带RC延迟的完整电路描述。STA用SPEF计算真实延迟——而不是用统计线负载模型估算。SPEF让signoff精度从±15%提升到±5%。
原话引用
> "Netlist is the truth. Everything else — RTL, timing report, power report — is interpretation of the truth."—— 物理设计总监, 内部培训 > "Garbage netlist in, garbage chip out."—— SNUG San Jose 2015 > "网表是设计团队的合同——综合团队签了字说'这是RTL的正确实现'——物理设计团队在合同上盖楼。"—— EDA行业老话
常见误区
误区一:网表=门级原理图。 网表只有连接关系——没有时序、没有物理信息、没有逻辑功能。你需要网表+SDF(时序)+SPEF(寄生)+lib(单元特性)才能完整描述一个门级电路。
误区二:网表越小越好。 有时候网表膨胀(inflation)是因为综合工具做了有用的优化——比如复制了逻辑来降低扇出。只要PPA达标——网表大小本身不是指标。
误区三:网表可以手工编辑。 对于百万门以上的设计——手工编辑网表无异于在沙滩上数沙子。但ECO时的小规模网表编辑(手工改几行)是常见的——前提是你精确知道改了什么。
思想演变
- 1980s:EDIF诞生:第一个标准网表格式。纯文本、易于解析。各大EDA工具都支持。 - 1990s:Verilog网表成为事实标准:比EDIF更紧凑、更受综合工具原生支持。 - 2000s:SPEF+DEF补充网表:SPEF带寄生参数。DEF带物理信息。网表+SPEF+DEF=完整的物理+逻辑+时序描述。 - 2010s–present:数据模型统一:Fusion Compiler统一RTL→GDS的数据模型——消除网表格式转换的中间步骤。
相关论文
- 应对全芯片功耗感知功能验证的挑战——基于MVSIM的解决方案 - 面向百万门级设计的多压缩器实现方案 - 使用ESP-CV进行存储器位图验证 - 结构化方法:利用相对布局与时钟网格优化ARM Cortex-A8 NEON单元的延迟、功耗与变异——基于90纳米工艺的案例研究 - 使用ESP-CV进行定制宏的动态功耗分析以减少分析时间并提高精度 - 使用NanoTime分析数字存储接口逻辑 - 复杂SoC使用IC Compiler的层次化设计实现 - 高速存储通道模块的XA仿真器验证 - 使用Design Compiler Graphical进行拥塞预测与缓解 - 先有鸡还是先有蛋:如何在网表之前获得布图规划 - DC Explorer:早期设计探索的快速综合 - 层次化设计实现策略的最佳实践 - 基于SpyGlass CDC实现超大规模电路的时钟域跨异步检查 - Synopsys图形化通用信号完整性分析环境使用经验 - 无需RTL代码的Siloti (Verdi) 功耗分析加速方案 - 快速DFT开发的运行时间缩减