Editing Ocs package
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 2: | Line 2: | ||
__TOC__ | __TOC__ | ||
== History and Motivation == | == History and Motivation == | ||
== Problem Formulation == | == Problem Formulation == | ||
== Data Structure == | == Data Structure == | ||
== File Formats == | == File Formats == | ||
== Tutorials == | == Tutorials == | ||
=== A CMOS AND GATE === | === A CMOS AND GATE === | ||
[[File:AND_BW.png|thumb| Schematic for a CMOS AND gate]] | [[File:AND_BW.png|thumb| Schematic for a CMOS AND gate]] | ||
==== Using an IFF netlist ==== | |||
{{Code|IFF netlist for the AND gate (.cir file)|<syntaxhighlight lang="text" style="font-size:13px"> | {{Code|IFF netlist for the AND gate (.cir file)|<syntaxhighlight lang="text" style="font-size:13px"> | ||
% 0.1b1 | % 0.1b1 | ||
Line 525: | Line 59: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
{{Code|IFF netlist for the AND gate (.nms file)|<syntaxhighlight lang="text" style="font-size:13px"> | {{Code|IFF netlist for the AND gate (.nms file)|<syntaxhighlight lang="text" style="font-size:13px"> | ||
Line 540: | Line 72: | ||
}} | }} | ||
== | {{Code|Model evaluator file for simple MOSFET models |<syntaxhighlight lang="octave" style="font-size:13px"> | ||
function [a,b,c] = Mnmosfet (string, parameters, parameternames, extvar, intvar, t) | |||
switch string | |||
case 'simple', | |||
rd = 1e6; | |||
for ii=1:length(parameternames) | for ii=1:length(parameternames) | ||
eval([parameternames{ii} "=",... | |||
num2str(parameters(ii)) " ;"]) | |||
endfor | endfor | ||
vg = extvar(1); | |||
vs = extvar(2); | |||
vd = extvar(3); | |||
vb = extvar(4); | |||
vgs = vg-vs; | |||
vds = vd-vs; | |||
if (vgs < Vth) | |||
gm = 0; | |||
gd = 1/rd; | |||
id = vds*gd; | |||
elseif ((vgs-Vth)>=(vds))&(vds>=0) | |||
id = k*((vgs-Vth)*vds-(vds^2)/2)+vds/rd; | |||
gm = k*vds; | |||
gd = k*(vgs-Vth-vds)+1/rd; | |||
elseif ((vgs-Vth)>=(vds))&(vds<0) | |||
gm = 0; | |||
gd = 1/rd; | |||
id = vds*gd; | |||
else # (i.e. if 0 <= vgs-vth <= vds) | |||
id = k*(vgs-Vth)^2/2+vds/rd; | |||
gm = k*(vgs-Vth); | |||
gd = 1/rd; | |||
- | |||
< | |||
endif | endif | ||
a = zeros(4); | |||
b = [ 0 0 0 0; | |||
-gm (gm+gd) -gd 0; | |||
gm -(gm+gd) gd 0; | |||
0 0 0 0]; | |||
c = [0 -id id 0]'; | |||
break; | break; | ||
otherwise | |||
error(["Mnmosfet: unknown option " string]); | |||
endswitch | endswitch | ||
Line 850: | Line 140: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||