10.06.2016 Views

eldo_user

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Eldo Control Language<br />

Library of Functions for Tasks<br />

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

m1 d g s s n w=w_val l=l_val<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_w_l<br />

set w_res [] = 0<br />

set l_res [] = 0<br />

set ids_sat_w_res [] = 0<br />

set ids_sat_l_res [] = 0<br />

set w_ids_sat_w = 0<br />

set w_ids_sat_l = 0<br />

set w = 0<br />

set l = 0<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 />

* Compute ids_sat by dichotomy for many values of w.<br />

*/<br />

step (type = lin, param = w, start = 1u, stop = 5u, n = 20)<br />

i++<br />

w_res[i] = w<br />

/* Check bounds. */<br />

vds_min = 0<br />

vds_max = 5<br />

simulation(mos(w_val = w, vds_val=vds_min), m1_mode = @m1_mode, m1_ids<br />

= @m1_ids)<br />

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

fprint(stdout, "Failed to find ids_sat for w=%em because with<br />

vds=%eV, opmode(m1)=%s\n", w, vds_min, m1_mode)<br />

return -1<br />

endif<br />

simulation(mos(w_val = w, vds_val=vds_max), m1_mode = @m1_mode, m1_ids<br />

= @m1_ids)<br />

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

fprint(stdout, "Failed to find ids_sat for w=%em because with<br />

vds=%eV, opmode(m1)=%s\n", w, vds_max, m1_mode)<br />

return -1<br />

endif<br />

/* Dichotomy. */<br />

982<br />

Eldo® User's Manual, 15.3

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

Saved successfully!

Ooh no, something went wrong!