层次化设计 Hierarchical Design
层次化设计 Hierarchical Design
概念解析
定义与起源
术语定义:层次化设计(Hierarchical Design)是将大芯片分解为多个子模块(block/partition)——每个子模块独立设计、独立验证、独立物理实现——最后在顶层组装(assembly)。层次化设计的对立面是扁平设计(flat design)——整个芯片作为一个整体跑综合和PnR。
在现代SoC中,层次化设计不是"选择"——是必须。一颗400mm²的芯片有数亿标准单元——扁平PnR工具根本处理不了(内存溢出或runtime不可接受)。层次化设计将问题分解为可管理的子问题——代价是顶层集成(top-level integration)的额外工作量。
核心要义
第一,层次化设计=分而治之。 每个子模块独立:综合、PD、STA、DRC——在自己的context里优化到signoff质量。顶层:只做子模块的placement、clock tree的顶层连接、子模块间的布线。子模块内部对顶层是"黑盒"——只暴露接口时序模型(ILM)。
第二,层次化设计的核心挑战=接口时序对齐。 每个子模块在自己的context里时序收敛了——但放到顶层时——相邻子模块之间的路径延迟取决于顶层布线——这是子模块context中无法准确预估的。ILM(Interface Logic Model)是解决这个问题的关键——它把子模块的接口时序抽象为"从输入到第一个寄存器的延迟"和"从最后一个寄存器到输出的延迟"。
第三,层次化设计需要顶层约束(budgeting)。 在子模块设计开始前——顶层设计师需要"分配时序预算":子模块A内部的路径最多用时钟周期的40%——留给跨模块路径60%。这个budget是预估的——在迭代中不断调整。budget太紧→子模块过度设计。太松→顶层不收敛。
实践应用
* Partition的划分是架构决策:按功能划分(CPU/GPU/DDR各自一个partition)——接口最少、内聚性最高。 * ILM是层次化STA的关键:用ILM做顶层STA——不需要读入子模块的完整网表——速度快100倍。 * 层次化DFT配合层次化设计:每个子模块独立做DFT插入和ATPG——顶层只做互连测试。
实战案例
某AI芯片的层次化设计:400mm²→16个core partition+1个top。每个core独立做PnR(并行16个工程师)。顶层assembly只需1周。扁平设计需要1个工程师跑6个月(且工具跑不动)。
ILM精度问题:某设计的ILM模型过于简化——顶层STA的误差达到15%——导致顶层signoff和block级signoff不一致。增强ILM精度(加更多timing arc)后误差降到3%。
Budget分配的艺术:某芯片初始budget给blocks 70%时钟周期——顶层跨模块只有30%。顶层signoff fail——大量跨模块路径violation。重新分配:blocks 55%——top 45%——顶层pass。
常见误区
误区一:层次化设计=扁平设计拆开。 层次化需要额外的顶层集成工作——不是免费午餐。对于<100mm²的芯片——扁平设计可能更简单。
误区二:ILM永远够精确。 ILM是子模块时序的"摘要"——必然丢失一些信息。对于关键跨模块路径——可能需要抽取子模块的部分网表做精确STA。
误区三:Partition可以随便划。 Partition划分要在项目开始时就确定——后期改partition=重新做所有子模块的物理设计。