Xyce  6.1
N_DEV_DeviceOptions.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 // Copyright Notice
3 //
4 // Copyright 2002 Sandia Corporation. Under the terms
5 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S.
6 // Government retains certain rights in this software.
7 //
8 // Xyce(TM) Parallel Electrical Simulator
9 // Copyright (C) 2002-2015 Sandia Corporation
10 //
11 // This program is free software: you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation, either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // This program is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 // GNU General Public License for more details.
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with this program. If not, see <http://www.gnu.org/licenses/>.
23 //-----------------------------------------------------------------------------
24 
25 //-----------------------------------------------------------------------------
26 // Filename : $RCSfile: N_DEV_DeviceOptions.h,v $
27 //
28 // Purpose :
29 //
30 // Special Notes :
31 //
32 // Creator : Eric R. Keiter, SNL, Parallel Computational Sciences
33 //
34 // Creation Date : 02/28/00
35 //
36 // Revision Information:
37 // ---------------------
38 //
39 // Revision Number: $Revision: 1.81 $
40 //
41 // Revision Date : $Date: 2015/08/19 15:18:39 $
42 //
43 // Current Owner : $Author: peshola $
44 //-----------------------------------------------------------------------------
45 
46 
47 #ifndef Xyce_N_DEV_DeviceOptions_h
48 #define Xyce_N_DEV_DeviceOptions_h
49 
50 #include <string>
51 
52 #include <N_DEV_fwd.h>
53 #include <N_IO_fwd.h>
54 #include <N_UTL_fwd.h>
55 #include <N_UTL_Param.h>
56 
57 namespace Xyce {
58 namespace Device {
59 
60 //-----------------------------------------------------------------------------
61 // Class : DeviceOptions
62 // Purpose :
63 // Special Notes :
64 // Creator : Eric Keiter, SNL, Parallel Computational Sciences
65 // Creation Date : 3/16/00
66 //-----------------------------------------------------------------------------
68 {
69  friend std::ostream & operator<<(std::ostream & os, const DeviceOptions & devOp);
70 
71 public:
72  static void populateMetadata(IO::PkgOptionsMgr &options_manager);
73 
74  DeviceOptions();
76 
77  bool setOptions(const Util::OptionBlock &option_block);
78 
79 private:
80  DeviceOptions(DeviceOptions const &); ///< No copying
81  DeviceOptions & operator=(DeviceOptions const &); ///< No assignment
82 
83 public:
84  // some general MOS
85  double defad; ///< MOS drain diffusion area.
86  double defas; ///< MOS source diffusion area.
87  double defl; ///< MOS channel length.
88  double defw; ///< MOS channel width.
89 
90  double abstol; ///< absolute current error tolerance.
91  double reltol; ///< relative current error tolerance.
92  double chgtol; ///< absolute charge error tolerance.
93 
94  double gmin; ///< minimum allowed conductance.
95  double gmin_orig; ///< this is needed for gmin-homotopy.
96  double gmin_init; ///< this is needed for gmin-homotopy.
97  double gmin_scalar; ///< this is needed for gmin-homotopy.
98 
99  double gmax; ///< maximum allowed conductance.
100 
101  double testJac_relTol; ///< reltol for num. jacobian diagnostic
102  double testJac_absTol; ///< abstol for num. jacobian diagnostic.
103  double testJac_SqrtEta; ///< dx = numJacSqrtEta * (1.0 + std::fabs(soln[i]));
104  double deviceSens_dp; ///< similar to eta, but for numerical device sensitivities
105 
106  double tnom; ///< nominal temperature for device params.
107  Util::Param temp; ///< operating temperature of ckt.
108 
109  double scale_src; ///< scaling for source loads
110 
117  std::string testJacDeviceName;
120 
122 
123  double icMultiplier;
124 
126 
127  ///< mosfet homotopy:
128  double vdsScaleMin;
129  double vgstConst;
133  double length0;
134  double width0;
135  double tox0;
136  double minRes;
137  double minCap;
138  double exp_order;
139 
140  ///< tolerance on resistance below which it will be treated as zero
143 
146  double debugMinTime;
147  double debugMaxTime;
148 
150 
152  bool defaultNewExcessPhase; ///< default is true for MPDE, false for non-MPDE.
153 
156 
157  unsigned int randomSeed; ///< seed for random number generator used by some devices.
158  ///< note: each device gets its own random number generator so
159  ///< it must initialize thing correctly. (See N_DEV_Synapse3 for an
160  ///< example)
161 
162  bool tryToCompact; ///< Try to compact past history for LTRA device(s).
163 
164  bool calculateAllLeadCurrents; ///< configure all devices to load lead currents
165 
166  int digInitState; ///< used to initialize all of the digital gates in a circuit
167 };
168 
169 } // namespace Device
170 } // namespace Xyce
171 
172 #endif // Xyce_N_DEV_DeviceOptions_h
double defad
MOS drain diffusion area.
double defw
MOS channel width.
double testJac_absTol
abstol for num. jacobian diagnostic.
double chgtol
absolute charge error tolerance.
double reltol
relative current error tolerance.
Pure virtual class to augment a linear system.
unsigned int randomSeed
seed for random number generator used by some devices.
double gmax
maximum allowed conductance.
double testJac_relTol
reltol for num. jacobian diagnostic
double gmin_scalar
this is needed for gmin-homotopy.
double defl
MOS channel length.
double tnom
nominal temperature for device params.
friend std::ostream & operator<<(std::ostream &os, const DeviceOptions &devOp)
double deviceSens_dp
similar to eta, but for numerical device sensitivities
double gmin_init
this is needed for gmin-homotopy.
bool tryToCompact
Try to compact past history for LTRA device(s).
double abstol
absolute current error tolerance.
bool calculateAllLeadCurrents
configure all devices to load lead currents
double defas
MOS source diffusion area.
bool setOptions(const Util::OptionBlock &option_block)
int digInitState
used to initialize all of the digital gates in a circuit
double defaultMaxTimeStep
mosfet homotopy:
static void populateMetadata(IO::PkgOptionsMgr &options_manager)
double testJac_SqrtEta
dx = numJacSqrtEta * (1.0 + std::fabs(soln[i]));
double gmin
minimum allowed conductance.
double scale_src
scaling for source loads
double exp_order
tolerance on resistance below which it will be treated as zero
DeviceOptions & operator=(DeviceOptions const &)
No assignment.
Util::Param temp
operating temperature of ckt.
bool defaultNewExcessPhase
default is true for MPDE, false for non-MPDE.
double gmin_orig
this is needed for gmin-homotopy.