setup.sp,v #1

  • //
  • guest/
  • robert_yu/
  • autochar-1.5.3/
  • example/
  • run/
  • dff_2x/
  • RCS/
  • setup.sp,v
  • View
  • Commits
  • Open Download .zip Download (3 KB)
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
@
# Change User Description Committed
#1 6489 robert_yu Saved here.