46 #ifndef Xyce_N_DEV_MOSFET_B4_h
47 #define Xyce_N_DEV_MOSFET_B4_h
70 static const char *
name() {
return "BSIM4";}
345 void registerLIDs(
const std::vector<int> & intLIDVecRef,
346 const std::vector<int> & extLIDVecRef );
352 const std::vector< std::vector<int> > &
jacobianStamp()
const;
353 void registerJacLIDs(
const std::vector< std::vector<int> > & jacLIDVec );
366 double phi,
double ngate,
double epsgate,
367 double coxe,
double Vgs_arg,
368 double & Vgs_eff,
double & dVgs_eff_dVg);
371 double nf_arg,
int minSD,
372 double & nuIntD,
double & nuEndD,
double & nuIntS,
double & nuEndS);
375 double nf_arg,
int geo,
int minSD,
376 double Weffcj,
double DMCG,
double DMCI,
double DMDG,
377 double & Ps,
double & Pd,
double & As,
double & Ad);
381 int geo,
int rgeo,
int minSD,
382 double Weffcj,
double Rsh,
double DMCG,
double DMCI,
double DMDG,
383 int Type,
double & Rtot);
386 double Weffcj,
double Rsh,
double DMCG,
double DMCI,
double DMDG,
387 double nuEnd,
int rgeo,
int Type,
double & Rend);
390 double Weffcj,
double Rsh,
double DMCG,
double DMCI,
double DMDG,
391 int rgeo,
int Type,
double nuEnd,
double & Rend);
394 double Nvtm,
double Ijth,
395 double Isb,
double XExpBV,
double & Vjm);
1016 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
2150 virtual bool updateState (
double * solVec,
double * staVec,
double * stoVec);
2153 virtual bool loadDAEVectors (
double * solVec,
double * fVec,
double * qVec,
double * bVec,
double * storeLeadF,
double * storeLeadQ,
double * leadF,
double * leadQ,
double * junctionV);
2156 virtual bool loadDAEMatrices (Linear::Matrix & dFdx, Linear::Matrix & dQdx);
double DunitLengthSidewallJctCap
bool clearTemperatureData()
bool setupCapacitors_newDAE()
double SjctSidewallTempSatCurDensity
double DjctSidewallSatCurDensity
double SbulkJctGateSideGradingCoeff
bool sourceMOSFET_B4Exists
double SunitLengthGateSidewallJctCap
SizeDependParam * paramPtr
bool auxChargeCalculations()
bool drainMOSFET_B4Exists
double SjctTempSatCurDensity
double SsidewallJctPotential
bool ChargeComputationNeeded
Pure virtual class to augment a linear system.
static bool modelRequired()
double SjctGateSidewallTempSatCurDensity
const std::vector< std::vector< int > > & jacobianStamp() const
double DjctSidewallTempSatCurDensity
int RdseffGeo(double nf_arg, int geo, int rgeo, int minSD, double Weffcj, double Rsh, double DMCG, double DMCI, double DMDG, int Type, double &Rtot)
std::vector< std::vector< int > > jacStamp
double SbulkJctBotGradingCoeff
bool setupCapacitors_oldDAE()
void registerLIDs(const std::vector< int > &intLIDVecRef, const std::vector< int > &extLIDVecRef)
void registerJacLIDs(const std::vector< std::vector< int > > &jacLIDVec)
std::vector< Instance * > instanceContainer
int RdsEndSha(double Weffcj, double Rsh, double DMCG, double DMCI, double DMDG, int rgeo, int Type, double nuEnd, double &Rend)
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
Master(const Configuration &configuration, const FactoryBlock &factory_block, const SolverState &ss1, const DeviceOptions &do1)
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
DeviceMaster instantiates a device as described by the device traits T.
bool processParams()
processParams
virtual std::ostream & printOutInstances(std::ostream &os) const
double DjctGateSidewallTempSatCurDensity
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
std::list< SizeDependParam * > sizeDependParamList
std::vector< std::vector< int > > jacMap2
int RdsEndIso(double Weffcj, double Rsh, double DMCG, double DMCI, double DMDG, double nuEnd, int rgeo, int Type, double &Rend)
double SunitAreaTempJctCap
void addInstance(Instance *instance)
double DunitAreaTempJctCap
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.
Model & operator=(const Model &)
static const char * deviceTypeName()
bool updateTemperature(const double &temp_tmp)
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
double referenceTemperature
double SunitLengthGateSidewallTempJctCap
The Device class is an interface for device implementations.
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
Instance & operator=(const Instance &)
bool updateTemperatureCalled_
double SbulkJctSideGradingCoeff
double SGatesidewallJctPotential
Class Configuration contains device configuration data.
std::vector< Instance * > InstanceVector
double DunitLengthGateSidewallJctCap
Instance(const Configuration &configuration, const InstanceBlock &IB, Model &Miter, const FactoryBlock &factory_block)
virtual bool updateState(double *solVec, double *staVec, double *stoVec)
Updates the devices state information.
int DioIjthVjmEval(double Nvtm, double Ijth, double Isb, double XExpBV, double &Vjm)
std::vector< int > jacMap
double SjctSidewallSatCurDensity
int NumFingerDiff(double nf_arg, int minSD, double &nuIntD, double &nuEndD, double &nuIntS, double &nuEndS)
void debugJacStampOutput()
static void loadModelParameters(ParametricData< Model > &model_parameters)
int polyDepletion(double phi, double ngate, double epsgate, double coxe, double Vgs_arg, double &Vgs_eff, double &dVgs_eff_dVg)
double DbulkJctGateSideGradingCoeff
void registerStateLIDs(const std::vector< int > &staLIDVecRef)
double DsidewallJctPotential
double SunitLengthSidewallTempJctCap
double DunitLengthGateSidewallTempJctCap
void registerStoreLIDs(const std::vector< int > &stoLIDVecRef)
double DunitLengthSidewallTempJctCap
int PAeffGeo(double nf_arg, int geo, int minSD, double Weffcj, double DMCG, double DMCI, double DMDG, double &Ps, double &Pd, double &As, double &Ad)
virtual bool loadDAEMatrices(Linear::Matrix &dFdx, Linear::Matrix &dQdx)
Populates the device's Jacobian object with these pointers.
bool updatePrimaryState()
double SjctGateSidewallSatCurDensity
double SunitLengthSidewallJctCap
double DGatesidewallJctPotential
ModelBlock represents a .MODEL line from the netlist.
The DeviceTraits template describes the configuration of a device.
Manages parameter binding for class C.
InstanceBlock represent a device instance line from the netlist.
bool updateIntermediateVars()
static bool isLinearDevice()
bool sourcePerimeterGiven
static const char * name()
bool processInstanceParams()
processInstanceParams
double DbulkJctSideGradingCoeff
double DbulkJctBotGradingCoeff
double DjctTempSatCurDensity
double DjctGateSidewallSatCurDensity