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.68.2.1 $
40
//
41
// Revision Date : $Date: 2014/02/26 20:16:30 $
42
//
43
// Current Owner : $Author: tvrusso $
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
bool
detailedDeviceCounts
;
147
148
int
sensDebugLevel
;
149
int
debugLevel
;
150
int
debugMinTimestep
;
151
int
debugMaxTimestep
;
152
double
debugMinTime
;
153
double
debugMaxTime
;
154
155
int
verboseLevel
;
156
157
bool
blockAnalysisFlag
;
// This indicates an MPDE/HB run. This is true during both IC and MPDE/HB phase.
158
// It is toggled by the presence of the .mpde analysis statement in the netlist.
159
160
bool
newExcessPhase
;
161
bool
defaultNewExcessPhase
;
// default is true for MPDE, false for non-MPDE.
162
163
double
excessPhaseScalar1
;
164
double
excessPhaseScalar2
;
165
166
unsigned
int
randomSeed
;
// seed for random number generator used by some devices.
167
// note: each device gets its own random number generator so
168
// it must initialize thing correctly. (See N_DEV_Synapse3 for an
169
// example)
170
171
bool
tryToCompact
;
// Try to compact past history for LTRA device(s).
172
173
bool
calculateAllLeadCurrents
;
// class level flag to have the device manager
174
// configure all devices to load lead current.
175
// data in store and storeQvec.
176
177
// IO::CmdParse & commandLine;
178
};
179
180
inline
void
DeviceOptions::setBlockAnalysisFlag
(
bool
flagVal)
181
{
182
183
// voltageLimiterFlag = false;
184
blockAnalysisFlag
= flagVal;
185
186
// tscoffe/tmei 07/30/08: Note, if we call this with "false", then the
187
// newExcessPhase and defaultNewExcessPhase flags will not go back to their
188
// "user-set" values, they will be set to false.
189
newExcessPhase
= flagVal;
190
defaultNewExcessPhase
= flagVal;
191
}
192
193
}
// namespace Device
194
}
// namespace Xyce
195
196
typedef
Xyce::Device::DeviceOptions
N_DEV_DeviceOptions
;
197
198
#endif // Xyce_N_DEV_DeviceOptions_h
src
DeviceModelPKG
Core
include
N_DEV_DeviceOptions.h
Generated on Mon Mar 24 2014 10:54:34 for Xyce by
1.8.3.1