模拟IC设计,sar adc电路,基于smic.18工艺,10bit,异步结构,上极板采样,适合入门学习,比较器为高速异步clk。 有说明文档可以参考,可以直接导入到cadence查看仿真。
最近在smic18工艺上搓了个10bit异步SAR ADC,上极板采样结构对新手特别友好。这个设计麻雀虽小五脏俱全,尤其适合想摸清ADC底层逻辑的兄弟。咱们直接上干货,先看看核心模块怎么折腾。
关键模块之比较器
异步结构全靠比较器带飞,这里直接用了个动态锁存比较器。Verilog-A模型长这样:
module dynamic_comp(clk, inp, inn, out); input clk, inp, inn; output reg out; real vdiff; analog begin @(cross(V(clk) - 0.6, +1)) begin // 异步时钟过阈值触发 vdiff = V(inp) - V(inn); out = (vdiff > 1u) ? 1 : 0; end end endmodule这个模型重点在cross()函数——异步时钟的上升沿不是固定周期,而是根据比较结果动态生成。注意1uV的灵敏度设置,实际流片时要根据噪声调整,但仿真阶段先按理想值来。
电容阵列的骚操作
上极板采样结构最大的好处是减小了比较器输入端的kickback噪声。用smic18的MIM电容时注意单位电容取值:
cicCreateCell("C_unit" "layout" "MIM" (list "C" 20f) (list "W" 2u "L" 2u))这个20fF的单位电容在10bit下总阵列需要1024C,但实际用了分段结构(6+4)。重点来了:版图里记得给dummy电容套娃,否则边缘电容误差能吃掉2个LSB。
模拟IC设计,sar adc电路,基于smic.18工艺,10bit,异步结构,上极板采样,适合入门学习,比较器为高速异步clk。 有说明文档可以参考,可以直接导入到cadence查看仿真。
异步时钟生成器的坑
用反相器链搞延迟线时,实测发现温度变化会让时序崩掉。后来改成动态校准结构:
Vctrl ctrl 0 dc=0.6 Rdelay 1 2 resistor=100k Mcal 2 ctrl 0 0 nch W=2u L=0.18u通过调整ctrl电压改变MOS管导通电阻,补偿工艺偏差。仿真时记得跑PVT corner,特别是ff和ss工艺角下看时钟能否正常迭代。
仿真加速技巧
用Ocean脚本做批量仿真比ADE快十倍,核心循环这么写:
for(bit 9 0 -1 saveOptions( 'save "V(dac_out)" ) run() setBit(bit) )重点监控dac_out的建立时间,当采样率到1MHz时,发现第9位比较时有200ps的回踢噪声,解决方法是在比较器前插了个隔离Buffer。
新手必踩的三大坑
- 电源地线没分开走:数字控制模块的地弹把比较器搞崩了,后来用guard ring把模拟/数字地物理隔离
- 单位电容失配:没加dummy导致INL在512码字处突跳3LSB,用共质心版图解决
- 异步时钟死锁:当输入接近满幅时,比较器连续输出相同结果导致时钟停摆,需要加超时复位电路
最后扔个实测数据:在1.8V供电下,ENOB=9.2bit,采样率1.2MHz,功耗360μW。这个水平虽然比不上工业级ADC,但作为学习项目已经够用。需要源码的老铁直接去Github搜smic18sartutorial,导入Cadence记得改PDK路径,仿真时先跑个tran-noise看看比较器是不是真扛得住噪声。