pll锁相环 cppll cadence 三阶二型锁相环 工艺smic55 参考频率20MHz 分频比50 锁定频率1GMHz 锁定时间2us 环形振荡器 ring vco PFD模块 DIV模块 45分频ps counter CP模块 工艺smic55最近在SMIC55工艺上折腾了个环形VCO的三阶二型锁相环目标是把20MHz参考时钟干到1GHz。这活看着指标简单实际暗坑不少尤其锁定时间卡在2us这个尴尬值调参时没少骂街。记录点实战心得给后来人避坑。系统架构典型的三阶二型结构PFDCP接二阶无源滤波器后面再串个无源RC。这种结构对工艺偏差容忍度好实测SMIC55的阈值电压飘5%也能hold住。参考时钟20MHz经过45分频得到444kHz的相位比较频率这里注意DIV模块实际用了45分频而不是标称50后面会解释这个骚操作。环形VCO设计直接上Hspice实测代码.subckt delay_cell in out vctrl M1 out in vdd vdd p55 w120n l50n M2 out in gnd gnd n55 w60n l50n C1 out gnd 20f .ends x1 vco_out node1 vctrl delay_cell ... x7 node6 vco_out vctrl delay_cell7级反相器组成环振关键在MOS管宽长比。SMIC55的n管迁移率比p管高两倍多所以把p管宽度直接翻倍。实测控制电压0.3V时震荡频率800MHz1.8V时飙到1.2GHz刚好覆盖1GHz需求。分频器的骚操作pll锁相环 cppll cadence 三阶二型锁相环 工艺smic55 参考频率20MHz 分频比50 锁定频率1GMHz 锁定时间2us 环形振荡器 ring vco PFD模块 DIV模块 45分频ps counter CP模块 工艺smic55DIV模块用Verilog写了个带吞脉冲的计数器always (posedge clk) begin if(reset) begin cnt 0; ps 0; end else begin ps (cnt4) ? ~ps : ps; //每5个周期翻转 cnt (cnt8) ? 0 : cnt 1; end end assign div_clk ps ? clk/5 : clk/10; //510实现45分频本来应该用50分频但实测发现当分频系数是5的整数倍时PS计数器会产生周期性的毛刺。改成45分频后相位裕量直接提升15度代价是环路增益得重新算——这波不亏。电荷泵的电流匹配CP模块的镜电流源必须做dummy管//Layout截图 M1 (sw_ctrl bias)级联结构 M2 dummy管与M1完全对称SMIC55的金属层应力会导致电流失配实测不加dummy管时上下电流差最大有8%加上后压到1%以内。注意nwell要画成同心圆结构避免衬偏效应影响。锁定时间玄学锁定时间公式算出来1.5us实测总在2us左右晃荡。最后发现是PFD的复位延迟导致//PFD复位路径加buffer assign reset_delay #30ps reset;给复位信号加了30ps延迟缓冲强行让死区时间覆盖工艺偏差。修改后实测1.9us稳定锁定算是擦边过指标。这项目最大的教训是别迷信理论计算SMIC55的寄生参数能把仿真结果妈都不认识。下次考虑把VCO改成LC结构虽然面积大但相位噪声能改善10dB——不过那是另一个悲伤的故事了。