第一百四十六章 锁相环
七月四日,周日。
方宇明到 B207 的时候,孟思远已经在了,连同贺志明和颜天磊,四个人把验证板重新接好,准备做第五层——PLL 锁定测试。
「PLL 是什么意思?」许静远进来的时候问,她是做物理后端的,前几天在跟进 TSMC 那边的一些文件,今天第一次来看 bringup。
「Phase-Locked Loop,锁相环,」颜天磊解释,「芯片内部有一个 PLL,负责把外部给进来的参考时钟倍频到芯片内部的工作时钟。砺火一号外部参考时钟是 100MHz,PLL 把它倍频到 1GHz,芯片的主要逻辑就在 1GHz 下运行。」
「那 PLL 不锁,」许静远说,「芯片就没有时钟?」
「对,」颜天磊说,「所有时序逻辑都停了。PLL 是第一步——在 PLL 锁上之前,你什么时序测试都做不了。」
孟思远打开控制台,通过 JTAG 写入 PLL 的配置寄存器:参考时钟分频比、反馈分频比、电荷泵电流、环路滤波器参数。这些值是方宇明在设计阶段根据 TSMC 的工艺库参数仿真出来的,写在 bringup checklist 的配置表里。
写入配置完成后,他用 JTAG 触发 PLL 使能——让 PLL 开始工作,尝试锁定。
PLL 在锁定过程中,会不断调整内部 VCO(压控振荡器)的频率,使它的输出和参考时钟对齐。锁定成功后,PLL 的 lock detect 引脚会从低电平变成高电平,内部的 lock 状态寄存器也会被置 1。
孟思远触发 PLL 使能之后,开始监视 lock 状态寄存器。
「等,」方宇明说,「别急。」

大家都安静下来。
几秒钟过去了。
状态寄存器里的 lock 位,跳到了 1。
「锁上了,」孟思远说。
方宇明点了点头,「好。」
锁上了之后,孟思远立刻做了一件事:测 lock time。
他在 PLL 使能的时候打了一个时间戳,在 lock 位变为 1 的时候打了另一个时间戳,两个时间戳相减,换算成 reference clock 周期数。
结果是 235 个周期。
「后仿真,」孟思远说,「lock time 预估是 200 个周期左右,现在实际是 235,偏长了 35 个。」
「在允许范围内吗?」许静远问。

「PLL 的设计目标是 300 个周期以内,」方宇明说,「235 在规格内,但确实比后仿真估的长。」
「多出来的 35 个周期,」颜天磊说,「有可能是什么原因?」
「几个方向,」方宇明说,「一是电源噪声——芯片上电之后内核电压本来就比标称值低了一点(0.984V),虽然已经修正,但如果修正之前就做过一次 PLL 尝试的话,电压偏低会影响 VCO 的频率;二是温度——今天上海的气温,芯片的结温会比仿真时假设的稍高,CMOS 工艺里温度越高翻转速度越慢;三是工艺偏角,就是这批 MPW 的实际工艺参数和我们仿真用的模型有一点偏差。」
「这些,」许静远说,「都是正常的?」
「都是正常的,」方宇明说,「235 个周期是我们在芯片首次上电的第一天,用的是默认的 PLL 配置参数,还没有做任何调校——已经比我预期的要好。」
孟思远在 lock 状态稳定之后,接着做频率验证。
他用示波器的频率计功能,把探头接到验证板上 PLL 时钟输出的测试点上,测量实际输出频率。
显示:1000.2 MHz。
「1GHz 整,」贺志明说,「偏差 0.02%。」
「这是正常的,」孟思远说,「频率测量本身有精度限制,0.02% 的偏差在示波器的测量误差范围内,实际输出频率是 1GHz。」

颜天磊在 checklist 上划掉了第五层的最后一条,「PLL 通了,」他说,「第六层,」他看了一眼,「低频推理路径。」
他们没有立刻做第六层。
方宇明说,「先让 PLL 跑一段时间,」他说,「我们做完这几层之后,芯片已经上电跑了好几个小时了——观察一下 PLL 在长时间运行下有没有周期性抖动或者不稳定,这是这种测试该做的事。」
「多久?」孟思远问。
「两个小时,」方宇明说,「每隔十分钟读一次 lock 状态和频率,记下来。」
孟思远写了一个脚本,让 PC 每十分钟自动读一次 PLL 的频率和锁定状态,把结果写进一个 csv 文件。
他们就在 B207 里等。
两个小时里,PLL 一直是锁定的,lock 位一直是 1,频率在 999.8MHz 到 1000.3MHz 之间浮动,没有出现不稳定的情况。
「好,」方宇明说,「PLL 长时间稳定,可以认为 PLL 是可靠的。」
他把这段数据保存下来,「两个小时,12 次采样,全部锁定,频率偏差在 ±0.3MHz 以内,在预期范围内。」

「明天,」他说,「第六层。」
陆衍在那两个小时里一直坐在 B207 里,偶尔看孟思远的脚本输出,偶尔看窗外。
后来他发消息给豆包:「今天 PLL 锁上了,235 个周期,比后仿预计的 200 多了 35 个,方宇明说是正常偏差。」
豆包:「这种偏差在芯片首次 bringup 时很常见。后仿真用的是标称工艺条件(Typical Corner),实际芯片受工艺偏角、温度、电源噪声影响,lock time 比典型值略长是预期内的。235 比 300 的规格还有 65 个周期的余量,问题不大。」
陆衍:「他们花了两个小时等着,每十分钟读一次状态,确认 PLL 稳定。」
豆包:「这是正确的 bringup 方法——不是只验证上电瞬间是否 OK,而是观察时间稳定性。PLL 可能在刚锁上之后看起来正常,在长时间运行后因为热漂移或者电源噪声发生偶发失锁,这种问题只有在长时间监控中才能发现。」
陆衍:「他们发现了吗?」
豆包:「没有,两小时稳定。今天的结果是好的。」
陆衍把手机放下。窗外,上海七月的天空里有几片云,傍晚的光把 B207 的桌子和仪器都镀了一层浅金色。