晶片从新加坡运回来了,梁梦松亲自押的货,从樟宜机场飞到香港,再转机到济南,一路上没让那个铝合金手提箱离开过自己的视线。
    过安检的时候安检员让他开箱,他打开了箱子,但眼睛一直盯著对方的手,生怕那只戴著白手套的手碰到晶片封装盒。安检员大概是被他盯得不自在,草草看了一眼就让他合上了。
    到研发中心的时候已经是下午三点,李默带著测试组的三个人在实验室里等著,桌上铺好了防静电垫,测试板已经插好了排线,示波器的探头也校准过两遍。
    实验室的空调开得比平时低了五度,有人披了件外套,有人没来得及披,胳膊上起了一层鸡皮疙瘩。
    梁梦松把箱子放到桌上,打开,里面是一个黑色泡沫衬垫,衬垫上嵌著十颗晶片,每一颗都用防静电袋单独封装。
    他把其中一颗拿出来,放到测试板旁边的托盘上。晶片在日光灯下泛著一层暗沉的金属光泽,指甲盖大小,上面蚀刻著星火的logo和一串编號。
    “一路上没出岔子吧?”李默问。
    “飞机上我一直抱著这个箱子,”梁梦松说,“空姐问我里面是什么,我说是人工心臟起搏器,她立马不敢碰了。”
    李默笑了一声,他感觉梁梦松这个理工男还挺幽默。他戴上防静电手环,用镊子夹起晶片,对准测试板上的封装槽,慢慢往下放。
    晶片的引脚和插槽对齐的那一瞬间,他的手腕轻轻一压,晶片咔噠一声嵌了进去。声音很轻,但实验室里每个人都听见了。
    “上电。”李默说。
    坐在示波器前面的工程师按下电源开关。测试板的指示灯闪了一下,绿色的。然后显示屏亮了。
    屏幕先是蓝的,然后跳出一行白色英文:starcore booting……光標在句尾闪了三下,接著屏幕变了——星火os的logo弹了出来,logo下面是一个进度条,进度条从零跳到百分之百,用了不到一秒。桌面出现了,还是那个深蓝色的背景,几个图標安安静静地列在屏幕边缘。
    “启动成功。”
    说这话的是坐在最边上的年轻工程师,声音不高,像是怕把什么东西吵醒。但紧跟著整个实验室炸了——有人摘下眼镜擦了一下又戴上,有人拍了一下大腿,有人两只手撑著桌沿肩膀往下垮了一截像是一口气从胸口卸出去的。
    李默没有喊也没有动,但他攥著镊子的那只手在微微发抖,镊子尖碰在金属託盘上,发出很细很碎的叮叮声,他赶紧把镊子放下,用手指按住。
    “先跑一遍基准测试。”他说。
    基准测试程序是提前写好的,跑了一遍cpu整数运算、浮点运算、內存读写带宽。
    数据从屏幕上滚过去的时候,负责记录的人手指跟著屏幕上的数字往下划拉,嘴里念念有词——主频400mhz稳定不跳,整数运算超出设计预期百分之三,浮点略低,低了不到两个点,內存带宽达標。
    李默凑过去看了两眼,说再跑一遍。第二遍数据和第一遍完全一致。
    “gpu测试,”梁梦松在旁边抱著胳膊说,“先把那两个场景跑了。上次仿真的时候就是这两个场景出的花屏。”
    李默点了点头,自己动手输了测试命令。屏幕上的画面从桌面切到一个3d渲染场景——一个由上千个三角形组成的旋转球体,表面贴著金属光泽的纹理。
    球体转了一圈,画面乾净。转第二圈的时候,屏幕右下角出现了一个很小的闪烁,一闪而过,像是夏天傍晚远处天边打的那种没有声音的闪电。
    李默的表情没有变,但他在笔记本上飞快地画了一个坐標,標出了闪烁出现的位置。
    第二个场景是一个粒子系统,模擬下雨的效果,几千个粒子同时从屏幕顶端往下落。粒子落到一半的时候有几颗忽然变成了紫色的长条,在屏幕上闪了零点几秒又恢復了正常。不多,就几颗。
    “还是那两个场景,”李默在本子上写完最后一行字,搁下笔,“gpu花屏只在这两个特定渲染条件下出现,位置和仿真结果完全吻合。不是隨机故障,是设计层面的底层算法问题——图形加速器的z缓存算法在粒子深度排序上有bug。功耗呢?”
    旁边负责记录的人把整张测试报表往前翻了一页,手指停在中间偏下的位置。
    满载功耗608毫瓦,比设计值高了一成半,待机功耗72毫瓦。usb高负载丟包率百分之零点七,刚好踩在设计上限的红线边缘。
    数字往上跳的时候他还偏头看了李默一眼,发现李默在笑——不是那种开怀大笑,是嘴角往上翘了一下就收住的那种,像是看见了什么在意料之中甚至在期待之中的东西,然后他低下头继续写笔记,笔尖在纸上刮出一道很深的墨痕。
    “良率呢?”凌云的声音从门口传来。
    实验室里的人全体回头。凌云不知什么时候进来的,站在门口,肩膀靠著门框的右侧。
    他穿著一件深蓝色的工作夹克,拉链拉到胸口的位置,左肩上有一小片没有掸乾净的粉笔灰,像是刚离开那间铺满图纸的会议室。
    梁梦松转过身来,拿起那份被记號笔划过好几次的测试报表翻到最后一页。“首批十颗测试片,十颗全部可启动。其中两颗功耗超標在允许范围之外,一颗usb接口在高速模式下有间歇性掉包,一颗gpu花屏频率高於设计標准,但所有晶片均可运行完整基准测试——首批良率,八成六。”
    他说完这句话,自己先愣了一下。然后又將测试报表从头到尾又看了一遍,像是在確认自己刚才没有看错任何一个数字。
    事实上报告单上的每行数据他都能背。从新加坡厂启动改造到流片、回片,一年零两个月,中间设备调试停摆过三次,工艺参数调整了不下上百次。
    有一回深夜里蚀刻机报警,他和三个工程师穿著防护服在里面站了五个小时,出来的时候脸上被口罩勒出来的印子三天都没消下去。
    凌云从门口走进来,拿起那颗还没装回防静电袋的晶片,对著灯光看。晶片在他指尖转了一小圈,封装的金属壳反了一下光,暗沉中有一丝亮。
    “这是第一颗完全走完从设计到流片到测试全流程的晶片,”他把晶片放回托盘里,“不管它现在有多少问题,至少证明我们能做完。”
    李默摘下防静电手环,往桌上一搁。“问题倒回来看,gpu花屏是算法层面的,需要改z缓存排序逻辑,主攻渲染管线那块。功耗高了百分之十五,我们原定的四档电压域划分太保守,需要拉到六档,加上时钟门控那边的优化还可以再抠出来一截。usb丟包好办,是控制器寄存器时序配置的问题,补丁包这周內就能搞好。”
    “年底前能出第二版吗?”
    “能,”李默说这句话的时候手里已经把键盘拉过来准备开始写debug计划,“给我两个月,问题全部清掉。”
    凌云没再多说。他绕著测试台走了一圈,看了看正在运行的晶片测试界面,看了看示波器上还在跳动的波形,看了看那几个挤在显示器前面復盘测试报告的工程师——有一个头髮乱得像鸡窝,有一个外套的袖子一长一短卷著,有一个手里攥著一块已经凉透了的馅饼,咬了一口又眼睛盯著屏幕忘了嚼。
    他走完一圈停下来,站在那个头髮乱得像鸡窝的工程师后面,看了一眼屏幕,说了一句:“今晚加班餐我让食堂加菜。”
    然后他走向门口。梁梦松跟出来两步。凌云转身对他说:“新加坡那边,月產能现在能到多少?”
    “一万两千片,设备全速运转的话。但第二版的流片窗口如果卡在十二月,需要跟深圳厂那边协调,他们有一条测试线可以用在——”“调度权给你,”凌云说,“不用签报。直接调。”
    梁梦松没有说谢谢。他站在原地,看著凌云走出实验室的门,然后转身回去,把袖子往上一卷,对著那帮还在盯著屏幕的工程师拍了拍手,“都听到了啊,晚上加菜,吃完接著干。”