Xyce
6.1
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
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-2014 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.71 $
40
//
41
// Revision Date : $Date: 2014/07/30 17:36:26 $
42
//
43
// Current Owner : $Author: hkthorn $
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
//-----------------------------------------------------------------------------
67
class
DeviceOptions
68
{
69
friend
std::ostream &
operator<<
(std::ostream & os,
const
DeviceOptions
& devOp);
70
71
public
:
72
DeviceOptions
();
73
~DeviceOptions
();
74
75
bool
registerOptions
(
const
Util::OptionBlock & OB);
76
77
void
setBlockAnalysisFlag
(
bool
flagVal);
78
79
bool
setupDefaultOptions
(
const
IO::CmdParse &command_line);
80
bool
applyCmdLineOptions
(
const
IO::CmdParse &command_line);
81
82
// // Assignment operator:
83
private
:
84
DeviceOptions
&
operator=
(
DeviceOptions
const
& rhs);
85
86
public
:
87
// some general MOS parameters:
88
double
defad
;
// MOS drain diffusion area.
89
double
defas
;
// MOS source diffusion area.
90
double
defl
;
// MOS channel length.
91
double
defw
;
// MOS channel width.
92
93
double
abstol
;
// absolute current error tolerance.
94
double
reltol
;
// relative current error tolerance.
95
double
chgtol
;
// absolute charge error tolerance.
96
97
double
gmin
;
// minimum allowed conductance.
98
double
gmin_orig
;
// this is needed for gmin-homotopy.
99
double
gmin_init
;
// this is needed for gmin-homotopy.
100
double
gmin_scalar
;
// this is needed for gmin-homotopy.
101
102
double
gmax
;
// maximum allowed conductance.
103
104
double
testJac_relTol
;
// reltol for num. jacobian diagnostic
105
double
testJac_absTol
;
// abstol for num. jacobian diagnostic.
106
double
testJac_SqrtEta
;
// dx = numJacSqrtEta * (1.0 + fabs(soln[i]));
107
double
deviceSens_dp
;
// similar to eta, but for numerical device sensitivities
108
109
double
tnom
;
// nominal temperature for device params.
110
Util::Param
temp
;
// operating temperature of ckt.
111
112
double
scale_src
;
// scaling for source loads
113
114
bool
numericalJacobianFlag
;
115
bool
testJacobianFlag
;
116
int
testJacStartStep
;
117
int
testJacStopStep
;
118
bool
testJacWarn
;
119
bool
testJacDeviceNameGiven
;
120
std::string
testJacDeviceName
;
121
bool
voltageLimiterFlag
;
122
int
lambertWFlag
;
123
124
bool
newMeyerFlag
;
125
126
double
icMultiplier
;
127
128
double
defaultMaxTimeStep
;
129
130
// mosfet homotopy:
131
double
vdsScaleMin
;
132
double
vgstConst
;
133
int
numGainScaleBlocks
;
134
bool
staggerGainScale
;
135
bool
randomizeVgstConst
;
136
double
length0
;
137
double
width0
;
138
double
tox0
;
139
double
minRes
;
140
double
minCap
;
141
double
exp_order
;
142
143
// tolerance on resistance below which it will be treated as zero
144
double
zeroResistanceTol
;
145
bool
checkForZeroResistance
;
146
147
int
sensDebugLevel
;
148
int
debugLevel
;
149
int
debugMinTimestep
;
150
int
debugMaxTimestep
;
151
double
debugMinTime
;
152
double
debugMaxTime
;
153
154
int
verboseLevel
;
155
156
bool
blockAnalysisFlag
;
// This indicates an MPDE/HB run. This is true during both IC and MPDE/HB phase.
157
// It is toggled by the presence of the .mpde analysis statement in the netlist.
158
159
bool
newExcessPhase
;
160
bool
defaultNewExcessPhase
;
// default is true for MPDE, false for non-MPDE.
161
162
double
excessPhaseScalar1
;
163
double
excessPhaseScalar2
;
164
165
unsigned
int
randomSeed
;
// seed for random number generator used by some devices.
166
// note: each device gets its own random number generator so
167
// it must initialize thing correctly. (See N_DEV_Synapse3 for an
168
// example)
169
170
bool
tryToCompact
;
// Try to compact past history for LTRA device(s).
171
172
bool
calculateAllLeadCurrents
;
// class level flag to have the device manager
173
// configure all devices to load lead current.
174
// data in store and storeQvec.
175
};
176
177
inline
void
DeviceOptions::setBlockAnalysisFlag
(
bool
flagVal)
178
{
179
180
// voltageLimiterFlag = false;
181
blockAnalysisFlag
= flagVal;
182
183
// tscoffe/tmei 07/30/08: Note, if we call this with "false", then the
184
// newExcessPhase and defaultNewExcessPhase flags will not go back to their
185
// "user-set" values, they will be set to false.
186
newExcessPhase
= flagVal;
187
defaultNewExcessPhase
= flagVal;
188
}
189
190
}
// namespace Device
191
}
// namespace Xyce
192
193
typedef
Xyce::Device::DeviceOptions
N_DEV_DeviceOptions
;
194
195
#endif // Xyce_N_DEV_DeviceOptions_h
src
DeviceModelPKG
Core
include
N_DEV_DeviceOptions.h
Generated on Thu Sep 25 2014 15:20:24 for Xyce by
1.8.3.1