io板输出正常,前期故障为芯片插座虚接。
他想了想,又在后面加了一行:
插座安装后须逐颗按压确认。写入装配规范。
“下一个。加存储板。”
存储板比前面两块板子都大,上面整整齐齐排列着十六颗芯片插座,每个插座周围环绕着几只去耦电容,密密麻麻像列队的士兵。
吴国华双手托着板卡边缘,把它推进了机柜的第四个插槽。
锁紧机构弹起,“咔嗒”一声。
“上电。”
宇文坤德再次推上开关。
这一次,机柜的指示灯亮起来之后,存储板的几个状态灯也亮了,绿色,自检通过。
吕辰换了一张测试卡,塞进读卡机。
这次的测试程序更复杂,向存储器的某一段地址写入一组数据,然后读回来比较。
一致就点亮io板的第一个指示灯,不一致就点亮第二个。
读卡机“咔嗒咔嗒”地响了一阵。
程序开始运行。
第一个指示灯亮了。
吕辰没有动。
等了两秒,还是亮的。
“再写一组。”
吴国华在终端上敲了几行命令,换了另一组数据。
读卡机再次启动,第一个指示灯还是亮的。
连续重复了十几组,全部一致。
“存储板基本功能正常。”吴国华的声音里带着一丝自信。
“不急。”吕辰从抽屉里拿出另一张测试卡,“跑一个边界的。”
这张卡的测试程序不是读写正常地址,而是读写地址的边界值,全o地址、全地址、地址线翻转的临界点。
这些地方最容易暴露出地址译码或数据总线的隐藏问题,正常能跑的不算数,边界能跑才算。
读卡机再次启动。
测试跑了不到半分钟。
第二个指示灯亮了。
车间里的空气又一次安静下来。
吴国华把逻辑分析仪接在存储板的地址线和数据线上,开始抓取数据。
屏幕上的数字飞跳动。
他盯着看了几秒,然后用手指点住屏幕上两条几乎重合的波形。
“地址线a和a的输出波形不对。a的翻转时刻比a晚了大约o纳秒。导致在某一个瞬间,地址线组合错误,读到了错误的内存单元。”
宇文坤德从工具箱里拿出一把极细的镊子,在板卡背面测量了两根地址线的走线长度。
他的眼睛眯成一条缝,镊子尖在铜线上轻轻划过。
直起腰,比划了一下长度。
“a比a多绕了一段。长了大约毫米。”
时序问题,硬件工程师的噩梦。
不是说功能错了,功能没错,是信号在路上跑的时间不一样,导致在某个纳秒级的窗口里,逻辑乱了。
那种问题最难复现,最难定位,最磨人。
吕辰在本子上重重地写了一行:
地址线长度不匹配,a绕远,建议下一版做等长布线。
他画了三个三角形,最高的优先级。
他看着宇文坤德。