head 1.2; access; symbols; locks ryu:1.2; strict; comment @# @; 1.2 date 99.01.21.12.37.18; author ryu; state Exp; branches; next 1.1; 1.1 date 99.01.21.10.18.10; author ryu; state Exp; branches; next ; desc @* $Id$ @ 1.2 log @wip @ text @* $Id: setup.sp,v 1.1 1999/01/21 10:18:10 ryu Exp ryu $ * DO NOT EDIT. This file generated automagically. * Created: Thu Jan 21 0:08:22 1999 * User: ryu * Char: D-Flop Setup Time Characterization * Data: "d" * Clock: "clk" * Q: "q" * C: "mout" * Trans: "lh" *--- SETUP --------------------------------------------------- .include '/home/ryu/src/autochar/autochar-1.5/tech/tsmc35/include/ttlh.sp' .include 'dff_2x.sp' .include /home/ryu/src/autochar/autochar-1.5/tech/tsmc35/lib/autochar.sp .options + format *.options *+ optlst = 1 *+ post = 1 *.model optmod opt method=bisection *+ relin=0.001 *+ relout=0.001 *.param setup = optsetup('0', '0', '0.5ns') .param setup = '1.0ns' .param slewrate = '4.00002e-11' .param slew_start = '0.1' .param slew_end = '0.9' *--- INPUTS -------------------------------------------------- vclk vclk 0 pulse ( + '0' + 'vhigh' + '1ns+trise/2' + '0' + '0' + 'pwidth+trise/2+tfall/2' + 'period') vd vd 0 pulse ( + '0' + 'vhigh' + '1ns+trise+2*pwidth+tfall-setup' + 'trise' + 'tfall' + '3*period' + '4*period') *--- TEST CIRCUIT -------------------------------------------- xdbuf vd d ebuffer xclkbuf vclk clk slewbuffer xflop + q $ q:o + d $ d:i + clk $ clk:i + diff_1 $ clk_n:i + dff_2x e1 diff_1 0 clk vdd -1 *--- LOADS --------------------------------------------------- c0 q 0 100ff *--- MEASURE ------------------------------------------------- .option autostop * Measure setup time: .measure tran setup param='setup' .measure tran setup_lh delay v(d) val='vhigh/2' cross=1 + targ=v(clk) val='vhigh/2' rise=2 * Measure clock slew rate: .measure tran clkslew delay v(clk) val='0+0.2*vhigh' rise=2 + targ=v(clk) val='0+0.8*vhigh' rise=2 * Measure internal criterion node: .measure tran vcrit find v(xflop.mout) + when v(clk)='0.8*vhigh' rise=2 .measure tran optpass param='(vhigh-vcrit)/vhigh' *+ goal='0.8' * Measure final clock->q time: .measure tran clk_q delay v(clk) val='vhigh/2' rise=2 + targ=v(q) val='vhigh/2' rise=1 *--- TRANSIENT ----------------------------------------------- *.trans 5ps '2*period' sweep *+ optimize=optsetup *+ results=optpass *+ model=optmod .trans 5ps '2*period' *--- SCRIPT -------------------------------------------------- .control # find fail modif loop=20 stop optpass le 0.8 setup -= (0.5ns)0.1ns prtbl set fail = $setup # find pass modif loop=20 stop 0.8 le optpass setup += (0.5ns)0.1ns prtbl set pass = $setup echo Window is $pass, $fail .endc *--- ALTER --------------------------------------------------- * Alter slewrate: *.alter *.param slewrate = '7.99998e-11' *.alter *.param slewrate = '1.2e-10' *.alter *.param slewrate = '1.600002e-10' *.alter *.param slewrate = '3.19998e-10' .end @ 1.1 log @entered into RCS @ text @d1 1 a1 1 * $Id$ d32 2 a33 2 .param setup = '1.0ns' .param slewrate = '4.00002e-11' d35 1 a35 1 .param slew_end = '0.9' d72 1 d96 18 @