网表 Netlist
网表 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%。
常见误区
误区一:网表=门级原理图。 网表只有连接关系——没有时序、没有物理信息、没有逻辑功能。你需要网表+SDF(时序)+SPEF(寄生)+lib(单元特性)才能完整描述一个门级电路。
误区二:网表越小越好。 有时候网表膨胀(inflation)是因为综合工具做了有用的优化——比如复制了逻辑来降低扇出。只要PPA达标——网表大小本身不是指标。
误区三:网表可以手工编辑。 对于百万门以上的设计——手工编辑网表无异于在沙滩上数沙子。但ECO时的小规模网表编辑(手工改几行)是常见的——前提是你精确知道改了什么。