第564章 汪教授的怒火(1/2)
请关闭浏览器的阅读/畅读/小说模式并且关闭广告屏蔽过滤功能,避免出现内容无法显示或者段落错乱。
吕辰、诸葛彪、钱兰三人带着汪涵教授,从第八组的设计室出来,下到一楼,往星河CAD的机房走。
钱兰在前面引着,吕辰、诸葛彪在左右护着,汪涵教授把黑皮本子夹在腋下,背挺得很直。
他一句话没说,但吕辰看得出来,这位老教授心里压着一股火。
双轨对比的结果,手工版的问题固然不少,但CAD版的问题同样扎眼。
那些问题,关键路径绕远、特殊结构不智能、冗余过孔过多、缺乏模拟直觉,每一条都像是打在汪涵教授脸上的巴掌。
星河CAD是他的成果,他带着人,没日没夜的不知熬了多少夜,白了多少头发。
现在被人一条一条地挑出毛病,搁谁心里都不好受。
机房的门口,两个穿着防静电工装的年轻技术员正蹲在地上拆一个纸箱,里面是一台刚送来的磁带机。
看见吕辰等人过来,他们站起来,让开门口。
“汪教授,您请。”钱兰推开门。
机房里的温度比走廊低了好几度,空调吹出来的风带着一股干燥的凉意。
墨绿色的机柜在日光灯下泛着冷光,指示灯一排一排地闪烁着,绿的、黄的、红的,像是某种沉默的语言。
墙上挂着一块大白板,上面用红蓝铅笔写着各台机器的任务分配和当前状态,密密麻麻。
汪涵教授走到管理员终端前,转身看着吕辰。
“调出来吧。让我看看,你们说的那些问题,到底长什么样。”
吕辰在终端前坐下,手指在键盘上敲了几行命令。
屏幕上跳出一个文件列表,他选了一个文件名,“GY_CU_01_CAD_LAYOUT”,回车。
屏幕上开始加载版图数据,绿色的字符在黑色背景上交织,像奔腾的瀑布。
吕辰站起来,把位置让给汪涵教授。
汪涵教授拉过椅子坐下,眯着眼睛看屏幕。
他手指在键盘上飞速敲击,一会看单元库调出某个标准单元,一会又查逻辑、看版图。
屏幕上一会是字符,一会是短线连接的线路,一会是看整体,一会又显示局部。
他看了大约十分钟,停在了16位加法器的进位链位置,输入打印。
绘图机启动,不一会儿,16位加法器就画了出来。
汪教授拿起图,那条线,从芯片的一端绕到另一端,歪歪扭扭,绕过了一大堆标准单元,总长目测接近3毫米。
汪涵教授盯着那条线看了几秒,声音里但带着一种承认事实之后的平静。
“这条线,确实绕远了。”
诸葛彪把烟从耳朵上取下来,在指间转了一圈。
“汪教授,这不是您算法的问题,是咱们当初定的目标就有问题。”
他用手指在图纸上点了一下那条进位链的位置。
“您当初写布线微程序的时候,目标函数是‘总连线长度最短’和‘布线率最高’。这个目标,对普通信号线是对的,但对关键路径,不对。”
他转过身,看着汪涵教授。
“关键路径要的不是总长最短,是单条路径延迟最小。总长最短,可能让一百条普通线各短了0.1毫米,但让一条关键路径长了1毫米。算总账是赚了,但时序收不住了。”
汪涵教授盯着图纸又看了一会儿。
“你说得对。”他点了点头,“目标函数要改。”
钱兰接了一句:“不只要改目标函数。布线的时候,算法不知道哪条线是关键路径,哪条线不是。得在布线之前,先把关键路径标记出来。”
汪涵教授转过头看着她。
钱兰继续说:“设计师在做逻辑设计的时候,心里是有数的。这条加法器进位链,从仿真就能看出来是时序关键。他可以在布局阶段就把这条路径标记为‘关键路径组’,告诉布线器‘这几条线,优先级最高,不惜代价拉直’。”
汪涵教授拿出笔记本,写了一行伪代码,思路清晰地表达了出来:
“设计师标记关键路径组→布局器优先放置相关单元,缩短距离→布线器为这些路径分配最短走线,允许绕过标准单元、允许牺牲周边线长→布线完成后自动检查延迟,不达标则局部重布。”
他写完,盯着看了两秒,然后点了点头。
“这个可以做。”
诸葛彪把烟叼在嘴角,含混地说:“还有串扰的问题。CAD版没自动加屏蔽地线,相邻线间距全按同一规则。您那个布线算法里,串扰约束只有一条‘间距不小于最小间距’。但敏感信号和普通信号,不能一个待遇。”
汪涵教授又写了一行伪代码:
“敏感信号标记→布线时自动增加间距、两侧插入地线、禁止临近大电流开关信号。”
他写到一半,停下来,想了想,又加了一行:
“布线完成后自动运行串扰分析,高风险区域局部重布。”
他把这行字又看了一遍,然后抬起头,看着吕辰。
“你说的敏感信号,具体指哪些?”
吕辰走到白板前,拿起红笔,写了几行字。
“时钟信号。时钟沿的抖动和毛刺直接影响全系统时序,必须隔离。”
“复位信号。复位线上的毛刺可能导致系统误复位,整机死机。”
“模拟信号。ADC、DAC的输入输出,对噪声极其敏感。”
“高速并行总线。数据总线的相邻线串扰会导致数据错误。”
他放下笔,转过身。
“这四类信号,只要设计师在原理图上做了标记,布线器就应该特殊对待。”
汪涵教授把这四类信号抄在黑皮本子上,钢笔沙沙地响。
这时,钱兰走到白板前面,拿起蓝笔,在上面写了几个字:电源网格。
“手工版IR Drop超标的问题,CAD版虽然没有手工版那么严重,但汪教授,您的电源网格综合,是基于平均电流估算的。”
她在白板上画了一个简图。
“每个门区域的电流消耗不是恒定的。输出缓冲器翻转的时候,电流尖峰可能达到平均值的十倍。您用平均值算出来的电源线宽度,在峰值电流的时候不够。”
她转过身,看着汪涵教授。
“要基于瞬态电流波形来设计电源网格。门级仿真的时候,记录每个门区域的电流随时间变化的波形,找出峰值。然后根据峰值电流来算电源线宽度。”
汪涵教授的眉头皱了一下:“门级仿真的数据量很大。16位加法器同时翻转,几千个门在同一时刻产生电流尖峰。要把所有这些数据都存下来,存储柜不够用。”
钱兰想了想:“不需要存全部波形。只存每个门区域的峰值电流,以及峰值出现的时间窗口。布线器根据这个来加宽电源线、插入去耦电容。”
汪涵教授在黑皮本子上记了一笔,又抬起头:“去耦电容的插入,你刚才也提到了。这个可以自动化。在高电流跳变区域附近,自动添加片上去耦电容。电容的值根据电流尖峰的幅度和持续时间来算。”
他在本子上写了几行公式,然后合上本子。
“电源网格的问题,不只是自动加宽走线。还要把分析结果可视化。设计师不能只看一串数字,他要能看见哪儿是灾区。”
他顿了顿:“升级2.0的时候,我尝试写过热力图的代码,但当时觉得算得太慢,跑一颗芯片要三四个小时,就没有加上去。”
他沉默了两秒:“现在看,慢也得跑。设计师看见热力图,就知道这里要加宽电源线。”
吕辰问道:“汪教授,这个热力图,能不能做到交互式的?设计师改了电源网格之后,热力图实时刷新,不用重新跑几个小时?”
汪涵教授想了想:“实时刷新做不到,计算量太大。但可以做到‘增量更新’。设计师只改了一小块区域,系统只重新算那一块,其他区域用缓存数据。这样十几分钟就能出结果。”
他顿了顿,又补了一句:“但这需要改存储结构,原来的数据格式不支持增量更新。”
吕辰点了点头:“那就改。存储结构是底层的事,现在不改,以后改更麻烦。”
汪涵教授看了他一眼,没说话,但在本子上又记了一笔。
诸葛彪把烟点着了,吸了一口,慢慢吐出来。
“汪教授,还有一个事儿,可制造性规则自动检查与修复。手工版有锐角、接触孔尺寸不一致;CAD版虽然避免了基础错误,但对金属密度、拐角圆滑度这些‘软规则’没做优化。”
他走到白板前,拿起粉笔,在上面写了几行字。
“禁止小于135度的锐角拐弯,遇到锐角自动切成两个135度角或者弧线。”
“拐角处自动加粗,线宽增加50%,长度是线宽的两倍。”
在金属密度不均匀的地方自动插入duy tal,让密度均匀化,目标密度50%±10%
接触孔尺寸标准化,同一工艺节点下,所有接触孔直径偏差不超过±0.05微米
他在每一条后面都画了一个问号,看着汪涵教授。
“这些,CAD能不能自动做?”
汪涵教授盯着那几行字看了几秒,然后站起来,走到白板前,拿起粉笔,在诸葛彪的字
“锐角检测。布线完成后自动扫描所有拐角,发现<135°的自动修正。”
“拐角加粗。在金属拐角处自动添加一个补丁图形,增加线宽。这个补丁的形状和尺寸做成参数化单元,DRC自动认。”
“Duy Metal填充。先计算局部金属密度,低于45%的区域自动添加方块形duy,尺寸和间距可配置。填充后重新检查密度,迭代直到达标。”
他放下粉笔,转过身,看着吕辰。
“这些东西,技术上都能做。但有一个前提。”
他竖起一根手指。
“要有足够精确的工艺模型。拐角加粗多少?duy tal的最小尺寸是多少?接触孔的标准化公差是多少?这些参数不是我能定的,是6305厂工艺线给的。他们没有,我写不了。”
吕辰点了点头:“这个我去协调。6305厂那边一直在收集工艺数据,应该已经积累了不少。我下周去找他,把参数表格要过来。”
汪涵教授没再说什么,坐回终端前。
钱兰走到白板前,拿起粉笔,又加了一行字:混合信号与定制模块的“保留区”设计。
“汪教授,双轨对比的时候我发现,CAD版在存储阵列、锁相环、模拟比较器这些定制模块上表现很差。自动布线破坏了它们的对称性和匹配性。”
她在白板上画了一个简图,一个大方框,里面画了几个小方框,小方框周围画了一圈虚线。
“我的想法是,引入定制模块边界锁。设计师可以把一块区域标记为保留区,自动布线只允许指定引脚连接,不触碰内部结构。”
她顿了顿,又在旁边画了一个图。
“在保留区内,设计师手工画关键匹配线,比如差分对、电流镜。CAD自动完成外围连接和填充。”
本章未完,点击下一页继续阅读。