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 />

endif<br />

endwhile<br />

if (iter >= 50)<br />

fprint(stdout, "Failed to find vth in less than 50 iterations.\n")<br />

return -1<br />

else<br />

fprint(stdout, "\n\tvth=%.2eV\n", vth)<br />

endif<br />

/**<br />

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

*/<br />

step (type=log, param=vgs, start = vth + 0.01, stop=10, dec=20)<br />

i++<br />

vgs_res[i] = vgs<br />

/* Check bounds. */<br />

vds_min = 0<br />

vds_max = 5<br />

simulation(mos(vgs_val = vgs, vds_val = vds_min), m1_mode = @m1_mode,<br />

m1_ids =<br />

@m1_ids)<br />

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

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

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

return -1<br />

endif<br />

simulation(mos(vgs_val = vgs, vds_val = vds_max), m1_mode = @m1_mode,<br />

m1_ids =<br />

@m1_ids)<br />

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

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

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

return -1<br />

endif<br />

/* Dichotomy. */<br />

iter = 0<br />

while (abs(vds_max - vds_min) > 0.001 && iter < 50)<br />

iter++<br />

vds = vds_min + (abs(vds_max - vds_min) / 2)<br />

simulation(mos(vgs_val = vgs, vds_val = vds), m1_mode = @m1_mode, m1_ids<br />

=<br />

@m1_ids)<br />

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

vds_min = vds<br />

else<br />

vds_max = vds<br />

endif<br />

endwhile<br />

if (iter >= 50)<br />

fprint(stdout, "Failed to find ids_sat in less than 50 iterations for<br />

vgs=%eV.\n", vgs)<br />

return -1<br />

else<br />

vds_sat_res[i] = vds<br />

ids_sat_res[i] = m1_ids<br />

992<br />

Eldo® User's Manual, 15.3

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

Saved successfully!

Ooh no, something went wrong!