|
发表于 2018-9-13 22:58:27
|
显示全部楼层
如果有PDK提供Monte Carlo, 跑Monte Carlo就可以了, 但这样就无法指定mismatch的大小了。这篇TCASI的论文里指定了mismatch的标准差是3%,所以不太可能是直接调用工艺库的mismatch做MC仿真的。 一种可能的方法是写一个verilog-a的电容模型,人为指定MISMATCH的大小。例子如下:
module CAP_GAUSS( p, n );
parameter real UNIT_CAP = 0 from ( 0 : inf ); // size of unit capacitor
parameter integer MULTIPLIER = 1 from [ 1 : inf );
parameter real MISMATCH = 0 from [ 0 : 1 );
(* cds_inherited_parameter *)parameter real RANDOM = 0;
// inherit the random variation specified in .scs model
real sigma, cap_val;
inout p, n;
electrical p, n;
branch( p, n ) cap;
analog
begin
@( initial_step )
begin
sigma = sqrt( MULTIPLIER ) * UNIT_CAP * MISMATCH;
cap_val = MULTIPLIER * UNIT_CAP + sigma * RANDOM;
end
I( cap ) <+ cap_val * ddt( V( cap ) );
end
endmodule |
|