48 #ifndef Xyce_N_DEV_VDMOS_h
49 #define Xyce_N_DEV_VDMOS_h
70 static const char *
name() {
return "Power MOSFET";}
109 void registerLIDs(
const std::vector<int> & intLIDVecRef,
110 const std::vector<int> & extLIDVecRef );
116 const std::vector< std::vector<int> > &
jacobianStamp()
const;
117 void registerJacLIDs(
const std::vector< std::vector<int> > & jacLIDVec );
137 double vddsat_local,
double & capgs_local,
double & capgdd_local,
138 double & capgb_local,
double phi,
double cox );
141 double & cgs,
double & cgd,
double & cgb);
143 double & qD,
double & qS,
double & qB);
144 bool UCCMcvon(
double vbs_local,
double & von_local,
double & dvonvbs_local);
146 double & cdraindrift_loc,
double & vsate);
148 double & cdraindrift_loc,
double & vsate);
439 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
647 static std::vector< std::vector<int> >
jacMap2;
904 virtual bool updateState (
double * solVec,
double * staVec,
double * stoVec);
908 virtual bool loadDAEVectors (
double * solVec,
double * fVec,
double * qVec,
double * bVec,
double * storeLeadF,
double * storeLeadQ,
double * leadF,
double * leadQ,
double * junctionV);
909 virtual bool loadDAEMatrices (Linear::Matrix & dFdx, Linear::Matrix & dQdx);
int ASourcePrimeEquDrainPrimeNodeOffset
double * q_DrainDriftEquDrainNodePtr
int AD1PrimeEquSourceNodeOffset
bool UCCMqmeyer(double vgps, double vgpdd, double vgpb, double von_local, double vddsat_local, double &capgs_local, double &capgdd_local, double &capgb_local, double phi, double cox)
static std::vector< std::vector< int > > jacStamp_D1C_DC_GC
int ADrainPrimeEquBulkNodeOffset
static std::vector< std::vector< int > > jacStamp_D1C
static std::vector< std::vector< int > > jacMap2_DC_SC_GC
double D1DIOsaturationCurrentExp
int ADrainEquDrainNodeOffset
double surfaceStateDensity
double * q_GateEquGatePrimeNodePtr
int ASourcePrimeEquBulkNodeOffset
double * f_SourcePrimeEquGatePrimeNodePtr
bool D1DIObreakdownVoltageGiven
double * q_SourcePrimeEquSourcePrimeNodePtr
int ABulkEquDrainPrimeNodeOffset
double * q_DrainPrimeEquBulkNodePtr
int ASourcePrimeEquSourcePrimeNodeOffset
static std::vector< int > jacMap_D1C_DC_SC
double * f_GatePrimeEquDrainPrimeNodePtr
double * q_BulkEquDrainPrimeNodePtr
int ADrainDriftEquDrainNodeOffset
static std::vector< std::vector< int > > jacMap2_GC
double gateBulkOverlapCapFactor
static std::vector< std::vector< int > > jacMap2_DC_GC
double * f_BulkEquSourcePrimeNodePtr
static std::vector< std::vector< int > > jacMap2_D1C
Master(const Configuration &configuration, const FactoryBlock &factory_block, const SolverState &ss1, const DeviceOptions &do1)
static std::vector< std::vector< int > > jacMap2_D1C_DC_SC
bool UCCMMeyercap(double vgps, double vgpdd, double vgpb, double &cgs, double &cgd, double &cgb)
Pure virtual class to augment a linear system.
double * f_SourceEquD1PrimeNodePtr
static std::vector< std::vector< int > > jacStamp_SC_GC
int ABulkEquBulkNodeOffset
int ASourcePrimeEquGatePrimeNodeOffset
int AGatePrimeEquBulkNodeOffset
int ASourceEquSourcePrimeNodeOffset
double * q_DrainEquSourceNodePtr
double D1DIOemissionCoeff
double * q_GatePrimeEquGatePrimeNodePtr
double * q_SourcePrimeEquSourceNodePtr
double * q_D1PrimeEquDrainNodePtr
double * f_SourcePrimeEquSourcePrimeNodePtr
static std::vector< std::vector< int > > jacMap2_D1C_SC
static const char * name()
int ADrainEquD1PrimeNodeOffset
double * q_SourceEquD1PrimeNodePtr
double * f_GatePrimeEquGateNodePtr
int AGateEquGatePrimeNodeOffset
static std::vector< int > jacMap_D1C_SC
bool UCCMmosa2(double vgps, double vdds, double dvonvbs, double &cdraindrift_loc, double &vsate)
static std::vector< int > jacMap
virtual bool updateState(double *solVec, double *staVec, double *stoVec)
Updates the devices state information.
static std::vector< std::vector< int > > jacStamp_DC_SC_GC
bool updateIntermediateVars()
bool updatePrimaryState()
static std::vector< int > jacMap_SC_GC
static void loadModelParameters(ParametricData< Model > &model_parameters)
static std::vector< std::vector< int > > jacStamp_D1C_GC
double * f_DrainPrimeEquDrainDriftNodePtr
static std::vector< std::vector< int > > jacStamp_DC
bool processParams()
processParams
bool updateTemperature(const double &temp_tmp)
double * q_GatePrimeEquGateNodePtr
static std::vector< std::vector< int > > jacStamp_D1C_SC_GC
int ADrainDriftEquDrainDriftNodeOffset
double * f_DrainDriftEquDrainDriftNodePtr
static std::vector< std::vector< int > > jacStamp_D1C_DC
int AGatePrimeEquSourcePrimeNodeOffset
double * f_GateEquGatePrimeNodePtr
static std::vector< std::vector< int > > jacStamp_D1C_DC_SC
int ADrainPrimeEquDrainPrimeNodeOffset
double * q_D1PrimeEquSourceNodePtr
double * q_GatePrimeEquSourcePrimeNodePtr
bool UCCMcvon(double vbs_local, double &von_local, double &dvonvbs_local)
Instance & operator=(const Instance &)
double * f_DrainPrimeEquDrainPrimeNodePtr
static std::vector< int > jacMap_D1C
static std::vector< int > jacMap_DC
double * q_GateEquGateNodePtr
int li_state_D1DIOcapCharge
double * f_DrainEquD1PrimeNodePtr
static std::vector< std::vector< int > > jacMap2_SC
double * f_DrainDriftEquDrainNodePtr
double * f_SourcePrimeEquBulkNodePtr
static std::vector< std::vector< int > > jacMap2_D1C_DC_SC_GC
double * f_GateEquGateNodePtr
int ABulkEquGatePrimeNodeOffset
double * q_SourceEquSourcePrimeNodePtr
double * f_SourceEquDrainNodePtr
double * f_DrainEquDrainDriftNodePtr
static std::vector< std::vector< int > > jacMap2_SC_GC
void registerStoreLIDs(const std::vector< int > &stoLIDVecRef)
double GateDrainOverlapCap
int ADrainPrimeEquSourcePrimeNodeOffset
DeviceMaster instantiates a device as described by the device traits T.
int ASourcePrimeEquSourceNodeOffset
static std::vector< std::vector< int > > jacMap2
double * q_SourcePrimeEquDrainPrimeNodePtr
double * f_BulkEquBulkNodePtr
double bulkJctSideGradingCoeff
double D1DIOactivationEnergy
double * q_BulkEquSourcePrimeNodePtr
double * q_DrainDriftEquDrainDriftNodePtr
double GateSourceOverlapCap
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
void addInstance(Instance *instance)
double * f_SourcePrimeEquSourceNodePtr
double * f_DrainEquDrainNodePtr
static std::vector< std::vector< int > > jacMap2_D1C_GC
static std::vector< std::vector< int > > jacMap2_D1C_DC
bool UCCMCharges(double vgps, double vgpdd, double vgpb, double &qD, double &qS, double &qB)
double * f_GatePrimeEquGatePrimeNodePtr
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
static std::vector< std::vector< int > > jacStamp_D1C_DC_SC_GC
double * f_SourceEquSourceNodePtr
virtual bool loadDAEMatrices(Linear::Matrix &dFdx, Linear::Matrix &dQdx)
Populates the device's Jacobian object with these pointers.
double * f_DrainDriftEquDrainPrimeNodePtr
const std::vector< std::vector< int > > & jacobianStamp() const
double * f_DrainPrimeEquBulkNodePtr
double * f_GatePrimeEquBulkNodePtr
double * f_D1PrimeEquD1PrimeNodePtr
int AGateEquGateNodeOffset
static const char * deviceTypeName()
double * q_DrainEquDrainDriftNodePtr
virtual bool loadDAEVectors(double *solVec, double *fVec, double *qVec, double *bVec, double *storeLeadF, double *storeLeadQ, double *leadF, double *leadQ, double *junctionV)
Populates the device's ExternData object with these pointers.
int ADrainPrimeEquGatePrimeNodeOffset
double * q_DrainEquD1PrimeNodePtr
static std::vector< std::vector< int > > jacStamp_GC
double gateDrainOverlapCapFactor
double * f_GatePrimeEquSourcePrimeNodePtr
double * q_BulkEquGatePrimeNodePtr
double D1DIObreakdownCurrent
double * f_SourceEquSourcePrimeNodePtr
static std::vector< int > jacMap_DC_GC
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
static std::vector< std::vector< int > > jacMap2_DC_SC
Model & operator=(const Model &)
int ABulkEquSourcePrimeNodeOffset
static std::vector< int > jacMap_GC
int AD1PrimeEquDrainNodeOffset
The Device class is an interface for device implementations.
static std::vector< std::vector< int > > jacMap2_D1C_SC_GC
static std::vector< int > jacMap_D1C_DC_GC
double * q_DrainDriftEquDrainPrimeNodePtr
static std::vector< int > jacMap_SC
double * q_DrainPrimeEquDrainDriftNodePtr
int AD1PrimeEquD1PrimeNodeOffset
double * q_GatePrimeEquDrainPrimeNodePtr
void registerJacLIDs(const std::vector< std::vector< int > > &jacLIDVec)
Class Configuration contains device configuration data.
int ADrainDriftEquDrainPrimeNodeOffset
int AGatePrimeEquDrainPrimeNodeOffset
double D1DIOdepletionCapCoeff
bool UCCMmosa1(double vgps, double vdds, double dvonvbs, double &cdraindrift_loc, double &vsate)
int AGatePrimeEquGatePrimeNodeOffset
double * f_DrainPrimeEquSourcePrimeNodePtr
double D1DIObreakdownVoltage
double * f_SourcePrimeEquDrainPrimeNodePtr
double * f_BulkEquGatePrimeNodePtr
double * f_D1PrimeEquDrainNodePtr
double * q_GatePrimeEquBulkNodePtr
static std::vector< std::vector< int > > jacStamp_D1C_SC
virtual std::ostream & printOutInstances(std::ostream &os) const
void registerLIDs(const std::vector< int > &intLIDVecRef, const std::vector< int > &extLIDVecRef)
double GateBulkOverlapCap
static std::vector< int > jacMap_DC_SC_GC
int AGatePrimeEquGateNodeOffset
static std::vector< int > jacMap_D1C_DC
bool updateSecondaryState()
int ASourceEquD1PrimeNodeOffset
double * q_SourceEquDrainNodePtr
static std::vector< int > jacMap_D1C_DC_SC_GC
static std::vector< int > jacMap_D1C_GC
double * q_SourcePrimeEquGatePrimeNodePtr
static std::vector< std::vector< int > > jacStamp
double gateSourceOverlapCapFactor
double * q_DrainPrimeEquSourcePrimeNodePtr
static std::vector< int > jacMap_D1C_SC_GC
int ADrainEquSourceNodeOffset
double * f_BulkEquDrainPrimeNodePtr
std::vector< Instance * > instanceContainer
static bool isLinearDevice()
ModelBlock represents a .MODEL line from the netlist.
double * f_DrainPrimeEquGatePrimeNodePtr
The DeviceTraits template describes the configuration of a device.
Manages parameter binding for class C.
static std::vector< std::vector< int > > jacStamp_DC_GC
double * q_DrainEquDrainNodePtr
InstanceBlock represent a device instance line from the netlist.
double * q_DrainPrimeEquDrainPrimeNodePtr
double * f_DrainEquSourceNodePtr
static std::vector< std::vector< int > > jacStamp_DC_SC
static bool modelRequired()
double bulkJctBotGradingCoeff
double * q_SourcePrimeEquBulkNodePtr
std::vector< Instance * > InstanceVector
int ADrainEquDrainDriftNodeOffset
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
static std::vector< std::vector< int > > jacMap2_DC
static std::vector< std::vector< int > > jacStamp_SC
double * f_D1PrimeEquSourceNodePtr
bool processInstanceParams()
processInstanceParams
int ADrainPrimeEquDrainDriftNodeOffset
virtual bool updateSecondaryState(double *staDeriv, double *stoVec)
Updates the devices secondary state information.
static std::vector< int > jacMap_DC_SC
double * q_D1PrimeEquD1PrimeNodePtr
double * q_SourceEquSourceNodePtr
static std::vector< std::vector< int > > jacMap2_D1C_DC_GC
void registerStateLIDs(const std::vector< int > &staLIDVecRef)
Instance(const Configuration &configuration, const InstanceBlock &IB, Model &Miter, const FactoryBlock &factory_block)
bool sideWallCapFactorGiven
int ASourceEquSourceNodeOffset
double * q_DrainPrimeEquGatePrimeNodePtr
double * q_BulkEquBulkNodePtr
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
int ASourceEquDrainNodeOffset