最新网址:sk.x3qdu.com

第157章 第一次见面

作品:《 香江:从破产电器厂到全球巨头》

林知夏正式加入创世纪之后,曙光一号的架构设计进入了高速推进期。他在白板上画满了流水线架构图、中断优先级分配表和总线协议的时序波形,CPU前端设计的第五版草稿已经完成了五级流水线的全部时序分配,延迟槽优化逻辑在多轮迭代后逼近了理论极限。但李家港很快发现,要搭建一个完整的芯片设计团队,光有架构师还不够——林知夏能把每一条指令的执行周期压缩到不能再压缩,但他需要一个人把他的门级逻辑图翻译成可测试的仿真模型,能在流片之前通过软件模拟把所有可能的指令组合全部跑一遍,把任何潜在的设计缺陷提前暴露出来。这个人需要对精简指令集架构有深刻理解,同时精通硬件描述语言和仿真工具链,能在没有任何商业EDA工具支持的条件下从零搭建一套完整的验证环境。

林知夏在硅谷的旧通讯录里翻了很久。那本通讯录的边角已经磨得起了毛边,每一页都密密麻麻记着人名、电话和极简的备注——有些是博士同学,有些是英特尔的前同事,有些是在开源芯片设计小组里合作过的工程师。他逐页翻过去,在每个人名旁边用铅笔写着简短的评语,翻到中间某一页时停住了,手指压在一个名字上。这个人姓梁,是他读博士时的同门师弟,比他晚两年毕业,论文方向是处理器验证方法学。毕业后在硅谷一家EDA公司做了几年仿真工具开发,后来因为和主管在技术路线上争执不下,被边缘化到了一个只管维护旧代码的岗位。林知夏在通讯录里找到他时,他已经在这个岗位上默默无闻地待了很久。

林知夏给他写了一封信,措辞和他一贯的风格一致——极简,没有客套。信的开头直接写道创世纪正在设计一颗十六位精简指令集处理器,五级流水,单周期执行,所有IP核全部自行设计,目前所有时序都是手算的,需要一个人从零搭建指令集模拟器和回归测试框架。他详细描述了曙光一号的架构,然后笔锋一转提到了创世纪实验室的规矩——所有设计决策都必须附带书面理由,所有测试数据都必须归档保存,所有验证失败都必须记录原因和修正过程。他写到这一句时停顿了一下,想起梁工曾对他说过的话,把这句话原封不动地写进了信里。

梁工的回信是两周后到的。信封上贴着几张美分邮票,地址是硅谷那家EDA公司的办公大楼。信的内容极短,没有直接答应,只是说想先看看曙光一号的架构图。他说他在这里已经待不下去了——不是薪水的问题,是每天早上打开电脑看到那些十年没变过的旧代码,他觉得自己在退化。他在信里夹了一张从公司内部刊物上剪下来的漫画,画的是一个程序员坐在办公桌前,面前是一台老式终端,屏幕上只有一行关于修复一个没有人会遇到的漏洞的说明。他在漫画旁边用铅笔写了几个字,说这不是他学验证的初衷。但他说他需要先确认一件事——曙光一号的架构设计是认真的、可行的、不是空头支票。他在硅谷见过太多初创公司画大饼,最后连流片的钱都凑不齐就散伙了。

林知夏把CPU前端设计的最新版草稿复印了一份寄给他。这份草稿一共几十页,每一页都画满了寄存器的传送路径和流水线站点的环绕框图,不同颜色的箭头标注了数据前推路径、控制信号和存储器访问请求。他在第一页的空白处用铅笔写了一行字,说他们还没有仿真工具链,所有时序都是手算的,你来了以后第一个任务就是搭一套完整的验证环境——不是维护旧代码,是从零开始。他把这行字圈出来在旁边画了一个箭头,箭头末端写着“署名权归你”。他知道这句话对梁工的分量——在EDA公司做仿真工具的这些年,梁工写的每一行代码都归公司所有,他从来没有在一件自己独立完成的作品上签过自己的名字。

梁工收到信的那天傍晚,硅谷下着小雨。他坐在公寓的窗边逐页翻看林知夏画的时序图和门级逻辑图,看得非常仔细——每一页的右下角都有林知夏亲笔签下的日期和名字缩写。他翻到中断优先级矩阵那一页时停了下来。那里有一个刚被加入的仲裁控制器模块,旁边用铅笔注了一行小字,说明设计灵感来源于中周变压器线圈的匝间绝缘技术。这是他从没在任何教科书或设计手册上见过的跨界思维——把模拟电路的分布参数控制原理直接移植到数字逻辑的时序仲裁里。他盯着那行字看了很久,然后拿起一支笔在信纸背面画了一个极简的方框图——指令集模拟器的核心架构,包括随机指令生成器、门级逻辑比对引擎和覆盖率反馈模块。他在覆盖率反馈模块旁边画了一个圈,注了一行字,说这个模块会自动记录哪些指令组合已经被测试过,哪些还没有——不是一键验证,但能让你知道还差多远。他把这张方框图夹进林知夏寄来的架构图里,在信的最后写了几个字,说他需要几周时间处理离职手续,然后会尽快飞香港。

他抵达香港那天,九龙塘下了入秋以来的第一场雨。雨不大,细密得像从飞鹅岭方向飘过来的针尖。他拎着一只旧皮箱站在创世纪铁门口,抬头看着门楣上那块白漆写的“创世纪电子”招牌看了很久,然后从口袋里掏出那张被折叠了多次的曙光一号架构图复印件,重新折好放回口袋,拎起皮箱推开了铁门。林知夏在实验室门口等他。两个在硅谷相识多年的老朋友隔着雨幕对望了一眼,没有握手,没有拥抱,没有任何久别重逢的寒暄。林知夏只是推了一下滑到鼻尖的眼镜,目光在梁工手里那只旧皮箱上停留了片刻——那只皮箱他认得,是梁工在斯坦福读博时用的,箱盖上还贴着一张已经褪色的斯坦福校徽贴纸。

“你的工位在那边。”林知夏指着实验室东侧靠墙的位置。那里已经摆好了一张空的旧木桌和一把高脚凳,桌上放着一台刚从日本进口的新款终端和一台逻辑分析仪,旁边是一本摊开的创世纪实验室档案管理条例。木桌的抽屉里已经放好了一套全新的文具——一支自动铅笔、一盒替换铅芯和一把从刘师傅工具箱里借来的游标卡尺。方洁瑛在抽屉把手上系了一个用紫荆花信纸叠的小标签,上面用炭笔画了一朵极小的紫荆花。桌上还放着一只搪瓷缸,缸身外侧的红字已经磨得只剩轮廓,内壁用细砂纸打磨得光滑如新,缸子里泡着刚煮好的普洱茶,热气在雨天的凉意里笔直上升。

梁工走到白板前,逐行看完林知夏画的延迟槽优化逻辑和中断优先级矩阵里那个刚加入的仲裁控制器模块。他的目光在仲裁控制器方框旁边那行铅笔字上停了很久——那行字标注了设计灵感的来源。他之前在硅谷读林知夏寄来的架构图时就注意到这行字了,此刻看到实物,发现仲裁控制器的门级逻辑比他在飞机上凭记忆画的草图更简洁。他把皮箱放在工位旁边,打开箱盖,从里面拿出一叠他之前在硅谷那间出租公寓里手写的仿真框架草稿,然后拿起一支记号笔在白板上仿真验证环境方框图旁边画了一个新的模块——覆盖率反馈引擎。

“这个模块会自动记录哪些指令组合已经被测试过,哪些还没有。每次发现新的覆盖缺口,指令生成器就会自动生成针对性的测试序列——不是一键验证,但能让你知道还差多远。”他把笔放在白板边缘,对林知夏说这次他要实现当年博士论文里提出的那套随机指令生成和覆盖率反馈闭环方法——不是作为一篇被束之高阁的学术论文,而是作为一颗即将流片的处理器在每一次修改后都能即时反馈的验证工具。林知夏站在他旁边看着白板上那个新画的覆盖率反馈引擎方框,沉默了几秒,然后拿起红笔在方框旁边画了一个箭头指向自己的CPU前端架构图,在箭头末端写了几个字:“以后每次修改逻辑,你这边先跑一遍覆盖率反馈,我再根据反馈决定要不要重新优化。”梁工说这就是他当年在论文里描述的理想验证流程,他在EDA公司时反复向主管强调这个流程的重要性,但主管认为客户不需要这么复杂的反馈机制。现在他终于有机会亲手实现它。

窗外九龙塘的雨还在下,紫荆树的枝叶在风雨中轻轻摇晃。梁工从皮箱最底层拿出一个用泡沫纸包裹的旧键盘——那是他在硅谷那间出租公寓里用了多年的键盘,键帽上的字母已经被手指磨得发亮,空格键的边缘有被拇指反复敲击留下的凹痕。他把键盘接上终端,在命令行里敲下仿真环境的第一行代码——那是一个极简的指令集虚拟机框架,只有几十行C代码,模拟了精简指令集处理器的取指和译码两个阶段。他敲完之后停下来,从口袋里掏出林知夏寄给他的那封信,把信纸翻到背面——那里有他在硅谷那个下雨的傍晚画的第一张方框图。他把方框图用图钉按在工位正前方的墙上,然后在终端前坐定,继续敲下第二行代码。窗外九龙塘的暮色正缓缓沉降,他的手指在那把已经被磨得发亮的旧键盘上飞快跳动,节奏和注塑机液压泵的嗡鸣声重叠在一起——一个新的验证工程师正在创世纪的实验室里写下他职业生涯中第一行署着自己名字的代码。