芯片的逻辑设计告一段落之后,吕辰反而更忙了。
不是因为设计本身出了问题,而是七个人把七块模块的电路图堆在他桌上,等着他做接口对齐。
张明的交换矩阵控制逻辑和通路状态表最先完成,厚厚一沓稿纸,每一页都画得工工整整。
郑强的仲裁器和信令接口紧随其后,刘伟的微程序接口和时序控制单元也差不多了。
王军的故障检测模块、李华的可测性设计、小张海的整体集成框架,全部挤在这个节骨眼上集中交付。
“吕师兄,你看看这个。”张明把两张图纸铺在桌上,一左一右,“交换矩阵控制逻辑的输出信号定义,和郑强仲裁器的输入接口对不上。他那边用的是16位地址总线,我这边只留了8位。”
吕辰弯腰看了一会儿,拿起铅笔在两张图纸之间画了一条线。
“仲裁器的地址总线扩展到16位,交换矩阵这边高位地址暂时接地,留作扩展。”他直起身,看着郑强,“你那边多出来的几条线,能走通吗?”
郑强想了想,点头:“走是能走,就是版图得调。原来仲裁器放在芯片左上角,现在要往右边挪,给地址总线让位置。”
“调。”吕辰没有犹豫,“现在不调,等版图画完了再改,代价更大。”
类似的接口争议,一下午解决了七八个。
有人争得面红耳赤,有人拍桌子说“你这接口定义完全不合理”,有人闷头画图不说话。
吕辰坐在中间,听完了每个人说话,然后一条一条地裁。
他不偏袒任何人,也不和稀泥。
接口定义不对的,改。
时序对不上的,调。
功能重叠的,合并。
功能缺失的,补。
到下午六点多,最后一张图纸上的接口争议也解决了。
小张海把七份图纸收拢,用夹子夹住,放在吕辰桌上。
“吕师兄,逻辑设计全部完成。明天开始上星河cad做仿真?”
“明天开始。”吕辰站起来,活动了一下僵硬的脖子,“今晚大家回去好好睡一觉,明天正式开跑。”
第二天一早,七个人准时出现在集成电路实验室的cad机房。
吕辰坐在管理员终端前,建好了文件,大家按分配的模块开始将设计好的逻辑输入,一时之间,只听见键盘的敲击声。
输入逻辑用了两天。
第三天下午,开始测试。
“先跑交换矩阵控制逻辑。”吕辰站在他身后,手里拿着张明的那沓图纸,一页一页地翻,“第一个测试用例,单路呼叫,输入线1请求接通输出线1。加载网表,跑仿真。”
小张海敲了一行命令,回车。
屏幕上开始滚动绿色的字符,波形窗口里出现了几道整齐的方波。
十几秒后,仿真结束。
小张海看了一眼:“功能验证通过。”
张明站在旁边,紧绷的肩膀松了下来,等着吕辰往下说。
“第二个测试用例,四路并发呼叫,四组不同的输入输出。”吕辰翻到图纸的下一页,“加载,跑。”
又是十几秒。
“功能验证通过。”
“第三个,冲突场景。输入线1、输入线2同时请求输出线3。仲裁器按固定优先级处理,输入线1优先接通,输入线2等待。”吕辰的语气不急不慢,“加载,跑。”
屏幕上又滚过一行绿色的字符。
“功能验证通过。优先级仲裁正确,等待线路状态保持。”
张明这下才真正松了一口气,从兜里掏出烟,给吕辰递了一根,自己也点了一根。
“这才刚开始。”吕辰接过烟,没点,夹在手指间,“七个模块,几百个测试用例,一个一个跑。跑通一个打一个勾,跑不通的记下来,回头改。”
小张海已经开始加载第四个测试用例了。
郑强凑过来,盯着屏幕上的波形,手指在桌面上轻轻叩着。他的仲裁器模块是第二个要跑的,他已经在心里过了一遍自己的测试用例,确认每一个场景都覆盖到了。
忙碌了整整一个星期。
每一天,七个人都从早上八点坐到晚上十点。
中午食堂送饭来,蹲在机房角落吃,吃完接着跑。傍晚有人去食堂打了饭端回来,一边吃一边盯着屏幕上的波形。
吕辰的烟灰缸一天要倒三四次。
小张海的眼睛盯屏幕盯得发红,滴了眼药水继续。
张明趴在桌上睡了一会儿,醒来接着改网表。
郑强把仲裁器的优先级算法从固定优先级改成轮询,又重新跑了一遍全部用例,确认两套算法都能正常工作。
到第七天中午,小张海把最后一个测试用例跑完,屏幕上弹出一行绿色的提示。
“全功能验证通过,0错误,0警告。”
机房安静了一瞬。
然后郑强第一个鼓起掌来,掌声不大,但很真。
张明跟着拍了两下,刘伟也拍了拍手,王军、李华、小张海都笑了。
吕辰从椅子上站起来,把手里的烟掐灭在烟灰缸里。
“仿真通过,不代表