在大规模IC设计中实现时序收敛是一个最具挑战性的问题。本文作者结合实际的设计阐述了时序收敛设计的一些新思路,包括在设计早期考虑时序收敛问题、增加设计裕量、采用合适大小的块等。 在设计数百万门芯片时,为了便于项目管理和进度安排通常采取分层设计。为保证时序收敛,需要进行早期的时序预算、简化块布线和时序模型的提取以及设定设计裕量。本文将详细介绍Morphics Technology公司用来构建500万到1,500万门无线信号处理芯片的方法,采用该方法能满足进度、功能和时序的目标要求。数百万门级芯片物理实现的挑战开始于初期的底层规划和划分,并贯穿于整个设计流程,必须通过适当的提取及估值来实现设计目标。为获得时序收敛,处理过程的每一步都必须包括充分的设计裕量。设计时必须注意项目向前推进,避免在设计尚未成熟阶段浪费大量的时间进行优化。 在设计完成将出带之前,几个部分必须同时实现收敛,一个有效的思想是对期望达到的目标增加更多的设计裕量。真正的分层设计流程支持块复制,被复制的块将其内部的逻辑、时序、布线以及端口位置模型等特征的单次提取共享出来。特别是需要将物理布线、寄生提取和静态时序分析步骤分离,这样,顶层运行只使用例块的提取而不是每块内的整个晶体管、门或者多边形数据库。 设计的划分是将其分成容易管理的几个部分,这样设计团队内部可以并行工作,提高设计效率。在分层设计中,一个最佳的目标是上层块和下层块之间的设计工作量相同,实现这个目标的方法是使块尺寸尽量小,这样各块之间布线和时序收敛的工作量相同。 层次结构的一个很好的衡量尺度是“分层复用因子”,它是块实例的数目与块类型数目的比值。另外一个选择划分大小的原则是保证单个部分的运行时间不超过20个小时。通过块的划分使每部分运行时间保持在一天或更短的时间,这样可以缩短每个迭代的周期时间,包括对设计结果的分析时间。 利用现在的工具,我们发现:尽量使每个块大约有15万个可放置的实例,或大约40万个门。即使工具能支持几倍于该尺寸的块,100万门的块完成所有运行步骤的时间太长,并且可能会由于缺乏实际或虚拟内存而全部失败,甚至在具有数千兆字节内存的机器上运行也可能产生相同的问题。 对时序问题作出判断越早越好,利用线性“信号速度”(signal velocity)进行度量就是一个有效的方法,这样就能在实际放置再生器之前完成顶层时序设计。 即使在完成划分和底层规划之后,设计工程师常常陷入一个误区,即选择一种在上、下层之间没有隔离的分析方法。 对目前的0.18微米或更小尺寸工艺来说,最小间距线的高度比其宽度要大,这就意味着相邻信号的交叉耦合电容常常大于布线总电容的50%。不能忽视并发开关效应,但是要精确确定在整个过程中什么时候产生耦合几乎不可能。因此,可靠而成功的时序收敛需要保守地选择延时的最小值和最大值,而不可能找到某个准确值。 通常较好的方法是将交叉耦合电容映射为有限的“有效”电容。图1显示了入侵开关信号与受影响的被分析信号方向相反或者相同的可能性。快速反向入侵信号的有效电容很可能是实际标称交叉耦合电容的三倍,甚至更大。设定有效交叉耦合电容为标称电容的两倍是比较合理的近似处理,这种方法仍然比只忽略开关信号的电容累加效应更保守。 同样,虽然快速同向入侵信号会使慢的受损信号发生快的变化,从而使实际有效耦合电容为负,但设定有效电容最小值为零仍然合理。注意,当完整的附加时序检查既使用电容最大值也使用最小值时,最小值太小就过于保守了。 即使在选择保守的交叉耦合处理之后,也有必要增加额外的裕量以解决许多其它影响因素,这些影响因素包括工艺扩展、介电材料厚度或电容率的变化、芯片电源电压下降以及晶体管特性描述错误等。我们可以凭借每个网络的电阻和电容的最小值和最大值计算每个网络延时的最小值和最大值,这种延时可以在时序分析中用.sdf文件后标注。在一种基于边缘触发寄存器的设计中,在确定终止于接收寄存器的竞争结果时要考虑每个设置-保持检查(Set-Hold check)。双方应被看作是互补的,如图2 所示,每一个设置检查利用从发送寄存器到组合逻辑、再到接收寄存器之间的最大延时,相同路径的最小延时用于保持检查。 此外,用于这些检查的路径需要包括返回到时钟分布树(clock-distribution tree)各部分之间的再汇聚点的时钟树,这里的时钟分布树负责发送寄存器和接收寄存器部分的时钟。因此,平常的设置-保持检查也验证时钟分布树的质量,强调局部偏移而不是全局偏移。它们考虑利用“有用偏移”的可能性,并忽略对设置或保持检查没有影响的不良偏移。 这种严密而可靠的时钟树分析方法可以采用一种低功率的时钟分配方案,该方案使用具有有限平均扇出的高时钟树,而不是使用在分配内核时钟时要消耗芯片三分之一开关电容(switching capacitance)的过度“短、大”方案。 保持检查与所增加的裕量存在冲突,这时可以插入延时元件。有时,由于延时计算中最小值和最大值的保守处理,用正确的方法添加延时元件来解决这种冲突而不过分影响路径设置是一个很棘手的任务。一个有用的概念是编写脚本来搜索由每个接收寄存器的输入端扇入电路所选择的网络,接收寄存器的输入端对具有最大设置裕量(在最大延时计算条件下)上传点产生一个保持冲突(使用最小延时计算),并在那个网络中插入延时缓冲器。 如图3所示,通常这意味着保持延时元件必须在既不靠近发送寄存器输出也不靠近接收寄存器输入的一点插入,这也是大多数简化保持算法通常会放置的地方。 在时序收敛的稍后阶段,块级静态时序分析运行的实际结果可用于创建在顶层静态时序分析运行中用作对象的块模型。当然,复制实例只需要块类型的单一时序模型,与块的时序分析选择一致,这一模型通过上层布线的实例特定线,因而并不复杂。 分层目标 在物理实现的最初阶段,最好为内部块时序和顶层时序都制定较高目标。随着设计接近出带,以及高阶时序被实际的源自布线和定时块的时序模型替换,所设置的目标可以轻松满足出带的要求。 这样做的目的是保证时序收敛,提高设计效率,减少修改、重新布线、时序调整的迭代次数。好的目标使每次迭代中涉及的网络数量减少1/4到1/8。即使每次迭代减少量很小,对实现收敛也有很大作用。图4表明了该原则,Y轴是每一个数量的最后目标相关的量度。 =============================
标准 数量 设置检查 时钟频率
保持检查 偏移裕量
天线(antenna)检查 负荷比容限
============================= 在沿着三个轴向上同时实现了有效时序收敛。即使初期基于严格标准能解决一些问题,当邻近线或对象产生一些冲突时,该方法仍然减少了需要进行迭代的项目数量。例如,天线负荷比容限的冲突容易确定,它通过限制金属线面积与这些金属线连接到的多晶硅栅门的面积之间的比值来提高成品率。但是这样会触及布线,甚至可以破坏严格的设置或保持路径。因此,通过同时不断降低所有目标的门槛可以加速收敛。 本文结论 初期加入足够的裕量可使每个块类型实现收敛的迭代设计次数减少。通过采取一种带有对每个设置和保持竞争均进行补码检验的保守设计,已经成功地建立了设计流程。否则,设计团队就将在硅片出来后才能发现耦合或噪音问题。 前面讲到的保守延时计算法可以进一步提高时序收敛的速度。通过选择基于最坏情况下的延时计算值,可以推广为一种典型的设计流程,实际上产生的大部分时序都好于预测的最坏模型,如图5所示。 作者:Ted Willams
硅工程部副总裁
Morphics Technology公司 |