sa_double_tail比较器 --Trannoise、pnoise、offset、MC仿真
一、Tran noise:
1、在输入端加一个DC的差(比如一端是0.5VDD,另外一端加0.5VDD+DEL mV);
2、计算仿真时间内的counting number,和实际的correct counting number(本例中时钟频率是100MHz,仿真时间是10us,那么应该是1000个counts;用calculator计算实际的counts);
3、扫描不同的输入DC差之下,正确的counts的数量(输入差是0.1mV,0.2mV,0.3mV);
当正确的counts数量大约是84%的时候,我们认为此时的input差就是一个sigma(50%+0.5*68%=84%正态分布);可以通过count number数不断将DEL误差减小,获得较为精确的input referred noise。
4、当PVT改变的时候,可以不断重复上面的步骤,来求得对应的sigma;
当input的差别很小的时候(Vip小于Vin),Von全部应该是1。但是由于noise的存在,导致某些错误的输出,用calculator计算出全部和正确的counts数量。当正确counts大概是84%,也就是对于一个input referred noise sigma.
Trannoise设置:Noise Fmax设置的太大如100G,仿真速度会慢,可以设为10G或30G
Noise Fmax设置的值变大,等效输入噪声也会增大
查看count number数
方法一:measurement-transient measurement 选择不同波形查看
如下图 正确count数为2000/2 实际count数为1760/2
方法二:用value cross函数统计输出的上升沿个数
xmax(cross(v(“/VOUTN” ?result “tran”) 1.65 0 “falling” t “cycle” nil) 1)
Cross设置:
Tran noise仿真结果:
Fmax=100G:等效输入噪声为204u
Fmax=10G:等效输入噪声为180u
二、PSS+pnoise
1、给Comparator加一个实际工作的时钟频率100M;
2、在输入端加一个DC的差(Cadence的paper中建议这个值取在100uV);
3、设置PSS, Pnoise的仿真;
1)Output freqnency sweep range
设置为 start=1H stop=fs/2=50M (fs指comparator的采样频率)
2)Sidebends设置为 Method=fullspectrum。根据cadence manual,这个方法对于计算高阶harmonics folding back的noise精度要更好一些。
3)Noise type设置为sampled(jitter)。这种方法会计算pss过程中某一时刻的采样噪声。
4)Event type=edge crossing, Trigger=voltage, Output Nodes=/outp and /outn(这两个是comparator的输出node,注意这个必须是cross-coupled transistor的输出),Edge number=1, Threshold value=0.05(当output nodes电压差为50mV时对输出节点进行采样计算noise),Mesurement=voltage ,output nodes和上面一样都是/outp和/outn
5)Sweep type 每dec设的点多一点,仿真结果更精确,可以设到300个点/dec
6)最后Event设置完成后记得点一下Add,否则不会生效。
4、Pnoise计算出integrated output noise(用V^2/Hz作积分然后sqrt做开方);
5、计算出comparator的gain(这里有几种不同方法计算);
Threshold value=50mV DEL=100uV Gain=500
也可以用PSS+PAC方法得到gain值
6、第四步得到的noise除以第五步得到的gain,就是input referred noise;
仿真结果:
可以通过results-print-noise summary查看各个器件噪声贡献。
总结: tran noise仿真中Fmax=10G时,与pnoise仿真结果接近。
Tran noise设置正确的噪声带宽时,仿真得到的噪声值才会准确,要注意设置好testbench和噪声带宽,设值得太低,仿真结果会偏低,设值得太高,仿真时间会非常慢。
三、两种方法对比:
Tran noise更准确,pnoise可以确定每个器件对噪声的贡献。
pnoise仿真结果考虑了噪声折叠的影响
四、offset仿真
输入一个变化足够慢ramp信号,观察输出发生翻转时(或者-0.5clk时)的输入差值,采用value cross函数;瞬态仿真时,后仿由于多了寄生导致响应时间与前仿相比会有滞后,比较器输出翻转时间点对应的输入值未必是比较器输入发生翻转时刻对应的值,类似刻舟求剑的概念,因此可以尝试把输入正弦波的频率降低若干倍甚至更多后再作仿真对比,或者尝试用上升时间下降时间很长的斜坡输入信号
Testbench
Ideal_balun:
D:差模信号net1 c共模信号VDD/2 p,n转换后的平衡VINN\VINP信号
Offsetrampgenerator:
输入端clk,输出端ramp;产生斜坡电压,从maxin~-maxin
Verilog语言描述为,每经过一个clk下降沿,输出为maxin-resolution×(-1)
仿真结果:
Offset后仿真需要提取calibre来仿真,用pex提取的pex仿真不出来;可以用config或set up ->environment->switch view list加上calibre;在schematic中点击calibre ->map schematic nets to calibreview 点击select可以将寄生参数反标在电路中。
trim3=12 trim7=0
top_tt
top_tt+pre_sim
RCC
后仿寄生的失配对offset的影响很大
五、mismatch蒙特卡洛仿真
设置:
结果:
process+mismatch的失配为1.54mV