Requires: SmartSpice & Smartview
Minimum Versions: SMARTSPICE 3.16.12.R
The input deck contains a buffer circuit to be optimized for geometry (W/L) to get the best rise, fall and delay times over a sequence of 4 operating voltages of 2.5v, 3.0v, 4.0v and 4.5v supply.
The parametric_data results of the optimization at each supply voltage level is printed as a table in the out log window. The final plot
shows for each voltage some of the iterations to fulfill the optimization conditions.
Graphics

Input Files
optr_rise_fall_multi.in
Example: Address Buffer
* Optimization of rise and fall delays
*********************************************************
***** Buffer Circuit
vin inp 0 DC 1.5 PULSE( 0.4 2.6 0 5N 5N 15N )
vcc vss 0 DC vccdc
m1 2 inp vss vss pch W=5.067U L=1.6U
m2 2 inp 0 0 nch W=34.82U L=2.0U
m3 3 2 vss vss pch W= 50u L=1.1U
m4 3 2 0 0 nch W=70.U L=1.0U
m5 4 3 vss vss pch W=320.U L=1.1U
m6 4 3 0 0 nch W=440.U L=1.1U
m7 out 4 vss vss pch W=parm7w L=1.1U
m8 out 4 0 0 nch W=parm8w L=1.1U
m9 0 out 0 0 nch W=380U L=1.2U
COUT out 0 700p
***** Models
.model pch PMOS ( level=3 tox=.02e-6 phi=0.576 gamma=0 vto=0 alpha=0 kappa=0 is=0)
.model nch NMOS ( level=3 tox=.02e-6 phi=0.576 gamma=0 vto=0 alpha=0 kappa=0 is=0)
.TRAN 0.2NS 40NS CALLV SAVEV
.PARAM parm7w=500u parm8w=500u vccdc=4.5
.MEASURE TRAN del_R DELAY v(inp) RISE=1 VAL=1.5 TARG=v(out) RISE=1 VAL= 'vccdc/2'
.MEASURE TRAN del_F DELAY v(inp) FALL=1 VAL=1.5 TARG=v(out) FALL=1 VAL='vccdc/2'
********* 1st Optimization at 4.5 volts Supply ***********************
.MODIF TEMP= 75 vccdc=4.5
+ OPTIMIZE parm7w=opt(10u 3000u 500U)
+ parm8w=opt(10u 3000u 500U)
+ m3(w)=opt(10u 300u 50U)
+ m4(w)=opt(10u 300u 70U)
+ m5(w)=opt(100u 1000u 320U)
+ m6(w)=opt(50u 1000u 440U)
+ TARGETS del_f=3ns del_r=3ns
+ OPTIONS AVG=0.001 MEASOFF=0
***** Interactive plot
.OPTIONS iplot_one nomod
.control
run batchprint
.endc
.iplot v(out)
********* 2nd Optimization at 4.0 volts Supply ***********************
.ALTER
.MODIF TEMP= 75 vccdc=4.0
+ OPTIMIZE parm7w=opt(10u 3000u 500U)
+ parm8w=opt(10u 3000u 500U)
+ m3(w)=opt(10u 300u 50U)
+ m4(w)=opt(10u 300u 70U)
+ m5(w)=opt(100u 1000u 320U)
+ m6(w)=opt(50u 1000u 440U)
+ TARGETS del_f=3ns del_r=3ns
+ OPTIONS AVG=0.001 MEASOFF=0
********* 3rd Optimization at 3.0 volts Supply ***********************
.ALTER
.MODIF TEMP= 75 vccdc=3.0
+ OPTIMIZE parm7w=opt(10u 3000u 500U)
+ parm8w=opt(10u 3000u 500U)
+ m3(w)=opt(10u 300u 50U)
+ m4(w)=opt(10u 300u 70U)
+ m5(w)=opt(100u 1000u 320U)
+ m6(w)=opt(50u 1000u 440U)
+ TARGETS del_f=3ns del_r=3ns
+ OPTIONS AVG=0.001 MEASOFF=0
********* 4th Optimization at 2.5 volts Supply ***********************
.ALTER
.MODIF TEMP= 75 vccdc=2.5
+ OPTIMIZE parm7w=opt(10u 3000u 500U)
+ parm8w=opt(10u 3000u 500U)
+ m3(w)=opt(10u 300u 50U)
+ m4(w)=opt(10u 300u 70U)
+ m5(w)=opt(100u 1000u 320U)
+ m6(w)=opt(50u 1000u 440U)
+ TARGETS del_f=3ns del_r=3ns
+ OPTIONS AVG=0.001 MEASOFF=0
.END
parametric_data
RESULTS OF OPTIMIZATION
PARAMETERS
name final value init. value
-------------------- ------------ ------------
parm7w = 8.49262e-004 5.00000e-004
parm8w = 1.21458e-003 5.00000e-004
m3(w) = 2.39510e-005 5.00000e-005
m4(w) = 5.22361e-005 7.00000e-005
m5(w) = 1.44335e-004 3.20000e-004
m6(w) = 1.62742e-004 4.40000e-004
TARGETS
name final value init. value
-------------------- ------------ ------------
del_f = 3.01550e-009 5.74861e-009
del_r = 2.99721e-009 4.81416e-009
Circuit: Example: Address Buffer (with .alter 1)
RESULTS OF OPTIMIZATION
PARAMETERS
name final value init. value
-------------------- ------------ ------------
parm7w = 1.07567e-003 5.00000e-004
parm8w = 1.60961e-003 5.00000e-004
m3(w) = 2.20002e-005 5.00000e-005
m4(w) = 1.11379e-004 7.00000e-005
m5(w) = 4.82815e-004 3.20000e-004
m6(w) = 3.10396e-004 4.40000e-004
TARGETS
name final value init. value
-------------------- ------------ ------------
del_f = 2.99941e-009 6.62264e-009
del_r = 3.03633e-009 5.04681e-009
Circuit: Example: Address Buffer (with .alter 2)
RESULTS OF OPTIMIZATION
PARAMETERS
name final value init. value
-------------------- ------------ ------------
parm7w = 1.48675e-003 5.00000e-004
parm8w = 2.99993e-003 5.00000e-004
m3(w) = 1.22140e-005 5.00000e-005
m4(w) = 1.18420e-004 7.00000e-005
m5(w) = 3.22238e-004 3.20000e-004
m6(w) = 1.44141e-004 4.40000e-004
TARGETS
name final value init. value
-------------------- ------------ ------------
del_f = 3.17473e-009 8.67002e-009
del_r = 3.10508e-009 6.11718e-009
Circuit: Example: Address Buffer (with .alter 3)
RESULTS OF OPTIMIZATION
PARAMETERS
name final value init. value
-------------------- ------------ ------------
parm7w = 1.17183e-003 5.00000e-004
parm8w = 3.00000e-003 5.00000e-004
m3(w) = 2.44390e-005 5.00000e-005
m4(w) = 1.08871e-004 7.00000e-005
m5(w) = 6.59637e-004 3.20000e-004
m6(w) = 2.49514e-004 4.40000e-004
TARGETS
name final value init. value
-------------------- ------------ ------------
del_f = 4.01678e-009 9.86762e-009
del_r = 3.73513e-009 7.12989e-009
005_buffer_delay
[an error occurred while processing this directive]