10.06.2016 Views

eldo_user

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Eldo Control Language<br />

Library of Functions for Tasks<br />

.define_testbench mos (vgs_val = 1, vds_val = 1)<br />

m1 d g s s n w=3.2u l=1.2u<br />

vgs g s vgs_val<br />

vds d s vds_val<br />

.connect d 0<br />

.dc<br />

.extract dc label=m1_ids '-i(vds)'<br />

.extract dc label=m1_mode opmode(m1)<br />

.end_define_testbench<br />

.define_task plot_ids_sat_and_lim_lin_sat<br />

set vgs_res [] = 0<br />

set vds_sat_res [] = 0<br />

set ids_sat_res [] = 0<br />

set w_ids_sat_vds = 0<br />

set w_lim_lin_sat = 0<br />

set vgs = 0<br />

set vth = 0<br />

set vth_min = 0<br />

set vth_max = 5<br />

set vds = 0<br />

set vds_min = 0<br />

set vds_max = 5<br />

set m1_ids = 0<br />

set m1_mode = ""<br />

set i = 0<br />

set iter = 0<br />

/**<br />

* Find vth by dichotomy.<br />

*/<br />

/* Check bounds. */<br />

simulation(mos(vgs_val = vth_min), m1_mode = @m1_mode)<br />

if (m1_mode != "subthreshold")<br />

fprint(stdout, "Failed to find vth because with vgs=%eV,<br />

opmode(m1)=%s\n",<br />

vth_min, m1_mode)<br />

return -1<br />

endif<br />

simulation(mos(vgs_val = vth_max), m1_mode = @m1_mode)<br />

if (m1_mode == "subthreshold")<br />

fprint(stdout, "Failed to find vth because with vgs=%eV,<br />

opmode(m1)=%s\n",<br />

vth_max, m1_mode)<br />

return -1<br />

endif<br />

/* Dichotomy. */<br />

while (abs(vth_max - vth_min) > 0.001 && iter < 50)<br />

iter++<br />

vth = vth_min + (abs(vth_max - vth_min) / 2)<br />

simulation(mos(vgs_val = vth), m1_mode = @m1_mode)<br />

if (m1_mode == "subthreshold")<br />

vth_min = vth<br />

else<br />

vth_max = vth<br />

Eldo® User's Manual, 15.3 991

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!