“设计师标记关键路径组→布局器优先放置相关单元,缩短距离→布线器为这些路径分配最短走线,允许绕过标准单元、允许牺牲周边线长→布线完成后自动检查延迟,不达标则局部重布。”
他写完,盯着看了两秒,然后点了点头。
“这个可以做。”
诸葛彪把烟叼在嘴角,含混地说:“还有串扰的问题。cad版没自动加屏蔽地线,相邻线间距全按同一规则。您那个布线算法里,串扰约束只有一条‘间距不小于最小间距’。但敏感信号和普通信号,不能一个待遇。”
汪涵教授又写了一行伪代码:
“敏感信号标记→布线时自动增加间距、两侧插入地线、禁止临近大电流开关信号。”
他写到一半,停下来,想了想,又加了一行:
“布线完成后自动运行串扰分析,高风险区域局部重布。”
他把这行字又看了一遍,然后抬起头,看着吕辰。
“你说的敏感信号,具体指哪些?”
吕辰走到白板前,拿起红笔,写了几行字。
“时钟信号。时钟沿的抖动和毛刺直接影响全系统时序,必须隔离。”
“复位信号。复位线上的毛刺可能导致系统误复位,整机死机。”
“模拟信号。adc、dac的输入输出,对噪声极其敏感。”
“高并行总线。数据总线的相邻线串扰会导致数据错误。”
他放下笔,转过身。
“这四类信号,只要设计师在原理图上做了标记,布线器就应该特殊对待。”
汪涵教授把这四类信号抄在黑皮本子上,钢笔沙沙地响。
这时,钱兰走到白板前面,拿起蓝笔,在上面写了几个字:电源网格。
“手工版IRdrop标的问题,cad版虽然没有手工版那么严重,但汪教授,您的电源网格综合,是基于平均电流估算的。”
她在白板上画了一个简图。
“每个门区域的电流消耗不是恒定的。输出缓冲器翻转的时候,电流尖峰可能达到平均值的十倍。您用平均值算出来的电源线宽度,在峰值电流的时候不够。”
她转过身,看着汪涵教授。
“要基于瞬态电流波形来设计电源网格。门级仿真的时候,记录每个门区域的电流随时间变化的波形,找出峰值。然后根据峰值电流来算电源线宽度。”
汪涵教授的眉头皱了一下:“门级仿真的数据量很大。16位加法器同时翻转,几千个门在同一时刻产生电流尖峰。要把所有这些数据都存下来,存储柜不够用。”
钱兰想了想:“不需要存全部波形。只存每个门区域的峰值电流,以及峰值出现的时间窗口。布线器根据这个来加宽电源线、插入去耦电容。”
汪涵教授在黑皮本子上记了一笔,又抬起头:“去耦电容的插入,你刚才也提到了。这个可以自动化。在高电流跳变区域附近,自动添加片上去耦电容。电容的值根据电流尖峰的幅度和持续时间来算。”
他在本子上写了几行公式,然后合上本子。
“电源网格的问题,不只是自动加宽走线。还要把分析结果可视化。设计师不能只看一串数字,他要能看见哪儿是灾区。”
他顿了顿:“升级2。o的时候,我尝试写过热力图的代码,但当时觉得算得太慢,跑一颗芯片要三四个小时,就没有加上去。”
他沉默了两秒:“现在看,慢也得跑。设计师看见热力图,就知道这里要加宽电源线。”