哈哈小说
第 7 卷 · 造芯 · 第 141 章 · 39 段 · 1640 字

调板

第一百四十一章 调板

四月下旬,杜磊带来了两块板子。

他把它们从防静电袋里取出来放在桌上,绿色的 PCB,密密麻麻的走线在阳光下有一点反光。芯片位置是空的——一个焊盘区域,四周是排列整齐的焊球点阵,等待着砺火一号落座。

「两块,」他说,「一块调试用,一块备用——bringup 阶段板子可能会出问题,有一块备用是常规操作。」

颜天磊走过来看,「这就是我们描述的那些接口,」他说,「现在都变成了实物。」

「对,」杜磊说,「这里是 LPDDR4 的差分走线组,这里是 I²C 的信号线,这里是 JTAG 的连接器——J1。」他用笔尖在板子上的各个区域点了点。

「什么时候可以装芯片?」

「等芯片,」杜磊说,「芯片没来之前,先把空板调通——确认电源、时钟、FPGA 全部正常,才是正确的顺序。」


那天下午,杜磊把示波器、万用表和直流电源搬到桌上,开始空板调试。

插图

第一步是电源上电序列。他按照砺火一号的电源域规格,分三步上电:先给 IO 电压域上 1.8V,再给 LPDDR4 供电组上 1.1V,最后给内核电压域上 1.0V,每步之间有几十毫秒的延迟。

「为什么要按顺序,」孟思远在旁边问,「直接全部一起上不行吗?」

「芯片有规定的上电顺序,」杜磊头也没抬,「如果顺序错了,某些内部电路可能在电压不稳定的状态下工作,会损坏。」

三步上电完成之后,杜磊拿出万用表,逐一测量每个测试点的电压:内核电压 1.003V,偏差 0.3%;IO 电压 1.797V,偏差 0.17%;LPDDR4 供电 1.099V,偏差 0.09%。

「全部在允许范围内,」杜磊说,「±3% 以内都可以接受,现在都低于 0.5%。」

「这意味着,」颜天磊说,「LDO 的设计是对的?」

「电源这块是对的,」杜磊说,「LDO 选型和布局都没有问题。」


第二步是 FPGA 上电和固件加载。

插图

杜磊把 USB 线连到板子上的 FPGA 下载接口,打开 Vivado,把事先准备好的 FPGA 比特流下载进去。Vivado 的进度条走了几秒,输出了「Program, Verify, Start」。

「现在,」杜磊说,「看看 PC 能不能识别 JTAG 链路。」

他打开 OpenOCD,输入了一条配置命令,按下回车。

控制台输出了几行初始化信息,然后是一行:「Info : Found 1 JTAG tap.」

杜磊把鼠标放下,「通了,」他说。

房间里安静了一下。

「通了,」颜天磊重复了一遍,「FPGA 可以看到 JTAG?」

「可以,」杜磊说,「JTAG 链路是通的,这意味着当砺火一号装上来之后,PC 端的调试工具可以通过 FPGA 和 JTAG 访问芯片的内部寄存器。这是 bringup 的基础。」

插图

「基础,」孟思远说,「所以现在是基础通了。」

「只是基础,」杜磊说,「芯片没来,还不算 bringup 开始。」


方宇明那天晚上来 B207 看了板子,把两块 PCB 分别翻过来看了看背面,放下,「杜工,」他说,「做得很干净。」

「谢谢,」杜磊说,「这是我做过走线密度最高的 bringup 板之一——LPDDR4 的差分对等长约束让那边的区域很紧,绕了很多次才通过 DRC。」

方宇明点头,「台积电那边,」他说,「上周他们的系统里砺火一号的状态更新了,从流片中变成了封装中,」他停了一下,「大概六月底七月初出货。」

「那刚好,」杜磊说,「板子调通了,芯片来了就可以直接焊上去。」


陆衍那天在 B207 里旁观了整个调板过程,从下午两点到晚上七点多。

他没有参与任何操作,只是站在旁边看:杜磊用万用表在那些小得几乎看不清楚的测试点上逐一测量,记下每一个数字;示波器上的波形一条一条出现,每一条都代表某一个信号在时域上的真实行为。

插图

后来他发消息给豆包:「今天板子上电了,电源测量全部在范围内,JTAG 链路通了,杜磊说「通了」,然后继续做下一步检查,完全没有停下来。」

豆包:「对他来说,「通了」只是进入了下一个状态——不是终点,是起点。bringup 是一个系统性地缩小未知范围的过程,每通一步,你确认了一层,然后继续往下走,直到所有层都通了。」

陆衍:「有多少层?」

豆包:「孟思远的 checklist 有七层。板子这边已经过了前两层:电源上电序列,JTAG 连通性。」

陆衍:「还有五层。」

豆包:「等芯片来,五层在现实里。」

陆衍把手机放下,B207 外面的夜已经很深了,但杜磊在把示波器的波形截图一张一张存进文件夹,标注着今天的日期和测试项。