请关闭浏览器的阅读/畅读/小说模式并且关闭广告屏蔽过滤功能,避免出现内容无法显示或者段落错乱。
“不一样。”周毅头也不抬,“工具做,是根据教科书的标准算法。你看马总工的实现方式。”
屏幕上,老马没有使用工具库里标准的先行进位单元,而是用一堆最基础的与非门和异或门,手动“搭建”了一个结构。那个结构看起来有些“野路子”,不符合常规的设计范式,但却巧妙地利用了上下游单元的布局位置,使得连线长度被缩短到了极致。
“他把物理布局信息,耦合到逻辑设计里去了。”周毅看得入了神,“我们的工具,是先做逻辑,再做布局,两步是分开的。而马总工的大脑里,这两步是同时完成的。他在搭逻辑的时候,就已经想好了每一个门,应该放在芯片的哪个角落。我的天……这简直是‘四维设计’。”
在接下来的几个小时里,周毅和他的团队,见证了一场晶体管级别的“艺术创作”。
老马他们,就像一群经验丰富的雕塑家。他们时而大刀阔斧,将整个模块的结构推倒重来;时而精雕细琢,为了0.1个皮秒(ps)的延迟,去微调某个晶体管的宽度。他们嘴里不断念叨着一些周毅他们听着耳熟、但又似是而非的“黑话”。
“这个地方‘太软了’,得让它‘硬’一点。”(信号跳变时间太长,需要增强驱动能力)
“这根线‘太胖’,会把旁边的信号‘带跑偏’。”(连线电容太大,会产生串扰)
“给这个门‘喂饱’一点,让它跑快点。”(适当提高该单元的供电电压)
周毅的团队,一开始还试图把这些“黑话”,翻译成标准的学术术语。但他们很快发现,这根本做不到。因为老马他们的很多操作,是“反直觉”的,甚至是“反常规”的。比如,他们会故意在一个非关键路径上,使用一个速度很慢、功耗很低的单元,目的仅仅是为了“骗”综合工具,让它把更多的优化资源,留给真正需要的地方。
这是一种充满了“狡黠”和“智慧”的工程艺术。
到了下午,矛盾开始出现了。
王师傅在优化一个寄存器堆的读端口时,为了追求极致的速度,用了一个非常激进的电路结构。这个结构在仿真时,性能数据好得惊人,比标准设计快了将近30%。
隔壁的周毅小组,却炸开了锅。
“不行!这个电路结构,在PVT(工艺、电压、温度)的某些极端角(rner)下,是有功能性风险的!”一个博士生指着自己的仿真波形图,激动地喊道,“你们看,在低温、高电压的条件下,这里会产生‘竞争冒险’(Race dition),有千分之一的概率,会读出错误的数据!”
周毅也皱起了眉。从学术的角度看,这确实是一个“错误”的设计。任何有概率出错的设计,在商业芯片里,都是不可接受的。
他拿着自己的仿真结果,通过那个小窗口,递给了王师傅。“王师傅,您看,您这个设计,在‘Fast-Fast er’下,会出错。”
王师傅拿过来看了一眼,满不在乎地摆了摆手:“什么‘Fast-Fast’?我知道。这个问题,我三十年前在做大型机的时候就遇到过。你放心,在实际的芯片里,这种情况根本不会出现。”
“为什么?”博士生不服气地问。
“因为芯片在跑起来的时候,会发热!”王师傅敲了敲桌子,像在教训一个不懂事的孩子,“你说的那个‘低温’条件,只有在上电的百万分之一秒内,才可能存在。等芯片的核心温度一上来,所有的晶体管速度都会变慢,这个‘竞争’的问题,自然就消失了。我们做设计的,不能只看你那仿真软件画出来的理想线,要考虑实际情况!这叫‘工程裕量’!”
博士生被噎得说不出话来。他觉得王师傅是在“狡辩”,是在用一个不可靠的“经验”,去掩盖一个明确的“设计缺陷”。而王师傅则觉得这帮年轻人,是书呆子,只知道死抱着理论,不懂得实际工程中的取舍和权衡。
气氛,第一次变得有些尴尬和紧张。
两代工程师,两种知识体系,在这一刻,发生了最直接的碰撞。
“王师傅,我理解您的意思。”周毅开口,试图缓和气氛,“您是说,利用芯片工作时的温升,来规避掉低温下的时序风险。这在工程上,是一种很巧妙的思路。”
他话锋一转:“但是,我们这个项目的目标,是‘模型化’。而‘模型’,要求的是普适性和确定性。我们不能把一个设计的正确性,建立在‘芯片一定会发热’这种不确定的物理现象上。万一,我们的芯片用在了北极的科考站,或者卫星上呢?那里的环境温度本身就很低。”
王师傅被问得一滞,他确实没想过这么极端的应用场景。在他几十年的职业生涯里,他做的东西,都是在正常的机房环境下运行的。
“再说了,”周毅继续说,“就算在常规环境下,芯片的功耗也不是一成不变的。它在空闲的时候,温度就会降下来。如果这时候,突然来一个高强度的计算任务,那么在核心温度爬升起来之前的那一小段时间里,您说的那个‘竞争冒险’,理论上还是有可能发生。哪怕概率只有百万分之一,但对于一颗每秒运算一亿次的CPU来说,一秒钟就可能发生一百次错误。这是灾难性的。”
周毅的这番分析,有理有据,让王师傅无法反驳。他张了张嘴,最后只是闷闷地说了一句:“那你们说怎么办?又要快,又这里不行,那里不行。那干脆用工具自动生成的好了,保证不出错,也保证跑不快!”