已经完成的流片项目8bit 40M采样频率 异步SAR ADC设计 包括核心电路的原理图和版图...
已经完成的流片项目8bit 40M采样频率 异步SAR ADC设计 包括核心电路的原理图和版图DRC LVS ANT都过了有测试电路和后仿文件 带详细设计仿真文档 smic18mmrf工艺有工艺库有电路工程文件提供仿真状态可以直接导入自己的cadence运行仿真 前仿有效位数ENOB7.84电路里新的ADE可以到7.94 后仿ENOB7.377适合入门SAR ADC 顶层电路包括: 栅压自举开关Bootstrap Vcm_Based开关时序 上级板采样差分CDAC阵列 两级动态比较器 比较器高速异步时钟 动态sar逻辑 8位DFF输出 8位理想DAC 带详细说明告诉你各个模块怎么设计原理是什么有哪些注意事项怎么仿真包看包会包括详细仿真文档原理介绍完整电路图仿真参数已设好可直接使用在自己的电脑上就可以运行仿真刚把手里这个SMIC18mmRF工艺的8bit 40M采样异步SAR ADC的流片报告整理完终于能瘫在椅子上唠两句了——毕竟从搭模块到最后流片回来前后折腾了快半年踩的坑能绕Cadence车间三圈了。先给大家报个硬参数8bit分辨率采样率拉满40M前仿用老版ADE跑出来ENOB是7.84后来更了新版ADE优化了一下仿真参数直接摸到7.94后仿因为带了版图寄生参数掉了点到7.377不过完全符合入门级SAR ADC的及格线而且DRC/LVS/ANT全过没返工。整个工程包我已经整理好了原理图、版图、测试电路、后仿文件、全流程设计文档都在直接导入Cadence就能跑仿真连仿真参数都给你们配好了新手不用从头啃手册瞎调直接就能看到各个模块的效果。今天就挑几个核心模块唠唠顺便把我当时写的偷懒脚本也放上来省得你们再翻资料。1. 栅压自举开关踩过最蠢的坑一开始我图省事用了普通CMOS开关结果采样时THD直接炸到10%以上查了半天才知道是普通开关的导通电阻会随输入电压变化采样电荷分配不均导致的。加了栅压自举电路之后直接把导通电阻钉死了THD直接降到1%以下。已经完成的流片项目8bit 40M采样频率 异步SAR ADC设计 包括核心电路的原理图和版图DRC LVS ANT都过了有测试电路和后仿文件 带详细设计仿真文档 smic18mmrf工艺有工艺库有电路工程文件提供仿真状态可以直接导入自己的cadence运行仿真 前仿有效位数ENOB7.84电路里新的ADE可以到7.94 后仿ENOB7.377适合入门SAR ADC 顶层电路包括: 栅压自举开关Bootstrap Vcm_Based开关时序 上级板采样差分CDAC阵列 两级动态比较器 比较器高速异步时钟 动态sar逻辑 8位DFF输出 8位理想DAC 带详细说明告诉你各个模块怎么设计原理是什么有哪些注意事项怎么仿真包看包会包括详细仿真文档原理介绍完整电路图仿真参数已设好可直接使用在自己的电脑上就可以运行仿真我当时懒得每次手动改参数跑AC仿真写了个一键脚本;; 栅压自举开关AC仿真快速脚本 procedure(bootstrap_switch_ac_check() set_analysis(ac) ac_param(start_freq 10 stop_freq 1e9 num_points 1000 scale logarithmic) set_component_value(input_dc 0.9) ; 输入共模电压 set_component_value(vin_diff 0.1) ; 差分输入电压 run_analysis() plot_analysis(ac_analysis mag(V(gate)/V(input))) message(AC仿真完成看栅极增益是不是接近1就行) )这段脚本直接在Cadence的skill控制台敲一下就能出图我当时为了调自举电容的大小跑了几十次这个脚本最后选了100fF的自举电容刚好把导通电阻压到最低。2. Vcm-Based开关时序省了好多校准功夫普通SAR的开关时序是靠时钟边沿触发的容易带时钟馈通我选了基于共模电压的时序能自动抵消一部分共模噪声不用后期额外校准校准。贴个测试用的时序激励脚本直接就能生成40M的采样时钟// 异步SAR ADC采样时序激励 reg clk_adc; reg rst_n; reg [7:0] dac_out; initial begin rst_n 0; clk_adc 0; #100 rst_n 1; forever #12.5 clk_adc ~clk_adc; // 40M采样周期25ns end当时调这个时序的时候卡了好久就怕采样和比较器不同步最后把采样窗口卡在时钟上升沿前2ns刚好能避开时钟馈通的影响。3. 差分CDAC阵列不用手动拉128个电容用的是上极板采样的差分CDAC阵列单位电容选的1fF的MIM电容8bit的话最高位就是128fF手动拉128个电容简直反人类我写了个自动实例化的脚本;; 差分CDAC阵列快速生成脚本 procedure(create_diff_cdac(unit_cap_val) local( cap_p cap_n ) cap_p create_instance(CAP_MIM cap_p list(0 0) list(128*unit_cap_val)) cap_n create_instance(CAP_MIM cap_n list(0 0) list(128*unit_cap_val)) connect_net(cap_p top VIN_P) connect_net(cap_n top VIN_N) message(差分CDAC阵列生成完成) )调用的时候直接敲creatediffcdac(1)就行1fF的单位电容直接生成完整阵列而且特意选了同方向的电容尽量避免工艺偏差导致的匹配误差。4. 两级动态比较器高速采样的核心40M采样的话比较器延迟必须控制在5ns以内一级动态比较器延迟太大我换成了两级动态结构延迟直接压到4ns左右而且失调电压也小了很多。同样写了个瞬态仿真脚本一键看翻转时间;; 两级动态比较器瞬态仿真脚本 procedure(comp_delay_check() set_analysis(transient) tran_param(stop_time 100n num_points 10000) set_component_value(vin_diff 0.005) ; 差分输入电压 run_analysis() plot_analysis(tran_analysis V(comp_out)) message(看比较器输出翻转时间是不是在5ns以内就行) )当时调偏置电流的时候踩了坑电流太大功耗炸了电流太小延迟不够最后定在10uA刚好符合要求。5. 异步SAR逻辑DFF不用等全局时钟异步SAR的好处就是不用全局时钟由比较器输出直接触发逐次逼近速度比同步SAR快不少贴一段核心的Verilog逻辑// 异步SAR逐次逼近逻辑 module async_sar_logic( input wire rst_n, input wire comp_out, input wire sample_en, output reg [7:0] dac_code, output reg sample_done ); reg [2:0] dac_cnt; always (posedge comp_out or negedge rst_n) begin if(!rst_n) begin dac_code 8h00; dac_cnt 3h0; sample_done 1b0; end else begin if(sample_en !sample_done) begin dac_code[dac_cnt] comp_out ? 1b1 : 1b0; dac_cnt dac_cnt 1b1; sample_done (dac_cnt 3h7) ? 1b1 : 1b0; end end end endmodule这里用了动态DFF比静态DFF省了不少功耗而且速度更快刚好适配40M的采样率。最后唠点实的后仿的时候确实掉了点ENOB毕竟SMIC18的寄生电容还是挺大的后来加了几个去耦电容稍微拉了回来不过整体还是符合预期的。整个工程包我已经打包好了包含完整的Cadence工程文件、全模块原理图/版图、DRC/LVS/ANT报告、前仿/后仿仿真文件、详细的设计文档仿真步骤直接导入就能跑新手不用从零搭电路。需要的同学可以评论区留个邮箱我直接发你们有啥问题也可以在评论区问我尽量回复
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2445275.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!