日子就这么不紧不慢地过着。
每天早上,吕辰慢悠悠地骑车到所里,泡一壶浓茶,坐下来画版图。
画累了就站起来走一走,去走廊里抽根烟,看看远处的风景。
中午去食堂吃饭,回来在办公室眯一会儿,下午继续画。
六点准时下班,到市委宣传部,接了娄晓娥,一起回家。
娄晓娥的肚子虽然还没显怀,但每天聊了上下班,已经基本不干活了,连抱小吕晓都不让了。
小念青越来越有姐姐的样,每天放学回来就在堂屋里写作业,一笔一画,认认真真。
小何骏上小学一年级了,在学校里调教一下,乖了不少。
回到家,也跟着念青学写字,握笔的姿势倒是有模有样,就是写出来的字歪歪扭扭,像蚯蚓在纸上爬。
家里淘气的换成了小吕晓,满院子疯跑,成功接过了祸害花草的大任。
小何骁一岁多,刚学会走路,摇摇晃晃的,像一只小企鹅。
陈雪茹依然做着她的古代服饰复原,宋代贵妇命服的成功让她大为振奋,现在正在做着五代时期的服饰。
雨水、娄晓娥下了班,就帮他研究各种文献。
何雨柱每天在轧钢厂食堂忙活,中午不回来,晚上才到家。
进门第一件事就是去厨房,系上围裙,开始忙活晚饭。
他的动作快,刀工利落,三两下就是一桌子菜。
红烧肉、糖醋排骨、清蒸鲈鱼、醋溜土豆丝,换着花样来。
一家人围坐在八仙桌前,热热闹闹地吃一顿饭。
吃完饭后,有时,吕辰会帮娄晓娥揉揉脚。
这样的日子,心里踏实,比什么都好。
五月下旬的一天,吕辰正在设计室里画版图,吴国华推门进来了。
他的表情不太一样,嘴角翘着,眼睛里有光,像是在憋着什么好消息。
“吕辰,昆仑1第三版流片结果回来了。”
吕辰放下铅笔,抬起头看着他。
“怎么样?”
吴国华走到黑板前,拿起粉笔,写了几行数字。
KL-SRAm,良率86.7%。
KL-cAchE,良率82.3%。
KL-mc,良率71.5%。
KL-bUS,良率73.8%。
KL-pwR,良率75.6%。
他一口气写了十几行,粉笔在黑板上嗒嗒地响。
“三颗超过80%,其他的全部站上60%的门槛。KL-VU从上一版的51%跳到了百分之68%。KL-cU到了65%。”
他把粉笔放下,转过身,看着吕辰。
“昆仑1的芯片,设计上算是成功了。剩下的问题是工艺的摸索,不是设计的事了。”
这真是不容易,两年多前,昆仑工程启动的时候,每一块芯片都是一个未知数。
那时候谁也不敢说能做成,只是摸着石头过河,一步一步往前走。
两年多,三版流片,几千颗芯片,无数个熬到天亮的夜晚。
现在,总算是是成功了。
吴国华的声音提高了一些:“月底咱们所有人,开个总结会,把第三版的问题再过一遍。”
吕辰站起来,走到黑板前,看着那几行数字。
KL-SRAm 86.7%。
这个数字,哪怕是放在后世,放在任何一个半导体厂,都是拿得出手的量产良率。
他看着吴国华:“国华,工业计算机的事,你帮我跟宋教授说一声。等我们的版图画完了,等着上星河cAd。”
吴国华点了点头:“星河cAd现在还在跑车载火控的芯片,等他们送流片了,机房就空出来了。快了,就这几天的事。”
吕辰回到桌前,坐下来,继续画版图。
但心里不像刚才那么静了。
昆仑1成功了,工业计算机也该加速了。
六月初,工业计算机第一版设计的版图画完了。
26颗芯片,46个人,手工画了将近四个月。
图纸堆了满满一屋子,A0幅面的硫酸纸,一卷一卷地码在图纸架上。
每一张图纸的右下角都签着设计者的名字和审核人的名字,红蓝铅笔的批注密密麻麻。
吕辰把最后一颗芯片的版图从绘图桌上取下来,卷好,塞进图纸筒里,贴上标签,放进档案柜。
他锁上柜门,转过身,看着设计室里的人。
大张海趴在桌上,脸埋在胳膊里,已经睡着了。
他连续画了三天,眼圈黑得像熊猫,刚才画最后一根线的时候手都在抖。
小张海靠在椅背上,仰着头,嘴巴微张,发出轻微的鼾声。
周建国坐在绘图桌前,手里还攥着铅笔,铅笔尖抵在图纸上,人却已经睡着了,脑袋一点一点的,像鸡啄米。
钱兰坐在角落里,面前摊着一本厚厚的笔记本,正在翻看最后的审核记录。
诸葛彪叼着一根没点的烟,靠在窗边,眯着眼睛看窗外的夕阳。
他的头发乱得像鸡窝,衬衫皱巴巴的,袖口磨出了毛边。
曾祺拍了拍手。
“行了,都别睡了。开个会。”
设计室里的人迷迷糊糊地抬起头,有人揉眼睛,有人伸懒腰,有人打哈欠。
“版图画完了,咱们不急着上中试线。”
他走到黑板前,拿起粉笔:“等星河cAd空出来,咱们把26颗芯片在系统上再设计一遍。手工画的跟系统生成的比对,哪一版好就用哪一版。”
诸葛彪把烟从嘴里拿下来:“咱们这是要搞双轨制了。”
吕辰道:“双轨制好,手工版图是我们的保底,系统版图是我们的增量。两版比对,取最优。系统跑不出来的模块,用手工版补。手工版有问题的模块,用系统版改。最后送流片的,是两版融合之后的版本。”
钱兰抬起头:“这个思路好。星河cAd的自动布局布线,布线密度比手工高,寄生参数小。但有些关键模块,系统不一定能理解设计者的意图。手工画的虽然密度低一点,但逻辑清晰,可读性强。两版融合,取长补短。”
“所以不急。”曾祺说,“等机房空出来了,咱们慢慢做。”
有人松了一口气。
这几个月画版图画怕了,眼睛都快瞎了。
现在听说还要在系统上再搞一遍,按理说应该头大,但不知道为什么,心里反而踏实了。
系统跑总比手工画省力,至少不用趴在桌上一天不动窝。
“行了,散了。该回家回家,该补觉补觉。”
众人开始收拾东西,图纸一卷一卷地装进图纸筒,铅笔一支一支地插回笔筒,搪瓷缸子一个一个地洗干净倒扣在桌上。
吕辰把帆布包挂在肩上,推着自行车出了设计室。
六月的京城,已经有了夏天的意思。
槐花刚落尽,枝叶间透出细密的绿荫。
休息了几天,到6月7号。
谢凯前来通知,车载火控的芯片第一版设计完成了,已经送去流片。
惊雷设计室人的撤了,星河cAd空出来了。
当天,第八组一群人抱着图纸、笔记本、铅笔、橡皮,浩浩荡荡地穿过走廊,往机房走。
吕辰走在最前面,步子很快,帆布包在肩上晃来晃去。
钱兰跟在后面,手里拿着一个黑皮本子,翻到空白页。
诸葛彪叼着一根烟,眯着眼睛,双手插在裤兜里,不紧不慢地跟着。
曾祺走在最后面,手里端着一个搪瓷缸子,一口一口地喝着。
机房的门敞开着。
到了机房,曾祺46人分面了两组,大家决定两班倒。
吕辰在管理员终端前坐下来。
他打开显示器,屏幕上跳出一行绿色的提示符。
db>
他在键盘上敲了一行命令:
db> LoGIN
屏幕跳出一行:
USERNAmE:
他敲了自己的工号:LVchEN_6801
pASSwoRd: ******
LoGIN SUccESSFUL. wELE to StAR RIVER cAd SYStEm V2.0.
屏幕上跳出一个菜单,列着几个选项。
版图设计、仿真验证、时序分析、功耗分析、信号完整性、工艺波动分析、数据管理。
吕辰选了“版图设计”,屏幕跳出一个文件管理界面。
他新建了一个设计文件,命名为“GY-cU-01_V1”。
系统提示:dESIGN FILE cREAtEd. pLEASE LoAd cELL LIbRARY.
他敲了一行命令:
db> LoAd LIbRARY 5Um_Std
磁带机嗡嗡地转了几秒,屏幕上跳出一行字:
LIbRARY LoAdEd. 470 cELLS AVAILAbLE.
5微米标准单元库,470个单元。
与门、或门、非门、与非、或非、异或、触发器、锁存器、加法器、比较器、多路选择器、译码器、编码器……
每一个单元都有精确的版图、时序模型、功耗模型。
吕辰靠在椅背上,手指在键盘上停了片刻。
他在脑子里过了一遍GY-cU-01主控核心的架构。
指令译码器、程序计数器、堆栈指针、ALU、寄存器堆、中断控制器、总线接口。
七个模块,每个模块少则几十个门,多则几百个门。
全部要用标准单元库里的元件搭起来,一个一个地放,一个一个地连。
他深吸一口气,坐直了身子,开始敲键盘。
他先调用了一个与门。
屏幕上跳出一个对话框:INStANcE NAmE?
他敲了:ANd_1
屏幕上跳出一个图形,是一个与门的版图示意图。两个输入端,一个输出端,线条细如发丝,整整齐齐。
他把这个与门放在了图纸的左下角坐标(100,100)的位置。
然后他调用了一个或门,放在了(100,200)的位置。
与非门、或非门、异或门、非门……
一个一个地放,一个一个地连。
他没有鼠标,所有的操作都靠键盘。
移动元件用方向键,旋转用R键,放大缩小用加减号,连线用w键。
没有图形界面,所有操作都是命令行。
屏幕上显示的是一行一行的代码,不是图形。
要看版图,得敲“dISpLAY”命令,屏幕上才会跳出一张黑白的版图示意图,线条是白色的,背景是黑色的,粗糙得像老式示波器的波形。
但这就是现在能用到的,最好的工具了。
旁边围了一圈人。
钱兰站在吕辰身后,盯着屏幕看了一会儿,然后走到旁边的午马机前坐下,打开自己的设计文件。
她负责存储模块的7颗芯片,每一颗都要在系统上重新做一遍。
诸葛彪叼着烟,在另一台午马机前坐下来,打开I/o模块的设计文件,眯着眼睛看了一会儿,开始敲键盘。
曾祺带着几个人,负责通信模块和电源模块。
大张海和小张海挤在一台午马机前,两个人头挨着头,盯着屏幕。
“你往左移一点。”大张海说。
“移了。”小张海敲了一下方向键。
“不对,多了,往右回一点。”
“你自己来?”
“我来看,你敲。”
两个人吵吵嚷嚷的,但效率不低。
机房里的气氛变了。
之前画版图的时候,设计室里安静得能听见铅笔的沙沙声,每个人都在埋头画自己的,很少有人说话。
现在不一样了,键盘声嗒嗒地响,显示器上绿色的字符一行一行地跳,有人敲着敲着忽然停下来,皱着眉头盯着屏幕看半天,然后恍然大悟地“哦”一声,继续敲。
有人在两个文件之间切来切去,眼睛盯着屏幕,嘴里念念有词。有人调出版图看了两秒,不满意,删了重来。
吕辰画了一个上午,搭完了指令译码器的前两级。
他敲了“dISpLAY”命令,屏幕上跳出版图示意图。
白色的线条在黑色的背景上交织,像一张精细的蛛网。
他盯着看了十几秒,然后拿起桌上的铅笔,在旁边的草稿纸上画了一条线,标注了一个坐标。
“这条线的位置偏了,帮我查一下这个模块的坐标参数。”
一名员接过草稿纸,在他的午马机上敲了几行命令,调出模块的参数表,看了一眼:“x坐标应该是124,你敲成了142。”
吕辰点了点头,敲了几行命令,把坐标改过来。
重新显示版图,线条的位置对了。
“行了。”
他靠在椅背上,长长地吐了一口气。
这才是一个上午,一个模块都还没搭完。
但急也没用,星河cAd2.0刚升级完,功能虽然比以前强大了,但操作还是很繁琐。
自动布局布线是有了,但跑一遍要几个小时。
而且跑出来的结果不一定满意,有时候要改参数重新跑。
人工干预的地方还很多,不是点一个按钮就能完事的。
中午去食堂吃饭的时候,诸葛彪端着饭碗坐到吕辰旁边。
“怎么样?”他问。
“还行。”吕辰扒了一口饭,“就是慢。一个上午搭了两级译码器。”
“慢就慢了。”诸葛彪夹了一块红烧肉,“比手工画快多了。手工画一颗主控核心用了将近一个月,系统上最多两个星期就能搞完。快了一倍。”
吕辰点了点头:“嗯,而且改起来方便。手工画错了要擦掉重画,系统上改几个坐标就行。”
下午继续。
吕辰敲了一下午的键盘,手指都有点酸了。
指令译码器的三级流水线全部搭完了,总共用了140多个门。
他在稿纸上画了一条连线图,标注了每一级的输入输出关系,然后开始搭程序计数器。
程序计数器是一个12位的计数器,每执行一条指令加1,遇到跳转指令时加载新的地址。
12位计数器由12个d触发器级联而成,每个d触发器带一个复位端和一个置位端。
他一个一个地调用d触发器,一个一个地放,一个一个地连。
敲了几十行命令,屏幕上跳出一排触发器的符号,每一个都标注着坐标和连线。
他敲了“dISpLAY”命令,看了看整体布局。
12个触发器排成一排,整整齐齐。
时钟线从左边进来,逐级向右传递。
复位线和置位线从上面走下来,每个触发器都有一根分支。
“还行。”他自己嘀咕了一句。
然后他开始搭堆栈指针。
堆栈指针是一个8位的计数器,带预置功能,用于子程序调用时保存返回地址。
和程序计数器类似,但多了压栈和出栈的控制逻辑。
他搭了一个多小时,搭完了堆栈指针的主体结构。
天已经快黑了,机房里的日光灯亮着,发出嗡嗡的声响。键盘声还在嗒嗒地响,有人还在加班,有人已经走了。
吕辰看了一眼墙上的挂钟,六点二十。
他保存了设计文件,敲了一行命令:
db> SAVE GY-cU-01_V1
屏幕上跳出一行字:
FILE SAVEd. 14:22:05
他站起来,活动了一下僵硬的脖子,拿起帆布包,出了机房。
他蹬上车,出了厂门,往家骑。
到家的时候,何雨柱已经做好饭了,正端着一盆红烧排骨从厨房出来。
“吃饭了,去洗手。”
一家人围坐在八仙桌前。
红烧排骨、清炒时蔬、酸辣汤,还有一碟花生米。
吕辰端起碗,大口大口地吃。
娄晓娥夹了一块排骨放在他碗里:“慢点吃,没人跟你抢。”
吕辰嚼着排骨,含混地应了一声。
吃完饭,娄晓娥帮他倒了一杯茶。
吕辰端着茶杯,坐在院子里,看着天边最后一抹光慢慢消失。
星星一颗一颗地亮起来,先是东边的一颗,然后是西边的几颗,越来越多,越来越密。
日子就这样一天一天地过。
每天早上骑车到所里,泡一壶茶,坐下来敲键盘。
中午去食堂吃饭,回来在办公室眯一会儿,下午继续敲。
六点下班,骑车回家,陪家人吃饭,逗孩子玩,帮娄晓娥揉脚。
不紧不慢,不急不躁。
六月下旬的一天,吕辰正在敲键盘,车载火控战神-1的芯片,第一版流片的消息回来了。
战神-1火控系统,一共7颗芯片,良率最低的21%,最高的63%。
这意味着,工业计算机又要给战神-1让路了。
吕辰把烟掐灭在烟灰缸里。
“行,让就让吧。反正咱们手工画也画过来了。
大家点了点头,收拾东西离开。