本帖最后由 wakinoda 于 2010-5-10 20:18 编辑
$ r, z1 r9 \; E9 Z y6 h( f9 `5 Q, I3 G: P& q+ N& D
回复 1# lpch8
( t# _5 S6 F1 I
4 x k, m6 T0 @- C v8 [/ y" e1.首先要理解这个错误产生的原因。IBIS model里的DC endpoints和AC endpoints是需要相等的。IBIS checker会用rising waveform或者falling waveform里声明的R_fixture和V_fixture算出负载线(load line),然后用负载线和I/V曲线去得出DC的高低电平,最后用得到的结果去和V/T曲线的endpoints数值作比对。如果数值不相等的话就会报warning,差的太远就会报error。
- W5 v1 y& K( ^& m; t. d9 g2.举个例子来说明上面的原理。某个open drain的buffer model,现在有一个warning如下:
- y( q8 l" c3 O* r9 \+ v5 N7 O0 [5 [1 xWARNING - Model XXX: The [Rising Waveform] with [R_fixture]=75 Ohms and [V_fixture]=3.3V has TYP column DC endpoints of 1.79V and 3.30v, but an equivalent load applied to the model's I-V tables yields different voltages ( 1.84V and 3.30V), a difference of 3.11% and 0.00%, respectively.
! D w9 A' [8 Q, ]) {# J2 m' g首先看1.84V and 3.30V是怎么算出来的,如图1。 0 w* G1 Z7 d: g! \
通过[R_fixture]=75 Ohms and [V_fixture]=3.3V,我们可以得出高低电压和电流level,从而画出上图中的load line。由于open drain buffer model一般不需要pullup曲线,所以上图只有pulldown曲线。通过相交得出的两个点的电压值,就是1.84V(low)和3.3V(high)。
# |& S d& o E Q+ {/ w然后再看用来作比较的另外两个压值1.79V和3.3V。这个很简单,看IBIS的rising waveform description:
^4 A. u8 ]( ~. P) M7 w% [* ^, s- V[Rising Waveform] R_fixture = 75 V_fixture = 3.3000 V_fixture_min = 2.9700 V_fixture_max = 3.6300 | time (typ) (min) (max) | 0.0000ns 1.7897V 1.9929V 1.7446V 0.7500ns 1.8004V 1.9028V 1.8910V 1.5000ns 2.9333V 2.3941V 3.3378V … … … 72.7500ns 3.3000V 2.9699V 3.6297V 73.5000ns 3.3000V 2.9699V 3.6298V 74.2500ns 3.3000V 2.9699V 3.6298V
% n4 A: W( i* M) l9 m* s+ [注意我们讨论的是typical case,看typ column很清楚看到其电压值是从1.7897(1.79V)到3.3V的。如图2也表现出了这一点。 后面就不用赘述了,两组endpoints作数值对比,相差的百分比不同会报warning或error(不知道现在IBIS5.0报error的百分比是多少,以前是2%)。
" \! i7 w; h' C) G' q$ P3.如何解决这一问题呢?如果是warning(即相差不是很大)的话,一般来说不影响仿真精度;但如果是error,这就需要和IC vendor确认其IBIS的准确性,譬如R_fixture/V_fixture的值。; n3 P) P9 G' E" Z1 l W
|