Fabio, Attached is a suite of ".MEAS" / ".PRINT" Spice directives, which we've just started using here at Xilinx, in order to automate the validation of our IBIS models against their Spice counterparts. In the attached, "rnr_pad" is the Spice model output node, while "nd1_out" is the IBIS model output node. I hope that's helpful. Regards, -David Banas --- Attachment begins here. --- ************************************************************************ ******* ** Automated Measurements ************************************************************************ ******* * An arbitrary threshold of max/2 is used to "bootstrap" the measurements. .MEASURE TRAN max_sp MAX v(rnr_pad) + FROM = "5ns" + TO = "5ns + clk_period" .MEASURE TRAN half_max PARAM="(max_sp/2)" * Measure the delays in the first rising edges of IBIS and Spice waveforms. * This tells us where to take our "high" and "low" averages. .MEASURE TRAN dly_sp + TRIG AT=5ns + TARG v(rnr_pad) VAL=half_max TD=TRIG RISE=1 .MEASURE TRAN dly_ib + TRIG AT=5ns + TARG v(nd1_out) VAL=half_max TD=TRIG RISE=1 * Now, find the average "high" and "low" values, which will be compared, * and used to calculate the "20%", "50%", and "80%" points that are used * in subsequent measurements. .MEASURE TRAN high_sp AVG v(rnr_pad) + FROM = "5ns + dly_sp + (clk_period/6)" $ Using the middle third to + TO = "5ns + dly_sp + (2*clk_period/6)" $ calculate the high level. .MEASURE TRAN high_ib AVG v(nd1_out) + FROM = "5ns + dly_ib + (clk_period/6)" + TO = "5ns + dly_ib + (2*clk_period/6)" .MEASURE TRAN low_sp AVG v(rnr_pad) + FROM = "5ns + dly_sp + (clk_period/2) + (clk_period/6)" + TO = "5ns + dly_sp + (clk_period/2) + (2*clk_period/6)" .MEASURE TRAN low_ib AVG v(nd1_out) + FROM = "5ns + dly_ib + (clk_period/2) + (clk_period/6)" + TO = "5ns + dly_ib + (clk_period/2) + (2*clk_period/6)" * Calculate 20/50/80 points. .MEASURE TRAN eighty_sp + PARAM="low_sp + (high_sp-low_sp)*0.8" .MEASURE TRAN eighty_ib + PARAM="low_ib + (high_ib-low_ib)*0.8" .MEASURE TRAN fifty_sp + PARAM="low_sp + (high_sp-low_sp)*0.5" .MEASURE TRAN fifty_ib + PARAM="low_ib + (high_ib-low_ib)*0.5" .MEASURE TRAN twenty_sp + PARAM="low_sp + (high_sp-low_sp)*0.2" .MEASURE TRAN twenty_ib + PARAM="low_ib + (high_ib-low_ib)*0.2" * Measure rise/fall times. .MEASURE TRAN tr_spice + TRIG v(rnr_pad) VAL=twenty_sp TD=5n RISE=1 + TARG v(rnr_pad) VAL=eighty_sp TD=TRIG RISE=1 .MEASURE TRAN tr_ibis + TRIG v(nd1_out) VAL=twenty_ib TD=5n RISE=1 + TARG v(nd1_out) VAL=eighty_ib TD=TRIG RISE=1 .MEASURE TRAN tf_spice + TRIG v(rnr_pad) VAL=eighty_sp TD=5n FALL=1 + TARG v(rnr_pad) VAL=twenty_sp TD=TRIG FALL=1 .MEASURE TRAN tf_ibis + TRIG v(nd1_out) VAL=eighty_ib TD=5n FALL=1 + TARG v(nd1_out) VAL=twenty_ib TD=TRIG FALL=1 * Measure duty cycles. .MEASURE TRAN th_spice + TRIG v(rnr_pad) VAL=fifty_sp TD=5n RISE=1 + TARG v(rnr_pad) VAL=fifty_sp TD=TRIG FALL=1 .MEASURE TRAN th_ibis + TRIG v(nd1_out) VAL=fifty_ib TD=5n RISE=1 + TARG v(nd1_out) VAL=fifty_ib TD=TRIG FALL=1 .MEASURE TRAN tl_spice + TRIG v(rnr_pad) VAL=fifty_sp TD=5n FALL=1 + TARG v(rnr_pad) VAL=fifty_sp TD=TRIG RISE=1 .MEASURE TRAN tl_ibis + TRIG v(nd1_out) VAL=fifty_ib TD=5n FALL=1 + TARG v(nd1_out) VAL=fifty_ib TD=TRIG RISE=1 .MEASURE dc_spice + PARAM='th_spice/(th_spice + tl_spice)' .MEASURE dc_ibis + PARAM='th_ibis/(th_ibis + tl_ibis)' * Measure the errors. .MEASURE TRAN high_err + PARAM="(high_ib - high_sp)/high_sp" .MEASURE TRAN low_err + PARAM="(low_ib - low_sp)/low_sp" .MEASURE TRAN risetime_err + PARAM="(tr_ibis - tr_spice)/tr_spice" .MEASURE TRAN falltime_err + PARAM="(tf_ibis - tf_spice)/tf_spice" .MEASURE TRAN dutycycle_err + PARAM="(dc_ibis - dc_spice)/dc_spice" *** Report the results. .PRINT high_err .PRINT low_err .PRINT risetime_err .PRINT falltime_err .PRINT dutycycle_err --- Attachment ends here. --- > -----Original Message----- > From: owner-ibis-users@eda.org [mailto:owner-ibis-users@eda.org] On Behalf > Of Fabio BRINA > Sent: Wednesday, November 08, 2006 7:47 AM > To: ibis-users@eda.org; ibis-info@eda.org > Subject: [IBIS-Users] functional check > > > Hello experts, > > do you know were I can find some documentation > about the matching between IBIS model simulation > and Spice / Eldo simulation? (Functional Check). > I'd like to understand (for example) in > witch way the EDA tool define the voltage > controlled current sources (of the ibis representation) > frome ibis model. > > Thank you, > Fabio > > -------------------------------------------------------------------- > |For help or to subscribe/unsubscribe, e-mail majordomo@eda-stds.org > |with the appropriate command message(s) in the body: > | > | help > | subscribe ibis <optional e-mail address, if different> > | subscribe ibis-users <optional e-mail address, if different> > | unsubscribe ibis <optional e-mail address, if different> > | unsubscribe ibis-users <optional e-mail address, if different> > | > |or e-mail a request to ibis-request@eda-stds.org. > | > |IBIS reflector archives exist under: > | > | http://www.eda-stds.org/pub/ibis/email_archive/ Recent > | http://www.eda-stds.org/pub/ibis/users_archive/ Recent > | http://www.eda-stds.org/pub/ibis/email/ E-mail since 1993 -------------------------------------------------------------------- |For help or to subscribe/unsubscribe, e-mail majordomo@eda-stds.org |with the appropriate command message(s) in the body: | | help | subscribe ibis <optional e-mail address, if different> | subscribe ibis-users <optional e-mail address, if different> | unsubscribe ibis <optional e-mail address, if different> | unsubscribe ibis-users <optional e-mail address, if different> | |or e-mail a request to ibis-request@eda-stds.org. | |IBIS reflector archives exist under: | | http://www.eda-stds.org/pub/ibis/email_archive/ Recent | http://www.eda-stds.org/pub/ibis/users_archive/ Recent | http://www.eda-stds.org/pub/ibis/email/ E-mail since 1993Received on Wed Nov 8 08:33:01 2006
This archive was generated by hypermail 2.1.8 : Wed Nov 08 2006 - 08:33:28 PST