更新时间:2024-05-21 17:51
布局就是在版图上给单元、宏模块等分配物理位置,使得单元、宏模块等部件互不重叠。该分配需要根据用户给出的特定约束来对代价函数进行优化。布局之后,单元和引脚的确切位置己经确定,所需的互联也已经确定。为布线预留的区域称为布线区。布线必须在布线区内进行,要遵循布线规则,不能引起布线的规则违反。
布局是决定内核单元、宏模块等电路部件位于版图平面的位置的设计步骤。给定一组标准单元和宏模块,以及这些组件的特性宽度、高度等,并给出连接这些单元、宏模块和引脚的一组连线。布线过程用于实现各模块的连接,生成所有连线的几何互联版图,需加以适当的约束信息,如时序等。不同的设计对布线过程可能有不同的目标要求,一般设计都会要求布线总长度最小,时序驱动的设计还要求所有连线都能达到时序约束的目标。
在布局期间,需要优化一个特定的优化目标函数。目标函数通常包括连线长度、拥塞、切割线数目和芯片性能等。既然一些目标,如连线长度,在详细布线之前不能精确得到,这种目标优化需要在布局过程中进行估计。
布局工具主要是使用两类布局算法,启发式布局和增量式迭代布局。启发式布局使用一系列的规则来实现,常用的方法是min-cut算法和特征值算法。在系统划分的时候,布局通常从一个启发式的方案开始,接下来使用增量式算法。
Min-cut布局方法使用一系列的连续划分来实现,首先将布局区域划分为两部分,接着交换两边的逻辑单元以使所切连线数最小,重复上述过程,直到所有的逻辑单元都以完成布局。增量式迭代方法对于一个已存在的布局,通过移动逻辑单元来试图改善布局质量。该算法主要包括两部分,选择规则以决定试图移动哪些逻辑单元评价规则以确定是否移动选择的逻辑单元。
布线所使用的方法可以分为两类,第一种使用两阶段的方案来解决布线问题,首先执行全局布线,产生一个比较松散的布线结果,接着进行详细布线面,把每一连线映射到最终的几何版图。第二种方法称为区域布线,该方法试图一次性解决所有的布线问题,对一条连线布线时需要考虑所有的布线区域,计算量十分庞大。
全局布线并不作实际的连线,只是对互联进行规划,为每个线网寻求一个布线路径,将各个线网的各个部分合理地分配到各个布线通道中去,并明确定义各布线通道区中的布线问题,其目标是为详细布线提供详细的布线指导。全局布线包含三个阶段,区域定义、区域分配和引脚分配。
详细布线包括通道布线、2D-switchbox和3D-switchbox布线。详细布线使用全局布线得到的各连线使用的通道信息,来决定各互连线的确切位置和所在金属层。布线过程中要遵守布线规则,如通孔间距、通孔与金属线的距离等规则。通常在多层工艺中,各金属布线层只在一个方向布线,以减少连线交叉的情况。详细布线完成各逻辑单元的互联之后,主要执行对己完成布线的优化工作,主要包括,最小化互联长度和面积,减少层间的通孔数,最小化关键路径延迟等工作。
详细布线完成之后,可以提取连线确切的几何信息,用于计算连线的延迟模型,不仅要考虑连线的几何形状长、宽、布线层的分配和通孔,还要考虑该连线与其他连线的关系。如果一些联系不能达到它们的时序约束可能需要对该过程进行迭代。