A题做完了。
——————————————————————————————
背景:
电路设计与实现需要借助专用计算机软件才能完成,该类软件统称为电子设计自动化工具。
电路设计的一个重要阶段称为“物理设计”,先将器件摆放在合适的位置,然后用金属线连接器件实现连接关系。
其中,后者称为“布线”,布线的区域由nxm个方格组成,金属线沿着直线或直角(方格)放置。
由于金属线引入的寄生电阻会影响电路性能,所以需要最小化布线长度。
本题重点考虑 “布线”问题中的一个特例:“通道布线”。
“通道”是指一个横向的布线区域,此区域的顶部和底部分布着需要连接的方格,需用金属线将相应的引脚连通起来。
问题 1:采用一层金属布线,那么已经布线的方格被锁定,不允许其它线路穿过,否则会形成短路。请针对一层金属的“通道布线”问题完成建模和求解,回答“在何种情况下,一层金属通道布线问题无解?”
思路:显然一层布线的情况下,如果将需要相互连接的引脚使用相同标号,而后在第1行和第n行按照标号顺序进行排序,如上下引脚顺序不同则无解。需要用数学模型的方式将其描述出来。
问题 2:集成电路会采用多个金属层,不同的金属层处在不同的高度,相邻层之间需要用通孔连通。假设一个通孔的电阻等于5个方格的导线,请使用最多3层金属对“通道布线”重新建模和求解。
思路:三层金属通道布线问题,引脚数少的时候可以采用遍历法进行计算,求最优值。计算量会随引脚数和布线区域的增加而呈指数增长,这时就需要采用高级的优化算法。包括退火、蚁群等算法。最优美的方式是lingo求解。
问题 3:更进一步要求任意两个通孔的间距必须大于等于2个格点,请加入此通孔相关的约束后再次求解问题。
思路:任意两个通孔的间距必须大于等于2个格点条件下的三层金属通道布线问题,需要使用数学语言描述出这个条件,之后无论是matlab编程还是lingo编程就是在问题二上增加一个条件。