CmdNgSpiceOPT.hpp
7.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
//**************************************************************************************************
// CmdNgSpiceOPT.hpp *
// ------------------- *
// Description : This class contains values associated with the NG-Spice OPTIONS command. It *
// inherits from the class CmdBase. *
// Started : 2006-08-23 *
// Last Update : 2015-03-07 *
// Copyright : (C) 2006-2016 MSWaters *
//**************************************************************************************************
//**************************************************************************************************
// *
// This program is free software; you can redistribute it and/or modify it under the *
// terms of the GNU General Public License as published by the Free Software Foundation; *
// either version 3 of the License, or (at your option) any later version. *
// *
//**************************************************************************************************
#ifndef CMDNGSOPT_HPP
#define CMDNGSOPT_HPP
// Application Includes
#include "TypeDefs.hpp"
#include "base/CmdBase.hpp"
#include "gnucap/commands/CmdGnuCapOPT.hpp"
#include "utility/CnvtType.hpp"
class CmdGnuCapOPT;
// Local Macro and/or Constant Declarations
#define NGS_ABSTOL wxT("1.0pA") // Absolute current error tolerance
#define NGS_CHGTOL wxT("10.0fC") // Charge tolerance
#define NGS_PIVTOL wxT("1.0E-13") // Absolute minimum value for matrix entry as pivot
#define NGS_RELTOL wxT("0.001") // Relative error tolerance
#define NGS_TRTOL wxT("7.0") // Transient analysis error tolerance
#define NGS_VNTOL wxT("1.0uV") // Absolute voltage error tolerance
#define NGS_PIVREL wxT("1.0E-03") // Relative ratio of largest col. entry & acceptable pivot value
#define NGS_DEFL wxT("100.0um") // MOSFET default channel length (metre)
#define NGS_DEFW wxT("100.0um") // MOSFET default channel width (metre)
#define NGS_DEFAD wxT("0.0") // MOSFET default drain diffusion area (sq.m)
#define NGS_DEFAS wxT("0.0") // MOSFET default source diffusion area (sq.m)
#define NGS_TEMP wxT("27.0Deg.C") // Operating temperature of circuit
#define NGS_TNOM wxT("27.0Deg.C") // Nominal temp. device parameters measured at
#define NGS_CONVABSS wxT("0.1") // Absolute step limit applied to code models
#define NGS_CONVSTEP wxT("0.25") // Relative step limit applied to code models
#define NGS_GMIN wxT("1.0pS") // Minimum allowable conductance
#define NGS_RSERIES wxT("0.0mOhm") // Adds a resistor to each inductor in the circuit
#define NGS_RSHUNT wxT("1000.0GOhm") // Adds a resistor from each analogue node to ground
#define NGS_RAMPTIME wxT("0.0mSec") // Transient analysis supply ramping time
#define NGS_ITL1 wxT("100") // DC analysis iteration limit
#define NGS_ITL2 wxT("50") // DC analysis transfer curve iteration limit
#define NGS_ITL3 wxT("4") // Transient analysis lower iteration limit
#define NGS_ITL4 wxT("10") // Transient analysis timepoint iteration limit
#define NGS_ITL5 wxT("5000") // Transient analysis total iteration limit
#define NGS_ITL6 wxT("10") // Source stepping iteration limit (synonym for SRCSTEPS)
#define NGS_SRCSTEPS wxT("10") // Source stepping iteration limit
#define NGS_GMINSTEP wxT("0") // Number of GMIN steps to be attempted
#define NGS_MAXEVIT wxT("5") // Max. event iterations at an analysis point
#define NGS_MAXOPALT wxT("5") // Max. analog/event alternations in OP analysis
#define NGS_MAXORD wxT("2") // Max. order for the numerical integration method
#define NGS_MAXWARNS wxT("5") // Max. no. of SOA (Safe Operating Area) voltage warning messages
#define NGS_NUMDGT wxT("6") // Precision : no. of digits after decimal point
#define NGS_WIDTH wxT("0") // Allows for operator (eg. frequency) & 10 cols of data
#define NGS_METHOD wxT("Trap") // Numerical integration method (TRAPezoidal or GEAR)
#define NGS_UNITS wxT("Degrees") // Phase angle units : degrees or radians
#define NGS_BADMOS3 false // Use MOS3 model with "kappa" discontinuity
#define NGS_INTERP false // Interpolate output data onto fixed time steps
#define NGS_NOOPAC false // Don't do an OP analysis before the AC analysis
#define NGS_NOOPALT false // Analog/event alternation in OP analysis
#define NGS_OPTS false // Enable printing of option values
#define NGS_TRYTOCOM false // Try to condense LTRA model's past history
#define NGS_WARN false // Enable SOA (Safe Operating Area) voltage warning messages
//**************************************************************************************************
class CmdNgSpiceOPT : public CmdBase
{
private :
virtual bool bValidate( void );
public :
// Options which are floating point values
wxString m_osABSTOL;
wxString m_osCHGTOL;
wxString m_osCONVABSS;
wxString m_osCONVSTEP;
wxString m_osDEFL;
wxString m_osDEFW;
wxString m_osDEFAD;
wxString m_osDEFAS;
wxString m_osGMIN;
wxString m_osPIVREL;
wxString m_osPIVTOL;
wxString m_osRAMPTIME;
wxString m_osRELTOL;
wxString m_osRSERIES;
wxString m_osRSHUNT;
wxString m_osTEMP;
wxString m_osTNOM;
wxString m_osTRTOL;
wxString m_osVNTOL;
// Options which are integer values
wxString m_osGMINSTEP;
wxString m_osITL1;
wxString m_osITL2;
wxString m_osITL3;
wxString m_osITL4;
wxString m_osITL5;
wxString m_osITL6;
wxString m_osMAXEVIT;
wxString m_osMAXOPALT;
wxString m_osMAXORD;
wxString m_osMAXWARNS;
wxString m_osNUMDGT;
wxString m_osSRCSTEPS;
wxString m_osWIDTH;
// Options which are string values
wxString m_osMETHOD;
wxString m_osUNITS;
// Options which are boolean values
bool m_bBADMOS3;
bool m_bINTERP;
bool m_bNOOPAC;
bool m_bNOOPALT;
bool m_bOPTS;
bool m_bTRYTOCOM;
bool m_bWARN;
CmdNgSpiceOPT( void );
virtual ~CmdNgSpiceOPT( );
virtual bool bSetDefaults( void );
virtual bool bParse ( void );
virtual bool bFormat( void );
CmdNgSpiceOPT & operator = ( const CmdGnuCapOPT & roCmdOPT );
void Print( const wxString & rosPrefix=wxT(" ") );
};
//**************************************************************************************************
#endif // CMDNGSOPT_HPP