己对半定制电路作了基-nginx url自动加斜杠及301重定向的问题
针对标准单元和门阵列两种半定制电路,第一章已对半定制电路作了基本介绍,以下仅对布局布线算法作简单介绍。
1、布局算法
布局是放置版图模块的工作,考虑到以后的布线通常是把连接紧密的模块依次放置。目的是使整个版图的面积和电路的工作周期最小,这就是所谓基于Timing的布局。至今流行两种自动布局算法,即Min_Cut算法和“热退火”算法。
Min_Cut算法是用于放置芯片顶级block或模块的布局算法。该算法首先将芯片的全部版图模块分成面积大致相等的两个子块组,这两个子块组之间的互连线要求达到最小,然后将两组子块放置在版图的上部和下部,几乎是一半对一半。接着分别对上部和下部的区域重复进行此操作,将概念上的版图分成1/4、1/8,直到单元为止,这种算法可以快速地获得一种好的布局。想了解更多关于Min_Cut算法的信息,可以参考电路布线问题的算法。
另一种流行的布局算法是采用移动模块的“热退火”算法。开始时,版图模块可以随机地放置,版图布局的好坏用所谓的“温度”来衡量, “温度”是由布线面积和Timing指标来评定。每当移动版图模块,如布线和时序有所改善,就认为版图的“温度”下降了,变“冷”了。开始布局时需测定一次“温度”,以后每移动一次版图模块,需要把移动相关部分重新测量一次,如果移动的结果是使“温度”升高,那么这次移动是不成功的,可以退回到原来的位置去。有时为了使整体布局合理,也应避免局部“温度”太低的情况,遇到这种情况也可以进行“熔融”,使某些局部模块重新“热”起来,然后再根据退火温度重新冷却。这种“热退火”布局可以使用Timberwolf程序,这是由美国加州大学Berkeley分校和Yale大学联合开发的。更详细的“热退火”算法的实现,可以参考模拟退火算法讲义现代算法。
2、布线算法
布线是根据连接网表对布局后的模块进行连线,布线器的类型分成通道布线、开关箱布线和迷宫(Maze)布线等几种。通道布线适用于通道宽度相同的标准通道,开关箱布线器能对复杂的崎岖通道布线,也就是它能适用于通道宽度不等的情况;迷宫布线器能对任何复杂结构的布线问题提供解决方案。布线算法的具体实现与优化细节可以参考电路布线算法动态规划。
这些布局和布线算法让我们得以构建高效而稳定的电路板,实现从概念到实物的飞跃!更多相关资料和算法实现,可以点击以下链接深入了解:模拟退火算法和遗传算法、退火算法代码。谁能想到,复杂的电路布局和布线竟然隐藏着这么多神奇而有趣的算法呢?