46 #ifndef Xyce_N_DEV_MOSFET_B3SOI_h
47 #define Xyce_N_DEV_MOSFET_B3SOI_h
63 namespace MOSFET_B3SOI {
71 static const char *
name() {
return "BSIM3 SOI";}
346 void registerLIDs(
const std::vector<int> & intLIDVecRef,
347 const std::vector<int> & extLIDVecRef );
353 const std::vector< std::vector<int> > &
jacobianStamp()
const;
354 void registerJacLIDs(
const std::vector< std::vector<int> > & jacLIDVec );
370 double B3SOIlimit(
double vnew,
double vold,
double limit,
int *check);
402 static std::vector< std::vector< std::vector<int> > >
jacStamp_v;
404 static std::vector< std::vector< std::vector<int> > >
jacMap2_v;
1147 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
2173 virtual bool updateState (
double * solVec,
double * staVec,
double * stoVec);
2176 virtual bool loadDAEVectors (
double * solVec,
double * fVec,
double * qVec,
double * bVec,
double * storeLeadF,
double * storeLeadQ,
double * leadF,
double * leadQ,
double * junctionV);
2177 virtual bool loadDAEMatrices (Linear::Matrix & dFdx, Linear::Matrix & dQdx);
2187 #endif // Xyce_N_DEV_MOSFET_B3SOI_h
int ASubstrateEquSourcePrimeNodeOffset
bool clearTemperatureData()
double * f_TemperatureEquSourcePrimeNodePtr
double * f_GatePrimeEquBodyNodePtr
int ASubstrateEquIesOffset
double * q_SourceEquSourceNodePtr
Model & operator=(const Model &)
double * q_TemperatureEquGatePrimeNodePtr
double * f_GatePrimeEquGateMidNodePtr
double * q_DrainEquIdsPtr
const std::vector< std::vector< int > > & jacobianStamp() const
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_TemperatureEquBodyNodePtr
static bool modelRequired()
int AGateMidEquSubstrateNodeOffset
std::vector< Instance * > InstanceVector
double * f_GateMidEquGateNodePtr
double * f_BodyEquGatePrimeNodePtr
int ASourcePrimeEquSourcePrimeNodeOffset
double * f_BodyEquSourcePrimeNodePtr
double * f_ExtBodyEquBodyNodePtr
int AExtBodyEquExtBodyNodeOffset
Instance(const Configuration &configuration, const InstanceBlock &IB, Model &Miter, const FactoryBlock &factory_block)
double * q_SubstrateEquTemperatureNodePtr
int ADrainPrimeEquGateMidNodeOffset
int ADrainPrimeEquGatePrimeNodeOffset
double * f_GateEquGatePrimeNodePtr
static std::vector< std::vector< int > > jacMap_v
double * f_SubstrateEquSubstrateNodePtr
int ABodyEquSourcePrimeNodeOffset
double * q_GateMidEquGateNodePtr
int ASourceEquSourceNodeOffset
std::vector< std::vector< int > > jacStampIC
Pure virtual class to augment a linear system.
void registerStateLIDs(const std::vector< int > &staLIDVecRef)
double * q_SourcePrimeEquSourcePrimeNodePtr
double * f_SubstrateEquIesPtr
double * f_GatePrimeEquDrainPrimeNodePtr
double * f_GateEquBodyNodePtr
double * q_SourcePrimeEquGatePrimeNodePtr
double * f_BodyEquBodyNodePtr
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
double * q_GatePrimeEquBodyNodePtr
double * f_SourcePrimeEquSubstrateNodePtr
double * f_SubstrateEquBodyNodePtr
int ABodyEquBodyNodeOffset
double * f_GateMidEquGatePrimeNodePtr
double * f_TemperatureEquBodyNodePtr
double * f_DrainPrimeEquTemperatureNodePtr
int ASourcePrimeEquBodyNodeOffset
int AGateMidEquGateMidNodeOffset
double * f_GateMidEquSubstrateNodePtr
double * f_DrainPrimeEquGateMidNodePtr
Instance & operator=(const Instance &)
double * q_TemperatureEquDrainPrimeNodePtr
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
double * q_DrainEquDrainNodePtr
int AGateMidEquGatePrimeNodeOffset
int ASourceEquSourcePrimeNodeOffset
double * f_GateEquGateMidNodePtr
double * q_GateEquBodyNodePtr
double * f_SourcePrimeEquSourcePrimeNodePtr
double * f_DrainPrimeEquSubstrateNodePtr
virtual bool loadDAEMatrices(Linear::Matrix &dFdx, Linear::Matrix &dQdx)
Populates the device's Jacobian object with these pointers.
double * q_GatePrimeEquGateMidNodePtr
bool processParams()
processParams
int ADrainPrimeEquDrainPrimeNodeOffset
double bodyJctGateSideGradingCoeff
double * f_TemperatureEquSubstrateNodePtr
double * q_GatePrimeEquSubstrateNodePtr
double * f_SourcePrimeEquGateMidNodePtr
double * f_GateMidEquSourcePrimeNodePtr
int ADrainPrimeEquDrainNodeOffset
double * f_TemperatureEquGatePrimeNodePtr
int ASourcePrimeEquSourceNodeOffset
double * q_GatePrimeEquTemperatureNodePtr
int ADrainPrimeEquTemperatureNodeOffset
double * q_GateMidEquDrainPrimeNodePtr
double * q_icVGSEquIgsPtr
double * f_DrainPrimeEquGatePrimeNodePtr
static const char * deviceTypeName()
int ASourcePrimeEquTemperatureNodeOffset
double * q_BodyEquSubstrateNodePtr
double Eval1ovFNoise(double vds, double freq)
double * f_SourcePrimeEquBodyNodePtr
double * f_SourceEquIpsPtr
double * q_SubstrateEquGatePrimeNodePtr
double referenceTemperature
double * f_icVBSEquIbsPtr
double * q_TemperatureEquSubstrateNodePtr
double * f_DrainEquDrainPrimeNodePtr
double * f_GatePrimeEquGateNodePtr
double * q_DrainPrimeEquGateMidNodePtr
bool updateTemperature(const double &temp_tmp)
int ASubstrateEquDrainPrimeNodeOffset
double * f_SourceEquSourcePrimeNodePtr
std::vector< std::vector< int > > jacMapIC2
virtual std::ostream & printOutInstances(std::ostream &os) const
int ASourcePrimeEquSubstrateNodeOffset
double * q_SourcePrimeEquBodyNodePtr
double * f_GatePrimeEquGatePrimeNodePtr
int ADrainEquDrainNodeOffset
static bool isLinearDevice()
DeviceMaster instantiates a device as described by the device traits T.
void registerJacLIDs(const std::vector< std::vector< int > > &jacLIDVec)
int AGateMidEquGateNodeOffset
int ABodyEquTemperatureNodeOffset
int AGatePrimeEquBodyNodeOffset
double * f_DrainPrimeEquDrainPrimeNodePtr
bool ChargeComputationNeeded
std::vector< int > jacMapIC
int ABodyEquDrainPrimeNodeOffset
static std::vector< std::vector< std::vector< int > > > jacStamp_v
double * q_GatePrimeEquDrainPrimeNodePtr
std::list< SizeDependParam * > sizeDependParamList
int AGatePrimeEquSubstrateNodeOffset
int getNumNoiseSources() const
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
double * q_TemperatureEquSourcePrimeNodePtr
double * f_DrainPrimeEquSourcePrimeNodePtr
int AGateMidEquBodyNodeOffset
double * f_ExtBodyEquIpsPtr
double * f_BodyEquSubstrateNodePtr
int ASubstrateEquSubstrateNodeOffset
double * q_icVESEquIesPtr
static const char * name()
Master(const Configuration &configuration, const FactoryBlock &factory_block, const SolverState &ss1, const DeviceOptions &do1)
double GatesidewallJctPotential
double * q_BodyEquExtBodyNodePtr
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
int ASourcePrimeEquGatePrimeNodeOffset
bool processInstanceParams()
processInstanceParams
double * f_SourcePrimeEquTemperatureNodePtr
double * f_SourcePrimeEquDrainPrimeNodePtr
bool auxChargeCalculations()
double * q_icVDSEquIdsPtr
double * q_DrainPrimeEquGatePrimeNodePtr
double * q_SubstrateEquDrainPrimeNodePtr
double * q_SourcePrimeEquSubstrateNodePtr
bool setupCapacitors_oldDAE()
int AExtBodyEquBodyNodeOffset
int ASourcePrimeEquGateMidNodeOffset
void registerLIDs(const std::vector< int > &intLIDVecRef, const std::vector< int > &extLIDVecRef)
double * f_BodyEquDrainPrimeNodePtr
double * q_GateEquSourcePrimeNodePtr
double * q_SubstrateEquBodyNodePtr
double * f_icVDSEquIdsPtr
double * q_GateEquGateNodePtr
int ADrainPrimeEquBodyNodeOffset
double * q_ExtBodyEquBodyNodePtr
int ATemperatureEquGatePrimeNodeOffset
double unitLengthGateSidewallJctCap
double * q_SubstrateEquIesPtr
double * f_GatePrimeEquSourcePrimeNodePtr
double * f_GateEquGateNodePtr
void getNoiseSources(Xyce::Analysis::NoiseData &noiseData)
The Device class is an interface for device implementations.
double * q_DrainPrimeEquSubstrateNodePtr
double * f_TemperatureEquTemperatureNodePtr
int AGatePrimeEquGatePrimeNodeOffset
static int numOptionalNodes()
int AGatePrimeEquSourcePrimeNodeOffset
int AGateEquGateMidNodeOffset
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
double * q_DrainPrimeEquTemperatureNodePtr
double * f_GateEquDrainPrimeNodePtr
std::vector< Instance * > instanceContainer
double * f_GatePrimeEquTemperatureNodePtr
int AGateEquSourcePrimeNodeOffset
int ATemperatureEquSourcePrimeNodeOffset
int ASubstrateEquTemperatureNodeOffset
double * f_GateMidEquBodyNodePtr
double * q_SourceEquIdsPtr
double * f_SourceEquIesPtr
static void loadModelParameters(ParametricData< Model > &model_parameters)
double * f_SourceEquIdsPtr
double * q_GatePrimeEquGatePrimeNodePtr
Class Configuration contains device configuration data.
int ATemperatureEquSubstrateNodeOffset
double * f_GateEquSourcePrimeNodePtr
double * q_GateEquGateMidNodePtr
void debugOutputModelParams()
double * q_icVBSEquIbsPtr
double * q_ExtBodyEquExtBodyNodePtr
int AGateEquGatePrimeNodeOffset
double * f_SourceEquIgsPtr
double * q_SubstrateEquGateMidNodePtr
int ADrainEquDrainPrimeNodeOffset
double * f_GateMidEquGateMidNodePtr
int ATemperatureEquDrainPrimeNodeOffset
double * f_DrainEquDrainNodePtr
SizeDependParam * paramPtr
double * q_GateMidEquGateMidNodePtr
int ABodyEquExtBodyNodeOffset
double * q_TemperatureEquTemperatureNodePtr
double * q_GateMidEquSubstrateNodePtr
double * f_SubstrateEquTemperatureNodePtr
virtual bool updateState(double *solVec, double *staVec, double *stoVec)
Updates the devices state information.
double * q_DrainEquDrainPrimeNodePtr
double * q_GateEquDrainPrimeNodePtr
double * q_GateMidEquSourcePrimeNodePtr
double * q_GatePrimeEquGateNodePtr
static std::vector< std::vector< std::vector< int > > > jacMap2_v
double * q_ExtBodyEquIpsPtr
double * q_BodyEquTemperatureNodePtr
double * q_SourceEquIgsPtr
double * f_TemperatureEquDrainPrimeNodePtr
int ADrainPrimeEquSubstrateNodeOffset
double * q_DrainPrimeEquDrainPrimeNodePtr
double * q_SubstrateEquSourcePrimeNodePtr
int ADrainPrimeEquSourcePrimeNodeOffset
double * q_SourcePrimeEquDrainPrimeNodePtr
int AGateEquDrainPrimeNodeOffset
double * f_SubstrateEquGateMidNodePtr
int ATemperatureEquTemperatureNodeOffset
double * f_SourceEquIbsPtr
double * f_SourcePrimeEquGatePrimeNodePtr
double * q_BodyEquGatePrimeNodePtr
double * f_icVPSEquIpsPtr
bool loadMatrix(Linear::Matrix &JMat)
int AGatePrimeEquDrainPrimeNodeOffset
double * f_DrainPrimeEquDrainNodePtr
double * q_GatePrimeEquSourcePrimeNodePtr
int AGateEquGateNodeOffset
void addInstance(Instance *instance)
double * f_SourcePrimeEquSourceNodePtr
double * f_SourceEquSourceNodePtr
double * f_GateMidEquDrainPrimeNodePtr
double * q_BodyEquBodyNodePtr
double * q_SourcePrimeEquTemperatureNodePtr
double * q_SourcePrimeEquSourceNodePtr
void registerStoreLIDs(const std::vector< int > &stoLIDVecRef)
int AGateEquBodyNodeOffset
bool updatePrimaryState()
double * q_icVPSEquIpsPtr
double * q_GateMidEquBodyNodePtr
double * f_SubstrateEquDrainPrimeNodePtr
double * f_icVESEquIesPtr
double * q_SourceEquIpsPtr
void setupNoiseSources(Xyce::Analysis::NoiseData &noiseData)
int ASourcePrimeEquDrainPrimeNodeOffset
double * q_SubstrateEquSubstrateNodePtr
double * q_SourceEquIesPtr
ModelBlock represents a .MODEL line from the netlist.
The DeviceTraits template describes the configuration of a device.
Manages parameter binding for class C.
double * q_BodyEquSourcePrimeNodePtr
int AGatePrimeEquTemperatureNodeOffset
int ASubstrateEquBodyNodeOffset
InstanceBlock represent a device instance line from the netlist.
double * q_DrainPrimeEquBodyNodePtr
int AGatePrimeEquGateNodeOffset
double * q_SourcePrimeEquGateMidNodePtr
int ABodyEquGatePrimeNodeOffset
double * q_SourceEquIbsPtr
double * f_SubstrateEquSourcePrimeNodePtr
int AGateMidEquDrainPrimeNodeOffset
double * f_icVGSEquIgsPtr
double * f_BodyEquExtBodyNodePtr
double * f_ExtBodyEquExtBodyNodePtr
int ASubstrateEquGatePrimeNodeOffset
bool setupCapacitors_newDAE()
double * q_SourceEquSourcePrimeNodePtr
double * f_DrainEquIdsPtr
double * q_BodyEquDrainPrimeNodePtr
int AGatePrimeEquGateMidNodeOffset
bool updateIntermediateVars()
double * q_DrainPrimeEquDrainNodePtr
double * f_DrainPrimeEquBodyNodePtr
double * q_DrainPrimeEquSourcePrimeNodePtr
double * q_GateMidEquGatePrimeNodePtr
double * f_SubstrateEquGatePrimeNodePtr
int ASubstrateEquGateMidNodeOffset
double * f_GatePrimeEquSubstrateNodePtr
int ATemperatureEquBodyNodeOffset
double * q_GateEquGatePrimeNodePtr
double B3SOIlimit(double vnew, double vold, double limit, int *check)
int AGateMidEquSourcePrimeNodeOffset
double * f_BodyEquTemperatureNodePtr
int ABodyEquSubstrateNodeOffset