47 #ifndef Xyce_N_DEV_MOSFET1_h
48 #define Xyce_N_DEV_MOSFET1_h
66 static const char *
name() {
return "MOSFET level 1";}
105 void registerLIDs(
const std::vector<int> & intLIDVecRef,
106 const std::vector<int> & extLIDVecRef );
112 const std::vector< std::vector<int> > &
jacobianStamp()
const;
113 void registerJacLIDs(
const std::vector< std::vector<int> > & jacLIDVec );
162 static std::vector< std::vector<int> >
jacMap2;
434 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
787 virtual bool updateState (
double * solVec,
double * staVec,
double * stoVec);
791 virtual bool loadDAEVectors (
double * solVec,
double * fVec,
double * qVec,
double * bVec,
double * storeLeadF,
double * storeLeadQ,
double * leadF,
double * leadQ,
double * junctionV);
794 virtual bool loadDAEMatrices (Linear::Matrix & dFdx, Linear::Matrix & dQdx);
static std::vector< int > jacMap_SC
double * f_GateEquGateNodePtr
int ADrainPrimeEquGateNodeOffset
int ABulkEquBulkNodeOffset
double * f_SourceEquSourceNodePtr
static void loadModelParameters(ParametricData< Model > &model_parameters)
double * q_SourcePrimeEquSourceNodePtr
double * f_BulkEquGateNodePtr
double * f_DrainPrimedotEquVDrainPrimedotNodePtr
int AGateEquDrainPrimeNodeOffset
int ASourcePrimeEquVSourcePrimedotNodeOffset
double * f_GateEquVDrainPrimedotNodePtr
double * q_BulkEquVGatedotNodePtr
int AGateEquVGatedotNodeOffset
static std::vector< std::vector< int > > jacStamp_DC_SC
double * q_GateEquVGatedotNodePtr
const std::vector< std::vector< int > > & jacobianStamp() const
int AGateEquVDrainPrimedotNodeOffset
double * f_SourcePrimeEquBulkNodePtr
void setupNoiseSources(Xyce::Analysis::NoiseData &noiseData)
double * f_SourcePrimeEquVSourcePrimedotNodePtr
int ASourcePrimeEquDrainPrimeNodeOffset
int AGatedotEquVGatedotNodeOffset
double * q_DrainPrimeEquVDrainPrimedotNodePtr
int ASourcedotEquVSourceNodeOffset
int AGateEquGateNodeOffset
double * q_DrainPrimeEquSourcePrimeNodePtr
double * q_DrainPrimeEquGateNodePtr
double * f_SourcedotEquVSourcedotNodePtr
int ABulkEquSourcePrimeNodeOffset
virtual std::ostream & printOutInstances(std::ostream &os) const
bool updateTemperature(const double &temp_tmp)
int ADrainPrimeEquDrainNodeOffset
double * f_SourcePrimeEquVGatedotNodePtr
int ADraindotEquVDraindotNodeOffset
Pure virtual class to augment a linear system.
double * q_DrainPrimeEquDrainPrimeNodePtr
double * f_GateEquVSourcePrimedotNodePtr
double * f_BulkEquVGatedotNodePtr
int AGateEquVSourcePrimedotNodeOffset
int ADrainEquDrainNodeOffset
double * q_DrainEquDrainPrimeNodePtr
double * q_GateEquVBulkdotNodePtr
double * f_BulkEquSourcePrimeNodePtr
int ABulkdotEquVBulkdotNodeOffset
bool sideWallCapFactorGiven
double * q_SourcedotEquVSourceNodePtr
double * q_BulkdotEquVBulkNodePtr
double * f_SourcePrimedotEquVSourcePrimeNodePtr
static std::vector< std::vector< int > > jacMap2_SC
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
Instance & operator=(const Instance &)
double * q_BulkEquDrainPrimeNodePtr
int ADrainPrimeEquVDrainPrimedotNodeOffset
int ABulkdotEquVBulkNodeOffset
bool processInstanceParams()
processInstanceParams
double * q_BulkEquSourcePrimeNodePtr
int ABulkEquVSourcePrimedotNodeOffset
bool updateIntermediateVars()
int ABulkEquVBulkdotNodeOffset
double * q_DrainEquDrainNodePtr
static std::vector< std::vector< int > > jacStamp_SC
double * f_GateEquBulkNodePtr
double * q_BulkEquBulkNodePtr
double gateDrainOverlapCapFactor
double * f_DraindotEquVDraindotNodePtr
double * f_DrainPrimeEquDrainPrimeNodePtr
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.
double * q_GatedotEquVGateNodePtr
int ADrainPrimeEquBulkNodeOffset
int ADrainPrimeEquVBulkdotNodeOffset
virtual bool loadDAEMatrices(Linear::Matrix &dFdx, Linear::Matrix &dQdx)
Populates the device's Jacobian object with these pointers.
Master(const Configuration &configuration, const FactoryBlock &factory_block, const SolverState &ss1, const DeviceOptions &do1)
int ASourcePrimeEquBulkNodeOffset
bool processParams()
processParams
void registerJacLIDs(const std::vector< std::vector< int > > &jacLIDVec)
double * f_DrainEquDrainPrimeNodePtr
double * f_GatedotEquVGatedotNodePtr
bool updatePrimaryState()
double * f_DrainPrimeEquVGatedotNodePtr
static std::vector< std::vector< int > > jacMap2_DC_SC
double * f_BulkdotEquVBulkNodePtr
double * q_SourcePrimedotEquVSourcePrimeNodePtr
DeviceMaster instantiates a device as described by the device traits T.
std::vector< Instance * > instanceContainer
double * q_SourcePrimeEquGateNodePtr
double * q_BulkEquVDrainPrimedotNodePtr
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
int ADrainEquDrainPrimeNodeOffset
double * q_DrainPrimedotEquVDrainPrimedotNodePtr
double GateSourceOverlapCap
void getNoiseSources(Xyce::Analysis::NoiseData &noiseData)
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
double * f_DrainPrimeEquVDrainPrimedotNodePtr
double * q_SourceEquSourcePrimeNodePtr
double * q_SourcePrimeEquBulkNodePtr
double * q_GateEquVSourcePrimedotNodePtr
double * f_DraindotEquVDrainNodePtr
double * q_GateEquVDrainPrimedotNodePtr
Instance(const Configuration &configuration, const InstanceBlock &IB, Model &Miter, const FactoryBlock &factory_block)
int ASourcePrimeEquVGatedotNodeOffset
void addInstance(Instance *instance)
int AGateEquVBulkdotNodeOffset
double * q_DrainPrimeEquBulkNodePtr
int ASourcePrimeEquGateNodeOffset
double * f_GateEquVBulkdotNodePtr
double * f_BulkEquVBulkdotNodePtr
int ADrainPrimeEquVGatedotNodeOffset
double * q_DraindotEquVDrainNodePtr
int ABulkEquDrainPrimeNodeOffset
int getNumNoiseSources() const
double * f_GateEquVGatedotNodePtr
int ABulkEquVGatedotNodeOffset
static std::vector< int > jacMap
static bool isLinearDevice()
int ASourcePrimeEquSourcePrimeNodeOffset
double * f_SourceEquSourcePrimeNodePtr
int ASourcePrimeEquVBulkdotNodeOffset
int ABulkEquGateNodeOffset
int ADrainPrimedotEquVDrainPrimedotNodeOffset
double * q_DrainPrimeEquDrainNodePtr
double * q_BulkEquVBulkdotNodePtr
int ADraindotEquVDrainNodeOffset
double * f_DrainPrimeEquGateNodePtr
The Device class is an interface for device implementations.
int AGateEquBulkNodeOffset
double * q_DrainPrimedotEquVDrainPrimeNodePtr
double * f_SourcePrimeEquDrainPrimeNodePtr
static const char * deviceTypeName()
void registerLIDs(const std::vector< int > &intLIDVecRef, const std::vector< int > &extLIDVecRef)
double * q_BulkEquGateNodePtr
Class Configuration contains device configuration data.
int ASourceEquSourcePrimeNodeOffset
int AGatedotEquVGateNodeOffset
std::vector< Instance * > InstanceVector
int ADrainPrimedotEquVDrainPrimeNodeOffset
static std::vector< std::vector< int > > jacStamp
double * q_GateEquSourcePrimeNodePtr
double * f_SourcePrimeEquSourceNodePtr
static std::vector< int > jacMap_DC_SC
double * q_GateEquBulkNodePtr
double surfaceStateDensity
double bulkJctSideGradingCoeff
double * q_SourcePrimeEquVGatedotNodePtr
double * f_BulkEquBulkNodePtr
double bulkJctBotGradingCoeff
double * f_SourcedotEquVSourceNodePtr
void registerStoreLIDs(const std::vector< int > &stoLIDVecRef)
int ASourceEquSourceNodeOffset
static std::vector< std::vector< int > > jacMap2_DC
double * f_GateEquSourcePrimeNodePtr
double * f_BulkEquVSourcePrimedotNodePtr
virtual bool updateState(double *solVec, double *staVec, double *stoVec)
Updates the devices state information.
double * f_BulkEquDrainPrimeNodePtr
int ABulkEquVDrainPrimedotNodeOffset
double * q_SourcePrimedotEquVSourcePrimedotNodePtr
double * f_GateEquDrainPrimeNodePtr
double * q_BulkdotEquVBulkdotNodePtr
Model & operator=(const Model &)
static bool modelRequired()
double * q_GatedotEquVGatedotNodePtr
static std::vector< int > jacMap_DC
static const char * name()
double * f_DrainPrimeEquSourcePrimeNodePtr
double * q_SourceEquSourceNodePtr
double * q_DrainPrimeEquVGatedotNodePtr
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
double * f_BulkEquVDrainPrimedotNodePtr
double * q_GateEquDrainPrimeNodePtr
double * f_GatedotEquVGateNodePtr
double * f_DrainPrimedotEquVDrainPrimeNodePtr
void registerStateLIDs(const std::vector< int > &staLIDVecRef)
double * f_SourcePrimeEquSourcePrimeNodePtr
ModelBlock represents a .MODEL line from the netlist.
double * q_SourcePrimeEquDrainPrimeNodePtr
double * f_DrainPrimeEquBulkNodePtr
The DeviceTraits template describes the configuration of a device.
Manages parameter binding for class C.
InstanceBlock represent a device instance line from the netlist.
double * f_SourcePrimedotEquVSourcePrimedotNodePtr
int AGateEquSourcePrimeNodeOffset
int ASourcePrimeEquSourceNodeOffset
double * q_SourcePrimeEquVSourcePrimedotNodePtr
double * q_GateEquGateNodePtr
double * f_DrainPrimeEquVBulkdotNodePtr
void loadErrorWeightMask()
int ADrainPrimeEquSourcePrimeNodeOffset
double * q_DraindotEquVDraindotNodePtr
double gateBulkOverlapCapFactor
int ASourcePrimedotEquVSourcePrimeNodeOffset
static std::vector< std::vector< int > > jacMap2
static std::vector< std::vector< int > > jacStamp_DC
double * q_SourcePrimeEquSourcePrimeNodePtr
double * f_BulkdotEquVBulkdotNodePtr
int ASourcePrimedotEquVSourcePrimedotNodeOffset
double * q_BulkEquVSourcePrimedotNodePtr
double * q_DrainPrimeEquVBulkdotNodePtr
double * q_SourcePrimeEquVBulkdotNodePtr
double * f_DrainEquDrainNodePtr
int ASourcedotEquVSourcedotNodeOffset
double * f_SourcePrimeEquVBulkdotNodePtr
double * f_SourcePrimeEquGateNodePtr
double * f_DrainPrimeEquDrainNodePtr
double * q_SourcedotEquVSourcedotNodePtr
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
int ADrainPrimeEquDrainPrimeNodeOffset
double gateSourceOverlapCapFactor
double GateDrainOverlapCap
double GateBulkOverlapCap