ARTICLE DETAIL

资讯详情

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

VLSI物理设计中的芯片规划:从架构到实现的战略布局

VLSI物理设计中的芯片规划:从架构到实现的战略布局 1. 从图纸到硅片Chip Planning的定位与价值如果你刚接触VLSI物理设计可能会觉得“Chip Planning”芯片规划这个词听起来有点抽象甚至有点“虚”。它不像画版图那样直观也不像做时序分析那样有明确的数字指标。但我想说的是Chip Planning是整个物理设计流程中最像“建筑师”和“总指挥”的环节。它决定了芯片这块“地皮”上各个功能模块比如CPU核、内存控制器、高速接口应该放在哪里它们之间的“高速公路”全局布线怎么规划以及如何确保整个“城市”的供电、散热和信号传输都能高效、稳定地运行。简单来说Chip Planning就是在芯片的顶层对所有的宏单元Macros比如大型的SRAM、模拟模块、处理器核和标准单元Standard Cells比如各种逻辑门进行初步的、战略性的布局。它的输出就是一份芯片的“总体规划图”后续所有精细的布局布线Place Route工作都将在这个框架下进行。一个糟糕的规划会让后续工作举步维艰即使花再多时间优化局部也难逃时序违例、功耗过高甚至无法布通的命运。而一个好的规划则能为整个设计打下坚实的基础事半功倍。现在很多初学者尤其是通过一些入门级的EDA工具比如立创EDA学习硬件设计的朋友可能更熟悉在PCB层面进行布局。你会考虑把MCU、内存芯片、电源模块放在板子的什么位置走线怎么避免交叉。Chip Planning在芯片内部做的事情逻辑上是相通的但复杂度和约束条件是天壤之别。在芯片内部你不是在摆放几个独立的芯片而是在摆放成千上万个功能块它们之间的连接关系复杂如蛛网还要同时考虑性能、功耗、面积和可制造性。这也就是为什么专业的VLSI设计必须依赖Cadence Innovus、Synopsys ICC2这类高端EDA工具而无法用网页版或学习版工具完成的原因。2. Chip Planning的核心任务拆解不止是“摆一摆”很多人会把Chip Planning简单理解为“摆放宏单元”这其实只看到了冰山一角。一个完整的芯片规划过程是多个子任务环环相扣的结果。我们可以把它分解成几个关键步骤来理解。2.1 芯片布图规划Floorplanning划定疆域与功能分区这是Chip Planning的第一步也是最核心的一步。想象一下你拿到了一块方形的硅片Die你需要在这块“地皮”上为不同的功能模块划分“地块”。首先是确定芯片的轮廓Die Size和输入输出端口I/O Pads的位置。芯片的大小直接决定了成本硅片面积越大越贵也影响了后续的布线拥塞和时序。I/O Pad的位置则受到封装Package引脚排布的限制需要与封装设计协同考虑。在专业工具中你需要定义芯片的核心利用率Core Utilization即标准单元区域占核心区域的比例。通常初期会设置一个较低的值如70%为后续的布线、时钟树和电源网络预留空间。其次是宏单元的摆放Macro Placement。这是Floorplanning的重头戏。宏单元通常是面积大、引脚多的模块比如嵌入式存储器SRAM/ROM、数据转换器ADC/DAC、锁相环PLL等。摆放它们时需要考虑多重约束连接性连接紧密的宏单元应该彼此靠近以减少全局连线的长度和延迟。工具通常会提供基于网表Netlist的连接性分析视图来辅助决策。模块接口宏单元的输入输出端口最好能朝向与之连接的主要逻辑区域避免连线需要绕很远的路。布线通道宏单元之间、宏单元与芯片边界之间必须留出足够的空间用于布线。如果宏单元摆得太密中间没有通道信号线就布不过去造成“布线拥塞”Routing Congestion。电源网络大型宏单元尤其是存储器通常是功耗“大户”需要 robust 的电源供应。摆放时要考虑电源环Power Ring和电源带Power Stripe如何能够有效地覆盖它们。数据流对于数据处理器芯片通常有较清晰的数据流路径如从输入接口经过处理单元到输出接口。宏单元的摆放应顺应这个数据流避免数据来回折返。一个常见的技巧是先手动摆放最关键、约束最强的宏单元如PLL、高速接口的PHY然后利用工具的自动宏单元摆放功能进行初步布局最后再基于布线拥塞热图Congestion Map和时序报告进行手动微调。2.2 电源规划Power Planning构建芯片的“电网系统”电源规划与布图规划往往是同步或交替进行的。它的目标是构建一个低阻抗、均匀的电源分配网络Power Distribution Network, PDN确保芯片上每一个晶体管都能在稳定的电压下工作。电压跌落IR Drop和电迁移Electromigration是这里需要解决的核心问题。首先是设计全局电源网络结构。最常见的是“网格”Mesh结构。这包括电源环Power Ring在芯片核心区域Core的四周布上宽金属线分别连接VDD电源和VSS地。它就像环绕城市的“输变电站环线”从芯片的I/O Pad获取电力。电源带Power Stripe从电源环向芯片内部延伸出的、垂直或水平走向的宽金属带。它们构成了网格的主干道。标准单元电源轨Standard Cell Rails在标准单元行Cell Rows中预定义的、水平方向的细电源线。所有标准单元的VDD/VSS引脚都直接连接到这组轨道上。规划时需要考虑金属层分配高层金属如Metal8、Metal9电阻更小通常用于电源环和电源带。需要根据设计规则Design Rule和工艺库Technology Library来确定各层金属的宽度和间距。电流密度根据芯片各区域的功耗估算来设计电源带的宽度和间距。高功耗区域如处理器核需要更密、更宽的电源带以防止该区域因电流过大导致电压下降过多。宏单元的供电大型宏单元通常有自己专用的电源引脚。需要在规划时确保有足够宽和直接的电源带连接到这些引脚上有时甚至需要为关键宏单元设计局部的电源环。注意电源规划不是一次性的。在后续布局布线甚至签核Signoff阶段都需要进行IR Drop分析。如果发现某些区域电压跌落超标可能需要返回修改Floorplan增加该区域的电源带密度或宽度。2.3 布局Placement为亿万“居民”安排住所在宏单元和电源网络的大框架确定后接下来就要安置数量庞大的标准单元了。这里的“布局”指的是全局布局Global Placement目标是为所有标准单元找到一个粗略的、合法的位置即单元不重叠并优化关键指标。布局工具的核心优化目标有三个通常被称为PPAPerformance, Power, Area线长Wirelength最小化所有网络连接的总长度。线长越短通常意味着电阻和电容越小延迟越低功耗也越小。这是最基础的优化目标。时序Timing满足建立时间Setup Time和保持时间Hold Time的要求。工具会读取综合后的时序约束文件SDC在布局时优先优化关键路径Critical Path上的单元把它们摆得近一些。拥塞Congestion避免在局部区域产生过多的布线需求导致后期无法布通。工具会根据初步的布线估算生成拥塞热图。布局算法会尝试把单元从红色高拥塞区域“推开”到绿色低拥塞区域。这个过程绝不是简单的“摆整齐”。现代布局工具如Cadence Innovus的“GigaPlace”引擎使用非常复杂的数学算法例如基于梯度下降的算法、解析式布局方法等在数小时甚至数天内处理数百万到数十亿个单元的位置问题。它需要在相互冲突的目标之间找到最佳平衡点。例如为了满足一个关键路径的时序可能不得不把一堆单元挤在一个小区域但这会导致局部拥塞。工具就必须做出权衡。2.4 时钟树综合Clock Tree Synthesis, CTS的早期规划虽然完整的时钟树综合通常在布局后进行但在Chip Planning阶段就必须提前规划。时钟网络是芯片中负载最大、要求最严格的网络必须保证时钟信号到达所有时序单元寄存器的时间差时钟偏斜Skew尽可能小。在规划阶段需要考虑时钟根节点Clock Root的位置时钟发生器如PLL的输出点应该放在一个相对中心的位置以减少到各个分支的平均距离。时钟域Clock Domain的物理分区如果设计中有多个时钟域尽量让使用同一时钟的模块在物理上聚集。不同时钟域之间则需要规划清晰的隔离区域并插入适当的同步电路如同步器FIFO这些同步器的位置也需要在Floorplan中考虑。阻塞区域Blockage为后续CTS预留布线资源。可以在某些区域提前放置“布线阻挡”Route Blockage禁止标准单元布局或普通信号线布线确保时钟树能拥有干净、低阻的布线通道。3. 规划阶段的关键挑战与权衡艺术Chip Planning不是一个有唯一正确答案的数学题而是一个充满权衡Trade-off的工程艺术。以下几个矛盾是规划师需要时刻面对的。3.1 面积Area vs. 性能Performance这是最经典的矛盾。为了追求高性能高频你需要更宽松的布局让单元间有足够空间布线使用更宽线宽的金属层来降低电阻电容RC延迟。更复杂的时钟树插入更多的缓冲器Buffer来驱动负载减少偏斜但这会增加面积和功耗。更多的流水线级数这需要插入更多寄存器增加面积。反之为了最小化芯片面积以降低成本你不得不接受更紧凑的布局、更长的互连线和更紧张的时序裕量。规划师需要在项目初期根据芯片的市场定位是追求极限性能的服务器CPU还是成本敏感的消费电子MCU确定一个合理的面积与性能的平衡点。3.2 布线拥塞Congestion的预测与缓解布线拥塞是导致设计无法最终完成Not Routable的罪魁祸首。在规划阶段虽然还没有进行详细布线但必须能够预测拥塞。拥塞的产生原因主要有宏单元摆放不当形成狭窄的通道或者把大量需要互连的单元隔开了。高扇出网络像复位Reset、时钟使能Clock Enable这样的信号会连接到成千上万个单元如果这些单元分布很散就会在局部产生大量的布线需求。电源网络占用过多资源过于密集的电源带会占用大量的布线轨道Routing Track挤占信号线的空间。在规划阶段缓解拥塞的策略包括分析拥塞热图在完成初步布局后立即让工具生成基于全局布线估算的拥塞热图。红色/黄色区域就是危险区。调整宏单元位置尝试旋转宏单元或者稍微移动它们打开布线通道。使用布局约束对高扇出网络的驱动单元如复位缓冲器进行位置约束将其放置在更中心的位置。调整电源网络在非关键区域可以适当减少电源带的密度释放布线资源。增量式布局Incremental Placement手动或利用工具将拥塞区域的少量单元移动到邻近的低拥塞区域。3.3 功耗完整性与信号完整性的早期考量功耗完整性Power Integrity主要指IR Drop。如前所述在规划电源网络时就要基于功耗预估模型进行分析。如果早期规划不合理后期发现核心区域电压跌落严重可能需要进行伤筋动骨的修改甚至重新规划。信号完整性Signal Integrity在深亚微米工艺下尤为突出主要问题是串扰Crosstalk和电磁干扰。在规划阶段虽然无法进行详细分析但可以采取一些预防措施对噪声敏感的模拟模块如PLL、ADC进行物理隔离在其周围设置保护环Guard Ring或保持距离Keep-Out Zone。高速总线如DDR接口、SerDes通道的走线路径应提前规划尽量走直线、短路径并避免与强开关活动的数字信号线长距离平行走线。这需要在Floorplan中为这些总线预留出“专用通道”。提前考虑屏蔽Shielding对于特别关键的信号线计划在后期布线时在其两侧布上地线VSS进行屏蔽这需要在规划时预留出额外的布线轨道。4. 实战流程与EDA工具协同在实际项目流程中Chip Planning是一个迭代的过程通常与逻辑综合Synthesis有交互。一个典型的流程如下输入准备网表Netlist由逻辑综合工具如Synopsys Design Compiler生成包含所有单元及其连接关系。时序约束SDC定义时钟、输入输出延迟、时序例外等。物理库Physical Library包含标准单元、宏单元的所有物理信息如尺寸、引脚位置、金属层定义等。技术文件Technology File定义工艺规则如金属层厚度、间距、通孔规则等。初始布图与电源规划在Cadence Innovus或Synopsys ICC2中创建芯片轮廓定义I/O Pad位置。根据模块层次和连接性手动或借助自动规划功能进行宏单元的初步摆放。设计并创建电源环、电源带网络。运行一次快速的“打平布局”Flat Placement和全局布线估算查看最初的拥塞和时序情况。此时的结果可能很糟糕但提供了调整方向。迭代优化调整Floorplan根据拥塞热图、时序报告和模块连接图反复调整宏单元位置、芯片尺寸甚至模块的层次划分。优化电源网络根据初步的功耗分析可能基于向量或统计模型调整电源带的宽度和间距。添加布局约束对关键路径、高扇出网络、噪声敏感模块施加位置约束、区域约束Region Constraint或隔离约束。每做一次重大调整都重新运行一次布局和全局布线估算评估效果。这个循环可能要进行几十次。交付与交接当拥塞处于可控范围比如没有超过110%的红色区域时序没有巨大的违例Violation并且电源网络预估满足要求时可以认为Chip Planning阶段基本完成。此时的交付物是一个相对稳定的“DEF”文件设计交换格式它包含了芯片尺寸、宏单元位置、电源网络、标准单元的全局布局位置等信息。这个DEF文件将作为下一个阶段——详细布局Detail Placement和时钟树综合CTS——的输入起点。工具使用心得不要完全依赖工具的自动功能。自动宏单元摆放和布局是一个很好的起点但它无法理解设计的架构意图和数据流。一个有经验的规划师一定会花大量时间进行交互式的手动调整和可视化分析。多查看工具的图形界面善于使用连接性飞线Flylines、拥塞热图、时序路径高亮等功能将抽象的数据转化为直观的空间关系认知是做好规划的关键。5. 从学习到实践如何构建Chip Planning的思维对于学习者尤其是看过一些简单EDA教程比如学习在立创EDA上画PCB的朋友要进入VLSI物理设计这个领域需要完成一次思维的跃迁。首先建立层次化和抽象化的思维。PCB设计更多是平面上的器件互连。而芯片设计是真正的三维立体世界多层金属并且有严格的层级关系晶体管 - 标准单元 - 宏单元/模块 - 芯片顶层。Chip Planning就是在顶层模块进行空间规划和资源分配。其次理解约束的多样性和冲突性。在芯片里你同时被时序、功耗、面积、可制造性、信号完整性等多种约束捆绑。任何一个决策都可能是“按下葫芦浮起瓢”。学习Chip Planning就是学习在这种多目标优化中寻找可行解和最优解的过程。最后重视数据驱动的分析。不要凭感觉。任何调整无论是移动一个宏单元还是改变电源带宽度都必须有后续的分析报告时序、拥塞、功耗作为依据。养成“修改 - 分析 - 评估”的迭代习惯。对于想深入实践的人光看理论是远远不够的。如果条件允许可以尝试使用开源工具链如OpenROAD项目它提供了从RTL到GDSII的完整开源流程。虽然不如商业工具强大但足以让你理解每个步骤的输入输出和基本概念。参与开源硬件项目比如基于RISC-V的开源芯片项目。你可以下载他们的设计数据尝试在商业EDA工具的学术版本如Cadence提供的大学计划版本中加载并重复其中的Chip Planning步骤观察结果。深入研究一个工艺库找一个工艺库文件通常以.lef和.lib格式存在仔细阅读其中关于单元尺寸、金属层定义、功耗模型的部分。理解这些基础数据是如何影响规划决策的。Chip Planning是物理设计的基石也是最能体现工程师全局观和架构思维的地方。它没有太多炫酷的自动化更多的是基于经验的判断、反复的尝试和严谨的分析。把这个环节做扎实了后面的路才会走得顺畅。每次当你为一个棘手的时序违例或拥塞问题焦头烂额时回头检查一下最初的规划往往能找到问题的根源。
返回列表