针对标准单元和门阵列两种半定制电路,第一章已对半定制电路作了基本介绍,以下仅对布局布线算法作简单介绍。布局算法是放置版图模块的工作,考虑到以后的布线通常是把连接紧密的模块依次放置,目的是使整个版图的面积和电路的工作用期最小,这就是所谓基于Timing的布局。至今流行两种自动布局算法,即Min_Cut算法和热退火算法。
Min_Cut算法用于放置芯片顶级block或块块的布局算法。该算法首先将芯片的全部版图模块分成面积大致相等的两个子块组,这两个子块组之间的互连线要求达到最小,然后将两组子块放置在版图的上部和下部,几乎是一半对一半。接着分别对上部和下部的区域重复地进行操作,将概念上的版图分成,直到单元为止,这种算法可以快速地获得一种好的布局。
另一种流行的布局算法是采用移动模块的热退火算法。开始时,版图模块可以随机地放置,版图布局的好坏用所谓的温度来衡量,温度是由布线面积和Timing指标来评定。每当移动版图模块,如果布线和时序有所改善,就认为版图的温度下降了,变冷了。开始布局时需测定一次温度,以后每移动一次版图模块,需要把移动相关部分重新测量一次,如果移动的结果是使温度升高,那么这次移动是不成功的,可以退回到原来的位置去。有时为了使整体布局合理,也应避免局部温度太低的情况,遇到这种情况也可以进行熔融使某些局部模块重新热起来,然后再根据退火温度重新冷却。这种热退火布局可以使用Timber wolf程序,这是由美国加州大学Berkeley分校和Yale大学联合开发的。
布线算法根据连接网表对布局后的模块进行连线。布线器的类型分成通道布线、开关箱布线和迷宫布线等几种。通道布线适用于通道宽度相同的标准通道,开关箱布线器能对复杂的崎岖通道布线,也就是它能适用于通道宽度不等的情况;迷宫布线器能对任何复杂结构的布线。想了解更多布线算法的详情,可以参考这些资源:电路布线Onlgn的算法、电路布线问题的算法和电路布线算法动态规划。
对于模拟退火算法,相关资源也很多,比如布局问题的模拟退火算法、PSO退火算法、退火优化算法以及MATLAB退火算法。这些资源可以帮助你更深入地了解模拟退火算法的应用和实现。
那么,你是否觉得这些布局布线算法足够神奇呢?会不会有一种拨云见日的感觉?快去探究这些神奇的算法吧,发现更多有趣的细节!
暂无评论