☰
0.18µm工艺10bit SAR ADC设计实战:ENOB 9.8指标拆解与版图验证
2026/10/3 12:55:20 网站建设 项目流程

前阵子把一颗基于 SMIC 0.18µm 工艺的 10bit SAR ADC 完整设计流程走完,最终前仿 ENOB 做到了 9.8,离理想值还差 0.2bit左右。这个结果放在 0.18µm 这个工艺节点上,算是比较扎实的成绩,关键是整个设计过程没有靠“调参碰运气”,而是把每一项指标都拆开算明白了。如果你正在做 ADC 相关的课设、项目,或者刚入职接触 SAR ADC,这篇内容可以拿来当一份实战参考。我会从指标拆解、核心模块设计、Cadence 环境里的工艺库挂载、ENOB 仿真到版图后仿验证,完整串一遍,最后把所有踩过的坑整理成清单,尽量让你少走弯路。

做 SAR ADC 这件事,真正难的不是懂原理,而是把原理落到具体工艺和具体电路上:单位电容取多少、比较器噪声控制在什么量级、采样开关要不要做自举、版图寄生怎么压,这些细节直接决定 ENOB 能不能到 9.8。这篇文章不堆理论,只讲实际设计过程中怎么决策、怎么算、怎么验证。

1. 项目定位与指标拆解:先别急着画schematic

很多新手拿到“10bit SAR ADC”这个题目,第一反应是打开 Virtuoso 开始画电路。这个顺序基本是错的。正确的做法是先做指标拆解,把所有误差源换算成 LSB,分清楚每一项预算,再回头决定电路怎么画。

1.1 为什么选SAR架构:速度、精度、功耗的三角权衡

SAR ADC 在中等速度、中等精度区间几乎是天然选择。10bit、几十 MS/s 这个范围,流水线做到这个指标当然也可以,但功耗和面积代价明显更大;过采样型 ADC 在这个速度下又要消耗大量数字滤波资源;闪存型更不用说,256 个比较器直接劝退。SAR 只需要一个比较器和一个电容阵列,数字逻辑为主,天然适配先进工艺下数字部分越来越便宜的趋势,这也是为什么从工业检测到无线终端,SAR 始终占着重要位置。

回到项目本身,SMIC 0.18µm 工艺能提供的模拟性能其实相当不错。1.8V 电源电压,MIM 电容密度和匹配性都够用,MOS 管的 flicker noise 比更先进节点反而好控制,这对低频高精度应用是加分项。速度上做到 50MS/s 左右在这个工艺下需要花点心思,但 10MS/s 到 20MS/s 是完全没有压力的。所以我最终把采样率定在 20MS/s,留出余量去做校准和数字逻辑优化,这样整个系统更好收敛。

1.2 从ENOB 9.8倒推:SNDR、失配、噪声都要分账

ENOB 9.8bit 看起来只是比 10bit 少 0.2,但这个数字非常诚实。先算一下对应关系:理想 10bit 的 SNDR 是 6.02×10 + 1.76 = 61.96dB;ENOB 9.8 对应的 SNDR 大约是 9.8×6.02 + 1.76 = 60.76dB。也就是说,整个信噪失真链路上能够容忍的总恶化只有不到 1.2dB,各种误差源加在一起只能吃掉这么多。

这个预算要往细了分。量化噪声在理想情况下是 1/√12 LSB rms,这是不能省的;采样热噪声也就是 KT/C 噪声要控制在 0.5 LSB rms 以内;电容失配引入的 DNL/INL 会直接表现为谐波和杂散,通常要控制在 0.5 LSB 以内;比较器失调和噪声也要压到 0.5 LSB 以下;时钟抖动在高频输入下还会额外贡献噪声。每一个 0.5 LSB 看起来宽松,四个叠在一起就非常紧张了。

所以在动手之前我专门做了一张误差预算表,把每个模块能占多少噪声和失真写清楚。比如 LSB 电压值是 1.8V / 1024 ≈ 1.76mV,那么 0.5 LSB 就是 0.88mV。比较器输入等效噪声我就按 0.3 LSB 控制,留出余量给后仿寄生。这个做法强烈推荐大家学习,不要凭感觉。

1.3 SMIC18工艺库能给你什么、不能给你什么

工艺库决定了设计的上限。SMIC18 这个 PDK 本身提供的器件很完整:1.8V Core MOS、3.3V IO MOS、MIM电容、MOM电容、多晶电阻、各类二极管和ESD器件,基本上一个完整 ADC 需要的所有元件都能找到。

但工艺库不会替你做决定。MIM 电容密度是多少,单位面积失配参数大概什么水平,顶层金属的方块电阻,这些参数不会直接写在你眼前,需要去查 PDK 文档或者跑匹配性测试。我实际用下来,SMIC18 的 MIM 电容匹配性在 10bit 级别是够用的,但单位电容如果选太小,边缘效应和光刻偏差占比就会上升,失配就压不住。这个矛盾在 0.18µm 上特别明显,单位电容通常不能做得像 28nm 那么小。

另外要提醒,工艺库里的模型文件有自己的适用范围和仿真温度范围,不要拿到一个 corner 模型就全线都用。后面我会专门讲 Cadence 里应该怎么挂载和选择模型。

2. 核心电路模块设计:CDAC、比较器和采样开关的设计思路

SAR ADC 的核心就是三个模块:CDAC 电荷重分配电容阵列、动态比较器、自举采样开关,剩下就是实现逐次逼近算法的数字逻辑。这三个模块互相牵制,任何一个拖后腿,ENOB 都会直接掉。

2.1 CDAC的值怎么定:单位电容与总电容

CDAC 的设计是 SAR ADC 最关键的一步。一个 10bit 二进制加权阵列,如果完全不分段,总电容就是 2 的 10 次方乘以单位电容。假设单位电容取 25fF,总电容就是 25.6pF,面积大不说,驱动它的前级电路也很难做。所以工程上几乎都会用分段结构,把高几位和低几位分成两个子阵列,中间用耦合电容连接。

这个项目里我采用的是高 5 位加低 5 位的分段结构。单位电容我最后定在 80fF,整体顶板等效采样电容大约 2.56pF。这个值是算出来的,不是拍脑袋定的。采样热噪声的公式是 KT/C,室温下 K 乘 T 大约是 4.14×10⁻²¹ 焦耳,除以 2.56pF,得到电压噪声功率约为 1.62×10⁻⁹ V² ,开根号后噪声 rms 大约 0.4mV,正好小于 0.5 LSB 的 0.88mV。如果再加大电容当然噪声更低,但面积和前端驱动压力都会变大。

单位电容 80fF 还有一个好处:SMIC18 的 MIM 电容在这个尺寸下的失配参数足够支撑 10bit 精度。太小了匹配性差,太大了面积浪费,80fF 是我批量扫描了失配模型之后确定的平衡点。电容阵列的开关控制也有讲究,高 5 位直接接 Vref 或者 GND,低 5 位经过耦合电容等效到顶板,上极板统一接到比较器输入端,这样电荷重分配的线性度才有保障。

2.2 比较器设计:动态锁存加失调校准

比较器是 SAR ADC 里面最容易拖后腿的模块。动态锁存比较器功耗低、速度快,但失调电压和回踢噪声需要单独处理。10bit 精度下比较器输入失调要控制在 0.5 LSB 以内,也就是 0.88mV。动态比较器如果不做任何校准,失调随工艺偏差能跑到十几毫伏甚至几十毫伏,完全不可接受。

我的做法是输入对管加大面积来压低随机失调,同时加入一个开关电容失调校准网络。比较器的回踢噪声同样不能忽视,锁存器翻转瞬间会把电荷反灌回 CDAC 顶板,影响比较结果。为此我在比较器输入和锁存级之间加了一级前置放大器,既能抑制回踢,又能提供额外增益,帮比较器降低输入等效噪声。

比较器的噪声也做了严格约束。在比较判决之前,CDAC 顶板上的电压需要建立到足够精度,比较器必须在设定的比较窗口内做出正确判断。动态比较器的噪声主要来自输入管热噪声,通过增大输入管跨导和降低比较器输出节点电容,最终把等效输入噪声压到了 0.3 LSB 以内。这个指标在 ss corner 下也能满足,没有靠运气。

2.3 采样开关:自举开关的必要性

很多人在 SAR ADC 设计中容易忽略采样开关的线性度,然后发现谐波很大、ENOB 上不去。原因很简单,普通 CMOS 开关的导通电阻随输入电压变化,在采样电容上会产生与输入相关的非线性电荷,这直接变成采样失真,而且这种失真靠后级校准很难完全修正。

解决思路就是自举采样开关。它的核心思想是把开关管的栅源电压 Vgs 保持恒定,让导通电阻不随输入信号变化。栅压直接自举到输入信号加一个固定的 VDD,这样采样开关就像一根线性电阻,THD 指标会明显改善。这个技巧在 SAR ADC 里几乎是必选项,只要采样精度要求超过 8bit,建议直接上。

自举开关还有两个细节值得注意。一是开关管沟道注入效应,采样管关断瞬间沟道里的电荷会注入采样电容,造成采样值偏移,这个可以通过在采样管旁边加 dummy 管来抵消;二是采样时钟的抖动,输入信号频率越高,时钟抖动带来的噪声越大,所以在版图上要把采样时钟走线缩短、加屏蔽,把抖动压到皮秒级。

3. Cadence环境和工艺库挂载:把PDK跑起来再谈设计

电路设计之前,先把仿真环境准备好。Cadence Virtuoso 配合 SMIC18 PDK 是这套流程的标准组合,很多人卡在第一步的往往不是设计本身,而是工艺库怎么导入、模型怎么选、仿真时为什么报错。

3.1 工艺库挂载流程:Library Path与config

拿到 SMIC18 工艺库之后,第一步是在 Cadence 里创建 library,然后把 PDK 提供的各种 view 关联进去。最常见的错误是直接复制 PDK 目录,然后发现 schematic 和 layout 对不上,或者跑仿真时找不到模型。正确做法是在 Library Manager 里新建 library,选择 attach 到现有 PDK,把 smic18 的 display 文件、techfile、各种 CDF 参数一次性关联好。

接下来要把模型库路径写进仿真环境。很多人用 ADE L 或者 ADE XL 时,模拟库都能跑,但数字库或者 IO 库的路径经常漏掉。SMIC18 的数字标准单元库通常是一堆 Verilog 或者 Liberty 文件,如果你要做混合仿真,需要单独把数字库加到 hdl 路径里。我习惯在仿真开始前把 cds.lib 文件全部检查一遍,谁依赖谁、路径对不对,都有了,再启动 Virtuoso 会省很多事。

另外,如果你用过 TSMC18rf 这类类似工艺库,会发现挂载流程和 SMIC18 没有本质区别,都是把 PDK 的 techfile、模型文件、参数化单元配置好,区别只在具体文件名和模型调用名上。工艺库安装本身不是难度,难的是后续模型选择不犯错。

3.2 Corner与模型文件选择:别用错corner

SMIC18 的模型文件里通常包含 tt、ss、ff 等典型 corner,以及温度变化范围。仿真的第一课就是不要只用 tt,也不要全程用 ss。SAR ADC 的关键指标在不同 corner 下表现差异很大,比如比较器的速度在 ss corner 下可能下降 20%,采样开关的导通电阻在 ff corner 下反而可能因为过驱动太大出现问题。

我的做法是分成两轮。第一轮全部核心模块用 tt corner 快速验证功能,把逻辑跑通;第二轮把全电路放到 ss、ff、tt 三个 corner 下分别仿真,温度取 -40、27、125 三档。这样能快速暴露哪些模块是短板,尤其是比较器速度和 CDAC 建立时间这两个点。如果某个 corner 下 ENOB 明显掉,优先检查是不是比较器没有足够时间完成判决。

还有一点,仿真器里模型选择要对应你实际流片时用的 mask 层。SMIC18 有不同金属层数版本,如果你用的是 1P6M,但模型里选了 1P4M 的寄生参数,后仿一定会出现偏差。这个细节平时没人提,但能直接导致前仿和后仿不一致。

3.3 ENOB仿真:瞬态采样与FFT处理

ENOB 不是仿真器直接给你的,你需要对瞬态输出做 FFT 处理。最干净的方法是相干采样,也就是让输入频率和采样频率满足整数倍关系,且采样点数取 2 的 N 次方。具体来说,我做 20MS/s 采样率,采样点数 N=4096,输入频率选一个与采样率互质的倍数,比如 Fin = 20MHz × 257 / 4096 ≈ 1.255MHz,这样频谱不会出现泄漏,不需要加窗函数也能直接做 FFT。

瞬态仿真时间其实是 204.8µs,在 Spectre 里全电路跑这么长时间,速度会比较慢。我一般会把数字逻辑简化成 Verilog-A 行为模型先跑功能验证,确认算法逻辑没有错,再换成真实的数字标准单元做全电路联合仿真。这样既能保证精度,又能节省时间。

FFT 处理完成后,从频谱里读出信号功率、总谐波功率、总噪声功率,SNDR 就是信号功率除以噪声加谐波功率的和,ENOB 通过 SNDR 换算得到。这里有个坑,FFT 点数太少会把噪声折算得不准确,最少也要 1024 点,我自己实验下来 4096 点比较稳定,如果更高当然更好,就是仿真时间变长。

4. 版图设计与后仿验证:前仿再好也要过寄生关

前仿 ENOB 做到 9.9 不算难,难的是版图后仿还能保持在 9.5 以上。SAR ADC 是一个对寄生极其敏感的电路,尤其是 CDAC 顶板、比较器输入端、采样开关这三个地方,任何多余电容都可能改变整个系统的行为。

4.1 电容阵列布局:共质心与dummy

CDAC 的版图决定了一个 SAR ADC 的线性度能否兑现。电容阵列必须采用共质心布局,让工艺梯度误差对所有电容的影响尽量一致。普通二进制加权阵列里,最大电容和最小电容相差 32 倍,如果布局不对称,光刻和刻蚀造成的偏差会直接变成 INL,在频谱上体现为高次谐波。

标准做法是把电容分成方形阵列,每个单位电容周围放 dummy,保证边缘环境一致。SMIC18 的 MIM 电容有上下极板之分,上极板寄生对比较器输入端的影响比下极板严重得多,所以我在版图里尽量把上极板做成一个共享节点,减少走线长度。所有连接到比较器输入端的金属线都要加地屏蔽,防止相邻信号串扰。

还有一点容易被忽略:电容阵列下方的衬底噪声。SMIC18 的衬底是重掺杂的,数字逻辑翻转时会产生衬底电流,耦合到电容阵列下极板,表现为噪声。我的做法是在电容阵列下方加隔离环,并且把模拟地单独走线,不跟数字地共用。

4.2 后仿流程与性能回调经验

后仿我用的方法是抽取 R+C+CC 参数,然后在 Spectre 里读回去。抽寄生之前要先做 DRC 和 LVS 检查,否则抽出来的寄生存在连通性问题,后仿结果就没有意义。抽寄生时特别关注 CDAC 顶板的寄生电容,这部分会直接叠加到采样总电容上,改变电荷分配比例,从而引入增益误差。

后仿结果通常比前仿掉 0.2 到 0.4 个 ENOB,这是正常范围。如果掉得更多,优先检查三个地方:一是采样开关的寄生电容,二是比较器输入端到 CDAC 顶板的连线寄生,三是时钟树的偏斜。这三个点是最容易出问题的地方。我在后仿阶段就踩过一个大坑,CDAC 顶板寄生电容比预期多了 100fF,导致比较器看到的电荷分配发生了变化,后仿 SNDR 直接掉了 3dB,后来通过缩短顶板互连和调整单位电容补偿才拉回来。

后仿叠加 corner 也非常必要,我通常会把后仿寄生文件分别放到 tt、ss、ff 三组模型下跑,看 ENOB 的分布范围。如果某个 corner 掉得特别厉害,就要回到前仿阶段重新调整设计余量,不要指望后仿来救你。

5. 调试实录与避坑清单

设计做完之后,我把整个过程中遇到的高频问题按现象、原因、解决方法整理成了一张表。这些问题有一些是 SMIC18 工艺下的特殊毛病,有一些是 SAR ADC 的共性问题,希望你能直接对照排查。

5.1 高频问题排查表

现象可能原因解决方法
FFT 中三次谐波明显偏大采样开关非线性,或 CDAC 上极板寄生随输入变化改用自举开关,缩短顶板走线,加屏蔽
DNL/INL 在中间码附近跳变分段电容阵列的耦合电容失配或寄生不对称耦合电容取整倍数,周围加 dummy,重新提寄生
ENOB 在 ss corner 下降明显比较器速度不够,建立时间不足加大比较器电流,缩小输出节点电容,检查时钟时序
后仿比前仿掉 0.3bit 以上CDAC 顶板寄生过大,或比较器回踢噪声加剧优化顶板连线,加前置放大器,重新评估单位电容
采样值整体偏移,但线性度还可以输入管沟道电荷注入,或自举开关 dummy 失配加 dummy 管,调整采样管尺寸,减小注入电荷

这几类问题基本覆盖了 SAR ADC 设计 90% 的返工场景。遇到问题先看表格,往往比从头查电路效率高得多。

5.2 几个让我印象深刻的坑

第一个坑是分段电容的耦合电容太理想化。前仿时我用理想电容建模,一切正常,换成 PDK 里的 MIM 电容后,中间码的 INL 立刻变大。原因是耦合电容两侧的寄生不一致,破坏了电荷分配关系。最后的解决办法是把耦合电容也做进共质心阵列,而不是单独放在旁边。

第二个坑比较隐晦,是电源电压的选择。SMIC18 有 1.8V core 和 3.3V IO 两种电源,模拟核心电路我用了 1.8V,但一开始给自举开关的电荷泵供电直接接了 3.3V,导致采样管栅氧化层承受的电压超出了安全范围,可靠性在高温下严重下降。后来改成所有自举相关电路都用 1.8V 域,虽然开关导通电阻稍大一点,但可靠性高很多。

第三个坑是仿真环境的临时目录。后仿抽取出的寄生网表非常大,Spectre 在默认临时目录下跑,经常因为磁盘空间不足直接中断。这个问题低级但杀伤力极强,强烈建议在仿真前把 temp 目录指到足够大的空间,并且定期清理旧仿真文件。

最后说一点个人体会。做 SAR ADC 最怕的不是不会画电路,而是指标拆不细。ENOB 能到 9.8,背后是每一项噪声、失配、时序都算到了位,而不是靠调参碰运气。先把误差预算表做出来,把工艺库和仿真环境跑顺,再谈电路优化。SMIC18 这个节点虽然不算先进,但做 SAR ADC 是非常好的实战平台,一套流程走通之后,换到更先进工艺只是换 PDK、重新评估寄生和失配的问题,方法论完全通用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询