1. 为什么SAR ADC是模拟电路新手的“集齐龙珠”项目
1.1 用一个8位设计练手的价值
入行那会儿,带我的老工程师给我布置的第一个独立设计任务,就是这个8位逐次逼近型SAR ADC。当时我还有点不服气:8位,连个像样的音频解码器都不够用,练手是不是太保守了?做完一整轮流片回来,我才明白他的用意——SAR ADC虽然位次不高,但它把模拟IC里最容易踩坑的环节几乎全部集齐了:采样开关的非线性、电容阵列的匹配、比较器的失调、数字时序和模拟节点的交互干扰、版图寄生对精度的侵蚀。做一个SAR ADC,相当于把模拟混合信号设计的基础科目完整考了一遍。
为什么推荐新手从8位开始,而不是直接挑战12位甚至16位?因为8位的指标恰好卡在“有够看的难度,但又不至于劝退”的位置。8位分辨率对应的DNL/INL要求通常在±0.5~1 LSB以内,这在0.18μm工艺下通过常规版图匹配手段就可以达到,不需要引入复杂的校准算法。而12位以上的SAR ADC,光电容失配校准和比较器低噪声设计就能让新人怀疑人生。我之前见过一个新人直接挑战12位,最后半年过去了还在和版图寄生做斗争,连一次完整的流片都没跑完。8位设计可以让你在相对短的时间内走完从原理图到版图再到后仿的完整流程,建立起对芯片设计的整体认知,这种“完整走一遍”的价值远超多啃几篇论文。
另外,8位SAR ADC的应用场景其实并不窄。工业传感器采集、电池电压监测、低速数据采集系统,甚至一些低成本MCU内部的ADC模块,用的大多是10位以内SAR结构。你花三个月时间把8位SAR做扎实,后面如果需要做12位,在8位架构上叠加校准和噪声优化即可,而不是从头再来。
1.2 0.18μm工艺:新手的黄金容错区间
关于工艺选择,我这边用的是国内一条主流的0.18μm CMOS工艺线。很多新手一上来就想着用先进工艺,觉得更“高端”,这其实是个误区。0.18μm工艺对新手来说是黄金容错区间,原因有三。
第一,设计规则宽松。最小线宽、金属间距、通孔叠放都有比较充裕的空间,画版图的时候不用时刻紧盯着DRC报错。相比之下,28nm级工艺里一个通孔的边缘距离差几纳米就是一堆违例,新人会被这些细节消耗掉大量精力。
第二,电路模型成熟稳定。0.18μm工艺的BSIM3v3模型经过十几年的量产验证,仿真结果和硅片实测结果通常在3%以内偏差。这对新手建立“仿真即实际”的直觉很重要。我在后续用更先进工艺做设计时,反而经常要处理模型不准导致的预测失效问题。
第三,设备层电容匹配性能够用。0.18μm工艺的MIM电容单位面积容值一般在1~2 fF/μm²,匹配精度在千分之一量级,做8位SAR的电容阵列完全没问题。如果你用单位电容法把阵列画成共质心布局,DNL做到0.5 LSB以内是比较稳的。
还有一点容易被忽略:0.18μm工艺的流片成本相对低,新手可以有“做错了也不至于血亏”的心理底气。很多学校里的小团队、个人开发者,用这类工艺线跑通一个完整项目,成本依然是可控的。这种宽松的试错空间,对正在建立工程感觉的人太重要了。
2. 原理拆解:二分查找的电路化本质
2.1 一次转换究竟做了什么
先说人话:逐次逼近型ADC做的工作,本质上就是小学生都会的“猜数字”游戏——裁判心里想了一个电压值,你每次猜一个数,对方告诉你“大了”还是“小了”,你根据反馈不断缩小区间,猜够8次,就能得到8位精度的答案。
把这个过程映射到电路上,裁判就是比较器,猜数用的砝码就是电容阵列搭出来的DAC,而负责“根据说大说小决定下一次猜什么”的,是SAR逻辑。整个转换过程有固定的8个时钟周期:
第一个周期,比较器把输入电压和参考电压的一半比较,确定最高位MSB。如果输入大于Vref/2,MSB置1,否则置0。第二个周期,根据MSB的结果,DAC输出要么是3/4 Vref,要么是1/4 Vref,再去和输入比较,确定次高位。以此类推,8个周期后,8位输出全部确定。
这就像用一把可以折半的尺子去量一个长度。尺子先半折、再半折、再半折,每折一次,你就多确定一位。8位SAR的意义在于:它只用了8次比较,就完成了256分之一精度的测量。
我在给新人解释的时候,喜欢让他们手画一张“电压-时间”的台阶图。输入电压是一条水平直线,DAC输出是一级一级逼近的阶梯波,每次不对称度缩小一半,8级之后误差小于一个LSB。画完这张图,SAR的工作原理就刻在脑子里了。
2.2 电容阵列如何把DAC变成ADC的核心
在0.18μm工艺上做SAR ADC,DAC几乎无一例外采用电荷重分布电容阵列(CDAC)。为什么不用电阻分压DAC或电流舵DAC?因为电容阵列在采样模式下可以顺便充当采样电容,转换模式下它自己就是DAC,相当于一个器件干了两份活,功耗和面积天然就有优势。
电容阵列的工作原理可以这样理解:8位阵列由一个二进制加权的电容组合构成,从最高位到最低位,电容值分别是128C、64C、32C、16C、8C、4C、2C、C,加起来总共255C。把最高位的128C看成“半量程砝码”,64C看成“四分之一量程砝码”,以此类推。
采样阶段,阵列顶板(通常连比较器正输入端)连接输入信号,所有底板接公共电压。采样结束后,顶板和输入断开,底板开始按SAR逻辑依次切换。每一次切换,都会在顶板上产生一个电压变化,这个变化量等于对应位的加权电压。以满摆幅参考电压Vref为例,最高位切换带来的顶板电压变化正好是Vref/2,次高位是Vref/4,一位一位叠加上去,顶板电压就逐步向输入信号逼近。
一个常见的理解误区是“DAC输出就是电容上的电压”。实际上,顶板电压的变化来源于电荷守恒。当某一位底板从0切换到Vref时,该电容注入的电荷量Q = C_bit × Vref,这个电荷要分配到整个阵列的总电容上,所以顶板电压增量是ΔV = C_bit / C_total × Vref。正因为是电荷分享模式,电容阵列的总容值、寄生电容、开关导通电阻的时序都会影响最终精度。
我画图说明时用一个手工推导的例子:假设输入Vin = 0.62Vref,MSB切换后顶板电压 = Vin - Vref/2 = 0.12Vref,比较器输出“输入小于DAC电压”,所以MSB=0,DAC最后保持底位状态。这个过程一步一步写出来,比任何教科书公式都直观。
2.3 比较器与逻辑:决定这一步走左还是走右
比较器在这个环路里角色是“裁判”,任何一次判断错误都会直接导致输出码子出错,而且这种误差无法通过后续位数自纠正。8位SAR的判决精度要求比较器能在半个LSB的分辨率下做判断,也就是说它看到约9mV(按Vref=2.4V计算)的电压差,必须给出正确的0/1输出。如果比较器本身有10mV的失调,那么有些码子就会判错。
SAR逻辑则是整个环路的“大脑”。它需要完成两件事:一是按顺序产生每一位的控制信号,二是在每次比较结束后把结果锁存进寄存器,并决定下一个要切换的下一个位。这个逻辑可以全部用标准数字单元实现,前仿真阶段最省事的做法是直接用行为级Verilog写一个理想模型,验证系统时序;确认架构正确后,再替换成晶体管级电路或综合出来的门级网表。
这里必须提醒新手:SAR ADC的性能是“模拟精度”和“数字正确性”的乘积,两个因素任何一个出问题,整体性能都会崩盘。我在初学阶段就犯过这样的错误——模拟部分精心调了半个月,逻辑部分却随手写了一个时序有误差的控制模块,结果瞬态仿真出来的输出码子在最高位直接跳变。这种问题花几分钟就能在波形图上看出来,但往往因为“觉得逻辑不会错”而被忽略。
3. 指标预算:从LSB到系统硬性约束
3.1 LSB、噪声与匹配的量化关系
做任何ADC设计,第一步一定要把“误差预算表”列出来。对于8位SAR,参考电压满摆幅Vref = 2.4V(我采用的是差分架构,单端摆动±1.2V),则1 LSB = Vref / 2^8 ≈ 9.375mV。这意味着所有误差来源的累积值必须控制在约9mV以内。
误差来源主要有三块:电容失配带来的DAC非线性、比较器失调、采样开关的电荷注入与非线性。如果不做校准,这三块的误差是直接相加的。工程上比较常见的做法是把预算分配为:电容失配0.5 LSB,比较器失调0.5 LSB,采样非线性0.2 LSB,其他寄生效应0.3 LSB,加起来约1.5 LSB的瞬态误差,经过统计分布后会有一个成品率的问题,但大致可控。
电容失配和单位电容面积的关系,0.18μm工艺下单位电容的标准差σ(C) ≈ 0.5%/√(C的几何面积)。要达到8位精度,需要单位电容的失配造成的最坏非线性小于0.5 LSB。以最经典的二权电容阵列来看,最高位和其余位之间的匹配最为关键,当单位电容取100fF时,128C对应的就是12.8pF,电容阵列总容值大约25.5pF(差分对),开关驱动和建立时间都在可接受范围内。
热噪声方面,kT/C噪声通常不是8位SAR的主要矛盾。一个10fF电容在300K时的热噪声大约在62μV量级,远小于9mV的LSB。所以你在8位设计里不必像16位SAR那样用大面积采样电容砸噪声,可以把面积留给匹配。
3.2 采样率与时序安排
8位SAR如果目标采样率是1MS/s(百万次每秒),则一个采样周期为1μs。其中采样阶段占半个周期,转换阶段占半个周期。转换阶段里8次比较分布在500ns内,每次比较加DAC建立的时间预算约62ns。这个时序压力在0.18μm工艺下是能够完成的,但并不是白给——动态比较器的再生时间、DAC建立时间、逻辑传播延迟都要逐一核对。
我在最初做时序规划时,会先把各个模块的延迟分别仿真确认,再加起来看是否小于62ns。比较器典型延迟在20~30ns(视输入差分电压而定),DAC建立时间受限于开关导通电阻和电容的乘积,最坏情况下约10~15ns,SAR逻辑的传播延迟约5ns。总和约45ns,留17ns余量。这部分余量非常重要,因为PVT变化会显著改变延迟,我在SS工艺角和125度高温下重新仿真时,各种延迟都会增加20%以上。
还有一个容易忽略的点:采样开关的导通电阻在采样阶段会形成一个RC低通滤波器,采样带宽要足够宽,否则高频输入信号会衰减,等效于失真。对于1MS/s的采样率,采样带宽至少要留5~10倍余量,这样采样保持的建立精度才能达到12位以上,为转换阶段留下余量。
3.3 比较器失调该控制在什么量级
比较器失调(offset)是所有模拟设计师最先遇到的头疼事。动态锁存比较器没有预放大器的情况下,失调典型值可能达到10~30mV,对于9.375mV的LSB来说,这几乎是灾难性的。
控制失调有两条路线。第一条是用预放大级加锁存级的经典结构,预放大级的增益约5~10倍可以显著减小等效输入失调。第二条是用电路级校准。8位设计我不建议直接上复杂的后台校准,最实用的是在比较器输入端加一组可调电容阵列,先通过校准模式确定失调码,再用数模切换把失调打掉。
我在这个设计里采用的是比较器输入管尺寸折衷加版图共质心匹配的策略。输入管长宽比选大尺寸以减小Vth失配,差分对采用交叉耦合共质心指状布局,最终前仿失调约4mV,蒙特卡洛500次仿真的3σ值约8mV。这已经逼近0.85LSB,紧凑但可用。如果做得更稳妥,可以加一组2位校准电容,把失调调到1 LSB以内,后面我会在模块设计小节里展开讲。
4. 模块设计实战:一版可用的原理图细节
4.1 电荷重分布DAC与单位电容选取
我设计的这个8位SAR ADC采用差分架构,采样率1MS/s,参考电压Vref=2.4V,电源3.3V。整个电容阵列采用电荷重分布结构,单位电容C取100fF。为什么选100fF而不是更小的50fF?因为50fF的单位电容在0.18μm工艺的标准MIM层里面积太小,匹配和寄生占比都不好控制。100fF既保证匹配,又不会让总面积膨胀太多,单端阵列总容值25.5pF,差分对总共51pF,这在版图上是可以接受的面积。
DAC开关的接法,我采用的是顶板采样(top-plate sampling)方案。采样时顶板连比较器输入,底板接VCM;转换时,按SAR逻辑把各位底板依次切到Vref或GND。顶板采样有一个好处:输入信号直接采到电容顶板,不经过DAC开关,开关的非理想效应不会直接污染采样值。缺点是对顶板节点的寄生比较敏感,所以版图上顶板走线要非常小心,不能让它对上/下极板耦合出太多寄生。
为了减小底板的寄生电容影响,各位电容的底极板开关我用了CMOS互补传输门,导通电阻控制在200Ω以内。这个数值的确定逻辑是:最大电容位是12.8pF,时间常数τ = R_sw × C_bit = 200Ω × 12.8pF = 2.56ns。DAC建立要求在0.5 LSB以内,经验上需要约10个τ,也就是25.6ns。这在62ns的周期预算里是留有余量的,何况最高位C在切换一个周期后就不再变动,实际最紧的其实是次高位切换。总之,200Ω这个量级给我留够了安全裕量。
4.2 自举采样开关的结构与设计理由
采样开关大概是被新手低估最严重的一个模块。很多人随手拿一个NMOS开关就上去了,结果仿真INL烂得一塌糊涂还找不到原因。问题在于简单MOS开关的导通电阻随输入电压变化——输入接近VDD时NMOS电阻飚升,导致采样保持的电压和理想值之间出现与输入相关的误差,这种误差本质上就是谐波失真。
解决的经典方法是自举开关(bootstrapped switch)。它的核心思想是让开关管的栅源电压保持恒定,这样导通电阻就不随输入变化了。具体结构是用一个电容在采样阶段存住VDD,转换阶段把这个电容跨接在开关管的栅和源之间,栅电压就被“举”到VDD + Vin,开关管的Vgs始终约等于VDD,导通电阻几乎恒定。
自举电容我取的是1pF的线性电容,开关管尺寸取W/L = 4μm / 0.18μm。采样带宽的目标是在500ns内把12位精度的信号建立好,也就是误差小于0.1LSB,对应的3dB带宽最好在50MHz以上。实际仿真的导通电阻约120Ω,采样电容约25.5pF,时间常数约3μs吗?不对——这里我必须纠正一个常见的混淆:自举开关的导通电阻与负载电容结合形成的时间常数,应该是120Ω × 25.5pF = 3.06μs。这远远超过500ns的采样窗!所以单靠采样窗口内开关直接导通是无法在500ns内充满25.5pF的。
这里就是新手最容易踩的重爆点:采用顶板采样结构时,输入信号不需要通过开关给25.5pF充满电。顶板采样的关键是把VIN直接接到电容顶板,不需要通过开关给整个阵列充电。实际上采样阶段是底板连VCM,VIN直接驱动顶板,开关只是用来隔离VIN和比较器输入节点。真正需要充电的只是采样开关到比较器之间的小寄生节点和跟随器(如果有的话)。因此前面的时间常数计算并不适用。
更准确地说,顶板采样结构里几乎没有在采样窗口需要充电的大电容,这一点正是它速度快的原因之一。而传统底板采样结构才是信号通过开关对整组电容充电,那个情况下才要考虑RC建立时间。我特意把两种采样方式的区别写在这里,属于实战中真正决定成败的结构选择。
4.3 动态比较器的晶体管级设计
比较器我选择的是经典的双锁存动态比较器,也就大家常说的StrongARM结构。它的优势是没有静态功耗、速度快、结构紧凑,单级就能提供较强的正反馈再生增益。电路结构大致是:一对PMOS负载交叉耦合、一对NMOS交叉耦合、一对输入差分对、一个尾电流开关管,以及复位管。
设计比较器时,首要权衡的是噪声和速度。输入差分对管尺寸增大,等效输入噪声减小,但栅电容增大会降低比较速度。我在设计中输入对取W/L = 6μm / 0.18μm,尾电流源取2μm / 0.18μm,电源3.3V。仿真结果在0.5 LSB输入差分电压(约4.7mV)下,锁存输出时间约28ns,等效输入噪声约0.25mV,失调蒙特卡洛3σ约7mV。28ns稍微偏慢,但能满足62ns的单周期预算,而且更大的尾电流会增加功耗和回踢噪声,在1MS/s下没有必要。
回踢噪声是动态比较器另一个容易忽略的问题。比较器输出翻转瞬间,内部节点的电荷会通过输入管栅漏电容耦合回DAC顶板,形成一个毛刺。这个毛刺如果落在DDAC建立的关键时刻,会污染比较器的下一次判决。解决方法有三个:一是在比较器输入端加一个小尺寸的预充电电容吸收回踢;二是在DAC顶板和比较器之间串一个小电阻;三是把比较器的打断时刻设置在DAC切换完成后、顶板电压完全稳定时。我用的主要是第三条——时序上拉开比较决策和DAC切换的间隔,在60ns的周期里前半段切换DAC,后半段再触发比较器。
4.4 SAR逻辑与控制时序生成
SAR逻辑是数字域和模拟域的交界面,也是最容易出现信号完整性问题地方。我采用环形移位寄存器加并行控制的结构来产生8个控制信号。每个周期一开始,一个“1”在移位寄存器中向前移动一格,它把前一位的比较结果送入锁存器,同时触发下一位对应的DAC底板开关切换。这样理解起来非常直观,调试也方便。
控制信号产生的时序有一个关键细节:触发器必须在比较器输出完全稳定之后才采样,否则会把亚稳态值锁进去。在实际仿真中,比较器输出经过带反向器的锁存级后,给出干净的数字边沿还需要约10ns的传播延迟。如果SAR逻辑的时钟边沿和比较器时钟边沿相同,可能出现竞争冒险。我这里的做法是让SAR逻辑的控制时钟比比较器触发时钟延迟了约15ns,用一个可变的内部延迟链实现。具体延迟值通过仿真迭代确定,从15ns到20ns都能正常工作,最终取中央值18ns。
另外,SAR逻辑里所有数字门都用标准库,但在版图上要把这些数字模块放在模拟核心区的下风向,并且加隔离环。数字电路的开关噪声通过衬底和电源网络会传导到模拟节点,如果你把数字模块紧贴比较器,后仿和陈硅片测试都会出现毛刺性误码。我在第一次版图迭代中就是因为这个吃了亏,后仿DNL从0.6LSB恶化到2.1LSB,重新布局才解决。
4.5 为什么要在环路里留出“余量”
这是我想对所有新手强调的一点:环形SAR系统是一个有反馈的时序系统,各个模块的延迟不是独立的。采集阶段的采样时间变了,DAC建立时间跟着变;DAC建立不充分,比较器判决误差就增加;比较器变慢,SAR逻辑下一次切换就落后。这些效应互相耦合,所以设计时必须留出足够的余量。
我会建议新手的余量策略是:所有子模块的最慢工况下,总延迟不超过周期预算的70%。这意味着如果单个比较周期是62ns,那么用SS工艺角、125度高温、最低电源电压条件去仿真时,整个环路延迟必须控制在43ns以内。这样做虽然会让正常工艺角下系统显得“太慢”,但换来的是全温度、全电压范围内的稳定工作。这个经验是我后来做量产级芯片时才深刻体会到的——实验室里快一点慢一点都能出结果,但真正投片后PVT分布会让余量不足的设计大面积出废片。
5. 仿真验证:千万别只看眼图差不多的波形
5.1 瞬态仿真与DNL/INL提取
原理图设计完成后,第一步是跑一个完整的逐次逼近过程瞬态仿真,观察比较器输出波形是否为一条稳定的阶梯逼近曲线。如果这一步就出现毛刺、回跳或失码,基本可以断定是时序问题,不需要做进一步分析。
更严格的验证是给ADC加一个满量程正弦波输入,跑足够长的时间让转换码子覆盖所有码值,然后收集输出码直方图,用统计方法算出每个码字的出现次数,再换算成DNL(微分非线性)和INL(积分非线性)。对于8位ADC,正弦波峰值需要超过满摆幅的95%,才能保证每个码字都有足够的采样次数;采样点数建议不少于65536 × 码字数,也就是至少要跑出16,000,000个以上转换周期。当然在仿真器里跑这么多个周期会非常慢,我通常先用快斜坡输入做粗测,确认功能正常后再用正弦波做正式统计。
我这边最终实测性能(前仿)结果如下:DNL最大值0.55LSB,INL最大值0.83LSB,整体码字无失码。这个结果对8位来说是合格偏优的,说明电容阵列的匹配和比较器的性能是够的。
5.2 PVT组合与蒙特卡洛筛选标准
PVT指工艺角、电源电压、温度的联合变化。0.18μm工艺通常有五个标准工艺角:TT、FF、SS、FS、SF。加上温度(-40、27、85、125)和电源电压(3.0、3.3、3.6V),组合数量很多。我建议精测组合至少覆盖:TT/27/3.3(基准),SS/125/3.0(最慢最差,时序压力最大),FF/-40/3.6(最快最强,可能出现毛刺和串扰),以及其各自的两个极端。
每个组合下都跑一遍正弦波DNL/INL测试,如果最差情况下DNL仍小于0.8LSB、INL小于1.2LSB,就基本稳了。我实测最差组合(SS/125/3.0)下DNL约0.72LSB,INL约1.0LSB,仍然合格。
蒙特卡洛仿真是用来验证工艺随机失配对性能的影响。比较器失调和电容匹配是最需要跑蒙特卡洛的部分。我跑500次比较器失配仿真,得到的3σ失调约8mV,码字未出现大于1LSB的跳变。DAC电容失配的蒙特卡洛结果通常比比较器乐观,因为8位DAC的容差对失配容限较大。
5.3 新手常犯的三个仿真错误
第一个错误:比较器亚稳态仿真没做。比较器的判决时间随着输入差分电压趋近于0而无限增长。如果输入恰好落在两个相邻码的边界上,比较器可能在一个周期内无法输出稳定结果。仿真时要在输入上故意加接近边界的直流值,观察比较器是否在周期结束前完成翻转。我的应对是给比较器加了一个复位网络,确保每次采样前比较器输出被清零到复位状态,避免历史状态残留。
第二个错误:仿真里使用了理想电压源的“理想开关”行为。有些人为了验证算法,直接把DAC开关用理想电压控制,不导通电阻,不设电荷注入,得到非常漂亮的波形。但在实际电路里,开关的电平相关性、栅极电容耦合、亚阈值导通都会影响精度。所以我的建议是从一开始就使用晶体管开关模型,哪怕初期性能很惨,也要让它惨得真实。
第三个错误:没有检查比较器回踢噪声效应。回踢噪声在频域上表现为输出码的特定模式误差,如果在直方图统计时看到INL在MSB翻转附近出现规律性突起,多半就是回踢噪声在作怪。我曾经排查了半天电容匹配,最后发现竟然是回踢噪声引起的。解决办法是调整时序,让DAC顶板在比较器翻转前有足够时间重新稳定,或者在比较器输入端并联一个小电容增大“刚性”。
6. 版图设计:SAR真正拉开差距的地方
6.1 电容阵列的匹配布置策略
原理图仿真再漂亮,版图画不好一样会翻车。SAR ADC的版图核心永远是电容阵列的匹配。8位二元加权阵列的匹配策略一句话总结:把最高位的两个“大块头”做成对称居中,然后让其余位围绕它们做共质心布置。
我采用的方案是把电容阵列分成四个象限,最高位以128C为单位,拆成若干小块。所有小块以中心对称的方式排列,并用dummy电容包围整个阵列,保证边缘效应一致。相邻金属层的走线也会影响电容值,所以所有电容上方走线要避开,尤其是顶板节点。顶板节点是SAR里最敏感的节点,我把它放在最高层金属走线,并加了完整的地屏蔽。
另一个关键点是双差分结构中的“拉链式”布局。正端和负端电容交错排列而不是各占半边,这样共模梯度、热梯度和工艺梯度对正负端的影响是相同的。如果你把正端电容放左边、负端放右边,工艺梯度会让正负端的匹配产生系统性偏差,INL可能出现抛物线上翘。
6.2 寄生、走线与电源完整性
在0.18μm工艺上,电容电极到衬底的寄生电容通常在5%~10%左右。这个寄生如果不对称,会直接造成DAC差分增益误差。我采用的措施是让所有电容底极板的寄生保持对称,并在版图上加一层虚拟接地金属环,把寄生电容拉到相近的参考电位,而不是让它们浮空。
走线的电阻也不容忽视。开关驱动信号线如果过长,RC延迟会让各位开关的切换时刻出现时间偏差,DAC建立时间就会恶化。我的处理是让开关控制线从数字区树状扇出,每条线的长度差控制在50μm以内,并且走偶数层与奇数层搭配,减少交叉耦合。
电源完整性和地弹噪声同样要紧。比较器和数字逻辑共享电源时,每一次逻辑翻转都会在电源线上产生毛刺。我用了两个独立的电源域:模拟比较器和DAC用AVDD,数字逻辑用DVDD,两个电源域只在版图边缘用一个小铜线桥相连。同时模拟电源和地上布置了多个去耦合电容,取值从皮法到几十皮法不等,覆盖不同频段。
6.3 后仿提取与迭代收敛
版图画完,DRC和LVS通过后,进入寄生提取与后仿真阶段。这一步是新手最容易感到挫败的地方——前仿DNL0.55LSB,后仿可能直接跳到1.5LSB。别灰心,这是正常的“从理想跌回现实”的过程。
我第一版版图的后仿结果是DNL1.1LSB,INL1.6LSB,虽然还能工作,但余量明显不够。排查后发现主要问题出在顶板走线的寄生电容过大,达到了3.2pF,把DAC单位电容的等效值都改变了。把顶板走线从底层金属改到顶层金属后,寄生降到0.6pF,后仿DNL回到0.7LSB。
后仿提取时也要注意提取方式的选取。只提取RC网络而不提取电感,对低速SAR是合理的;但提取时要保留对地电容和耦合电容的详细模型,否则优化结果没有意义。跑后仿DNL/INL的时间比前仿长很多,大约需要前仿的3~5倍,但这一步绝不能省。我见过有人在版图完成后直接跳过寄生提取,结果流片回来一批芯片性能严重离散,最后追查才发现是顶板寄生电容和开关的失配,但这种教训成本太高了。
7. 这些坑我替你先踩了:设计心得与后续扩展
7.1 新手最容易忽略的三个细节
第一个细节:参考电压源的模型。很多人仿真时直接给一个理想电压当Vref,但实际上片外提供的参考源有一定输出阻抗和带宽。参考源在DAC切换瞬间需要提供瞬态电荷,如果参考引脚上的去耦电容不够,Vref会产生摆动,直接变成转换误差。我的做法是在片内在参考引脚到DAC底板之间加一个RC滤波网络,用几十皮法的MIM电容做局部去耦。
第二个细节:ESD保护对输入信号的影响。芯片引脚上的ESD二极管在正常操作时反向偏置,漏电流虽然很小,但会形成一个与输入相关的分压效应。这个问题对8位而言通常在可忽略范围,但如果输入源阻抗很高,就必须把ESD漏电流计入静默预算。我在这版设计里给输入加了简单的ESD结构,并在数据手册里注明建议外部驱动源的输出阻抗不超过10kΩ。
第三个细节:测试与封装寄生的预评估。很多新手流片成功后在实验室测出INL比仿真差很多,结果发现是封装引线电感和测试板走线导致的。做版图时就应该把可能的封装寄生先在仿真环境里加上,用一根等效的50nH电感和100fF电容包住输入引脚,看看性能还能不能撑住。8位SAR对高频时钟噪声的免疫能力有限,测试板上的布局布线如果不够讲究,性能会被白白吃掉。
7.2 从8位进阶到10位/12位的路径
把8位SAR做透之后,往10位甚至12位提升是一个自然延展,但路径不是简单地“把电容个数加倍”就行。随着位数增加,比较器噪声和失调、DAC匹配、采样开关的非线性都会变成更大的制约。
10位SAR常用拆分电容阵列和单位电容拆分法,把MSB拆成多个子块,配合共质心匹配来降低DNL崩溃的风险。12位SAR则通常需要引入前台校准甚至后台校准,去校正DAC电容失配;比较器也必须加预放大或自动调零,因为单纯靠尺寸折衷已经压不住失调。另外一个关键变化是采样开关要做得更“工整”,要么用更复杂的自举结构,要么直接做电容缩放,把采样噪声压到亚LSB水平。
我的建议是:8位做出来后,不要急着改架构,先用同一个流片机会把测试方案跑熟。把实验室的测试环境搭好,学习怎么用一台高精度万用表和信号发生器测出真实的DNL/INL,这个经验比多画一次版图更有价值。你只有从8位芯片的实测里知道仿真和现实的偏差是多少,才有资格去做10位以上的设计。
7.3 工程师资源与成品文件使用方式的说明
这一版设计是根据多位工程师的实际项目经验整理出来的完整流程分享,芯片本身涵盖了从原理图到版图的全套设计数据,但具体的设计文件通常没法开源共享。你可以把它当成一份“带路图”,按照我上面拆解的模块设计顺序,一步步在自己的工具环境里搭建和仿真。因为8位SAR的原理教科书上都有,真正难的不是看懂原理,而是在0.18μm工艺上处理抖动的开关时序、版图匹配和后仿提取。
如果说今天这篇流水账里只能记住一句话,我希望是:SAR ADC不是一个“模拟电路”,它是一个模拟外壳包着数字内核的混合信号系统,真正的难度在于让模拟精度和数字时序在同一个硅片上互相容忍。你把这个设计完整走一遍,动手画过每一根走线、看过每一个波形、调过每一次时序,再回来看教科书上的公式,会发现整个算法都在你的芯片里呼吸起来。
最后分享一个小技巧:我调试SAR时有个习惯,先在系统级仿真里把每一条控制信号的时间波形都列出来,和DAC底板的切换波形放在同一张图里。哪一位该切没切,哪一位切重了,一眼就能看出来。这种“先看时序图再猜原因”的习惯,几乎解决了我所有调不出结果的项目。希望你也能在8位SAR上建立这种直觉。