ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

芯片设计全流程拆解:从RTL到GDSII的关键节点与Seal Ring设计要点

芯片设计全流程拆解:从RTL到GDSII的关键节点与Seal Ring设计要点 2. 芯片设计流程到底在“流”什么第一次流片前大部分人都会经历一段“心里没底”的时期。IP手册翻了几十页后端脚本也跑通了但总觉得自己对整体流程的理解还是碎的。核心电路怎么从RTL变成版图Seal Ring到底该画多宽为什么DRC过了还可能在FAB那边被卡住这些问题如果没在流片前彻底想清楚大概率要吃一次亏。这篇文章我按实际工程路径来拆整个流程从设计输入、逻辑综合到物理实现、时钟树综合、布线再到Seal Ring设计、物理验证和签核。每个阶段我会把它“为什么这么做”讲清楚再补充参数选择和实际操作中的坑。跟项目的人、做模拟的人、甚至在FAB端对接过流片的人都适用——不是把所有EDA工具操作手册念一遍而是把那些工具背后真正决定成败的关键节点讲透。3. 整体流程与技术栈先把地图摊开在接触具体命令和界面之前脑子里面先要有一张完整的设计流程图后面每一步都是在往这张图上填细节。3.1 从RTL到GDSII前后端的分界线在哪从宏观来看芯片设计流程可以分成前端逻辑设计和后端物理设计两大段。前端把硬件描述语言Verilog/VHDL转成门级网表后端把门级网表转成带物理信息的版图GDSII。不少人有一个误解以为前端和后端是串行关系前端完事之后后端才开始。真实项目里两者需要反复迭代后端发现时序收敛不了会反馈给前端改RTL后端发现某个模块布局密度过高、局部拥塞前端可能需要调整逻辑结构。所以全流程管理很重要仅仅用两个独立工具链跑两遍完全不现实。从流程节点上看主要有这么几个关键里程碑RTL freeze寄存器传输级代码冻结不再做功能性的修改后面只允许修bug。逻辑综合RTL映射到工艺库得到门级网表。布局规划确定各模块物理位置、IO Pad位置、电源网络骨架。时钟树综合把时钟信号均匀送到所有时序单元。全局布线与详细布线把逻辑连接转换成金属连线。物理验证DRC、LVS、天线检查等确保版图符合工艺规则。签核包含STA时序签核、IR drop签核、电迁移EM签核。在这个流程里核心电路的安全不是某一个环节单独完成的而是从综合到后端验证全链路一起兜底。3.2 工具链选型与工艺节点选择主流数字实现流程使用的EDA工具基本是三大平台的天下Synopsys、Cadence、Siemens EDA。这里列一个典型组合很多公司直接拿它当标准流程流程阶段常用工具备注逻辑综合Design CompilerSynopsys家的综合霸主支持UPF低功耗流程DFT插入DFT Compiler / Tessent可测性设计生产测试必备布局布线IC Compiler II / Innovus两家的后端工具功能互有胜负时钟树综合集成在PR工具内Innovus的CCopt和ICC2的CTS都成熟静态时序分析PrimeTime行业黄金签核标准物理验证CalibreDRC/LVS/XRC事实标准功耗分析RedHawk / Voltus动态IR drop分析常用工艺节点选择会影响流程设置。28nm以上的成熟工艺时序收敛压力相对小天线效应、金属密度问题不算特别突出到了16nm以下FinFET工艺需要额外处理多重曝光、双重图形拆分对设计规则的要求严苛得多。如果是第一次流片建议优先选成熟工艺节点把流程跑通不要一上来就挑战先进工艺的学习曲线。4. 核心电路是如何从RTL变成可流片网表的逻辑设计阶段解决的问题是“这个电路逻辑上对不对”物理实现阶段才真正决定“这个电路物理上能不能实现、能不能按时序跑起来”。4.1 逻辑综合与DFT插入真正决定面积和速度的一步逻辑综合把RTL翻译成标准单元网表。很多人以为这步只是简单翻译其实综合器的优化空间非常大。同样的RTL写法综合约束松紧不同结果面积可能差20%以上。关键约束主要有几个时钟频率约束create_clock、输入输出延迟set_input_delay / set_output_delay、伪路径false path和多周期路径multicycle path。我的建议是constraint在项目一开始就要写严谨后面每跑一轮综合都检查有没有unconstraint的路径。Floorplan之前必须做的还有DFT可测性设计。常见做法是扫描链插入把普通寄存器串成移位寄存器链这样生产测试时可以通过扫描输入灌入测试向量。实际操作中有个容易忽略的点扫描链插入后必须重新做STA因为扫描路径可能引入额外延迟影响某些路径的时序。还有扫描链的时钟控制信号要单独处理避免测试模式和工作模式互相干扰。综合后还需要做一个重要的检查等价性检查formal verification确保综合后的网表和RTL逻辑功能一致。这是一个容易在项目中被当成“形式主义”跳过、但实则非常必要的步骤。后端版图做完之后还要再做一次形式验证确认物理实现没有改变逻辑意图。4.2 布局规划芯片的“户型设计”进入物理实现阶段第一个核心步骤是布局规划Floorplan。这个阶段要决定芯片整体形状、各功能模块放在哪、IO Pad怎么分布、电源网络怎么铺。布局规划有一个经典的遵循原则凡是有大量数据交互的模块物理位置要靠近。比如CPU核心与L2 Cache之间距离远了会直接影响性能和功耗。模拟模块与数字模块之间必须考虑噪声隔离问题通常的做法是物理隔开并加保护环防止数字开关噪声耦合进模拟敏感信号。IO Pad的摆放也值得高度重视。高速信号如SerDes、DDR要放在芯片边缘靠近端口的位置走线尽量短电源Pad要均匀分布避免某个区域取电密度过高电流集中导致局部IR drop严重。整个电源网络Power Mesh在Floorplan阶段就要画出骨架而不是等到布线再铺。高层金属如M6/M7做纵向和横向的电源条低层金属做单元供电。电源条宽度的选择要基于电流估计静态时模块消耗多大电流、动态时峰值电流能到多少都需要估算。这一步如果估小后面IR drop检查不过只能回到Floorplan阶段返工这是最常见的项目delay原因之一。4.3 标准单元摆放与时钟树综合Floorplan定好之后工具会把标准单元放到Row里面。可以看到这个时候工具会先做全局布局优化时序再做合法化legalization保证单元不重叠、Row对齐最后再反复做优化。时钟树综合CTS是整个后端流程里最考验经验的部分。时钟信号要送到成百上千个寄存器为了让时钟到达时间尽量一致工具会插入时钟缓冲器形成树状结构。这里有两个概念必须理解latency和skew。Latency是时钟从源头到某个寄存器的绝对延迟skew是不同寄存器之间的延迟差。Skew太大会导致时序违例一个常用的约束是skew控制在时钟周期的5%以内比如1GHz时钟周期1nsskew尽量控制在50ps量级。CTS完成后有一个很多新人容易忽略的问题检查时钟树上的transition time。时钟沿如果爬坡太慢会显著增加寄存器延迟甚至导致功能错误。通常工艺库会给出max transition约束超过就要考虑增加时钟缓冲器尺寸或插入更多级缓冲。5. Seal Ring围绕整个芯片的“最后一道防线”说到Seal Ring密封环很多做数字后端的人并不陌生但真正讲清楚它为什么存在、怎么设计的人不多。它是环绕整个芯片包含core和IO的一圈连续结构从切晶圆、封装到使用中都在发挥作用。可以这样理解它既负责保护芯片边缘的物理完整性也承担着机械应力吸收、防止裂缝扩大和静电泄放路径等多重作用。5.1 Seal Ring的结构与材料选择Seal Ring通常由多个堆叠的金属环加上通孔阵列构成环绕整个die。结构上可以从以下几个层次来理解金属环一般需要在每一层金属上都画上连续环。不同工艺节点对环宽要求不同常见范围在10微米到50微米之间具体以foundry的DRM为准。通孔阵列连接不同金属层的via要尽量密、尽量均匀形成低阻抗通路同时增强机械结构。顶层保护环最上面一层通常有较宽的金属或特殊mark层防止切割时的机械损伤穿透到核心电路区域。角落处理Seal Ring在die的四个角落往往需要特别处理防止应力集中。有些工艺会建议角落做加固结构。材料选择上主要由工艺决定金属用铝或铜通孔用钨或铜。由于工艺标准不同尽量不要自己发明结构而是严格按foundry提供的Seal Ring设计文档执行。设计规则库DRM中的Seal Ring相关章节直接决定了你的物理实现方案是否需要调整。5.2 Seal Ring设计要点与常见误区第一Seal Ring必须保持物理连续。任何一层金属断开都意味着保护功能失效所以布局布线阶段不能有任何单元、Blockage或电源网络切断这圈环。实现方法是在Floorplan阶段就把这一个区域预留出来标记为routing blockage并且阻断一般信号线穿过。第二Seal Ring不能与芯片内部电源/地连接除非工艺明确要求。它的主要作用是机械和ESD保护如果直接接到内部电源网络上反而可能引入噪声甚至造成短路风险。IO Pad区域通常有专门的ESD保护结构和Seal Ring是两套体系但要协调好距离避免ESD电流路径互相干扰。第三Seal Ring的金属密度问题。因为环本身是大面积金属容易触发DRC的metal density规则。通常foundry要求芯片内部金属密度处在某个范围例如20%~80%Seal Ring区域金属密度极高需要在周围添加dummy block或金属挖槽来平衡密度这部分工作在floorplan阶段就要考虑进去不能等到后面DRC报错再临时补。第四关于Seal Ring的FIB或探针操作。有些调试场景需要在芯片边缘开窗这时候如果破坏了Seal Ring可靠性就会大打折扣。设计前期就需要和测试团队确认哪些区域可以开窗尽量把调试探针点放在Seal Ring内侧且不影响环的连续性的位置。注意Seal Ring不是“有余力再画”的装饰层。很多第一次流片的人觉得它跟核心电路无关最后用自动脚本一框了事。实测下来Seal Ring做得好不好直接决定芯片从晶圆切割到可靠性验证这一段会不会出问题。5.3 Pad与ESD防护的协同设计Seal Ring旁边的另一块关键内容是IO Pad和ESD防护结构。芯片对外通信的每一个信号、电源都通过Pad连接。ESD静电放电防护结构在正常工作时处于高阻状态不影响功能但遇到外部静电事件时会迅速导通把电流泄放到地保护内部核心电路。在版图层面ESD防护结构占据的面积并不小——一个信号Pad的ESD保护区域往往比Pad本身大得多。而且ESD结构有自己的设计规则包括接触孔数量、金属线宽、触发电压等不能简单用标准单元库的普通单元替代。如果需要进一步的抗ESD能力还可以在IO Pad外围增加额外的guard ring与Seal Ring形成双层保护。Seal Ring与ESD结构之间的间距也要注意。如果距离太小ESD事件产生的电流可能直接耦合到Seal Ring形成非预期路径。我的经验是严格按照foundry模拟IO库的指导来摆放不要为了省面积擅自拉近。6. 布线、电源完整性与物理验证流片前的最后防线封顶之前其实还有不少容易翻车的环节。电源网络设计是否合理、布线有没有拥塞、DRC/LVS是否干净、金属密度是否达标这些都会直接影响流片成败。6.1 电源网格设计与IR drop分析在现代芯片中电源网格需要覆盖整个die为每一个标准单元提供稳定的供电。这里核心的权衡是金属层就那些既要用高层金属走全局信号又要留出足够资源铺电源。电流密度过大电迁移EM风险上升过小IR drop上升逻辑单元供电不足。实际操作中电源网格设计分两步走。第一步是估算峰值电流可以按模块功耗除以供电电压得到平均电流再乘以一个动态因子通常1.5~2.5倍作为峰值估计。第二步是确定电源条宽度和间距。一个简单的计算方式先根据工艺库中金属的电流密度上限比如1mA/um算出所需总金属宽度再分配到各个电源条上。比如一个模块平均电流0.5A峰值按2倍估算1A金属上限1mA/um那么总共需要1000um宽度的电源条。如果分布在10条M7上每条至少100um宽实际设计还会留出20%的余量。IR drop分析要跑动态。动态IR drop分析使用仿真激励抽取功耗波形和寄生网络用RedHawk或Voltus软件求解。签核标准通常要求芯片任何位置IR drop不超过供电电压的5%。如果超标常规优化手段是加宽电源条、增加电源条密度或者把高功耗模块移到电源供应更充足的位置。6.2 布线与拥塞控制布局完成以后进入布线阶段通常分全局布线和详细布线两步。全局布线将整个芯片网格化规划每条信号的走线通道详细布线则在具体金属层和track上完成物理连线。拥塞congestion是布线阶段需要时时关注的指标。拥塞严重说明某个区域布线需求超出了通道容量可能导致绕线极长甚至无法布通。观察拥塞热图最直观一般建议最大拥塞度不要超过105%。超过这个值工具自动修复可能反复迭代不收敛最好的办法是回到Floorplan或布局阶段调整模块位置、优化标准单元摆放密度。布线阶段另一个值得关注的是信号完整性。长距离并行走线之间的串扰可能导致延迟变化甚至逻辑误判。现在主流PR工具会做基于时序的串扰修复但设计者仍应主动关注高速总线区域对关键信号加约束比如分组走线、拉开线与线间距spacing。6.3 DRC/LVS、天线检查与dummy填充布线完成后物理验证阶段会做一整套检查。DRC设计规则检查确保版图图形满足工艺厂的所有几何规则包括最小线宽、最小间距、孔覆盖等。LVS版图与原理图一致性检查则对比版图抽取出的电路网表与原始原理图网表确保连接关系一致。天线效应antenna effect是一个和工艺紧密相关的可靠性问题。金属导线在刻蚀时可能积累电荷如果积累的电荷超过了相连栅极氧化层能承受的阈值就会损伤晶体管。解决手段包括在布线中添加跳线改变金属层或插入天线二极管。某些成熟工艺对天线效应比较宽容但先进工艺节点上必须逐条验证。在综合和布线的约束中提前声明antenna规则让工具在布线时自动规避风险这样比后期手动修要省力得多。金属密度检查也值得单独说。现代化学机械抛光CMP工艺要求芯片各区域金属密度相对均匀否则会出现厚度差异影响电气特性。不满足密度的地方需要填充dummy metal。dummy填充的难点在于它不能影响信号完整性和时序又不能离信号线太近形成耦合电容。现在的PR工具有成熟的fill flow签核前还会跑一次dummy后的DRC和时序确保填充对性能没有负面影响。7. 流片前的签核检查清单与实际问题排查大部分芯片项目delay都发生在签核阶段。前面做得再顺利如果最后检查清单不完整一个遗漏都可能推倒重来。把常见的坑提前整理成清单逐项核对能省不少时间。7.1 STA、功耗、EM等签核项逐一核对签核阶段必须同时看多个维度的报告只跑一遍时序就sign-off是远远不够的。签核项主要工具关注指标常见踩坑点静态时序分析PrimeTimesetup/hold slack漏约束、过约束导致大量false violation功耗签核RedHawk / VoltusIR drop ≤5% VDD动态场景不够全面热点区域漏检电迁移集成在功耗分析中EM margin长时间高负载场景下电流密度超限可靠性Calibre天线规则、ESD规则金属跳线位置不当天线仍超限物理验证CalibreDRC/LVS CLEAN密度问题、Seal Ring连接断开STA是所有签核环节中最需要跑多场景的。不同工作电压、不同温度组合一般至少覆盖SS/0.9V/125°C的最差setup场景和FF/1.1V/-40°C的最差hold场景。建议对低频慢速路径额外关注因为有复位的路径有时会被误设成false path实际功能中反而需要满足时序。7.2 常见问题与排查技巧实录项目中最常见的几个问题这里直接按我的排查顺序整理一下DRC报告里有Seal Ring相关violation显示金属断开。排查方向先看规则定义是哪层金属再用版图编辑器看断点位置多数是Floorplan没留足够绕线空间或是其他单元把环切开。解决办法是加routing blockage跑完布线后复查一次。CTS后时钟skew过大超过周期5%。先检查时钟源到各寄存器分组的负载是否均衡再看时钟树选用的buffer类型是否合理必要时让工具做useful skew优化不过要评估对setup/hold的影响。IR drop热点在某个高功耗模块区域。优先扩展该区域电源条也可以在附近加decap电容去耦电容吸收瞬时电流。但注意decap电容过多会增大漏电和面积需要权衡。LVS报出浮空节点但又找不到来源。常出现在模拟模块边界。检查层次化LVS的设置是否把子模块的电源/地连接按预期处理避免顶层和底层电源网络定义重复。Seal Ring外圈与IO Pad之间的间距违规。回到Floorplan检查IO cell的边界给Seal Ring单元预留足够空间。很多工艺库里有现成的seal ring cell直接用标准cell比手动画更可靠。7.3 流片前的复盘建议签核报告全部干净之后完成流片前的复盘也很有必要。拉上前后端、版图、测试几个角色一起过一遍把关键假设都验证清楚约束是否覆盖所有工作模式、电源分析是否包含最大功耗场景、IO/ESD结构是否和封装引脚定义一致。如果有条件做一次“预检查”会议专门对着FAB的checklist逐项走那些在工具里不报但FAB端会卡的问题比如某些特定mark层缺失、特殊标识遗漏都能在这一步尽早发现。我个人在实际项目中最常遇到的翻车点反而是那些“工具没报错但逻辑上没考虑到”的地方。比如Seal Ring这是每次都要返工的重灾区不是DRC不过而是要等流片回来之后封装或者可靠性验证阶段才暴露问题。所以宁可在版图上多花一天把Seal Ring区域理清楚也不要等芯片回来再后悔。8. 写在最后的经验真正经历过一次流片再回头看那些文档和讲座里的流程图理解会完全不同。前期模拟、仿真做了再多都不如把整个链路走一遍学到的多。不要试图一下子把所有先进技术都塞进第一颗芯片目标应该是“用最可靠的流程把设计送出去”。核心电路、电源网络、时钟树、Seal Ring每一个环节都值得以谦逊的态度去检查。希望这篇拆解能帮你少踩几次流片前的坑。如果你正在准备第一次流片不妨把这篇文章里的检查项存成自己的checklist按需增删在tapeout review的时候一项一项过。等你流片成功回来后会发现这些流程节点和参数要求每一行都没有白记。
返回列表