The package Mosfet contains all functions and records that are used for all types of Mosfet transistors in SPICE3.
Extends from Modelica.Icons.Package (Icon for standard packages).
Name | Description |
---|---|
Mosfet | Record for Mosfet parameters |
MosfetModelLineParams | Record for Mosfet model line parameters |
MosfetModelLine | Type of the transistor |
MosfetCalc | Mosfet Variables |
mosfetInitEquations | MOSFET initial precalculations |
mosfetModelLineInitEquations | Type transscription |
getNumberOfElectricalPins | Number of Pins |
This record Mosfet contains parameters that are used for all types of Mosfet transistors in SPICE3.
Extends from Model.Model (Device Temperature).
record Mosfet "Record for Mosfet parameters" extends Model.Model; Modelica.SIunits.Length m_len( start = 1e-4) "L, length of channel region"; Modelica.SIunits.Length m_width( start = 1e-4) "W, width of channel region"; Modelica.SIunits.Area m_drainArea( start = SpiceConstants.CKTdefaultMosAD) "AD, area of drain diffusion"; Modelica.SIunits.Area m_sourceArea( start = SpiceConstants.CKTdefaultMosAS) "AS, area of source diffusion"; Real m_drainSquares( start = 1.0) "NRD, length of drain in squares"; Real m_sourceSquares( start = 1.0) "NRS, length of source in squares"; Modelica.SIunits.Length m_drainPerimiter( start = 0.0) "PD, Drain perimeter"; Modelica.SIunits.Length m_sourcePerimiter( start = 0.0) "PS, Source perimeter"; Modelica.SIunits.Voltage m_dICVDS( start = 0.0) "IC_VDS, Initial D-S voltage"; Real m_dICVDSIsGiven "IC_VDS, IsGivenValue"; Modelica.SIunits.Voltage m_dICVGS( start = 0.0) "IC_VGS, Initial G-S voltage"; Real m_dICVGSIsGiven "IC_VGS, IsGivenValue"; Modelica.SIunits.Voltage m_dICVBS( start = 0.0) "IC_VBS, Initial B-S voltage"; Real m_dICVBSIsGiven "IC_VBS, IsGivenValue"; Integer m_off( start = 0) "Device initially off, non-zero to indicate device is off for dc analysis"; Integer m_bPMOS( start = 0) "P type MOSfet model"; Integer m_nLevel( start = 1) "MOS model level";end Mosfet;
This record MosfetModelLineParams contains the model line parameters that are used for all kinds of mosfet transistors in SPICE3.
record MosfetModelLineParams "Record for Mosfet model line parameters" Real m_jctSatCurDensity( start = 0.0) "JS, Bulk jct. sat. current density, input - use tSatCurDens"; Modelica.SIunits.Resistance m_sheetResistance( start = 0.0) "RSH, Sheet resistance"; Real m_bulkJctPotential( start = 0.8) "PB, Bulk junction potential, input - use tBulkPot"; Real m_bulkJctBotGradingCoeff( start = 0.5) "MJ, Bottom grading coefficient"; Real m_bulkJctSideGradingCoeff( start = 0.5) "MJSW, Side grading coefficient"; Real m_oxideThickness( start = 1.0e-7) "TOX, Oxide thickness unit: micron"; Real m_oxideThicknessIsGiven "TOX, IsGiven value"; Real m_gateSourceOverlapCapFactor( start= 0.0) "CGS0, Gate-source overlap cap"; Real m_gateDrainOverlapCapFactor( start= 0.0) " CGD0, Gate-drain overlap cap"; Real m_gateBulkOverlapCapFactor( start= 0.0) "CGB0, Gate-bulk overlap cap"; Real m_fNcoef( start = 0.0) "KF, Flicker noise coefficient"; Real m_fNexp( start = 1.0) "AF, Flicker noise exponent";end MosfetModelLineParams;
This record contains only one variable and it provides the information on the transistor type (pmos or nmos).
record MosfetModelLine "Type of the transistor" Integer m_type( start = 1) "device type : 1 = n, -1 = p";end MosfetModelLine;
This record MosfetCalc contains variables that are neede for calculation within modeling the semiconductor models.
record MosfetCalc "Mosfet Variables" Modelica.SIunits.Voltage m_vds "Vds, Drain-Source voltage"; Modelica.SIunits.Voltage m_vgs "Vgs, Gate-Source voltage"; Modelica.SIunits.Voltage m_vbs "Vbs, Bulk-Source voltage"; Modelica.SIunits.Current m_cbs "Ibs, B-S junction current"; Modelica.SIunits.Conductance m_gbs "Gbs, Bulk-Source conductance"; Modelica.SIunits.Current m_cbd "Ibd, B-D junction current"; Modelica.SIunits.Conductance m_gbd "Gbd, Bulk-Drain conductance"; Modelica.SIunits.Current m_cdrain "Ids"; Modelica.SIunits.Conductance m_gds "Gds, Drain-Source conductance"; Modelica.SIunits.Transconductance m_gm "Gm, Transconductance"; Modelica.SIunits.Transconductance m_gmbs "Gmbs, Bulk-Source transconductance"; Modelica.SIunits.Capacitance m_capbsb "Cbsb"; Modelica.SIunits.Charge m_chargebsb "Qbsb"; Modelica.SIunits.Capacitance m_capbss "Cbss"; Modelica.SIunits.Charge m_chargebss "Qbss"; Modelica.SIunits.Capacitance m_capbdb "Cbdb"; Modelica.SIunits.Charge m_chargebdb "Qbdb"; Modelica.SIunits.Capacitance m_capbds "Cbds"; Modelica.SIunits.Charge m_chargebds "Qbds"; Modelica.SIunits.Resistance m_sourceResistance "Rs"; Modelica.SIunits.Resistance m_drainResistance "Rd"; Real m_Beta "Beta"; Modelica.SIunits.Capacitance m_capGSovl "Cgso, Gate-source overlap cap."; Modelica.SIunits.Capacitance m_capGDovl "Cgdo, Gate-drain overlap cap."; Modelica.SIunits.Capacitance m_capGBovl "Cgbo, Gate-bulk overlap cap."; Modelica.SIunits.Capacitance m_capOx "Cox"; Modelica.SIunits.Voltage m_von "Von, Turn-on voltage"; Modelica.SIunits.Voltage m_vdsat "Vdsat"; Integer m_mode(start = 1) "Mode"; Real m_lEff;end MosfetCalc;
This function initially precalculats some values for transistor area which can be used for all transistor models.
Type | Name | Default | Description |
---|---|---|---|
Mosfet | in_m | Input parameter set |
Type | Name | Description |
---|---|---|
Mosfet | out_m | Changed parameter set |
function mosfetInitEquations "MOSFET initial precalculations" input Mosfet in_m "Input parameter set"; output Mosfet out_m "Changed parameter set"; algorithm out_m := in_m; if (out_m.m_drainSquares == 0) then out_m.m_drainSquares := 1.; end if; if (out_m.m_sourceSquares == 0) then out_m.m_sourceSquares := 1.; end if;end mosfetInitEquations;
In this function during the initialization phase the transistor type is transscibed to another parameter for further usage.
Type | Name | Default | Description |
---|---|---|---|
Mosfet | in_m | Input parameter set |
Type | Name | Description |
---|---|---|
MosfetModelLine | out_ml | Changed parameter set |
function mosfetModelLineInitEquations "Type transscription" input Mosfet in_m "Input parameter set"; output MosfetModelLine out_ml "Changed parameter set"; algorithm out_ml.m_type := if (in_m.m_bPMOS > 0.5) then -1 else 1; // -1: PMOS ; 1: NMOSend mosfetModelLineInitEquations;
This function getNumberOfElectricalPins identifies the number of elecrtical pins. At the current library version it is fixed to 4.
Type | Name | Description |
---|---|---|
Integer | ret | Number of pins |
function getNumberOfElectricalPins "Number of Pins" output Integer ret "Number of pins"; algorithm ret := 4;end getNumberOfElectricalPins;