在解决时序收敛问题中,WLM方法建立在后处理时序与综合时序耦合的基础上,对于更小线宽的工艺技术,互连对芯片的延迟特性影响很大,而基于WLM的时序几乎与后处理时序无关,它是一种静态方法,因而不能满足千万门级复杂芯片设计对一次性时序收敛的要求。本文介绍的物理综合工具使用基于布线的水平和垂直方向的电阻及电容参数的模块RC模型,能够对后布线时序进行更精确的预测,从而加快时序收敛。
在0.18微米工艺、工作频率高达300MHz的芯片设计中,基本限制因素使综合与布局布线分离,要通过线载模型(WLM)链接起来。在过去的一年里,传统的配备时序驱动布局布线的综合方法已经被能提供更佳性能和时序可预测性的物理综合方法所取代。但是对高级芯片设计而言,仅靠物理综合也无法提供完整的解决方案。现在的物理综合工具无法一次实现数百万门的设计。因此,必须将设计分割成一些可管理的模块。
尖端ASIC的设计规模通常超过500万门、工作频率大于250 MHz,我们所面临的挑战是使其性能跟上CPU频率的持续提高,同时保持成本降低并适应开发进度的要求。我们的应对方法是一种称为“结构定制”的混合技术,它由安捷伦公司提供。
一般情况下,一个芯片的设计始于它的宏功能划分,每个宏功能由一名独立的设计人员创建。然后,下一层的设计人员将这些模块(宏功能)嵌入一个新的设计中,这一进程继续进行直至芯片设计完成。现在,一个典型的芯片大致有七层,由一百个左右单独的设计构成,所有这些都由有限的设计人员管理。
以前,即使不是全部的模块,也有许多模块是定制的。现在,安捷伦公司在许多芯片的选定模块中使用数据路径和定制模拟设计。不管用何种方法,为了既对客户有益,又使物理设计人员效率最高,我们在大部分模块中尽量使用基于RTL的标准单元。我们的“分而治之”(divide-and-conquer)方法的特点是将一个设计拆分,以使任何宏功能都能够迅速地被修改和重建。由于各个模块是独立的,并且只需修改受影响的模块,当工程设计变更时,我们可以快速重新设计芯片。完成一个修改过程大多是对带有修改模块的顶层重新布线。
迅速完成模块转换的关键是实现所有层的一次性(One-Pass)时序收敛。这需要了解时序变化的根源并对其进行补偿。一种很好的、能减少时序差别的方法是从称为WLM的静态线载模型转向在物理综合中使用的基于位置的RC评估。
物理综合边界
过去几年,ASIC设计人员已经意识到传统的综合技术无法满足要求。从0.35微米开始,由于线电容使驱动器速度变慢而引起的线负载延迟成为整个延迟的重要组成部分。对0.25微米工艺而言,传播延时导致的线延迟的影响也十分重要。对于0.18微米工艺,在关键路径上线延迟常常超过门延迟。
WLM一直是传统的将后处理时序与综合时序耦合的静态方法。对于更小线宽的工艺技术,互连对整个延迟的影响很大,而基于WLM的时序几乎与后处理时序无关。
综合工具制造商已经注意到了线寄生参数问题,并认识到问题相当复杂。线可以通过长度、宽度、邻线、门负载以及扇出等几个参量描述。门负载和扇出两个参数直接由综合控制。WLM假定扇出可以预测线的寄生参数。因此,扇出数就是综合工具试图解决的非常复杂的问题。
其他的物理综合工具,如Synopsys的Physical Compiler,能够利用布线知识进行更精确的线延迟估计。这与WLM不同,WLM是基于具有通用扇出的静态分布线,Physical Compiler则一条线一条线地估计线电阻和电容。
为使物理综合工具能够快速工作,它利用Steiner或半周长(half-perimeter)估算方法,并根据连接到它的引脚的位置来计算每个网络的线长。现在,Physical Compiler使用基于线的水平和垂直方向的电阻及电容参数的模块RC模型。这些基于位置的估计方法能够对后布线时序进行更精确的预测。
模块规模的影响
排除曲折布线情况,一个模块中的最长布线可能属于角到角、水平穿过宽的模块或垂直穿过高的模块的布线。对任何工艺,大模块通常有较长的布线。虽然一个大模块中也有些短线,但通常是一些长线引起线电容和电阻增大并增加线延迟时间,因此,大模块通常有大延迟。
此外,并不是所有的布线都是直接连接。通常为了避免某一处的拥塞而需要曲折布线,此时,WLM甚至物理综合评估都不再精确。正如模块规模增大会增加WLM估计的变化一样,大模块更易受曲折布线引起的误差影响。虽然物理综合大大增加了时序预测的准确性,它仍然对模块规模的增大非常敏感。
图1显示了在0.18微米工艺中时序变化与模块规模的关系。每条曲线显示了综合预测结果与实际提取时序之间的误差。第一条曲线突出显示的是基于WLM预测的误差。第二条曲线说明,采用基于物理综合的时序预测,误差减小。如图1所示,当模块数达到7.5万门时,基于WLM的估计是有效的。同样,通过使用保守的互连估计,在20万门时利用物理综合也可能获得一次性时序收敛。
为了在分层设计中获得最大收益,要尽量确定最佳的模块规模。我们的主要目的是选定一种使每个模块都能够实现一次性时序收敛的模块数。另外一个目标是尽量设计大规模模块,以便使标准单元模块数最少(典型的目标是50个模块)。随着芯片上门数的增长,提高生产率的关键是在大模块上实现一次性时序收敛,而物理综合是实现高生产率目标的最新工具。
分层结构的优点
若模块的平均规模是15万门,一千万门的设计需要67个模块。对这种规模的模块,Physical Compiler能够出色地实现One-Pass时序收敛。这比传统的基于WLM的布局布线技术改善了许多,它完成一次性时序收敛需要174个模块。
我们确定了标准单元模块之后,就可以开始早期的底层规划工作,它可以在模块完成前对芯片的物理体系结构进行折衷开发。早期的底层规划者只需要知道模块规模和形状估计以及连接他们的顶层网表。
这种底层规划有一些优点。最重要的一点是,设计早期就能够识别影响时序的任何结构上的缺陷。一旦意识到了时序问题,我们就可以决定是否在RTL级或物理级查找问题出在何处?另外一个重要的优点是它能产生主要的时序约束条件,用这些约束条件能够预算模块综合或物理综合甚至同时预算两种综合方法。
当底层规划开始固化时,设计要从自顶向下的“分割”阶段转为自底向上的“合成”阶段。在这一点上,对模块规模、形状、时序以及端口位置都有明确的规范。这些规范允许根据需要将芯片设计任务细分。通常情况下,每位设计人员负责几个模块。由于设计已被层次分割,且可以相对独立处理,为了加速设计在短期内完成,通常投入许多设计人员。理论上讲,为了加速完成一个一千万门的设计,我们完全可以投入相对独立的67位设计人员来处理67个标准单元模块。
采用分层设计这种“分而治之”的方法,设计的不同部分能够并行完成。芯片上的简单模块在一层实现,并仅由标准单元组成。更复杂的模块分为多个层。复杂模块的子模块可以个别执行,再自底向上重新组合。
在芯片的顶层,简单和复杂的模块组合在一起。无论一个模块包含多少层,它都被当成顶层的一个硬宏。同样,硬IP宏的处理也像芯片上的任何一个其它的模块。因此,我们的分层设计结构反映了SoC的设计方法,这已获得IC设计领域许多人的支持。
底层规划
底层规划是一个迭代过程,在RTL完成之前启动,一直到分层模块的最后综合开始时才结束。虽然它是一个连续的过程,仍可以将其概略地分成两个阶段:初期和延展阶段(malleable phase)。
初期阶段包括物理设计方法的快速选择;它也强调逻辑值设计中可能的时序问题,并且包括许多快速的迭代。每次迭代耗时不足一小时,一天内我们要实施几个测试。若用包含大约5万个网络的顶层网表并使用延迟和拥塞的简化模型,这是有可能的,拥塞和时序的预估结果与实际相差小于±15%。
随着初期的底层规划的变化,模块时序预算也会变化。模块规模是模块时间预算的函数。由于模块随着预算变化而缩小或扩大,下一个底层规划要适应新模块的规模大小。几次迭代后,此过程趋于收敛,模块大小也趋于稳定。
随着初期底层规划的精确,其路径对时序提出了挑战。一般情况下适用于2-8法则:百分之二十的路径显示了百分之八十的问题,因此,越早找出这百分之二十的路径,我们就会有越多的时间来处理它们。这些路径中通常有少数几个顽固分子,要在开发RTL代码时就找到它们,从而更好地调整RTL代码并可以避免设计后期费时的定制解决方案。剩余的路径利用底层规划时序来查找问题出在何处。
早期的底层规划与延展阶段之间没有明确的分界线。(“延展”一方面表示完整性的程度,另一方面表示可调节度)。延展底层规划已开始稳定,但是并未完全固定,延展阶段的主要特性是底层规划的精确程度增加了。我们对模块进行移动和调整,把它们放在一起或根据需要分开,并保持它们的相对位置基本不变。同样,在延展阶段模块规模尽量不变,即使改变也不超过百分之十。
延展底层规划要对初期阶段创建的常规底层规划不断改进。随着模块大小逐渐固定,我们开始从顶层网表的试验布线中获得有意义的拥塞数据。在整个底层规划过程中(初期和延展阶段,周期性地执行试验布线有两个理由:第一,确保改进的底层规划能被布线并且对可能的布线热点给出早期的警告。第二,试验布线数据能提供更精确的时序估计,因为它们包含详细的布线信息。
延展阶段往往已满足布局布线模块的需求,而非简单的矩形估计。这些模块功能作为硬宏能使试验布线正确地反映模块上的确定路线。同样,布局布线模块的时序模型反映的是实际的时序参数提取,而不是基于综合或物理综合执行的预估值。
随着虚拟模块被实际的库交换格式替换,延展底层规划增加了模型时序和拥塞的精确性。有时,还需进行更细致的工作直到时序满足要求并确保能够布线为止。然后,最终的底层规划定型,并成为组装芯片的蓝图。
本文总结
物理设计人员设计芯片需要从早期的底层规划开始。此时 ,从综合执行结果估计模块规模并推测模块中要加入多少逻辑数非常重要。一般说来,客户只给出他们所认为的芯片模块图;从这些图表中,要确定出主要的总线和关键的时序信号。时钟和电源也在这一阶段确定。然后,将所有这些估计值放入将要进行底层规划的设计人员所使用的规范内。
早期的估计非常重要,因为要使芯片设计成功,最佳方式是在初期捕捉问题。如果还没有写RTL代码或是RTL代码仍未完成,那就还有很多机会改变芯片的规范和协议,以产生一种更容易设计的芯片。
底层规划者将生成时序估计,用于One-Pass综合。RTL代码产生后,构造模块并反复重建。最初估计的模块不断减少或增加(通常是增加),底层规划都要相应地更新。底层规划的更新导致模块间延迟估计的更新,该值又在模块约束条件的预算中体现。
各模块设计完成后,它们被连接到一起。此时,需要测试两个因素:底层规划对布线拥塞和时序的预测是否精确,以及模块是否满足布线拥塞和时序的要求?幸运的是,这两点可以提前考虑。第一,模块完成后要测试其是否与要求一致。第二,随着模块的更新,要进行几次芯片的试验布线(对于未完成的模块使用保守的密集LEF模型)。这些试验布线提供两次检查以验证该底层规划的正确性。
对于当前的物理综合工具来说,虽然用分层方法处理一个一千万门的平面高速设计不太可能,但是,利用早期的底层规划和合适的最终组装方案,通过在大模块上选择一次性时序收敛,物理综合的效率大大提高了。
作者:Dave Balhiser
硬件设计工程师
balhiser@
Frank BaszleR
硬件工程师
baszler@