第148章
结果,老马第一个站起来,慢悠悠地说:“雷部长,我们白天上课,脑子都快烧糊了。晚上能不能让我们回去,多看两页书,多画两张图?我们这儿,不兴这个。早点把芯片搞出来,比什么都强。”
一句话,噎得雷天君半天没说出话来。龙芯来的几个年轻人,在下面憋笑憋得脸都红了。从那以后,“政治学习”就再也没搞过。雷天君的任务,变成了每天想办法去招待所的厨房,给这帮“技术大爷”们加餐。他发现,一盘红烧肉,比念一个小时社论,更能提升团队凝聚力。
一个月的培训期很快过去,项目正式进入了设计阶段。真正的矛盾,也随之爆发。
按照林秋的规划,团队分成了几个小组,分别负责指令解码、算术逻辑单元(ALU)、寄存器堆等不同模块。矛盾的焦点,就出现在ALU小组。
这个小组的组长,是龙芯的周毅和先锋的老马。
按照“Top-down”的流程,周毅很快用Verilog写出了ALU的行为级代码,并且用仿真验证了逻辑的正确性。下一步,就是用综合工具,把它变成门级网表。
老马却拿着周毅的代码,看了整整两天,然后把他叫到了一边。
“小周,你这个加法器的写法,有问题。”老马的语气很严肃。
“有什么问题?”周毅有点不服气,“我仿真都通过了,32位的加减法,逻辑运算,都对得上。”
“逻辑是对的,但性能肯定不行。”老马拿出一张纸,上面画满了密密麻麻的电路图,“你看,一个32位的加法器,如果按照你这种最简单的写法,综合出来的,很可能是一个‘行波进位加法器’(Ripple-Carry Adder)。每一位的计算,都要等前一位的进位信号。这就像传话游戏,从第0位传到第31位,得等多久?我们这个CPU,时钟频率还想不想要了?”
周毅愣住了。这个问题,他确实没想过。他写的,就是最直观的`c= a+ b;`。
“那……那应该怎么写?”
“应该用‘超前进位’(Lookahead Carry)的结构!”老马的眼睛里放着光,他在纸上飞快地画着逻辑门,“我们可以用专门的逻辑,提前把每一位的进位信号都算出来,而不是一级一级地等。你看,这样,这样……虽然电路复杂了很多,但速度,能快上好几倍!”
他画出的那套复杂的电路,在周毅眼里,简直如同天书。他第一次发现,一行简单的“+”号背后,竟然隐藏着如此深奥的学问。
“马师傅,您这个……能用代码写出来吗?”
“写不出来!”老马把笔一扔,“这么精巧的结构,是人脑智慧的结晶,是靠经验和灵感优化出来的!你让那个冷冰冰的软件自己去‘想’,它能想得出来吗?依我看,ALU这一块,就别用什么综合了。我们小组,手工画版图!我保证,画出来的,比你那软件生成的,面积小一半,速度快一倍!”
老马的提议,在先锋的工程师中,引起了一片共鸣。他们骨子里,就不信任所谓的“自动化工具”,他们只相信自己的手和大脑。
周毅把这个情况,汇报给了林秋。这成了一个摆在所有人面前的难题。
如果同意老马的方案,那就意味着,林秋所倡导的“Top-down”设计流程,在第一个关键模块上,就宣告失败了。这会对整个团队的方法论,产生动摇。
但如果不同意,又会严重打击老马这批核心骨干的积极性。而且,谁也无法否认,老马提出的“超前进位”方案,在性能上,确实远优于最简单的综合结果。
整个项目,似乎陷入了一个“方法论”和“老师傅经验”的死胡同。
林秋在和吴佳栋商量了一整晚后,做出了一个决定。
他在第二天的全体会议上宣布:“ALU模块,我们采用两种方案,并行推进。”
所有人都愣住了。
“第一组,由周毅带领,继续使用Verilog,按照‘Top-down’的流程走。但是,你们要研究,如何在代码层面,去‘引导’综合工具,生成我们想要的‘超前进位’结构。现代的硬件描述语言,有很多高级语法,可以描述更复杂的结构。这是对你们学习能力的考验。”
他又转向老马:“第二组,由马总工带领,按照你们最擅长的方式,进行手工的底层设计。你们的目标,就是做出一个性能最极致的ALU。这是对你们经验的致敬。”
“一个月后,”林秋的目光扫过所有人,“我们将把两个小组的设计成果,下载到FPGA开发板上,进行实地的性能测试。用数据说话。谁的方案,在时序、面积、功耗上综合表现最好,我们就用谁的方案。”
FPGA!这个词,对先锋厂的工程师来说,又是一个新鲜事物。那是龙芯团队从太阳公司的合作中,弄到的几块当时最先进的开发板,价格高得吓人。
这个决定,出乎所有人的意料。林秋没有偏袒任何一方,而是设置了一个公平的擂台。这既给了新技术一个证明自己的机会,也尊重了老师傅们的宝贵经验。
老马和周毅的眼神,在空中交汇了一下。没有了之前的对立,取而代之的,是一种昂扬的斗志。
一场关于设计方法论的“战争”,就此打响。
与此同时,远在首都的龙芯研发中心,周毅的“后方”团队,也接到了新的任务。他们收到了几百个,由上海的“龙芯一号”团队,在使用他们的EDA软件时,提交的bug报告和功能建议。
负责布线器开发的王浩,看着一条来自老马的建议,哭笑不得。
“林学长,你看这个!”王浩在电话里向林秋抱怨,“马总工提的这个需求,他要求我们的自动布线器,要有一个‘手动干预’模式。他想在自动布线之后,还能像PS一样,用鼠标拖动某几条关键的走线!这……这完全破坏了自动化的思想啊!”
电话那头,林秋却笑了。
“王浩,你觉得,他为什么会提这个需求?”
“因为……因为他不相信我们的算法,觉得有些关键信号,还是自己亲手布线才放心。”
“没错。”林秋的声音很沉静,“这个需求,听起来很‘反动’,但它背后,是用户对工具的不信任。我们的任务,不是去教育用户,而是去解决他的不信任。你能不能做到,让我们的布线器,在布线完成后,能生成一份详细的‘报告’,用数据和图表,清晰地告诉他,每一条关键路径的延时、串扰风险,并且向他‘证明’,我们自动生成的方案,已经是最优的?”
王浩愣住了。他之前想的是如何拒绝这个“无理”的需求,而林秋想的,却是如何通过更好的产品设计,从根本上打消用户的疑虑。
“我明白了,林学长。”王浩挂掉电话,立刻召集了他的小组,在白板上写下了新的标题——“布线质量分析与可视化报告”。
上海,先锋厂的临时办公室里,一个月的时间,在紧张的对决中,飞逝而过。
周毅的小组,几乎翻遍了所有能找到的Verilog语法手册和综合工具指南,尝试了各种不同的代码风格,去实现那个复杂的“超前进位”逻辑。他们的代码,从最初的几十行,膨胀到几百行,充满了各种普通人看不懂的“generate”和“assign”语句。
而老马的小组,则像是回到了他们年轻时的状态。几个人凑在一台286电脑前,用最原始的版图编辑软件,一个一个地,手工摆放着上万个晶体管。他们的办公室里,贴满了各种手绘的电路图和时序波形图。
终于,到了验收的那一天。
两组的设计数据,都被输入了EDA流程,最终生成了可以下载到FPGA的比特流文件。
测试的房间里,挤满了人。陈功、雷天君,以及两个小组的所有成员,都屏住了呼吸。
吴佳栋坐在逻辑分析仪前,亲自操作。
“先测试周毅小组的‘综合方案’。”
他按下按钮,比特流文件开始下载。进度条走完,FPGA上的一个小灯闪烁起来,表示配置成功。
吴佳栋在电脑上输入测试指令,逻辑分析仪的屏幕上,立刻跳出了一连串的波形。
“逻辑功能正确。”吴佳栋宣布。周毅和他的组员们,松了一口气。
“开始测试最高频率。”吴佳栋的手指,在键盘上敲击着,一点一点地,提升着输入时钟的频率。
10MHz……20MHz……30MHz……
当频率加到33MHz时,屏幕上的波形,开始出现毛刺。
“32MHz,是稳定运行的上限。”吴佳栋记录下数据。
接下来,是老马小组的“手工方案”。
所有人的心,都提到了嗓子眼。
文件下载,配置成功。
“逻辑功能正确。”吴佳栋的声音,带着一丝不易察觉的激动。
“开始测试最高频率。”
时钟频率,再一次开始攀升。
10MHz……20MHz……30MHz……40MHz……
屏幕上的波形,依然清晰、稳定,如同刀刻一般。
45MHz……
50MHz!
当频率达到50MHz时,老马的眼睛,死死地盯着屏幕,拳头已经不自觉地握紧了。
吴佳odong的手指,停在了键盘上。他抬起头,看向众人,眼神里充满了震撼。
“50MHz,波形完美。时间来不及了,我没法继续往上测了。但可以肯定,它的性能,远远超过了综合方案。”
房间里,一片死寂。
随即,先锋厂的工程师们,爆发出了一阵雷鸣般的欢呼。老马的脸上,露出了孩子般灿烂的笑容。他赢了。经验,战胜了自动化。
周毅和他的组员们,则像斗败的公鸡,垂头丧气。他们付出了一个月的努力,结果却是完败。
然而,林秋的脸上,却没有任何表情。他走到吴佳栋身边,低声问了一句。
“面积呢?”
吴佳栋调出综合报告,看了一眼,然后抬起头,用同样低的声音回答:
“手工方案的面积,是综合方案的2.5倍。功耗,也高出将近一倍。”
房间里的欢呼声,像一盆滚油,泼在周毅和几个年轻组员的心上。他们低着头,脸颊发烫,恨不得找条地缝钻进去。一个月的心血,在绝对的性能差距面前,被碾得粉碎。他们引以为傲的“先进方法”,看起来就像一个笑话。
雷天君在旁边看得一头雾水,但气氛都到这儿了,总得说点什么。他搓着手,脸上挤出笑容,试图打个圆场:“哎呀,了不起,都了不起!马总工宝刀未老,这手艺,绝了!小周他们也……也很有探索精神嘛!对不对?重在参与!”
这话一出,周毅的头埋得更低了。
陈功厂长激动得满脸通红,他紧紧握着老马的手,力气大得让老伙计的指节都有些发白。“老马!好样的!给咱们先锋,给咱们这帮老家伙,争了一口气!”
老马享受着这迟来的荣光,他一辈子都在和晶体管、和版图打交道,这是他最熟悉的战场,也是他最自信的领域。他赢了,用最朴素、最扎实的办法,赢了这帮满口新名词的年轻人。他瞥了一眼垂头丧气的周毅,又看了看面无表情的林秋,心里有种说不出的痛快。
然而,林秋的脸上,既没有祝贺,也没有失望。他只是静静地走到吴佳栋身边,看着逻辑分析仪和报告上的数据。
“面积和功耗的数据,出来了吗?”他的声音不大,却像一颗石子,投进了喧闹的人群,**开一圈涟漪。
吴佳栋推了推眼镜,指着屏幕上的一行小字:“手工方案的晶体管数量,是综合方案的2.5倍。根据我们的初步功耗模型估算,峰值功耗,也高出将近一倍。”
这个数据,被欢呼声淹没了,没几个人注意到。
林秋点了点头,拿起桌上的一支笔,转身走向白板。他一言不发,在白板上擦掉之前的内容,画了两列。
**方案A(综合):**
*频率:32MHz
*面积:X
*功耗:Y
*设计周期:1个月(含学习)
**方案B(手工):**
*频率:50MHz
*面积:2.5X
*功耗:~2Y
*设计周期:1个月