概述
本文主要参考Achim Graupner-《A Methodology
for the Offset-Simulation of Comparator》,这篇文章可以从Designer-Guide.org
上获取,这里主要是写下具体步骤,也便于自己做个备份。
为什么需要用Monte Carlo仿真?
在研究比较器失调(offset)时,我们需要考虑各个工艺角(corner)对比较器失调的影响,但是通过用Monte
Carlo仿真,我们可以加入器件之间mismatch的影响(特别是同类型的器件)。当然,此时器件的参数随正态分布变化,而不是固定在一个确定的Corner。
有些工艺应该可以只仿process variation或者mismatch的单个情况, 我用的工艺只能对两者一起仿真。
(1)比较器输入激励信号,这里我们输入一个如图1的三角波形(由analogLib里Vpwl的信号,通过ahdlLib里理想的采样保持模块(sah_ideal)产生,注意定义模块里的vtans_clk变量。一般设计的比较器都是差分输入,所以我再接一个单端转双端的变压器,同时在这里定义输入共模,如图2,这里我的Vth=0,当然也可以看作已经减去比较电平的输入。
(2)我用的是Cadence的IC61,所以直接运行ADE XL里的Monte Carlo
Sampling,设置仿真次数,当然是越大越好(咱电脑不是啥高档机器,所以受仿真时间限制),不过几百个点应该够了吧。
Tips: 要记着选择save data to allow family plots。
图3是N次Voutp输出结果,当然这里只显示了几次而已。
图1 Stimuli for offset-simulation from 《A Methodology...》
输入三角曲线递增/递减幅度为1mv,这里我设置的为-50mv:50mv:-50mv,(vth为0,或者设置为Vr-50mv:Vr+50:Vr-50,从而可以自己调整比较电平Vr),时间范围根据比较器周期来确定
图2 输入共模这里由vcm确定,它的值也直接影响到了offset
图3 输出Voutp,可以看到由于offset的变化,voutp为1的数目的变化
对于指定的一个输入信号,如V1,在进行N次仿真后,输出voutp为1的个数为n1,则其概率可以表示为P(Yv1=1)=n1/N,从而我们可以得到失调的统计特性。
(3)数据处理
我们从N次仿真后的voutp的数据中可以提取出:(这里需要对直接提取出的数据做些适当处理)
xdata数据: -50mv:50mv:-50mv, 大小1x200
ydata数据: 每个输入点的N次仿真结果,大小Nx200,注意取值时的坐标点哦。
数据准好了,用《A Methodology for the Offset-Simulation of
Comparator》文中的程序处理数据:
p.s. 根据自己需要,我做了些的修改。
%Revised by akon in 20110427
% it is assumed that the simulation results are provided
% in the matrix "ydata" and the array "xdata"
% (1) ni/N, Figure 2
Vdd=input('Input Vdd:');
Xth=input('Input Threshold Voltage for Comparison:');
y = sum(ydata)/(Vdd*length(ydata(:,1)));
figure(1)
plot(xdata, y)
% (2) inverse erf for rising slope only
% y(1:21) is this case contains the data
% for the rising slope
v = sqrt(2)*erfinv(y(1:200)*2-1);
% select values within −2.5 ... 2.5 sigma
i=find(v>-2.5 &
v<2.5);
% fit line through selected values
% Figure 5
[p,s]=polyfit(xdata(i), v(i), 1);
figure(2)
plot(xdata(i), v(i), xdata(i), polyval(p,xdata(i)))
% (4) compute mu and sigma
sigma = 1/p(1)
mu = -p(2)/p(1)-Xth
好了,这了我得到累积概率曲线(图4),正态概率曲线(图5)和失调的均值&标准差
图4 由于没有设置vth,因此这里明显可以看到offset在0v左右。X轴为输入,Y轴为累积的概率
图5 正态概率曲线(拟合&实际)
对比测试一下:
这里做测试的是一个全动态比较器,设置的mismatch为整个比较器电路,仅仅测试下增加输入管宽度对于offset的影响:
(1)差分输入管宽度:4um
mu=226uv sigma=8.2mv
(2)差分输入管宽度:6um
mu=166uv sigma=6.4mv
基本还是符合预期猜测的。当然具体的分析,如Random
Offset受哪些管子参数影响较大,还得参考下TCAS1-2009《Analysis of Static and Dynamic
Random Offset Voltages in Dynamic Comparators》,有空补上读书笔记。
首篇新浪博客,如有写得不对的地方,欢迎拍砖哈~
最后
以上就是苗条发带为你收集整理的matlab仿真 比较器,比较器失调仿真方法(Monte Carlo仿真 & matlab处理)的全部内容,希望文章能够帮你解决matlab仿真 比较器,比较器失调仿真方法(Monte Carlo仿真 & matlab处理)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复