Xyce  6.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
N_DEV_ADMSPSP103VA.h
Go to the documentation of this file.
1 
2 // -*-c++-*-
3 //-----------------------------------------------------------------------------
4 // Copyright Notice
5 //
6 // Copyright 2002 Sandia Corporation. Under the terms
7 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S.
8 // Government retains certain rights in this software.
9 //
10 // Xyce(TM) Parallel Electrical Simulator
11 // Copyright (C) 2002-2014 Sandia Corporation
12 //
13 // This program is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU General Public License as published by
15 // the Free Software Foundation, either version 3 of the License, or
16 // (at your option) any later version.
17 //
18 // This program is distributed in the hope that it will be useful,
19 // but WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 // GNU General Public License for more details.
22 //
23 // You should have received a copy of the GNU General Public License
24 // along with this program. If not, see <http://www.gnu.org/licenses/>.
25 //-----------------------------------------------------------------------------
26 
27 //-----------------------------------------------------------------------------
28 // Filename : $RCSfile: N_DEV_ADMSPSP103VA.h,v $
29 //
30 // Purpose :
31 //
32 // Special Notes : Generated from verilog file psp103.va with ADMS
33 // interface for Xyce 6.1.0
34 // DO NOT EDIT THIS FILE DIRECTLY! It may be overwritten!
35 //
36 // Creator : admsXml-2.3.0
37 //
38 // Creation Date : Mon, 02 Jun 2014 11:34:06
39 //
40 // Revision Information:
41 // ---------------------
42 //
43 // Revision Number: $Revision: 1.39 $
44 //
45 // Revision Date : $Date: 2014/06/02 17:46:46 $
46 //
47 // Current Owner : $Author: tvrusso $
48 //-----------------------------------------------------------------------------
49 #ifndef Xyce_N_DEV_ADMSPSP103VA_h
50 #define Xyce_N_DEV_ADMSPSP103VA_h
51 
52 
53 #include <Sacado.hpp>
54 
55 #include <N_DEV_Configuration.h>
56 #include <N_DEV_Const.h>
57 #include <N_DEV_DeviceBlock.h>
58 #include <N_DEV_DeviceInstance.h>
59 #include <N_DEV_DeviceModel.h>
60 #include <N_DEV_MOSFET1.h>
61 
62 
63 namespace Xyce {
64 namespace Device {
65 namespace ADMSPSP103VA {
66 
67 class Model;
68 class Instance;
69 
70 struct Traits: public DeviceTraits<Model, Instance, MOSFET1::Traits>
71 {
72  static const char *name() {return "PSP103VA MOSFET";}
73  static const char *deviceTypeName() {return "m level 103";}
74 
75  static int numNodes() {return 4;}
76  static bool modelRequired() {return true;}
77  static bool isLinearDevice() {return false;}
78 
79  static Device *factory(const Configuration &configuration, const FactoryBlock &factory_block);
80  static void loadModelParameters(ParametricData<Model> &model_parameters);
81  static void loadInstanceParameters(ParametricData<Instance> &instance_parameters);
82 };
83 
84 //-----------------------------------------------------------------------------
85 // Class : Instance
86 
87 //
88 // Purpose : This class represents a single instance of the
89 // device. It mainly contains indices and pointers into
90 // the matrix equation (see the resistor instance class for
91 // more details).
92 //
93 // Special Notes :
94 // Creator :
95 // Creation Date :
96 //-----------------------------------------------------------------------------
97 class Instance : public DeviceInstance
98 {
99  friend class ParametricData<Instance>;
100  friend class Model;
101  friend class Traits;
102 
103  // This typedef is for our automatic differentiation:
104  typedef Sacado::Fad::SFad<double,12> AdmsFadType;
105 
106 public:
107  Instance(
108  const Configuration & configuration,
109  const InstanceBlock & instance_block,
110  Model & model,
111  const FactoryBlock & factory_block);
112 
113  ~Instance();
114 
115 private:
116  Instance(const Instance &);
117  Instance &operator=(const Instance &);
118 
119 public:
120  void registerLIDs( const std::vector<int> & intLIDVecRef,
121  const std::vector<int> & extLIDVecRef );
122  void registerStateLIDs( const std::vector<int> & staLIDVecRef );
123  void setupPointers();
124 
125  std::map<int,std::string> & getIntNameMap ();
126 
127  const std::vector< std::vector<int> > & jacobianStamp() const;
128  void registerJacLIDs( const std::vector< std::vector<int> > & jacLIDVec );
129 
130  bool processParams();
131  bool updateTemperature ( const double & temp = -999.0 );
132  bool updateIntermediateVars ();
133  bool updatePrimaryState ();
134  bool updateSecondaryState ();
135 
136  // load functions, residual:
137  bool loadDAEQVector ();
138  bool loadDAEFVector ();
139 
140  // load functions, Jacobian:
141  bool loadDAEdQdx ();
142  bool loadDAEdFdx ();
143 
144  void collapseNodes();
145 
146 private:
147  // Limited exponential --- NOT what verilog LRM says, but what qucs,
148  // ng-spice, and zspice do.
149 
150  template <typename T>
151  T limexp(const T &x)
152  {
153  if ((x) < 80.0)
154  return (exp(x));
155  else
156  return (exp(80.0)*(x-79.0));
157  }
158 
159 
160 public:
161  // iterator reference to the PSP103VA model which owns this instance.
162  // Getters and setters
164  {
165  return model_;
166  }
167 
168 private:
169 
170  Model & model_; //< Owning Model
171  // Begin verilog Instance Variables
172  // Instance Parameters
173  double L;
174  double W;
175  double SA;
176  double SB;
177  double SD;
178  double SCA;
179  double SCB;
180  double SCC;
181  double SC;
182  double NF;
183  double NGCON;
184  double XGW;
185  double NRS;
186  double NRD;
187  double JW;
188  double DELVTO;
189  double FACTUO;
190  double ABSOURCE;
191  double LSSOURCE;
192  double LGSOURCE;
193  double ABDRAIN;
194  double LSDRAIN;
195  double LGDRAIN;
196  double AS;
197  double PS;
198  double AD;
199  double PD;
200  double MULT;
201  // Variables of global_instance scope
202  double VFB_i;
203  double GFACNUD_i;
204  double VNSUB_i;
205  double NSLP_i;
206  double DNSUB_i;
207  double CF_i;
208  double CFB_i;
209  double MUE_i;
210  double THEMU_i;
211  double CS_i;
212  double XCOR_i;
213  double THER_i;
214  double RSB_i;
215  double RSG_i;
216  double THESAT_i;
217  double THESATB_i;
218  double THESATG_i;
219  double AX_i;
220  double ALP_i;
221  double ALP1_i;
222  double ALP2_i;
223  double A1_i;
224  double A2_i;
225  double A3_i;
226  double A4_i;
227  double IGINV_i;
228  double IGOV_i;
229  double IGOVD_i;
230  double GC2_i;
231  double GC3_i;
232  double CHIB_i;
233  double AGIDL_i;
234  double BGIDL_i;
235  double CGIDL_i;
236  double AGIDLD_i;
237  double BGIDLD_i;
238  double CGIDLD_i;
239  double COX_i;
240  double CGOV_i;
241  double CGOVD_i;
242  double CGBOV_i;
243  double CFR_i;
244  double CFRD_i;
245  double MULT_i;
246  double BET_i;
247  double kp;
248  double qq;
249  double qlim2;
250  double E_eff0;
251  double eta_mu;
252  double eta_mu1;
253  double BCH;
254  double BOV;
255  double inv_CHIB;
256  double GCQ;
257  double Dch;
258  double Dov;
259  double x1;
260  double Vdsat_lim;
261  double GOV_s;
262  double GOV_d;
263  double GOV2_s;
264  double GOV2_d;
265  double BOV_d;
266  double xi_ov_s;
267  double xi_ov_d;
268  double inv_xi_ov_s;
269  double inv_xi_ov_d;
270  double x_mrg_ov_s;
271  double x_mrg_ov_d;
272  double inv_xg1_s;
273  double inv_xg1_d;
274  double phit1;
275  double inv_phit1;
276  double alpha_b;
277  double inv_VP;
278  double inv_AX;
279  double us1;
280  double us21;
281  double phib_dc;
282  double sqrt_phib_dc;
283  double G_0_dc;
284  double aphi_dc;
285  double bphi_dc;
286  double phix_dc;
287  double phix1_dc;
288  double phib_ac;
289  double sqrt_phib_ac;
290  double G_0_ac;
291  double aphi_ac;
292  double bphi_ac;
293  double phix_ac;
294  double phix1_ac;
295  double RG_i;
296  double RSE_i;
297  double RDE_i;
298  double RBULK_i;
299  double RWELL_i;
300  double RJUNS_i;
301  double RJUND_i;
302  double ggate;
303  double gsource;
304  double gdrain;
305  double gbulk;
306  double gwell;
307  double gjund;
308  double gjuns;
320  double ABSOURCE_i;
321  double LSSOURCE_i;
322  double LGSOURCE_i;
323  double zflagbot_s;
324  double zflagsti_s;
325  double zflaggat_s;
326  double VMAX_s;
328  double vbimin_s;
329  double vch_s;
330  double vfmin_s;
331  double vbbtlim_s;
340  double xhighf1_s;
341  double expxhf1_s;
342  double xhighf2_s;
343  double expxhf2_s;
344  double xhighr_s;
345  double expxhr_s;
346  double m0flag_s;
347  double ISATFOR1_s;
348  double MFOR1_s;
349  double ISATFOR2_s;
350  double MFOR2_s;
351  double ISATREV_s;
352  double MREV_s;
353  double ABDRAIN_i;
354  double LSDRAIN_i;
355  double LGDRAIN_i;
356  double zflagbot_d;
357  double zflagsti_d;
358  double zflaggat_d;
359  double VMAX_d;
361  double vbimin_d;
362  double vch_d;
363  double vfmin_d;
364  double vbbtlim_d;
373  double xhighf1_d;
374  double expxhf1_d;
375  double xhighf2_d;
376  double expxhf2_d;
377  double xhighr_d;
378  double expxhr_d;
379  double m0flag_d;
380  double ISATFOR1_d;
381  double MFOR1_d;
382  double ISATFOR2_d;
383  double MFOR2_d;
384  double ISATREV_d;
385  double MREV_d;
386  // end verilog Instance Variables=====
387  // Nodal LID Variables
388  int li_D;
389  int li_G;
390  int li_S;
391  int li_B;
392  int li_GP;
393  int li_SI;
394  int li_DI;
395  int li_BI;
396  int li_BP;
397  int li_BS;
398  int li_BD;
399  // end Nodal LID Variables
400  // Branch LID Variables
401  // end Branch LID Variables
402  // Jacobian pointers
497  // end of Jacobian and pointers
498  // node numbers
499  static const int admsNodeID_D = 0;
500  static const int admsNodeID_G = 1;
501  static const int admsNodeID_S = 2;
502  static const int admsNodeID_B = 3;
503  static const int admsNodeID_GP = 4;
504  static const int admsNodeID_SI = 5;
505  static const int admsNodeID_DI = 6;
506  static const int admsNodeID_BI = 7;
507  static const int admsNodeID_BP = 8;
508  static const int admsNodeID_BS = 9;
509  static const int admsNodeID_BD = 10;
510  // end node numbers
511  // Additional IDs for branch equations
512  // end branch numbers
513  // Probe numbers
514  static const int admsProbeID_V_DI_BD = 0;
515  static const int admsProbeID_V_SI_BS = 1;
516  static const int admsProbeID_V_SI_BP = 2;
517  static const int admsProbeID_V_DI_SI = 3;
518  static const int admsProbeID_V_GP_SI = 4;
519  static const int admsProbeID_V_B_BI = 5;
520  static const int admsProbeID_V_BP_BI = 6;
521  static const int admsProbeID_V_BD_BI = 7;
522  static const int admsProbeID_V_BS_BI = 8;
523  static const int admsProbeID_V_D_DI = 9;
524  static const int admsProbeID_V_S_SI = 10;
525  static const int admsProbeID_V_G_GP = 11;
526  // end probe numbers
527  // State LIDs
528  // end state LIDs
529  // bools for collapsing nodes
537  // Arrays to hold probes
538  std::vector < AdmsFadType > probeVars;
539  // Arrays to hold contributions
540  // dynamic contributions are differentiated w.r.t time
541  std::vector < AdmsFadType > staticContributions;
542  std::vector < AdmsFadType > dynamicContributions;
543 
544 
545  // this is what we'll use when any model uses $temperature. We'll
546  // set it in updateTemperature, and initialize it to whatever
547  // is in devOptions when the instance is constructed.
549 
550  // vt at $temperature;
551  double adms_vt_nom;
552 
553 
554  // This one is for the annoying bogus "XyceADMSInstTemp" parameter
555  // that we need so we can set it from the device manager when there's no
556  // "TEMP" parameter to use
557  double admsInstTemp;
558 
559  // thermal voltage at kelvin temperature temp)
560  inline double adms_vt(double temp) {return(CONSTKoverQ*temp);};
561 
562  std::vector< std::vector<int> > jacStamp;
563  std::vector<int> jacMap;
564  std::vector< std::vector<int> > jacMap2;
565 };
566 
567 
568 //-----------------------------------------------------------------------------
569 // Class : Model
570 
571 // Purpose :
572 // Special Notes :
573 // Creator :
574 // Creation Date :
575 //-----------------------------------------------------------------------------
576 class Model : public DeviceModel
577 {
578  typedef std::vector<Instance *> InstanceVector;
579 
580  friend class ParametricData<Model>;
581  friend class Instance;
582  friend class Traits;
583 
584  typedef Sacado::Fad::SFad<double,12> AdmsFadType;
585 
586 public:
587  Model(
588  const Configuration & configuration,
589  const ModelBlock & model_block,
590  const FactoryBlock & factory_block);
591 
592  ~Model();
593 
594 private:
595  Model(const Model &);
596  Model &operator=(const Model &);
597 
598 public:
599  virtual void forEachInstance(DeviceInstanceOp &op) const /* override */;
600  virtual std::ostream &printOutInstances(std::ostream &os) const;
601  bool processParams();
602  bool processInstanceParams();
603 
604 private:
605 
606 public:
607  void addInstance(Instance *instance)
608  {
609  instanceContainer.push_back(instance);
610  }
611 
612 private:
613  std::vector<Instance*> instanceContainer;
614 
615 private:
616 
617  // This one is for the annoying bogus "XyceADMSInstTemp" parameter
618  // that we need so we can set it from the device manager when there's no
619  // "TEMP" model parameter to use
620  double admsModTemp;
621  // Begin verilog Model Variables
622  // Model Parameters
623  double LEVEL;
624  double TYPE;
625  double TR;
626  double SWGEO;
627  double SWIGATE;
628  double SWIMPACT;
629  double SWGIDL;
630  double SWJUNCAP;
631  double SWJUNASYM;
632  double SWNUD;
633  double SWDELVTAC;
634  double QMC;
635  double VFB;
636  double STVFB;
637  double TOX;
638  double EPSROX;
639  double NEFF;
640  double FACNEFFAC;
641  double GFACNUD;
642  double VSBNUD;
643  double DVSBNUD;
644  double VNSUB;
645  double NSLP;
646  double DNSUB;
647  double DPHIB;
648  double DELVTAC;
649  double NP;
650  double CT;
651  double TOXOV;
652  double TOXOVD;
653  double NOV;
654  double NOVD;
655  double CF;
656  double CFB;
657  double BETN;
658  double STBET;
659  double MUE;
660  double STMUE;
661  double THEMU;
662  double STTHEMU;
663  double CS;
664  double STCS;
665  double XCOR;
666  double STXCOR;
667  double FETA;
668  double RS;
669  double STRS;
670  double RSB;
671  double RSG;
672  double THESAT;
673  double STTHESAT;
674  double THESATB;
675  double THESATG;
676  double AX;
677  double ALP;
678  double ALP1;
679  double ALP2;
680  double VP;
681  double A1;
682  double A2;
683  double STA2;
684  double A3;
685  double A4;
686  double GCO;
687  double IGINV;
688  double IGOV;
689  double IGOVD;
690  double STIG;
691  double GC2;
692  double GC3;
693  double CHIB;
694  double AGIDL;
695  double AGIDLD;
696  double BGIDL;
697  double BGIDLD;
698  double STBGIDL;
699  double STBGIDLD;
700  double CGIDL;
701  double CGIDLD;
702  double COX;
703  double CGOV;
704  double CGOVD;
705  double CGBOV;
706  double CFR;
707  double CFRD;
708  double FNT;
709  double NFA;
710  double NFB;
711  double NFC;
712  double EF;
713  double RG;
714  double RSE;
715  double RDE;
716  double RBULK;
717  double RWELL;
718  double RJUNS;
719  double RJUND;
720  double POVFB;
721  double PLVFB;
722  double PWVFB;
723  double PLWVFB;
724  double POSTVFB;
725  double PLSTVFB;
726  double PWSTVFB;
727  double PLWSTVFB;
728  double POTOX;
729  double POEPSROX;
730  double PONEFF;
731  double PLNEFF;
732  double PWNEFF;
733  double PLWNEFF;
734  double POFACNEFFAC;
735  double PLFACNEFFAC;
736  double PWFACNEFFAC;
737  double PLWFACNEFFAC;
738  double POGFACNUD;
739  double PLGFACNUD;
740  double PWGFACNUD;
741  double PLWGFACNUD;
742  double POVSBNUD;
743  double PODVSBNUD;
744  double POVNSUB;
745  double PONSLP;
746  double PODNSUB;
747  double PODPHIB;
748  double PLDPHIB;
749  double PWDPHIB;
750  double PLWDPHIB;
751  double PODELVTAC;
752  double PLDELVTAC;
753  double PWDELVTAC;
754  double PLWDELVTAC;
755  double PONP;
756  double PLNP;
757  double PWNP;
758  double PLWNP;
759  double POCT;
760  double PLCT;
761  double PWCT;
762  double PLWCT;
763  double POTOXOV;
764  double POTOXOVD;
765  double PONOV;
766  double PLNOV;
767  double PWNOV;
768  double PLWNOV;
769  double PONOVD;
770  double PLNOVD;
771  double PWNOVD;
772  double PLWNOVD;
773  double POCF;
774  double PLCF;
775  double PWCF;
776  double PLWCF;
777  double POCFB;
778  double POBETN;
779  double PLBETN;
780  double PWBETN;
781  double PLWBETN;
782  double POSTBET;
783  double PLSTBET;
784  double PWSTBET;
785  double PLWSTBET;
786  double POMUE;
787  double PLMUE;
788  double PWMUE;
789  double PLWMUE;
790  double POSTMUE;
791  double POTHEMU;
792  double POSTTHEMU;
793  double POCS;
794  double PLCS;
795  double PWCS;
796  double PLWCS;
797  double POSTCS;
798  double POXCOR;
799  double PLXCOR;
800  double PWXCOR;
801  double PLWXCOR;
802  double POSTXCOR;
803  double POFETA;
804  double PORS;
805  double PLRS;
806  double PWRS;
807  double PLWRS;
808  double POSTRS;
809  double PORSB;
810  double PORSG;
811  double POTHESAT;
812  double PLTHESAT;
813  double PWTHESAT;
814  double PLWTHESAT;
815  double POSTTHESAT;
816  double PLSTTHESAT;
817  double PWSTTHESAT;
818  double PLWSTTHESAT;
819  double POTHESATB;
820  double PLTHESATB;
821  double PWTHESATB;
822  double PLWTHESATB;
823  double POTHESATG;
824  double PLTHESATG;
825  double PWTHESATG;
826  double PLWTHESATG;
827  double POAX;
828  double PLAX;
829  double PWAX;
830  double PLWAX;
831  double POALP;
832  double PLALP;
833  double PWALP;
834  double PLWALP;
835  double POALP1;
836  double PLALP1;
837  double PWALP1;
838  double PLWALP1;
839  double POALP2;
840  double PLALP2;
841  double PWALP2;
842  double PLWALP2;
843  double POVP;
844  double POA1;
845  double PLA1;
846  double PWA1;
847  double PLWA1;
848  double POA2;
849  double POSTA2;
850  double POA3;
851  double PLA3;
852  double PWA3;
853  double PLWA3;
854  double POA4;
855  double PLA4;
856  double PWA4;
857  double PLWA4;
858  double POGCO;
859  double POIGINV;
860  double PLIGINV;
861  double PWIGINV;
862  double PLWIGINV;
863  double POIGOV;
864  double PLIGOV;
865  double PWIGOV;
866  double PLWIGOV;
867  double POIGOVD;
868  double PLIGOVD;
869  double PWIGOVD;
870  double PLWIGOVD;
871  double POSTIG;
872  double POGC2;
873  double POGC3;
874  double POCHIB;
875  double POAGIDL;
876  double PLAGIDL;
877  double PWAGIDL;
878  double PLWAGIDL;
879  double POAGIDLD;
880  double PLAGIDLD;
881  double PWAGIDLD;
882  double PLWAGIDLD;
883  double POBGIDL;
884  double POBGIDLD;
885  double POSTBGIDL;
886  double POSTBGIDLD;
887  double POCGIDL;
888  double POCGIDLD;
889  double POCOX;
890  double PLCOX;
891  double PWCOX;
892  double PLWCOX;
893  double POCGOV;
894  double PLCGOV;
895  double PWCGOV;
896  double PLWCGOV;
897  double POCGOVD;
898  double PLCGOVD;
899  double PWCGOVD;
900  double PLWCGOVD;
901  double POCGBOV;
902  double PLCGBOV;
903  double PWCGBOV;
904  double PLWCGBOV;
905  double POCFR;
906  double PLCFR;
907  double PWCFR;
908  double PLWCFR;
909  double POCFRD;
910  double PLCFRD;
911  double PWCFRD;
912  double PLWCFRD;
913  double POFNT;
914  double PONFA;
915  double PLNFA;
916  double PWNFA;
917  double PLWNFA;
918  double PONFB;
919  double PLNFB;
920  double PWNFB;
921  double PLWNFB;
922  double PONFC;
923  double PLNFC;
924  double PWNFC;
925  double PLWNFC;
926  double POEF;
927  double POKVTHOWE;
928  double PLKVTHOWE;
929  double PWKVTHOWE;
930  double PLWKVTHOWE;
931  double POKUOWE;
932  double PLKUOWE;
933  double PWKUOWE;
934  double PLWKUOWE;
935  double LMIN;
936  double LMAX;
937  double WMIN;
938  double WMAX;
939  double LVARO;
940  double LVARL;
941  double LVARW;
942  double LAP;
943  double WVARO;
944  double WVARL;
945  double WVARW;
946  double WOT;
947  double DLQ;
948  double DWQ;
949  double VFBO;
950  double VFBL;
951  double VFBW;
952  double VFBLW;
953  double STVFBO;
954  double STVFBL;
955  double STVFBW;
956  double STVFBLW;
957  double TOXO;
958  double EPSROXO;
959  double NSUBO;
960  double NSUBW;
961  double WSEG;
962  double NPCK;
963  double NPCKW;
964  double WSEGP;
965  double LPCK;
966  double LPCKW;
967  double FOL1;
968  double FOL2;
969  double FACNEFFACO;
970  double FACNEFFACL;
971  double FACNEFFACW;
972  double FACNEFFACLW;
973  double GFACNUDO;
974  double GFACNUDL;
975  double GFACNUDLEXP;
976  double GFACNUDW;
977  double GFACNUDLW;
978  double VSBNUDO;
979  double DVSBNUDO;
980  double VNSUBO;
981  double NSLPO;
982  double DNSUBO;
983  double DPHIBO;
984  double DPHIBL;
985  double DPHIBLEXP;
986  double DPHIBW;
987  double DPHIBLW;
988  double DELVTACO;
989  double DELVTACL;
990  double DELVTACLEXP;
991  double DELVTACW;
992  double DELVTACLW;
993  double NPO;
994  double NPL;
995  double CTO;
996  double CTL;
997  double CTLEXP;
998  double CTW;
999  double CTLW;
1000  double TOXOVO;
1001  double TOXOVDO;
1002  double LOV;
1003  double LOVD;
1004  double NOVO;
1005  double NOVDO;
1006  double CFL;
1007  double CFLEXP;
1008  double CFW;
1009  double CFBO;
1010  double UO;
1011  double FBET1;
1012  double FBET1W;
1013  double LP1;
1014  double LP1W;
1015  double FBET2;
1016  double LP2;
1017  double BETW1;
1018  double BETW2;
1019  double WBET;
1020  double STBETO;
1021  double STBETL;
1022  double STBETW;
1023  double STBETLW;
1024  double MUEO;
1025  double MUEW;
1026  double STMUEO;
1027  double THEMUO;
1028  double STTHEMUO;
1029  double CSO;
1030  double CSL;
1031  double CSLEXP;
1032  double CSW;
1033  double CSLW;
1034  double STCSO;
1035  double XCORO;
1036  double XCORL;
1037  double XCORW;
1038  double XCORLW;
1039  double STXCORO;
1040  double FETAO;
1041  double RSW1;
1042  double RSW2;
1043  double STRSO;
1044  double RSBO;
1045  double RSGO;
1046  double THESATO;
1047  double THESATL;
1048  double THESATLEXP;
1049  double THESATW;
1050  double THESATLW;
1051  double STTHESATO;
1052  double STTHESATL;
1053  double STTHESATW;
1054  double STTHESATLW;
1055  double THESATBO;
1056  double THESATGO;
1057  double AXO;
1058  double AXL;
1059  double ALPL;
1060  double ALPLEXP;
1061  double ALPW;
1062  double ALP1L1;
1063  double ALP1LEXP;
1064  double ALP1L2;
1065  double ALP1W;
1066  double ALP2L1;
1067  double ALP2LEXP;
1068  double ALP2L2;
1069  double ALP2W;
1070  double VPO;
1071  double A1O;
1072  double A1L;
1073  double A1W;
1074  double A2O;
1075  double STA2O;
1076  double A3O;
1077  double A3L;
1078  double A3W;
1079  double A4O;
1080  double A4L;
1081  double A4W;
1082  double GCOO;
1083  double IGINVLW;
1084  double IGOVW;
1085  double IGOVDW;
1086  double STIGO;
1087  double GC2O;
1088  double GC3O;
1089  double CHIBO;
1090  double AGIDLW;
1091  double AGIDLDW;
1092  double BGIDLO;
1093  double BGIDLDO;
1094  double STBGIDLO;
1095  double STBGIDLDO;
1096  double CGIDLO;
1097  double CGIDLDO;
1098  double CGBOVL;
1099  double CFRW;
1100  double CFRDW;
1101  double FNTO;
1102  double NFALW;
1103  double NFBLW;
1104  double NFCLW;
1105  double EFO;
1106  double LINTNOI;
1107  double ALPNOI;
1108  double KVTHOWEO;
1109  double KVTHOWEL;
1110  double KVTHOWEW;
1111  double KVTHOWELW;
1112  double KUOWEO;
1113  double KUOWEL;
1114  double KUOWEW;
1115  double KUOWELW;
1116  double RGO;
1117  double RINT;
1118  double RVPOLY;
1119  double RSHG;
1120  double DLSIL;
1121  double RSH;
1122  double RSHD;
1123  double RBULKO;
1124  double RWELLO;
1125  double RJUNSO;
1126  double RJUNDO;
1127  double SAREF;
1128  double SBREF;
1129  double WLOD;
1130  double KUO;
1131  double KVSAT;
1132  double TKUO;
1133  double LKUO;
1134  double WKUO;
1135  double PKUO;
1136  double LLODKUO;
1137  double WLODKUO;
1138  double KVTHO;
1139  double LKVTHO;
1140  double WKVTHO;
1141  double PKVTHO;
1142  double LLODVTH;
1143  double WLODVTH;
1144  double STETAO;
1145  double LODETAO;
1146  double SCREF;
1147  double WEB;
1148  double WEC;
1149  double IMAX;
1150  double TRJ;
1151  double CJORBOT;
1152  double CJORSTI;
1153  double CJORGAT;
1154  double VBIRBOT;
1155  double VBIRSTI;
1156  double VBIRGAT;
1157  double PBOT;
1158  double PSTI;
1159  double PGAT;
1160  double PHIGBOT;
1161  double PHIGSTI;
1162  double PHIGGAT;
1163  double IDSATRBOT;
1164  double IDSATRSTI;
1165  double IDSATRGAT;
1166  double CSRHBOT;
1167  double CSRHSTI;
1168  double CSRHGAT;
1169  double XJUNSTI;
1170  double XJUNGAT;
1171  double CTATBOT;
1172  double CTATSTI;
1173  double CTATGAT;
1174  double MEFFTATBOT;
1175  double MEFFTATSTI;
1176  double MEFFTATGAT;
1177  double CBBTBOT;
1178  double CBBTSTI;
1179  double CBBTGAT;
1180  double FBBTRBOT;
1181  double FBBTRSTI;
1182  double FBBTRGAT;
1183  double STFBBTBOT;
1184  double STFBBTSTI;
1185  double STFBBTGAT;
1186  double VBRBOT;
1187  double VBRSTI;
1188  double VBRGAT;
1189  double PBRBOT;
1190  double PBRSTI;
1191  double PBRGAT;
1192  double CJORBOTD;
1193  double CJORSTID;
1194  double CJORGATD;
1195  double VBIRBOTD;
1196  double VBIRSTID;
1197  double VBIRGATD;
1198  double PBOTD;
1199  double PSTID;
1200  double PGATD;
1201  double PHIGBOTD;
1202  double PHIGSTID;
1203  double PHIGGATD;
1204  double IDSATRBOTD;
1205  double IDSATRSTID;
1206  double IDSATRGATD;
1207  double CSRHBOTD;
1208  double CSRHSTID;
1209  double CSRHGATD;
1210  double XJUNSTID;
1211  double XJUNGATD;
1212  double CTATBOTD;
1213  double CTATSTID;
1214  double CTATGATD;
1215  double MEFFTATBOTD;
1216  double MEFFTATSTID;
1217  double MEFFTATGATD;
1218  double CBBTBOTD;
1219  double CBBTSTID;
1220  double CBBTGATD;
1221  double FBBTRBOTD;
1222  double FBBTRSTID;
1223  double FBBTRGATD;
1224  double STFBBTBOTD;
1225  double STFBBTSTID;
1226  double STFBBTGATD;
1227  double VBRBOTD;
1228  double VBRSTID;
1229  double VBRGATD;
1230  double PBRBOTD;
1231  double PBRSTID;
1232  double PBRGATD;
1233  double SWJUNEXP;
1234  double VJUNREF;
1235  double FJUNQ;
1236  double VJUNREFD;
1237  double FJUNQD;
1238  double DTA;
1239  // Variables of global_model scope
1240  double NSUBO_i;
1241  double WSEG_i;
1242  double NPCK_i;
1243  double WSEGP_i;
1244  double LPCK_i;
1245  double LOV_i;
1246  double LOVD_i;
1247  double LP1_i;
1248  double LP2_i;
1249  double WBET_i;
1250  double AXL_i;
1251  double ALP1L2_i;
1252  double ALP2L2_i;
1253  double TOXO_i;
1254  double TOXOVO_i;
1255  double TOXOVDO_i;
1256  double EPSROXO_i;
1257  double RINT_i;
1258  double RVPOLY_i;
1259  double RSHG_i;
1260  double RSH_i;
1261  double RSHD_i;
1262  double SAREF_i;
1263  double SBREF_i;
1264  double KVSAT_i;
1265  double LLODKUO_i;
1266  double WLODKUO_i;
1267  double LLODVTH_i;
1268  double WLODVTH_i;
1269  double LODETAO_i;
1270  double SCREF_i;
1271  double WEB_i;
1272  double WEC_i;
1273  double QMC_i;
1274  double TKD;
1275  double dT;
1276  double rT;
1277  double rTn;
1278  double EPSSI;
1279  double phit;
1280  double inv_phit;
1281  double Eg;
1282  double phibFac;
1283  double nt0;
1285  int SWGEO_i;
1291  int SWNUD_i;
1293  double IMAX_i;
1294  double CJORBOT_i;
1295  double CJORSTI_i;
1296  double CJORGAT_i;
1297  double VBIRBOT_i;
1298  double VBIRSTI_i;
1299  double VBIRGAT_i;
1300  double PBOT_i;
1301  double PSTI_i;
1302  double PGAT_i;
1303  double PHIGBOT_i;
1304  double PHIGSTI_i;
1305  double PHIGGAT_i;
1306  double IDSATRBOT_i;
1307  double IDSATRSTI_i;
1308  double IDSATRGAT_i;
1309  double XJUNSTI_i;
1310  double XJUNGAT_i;
1311  double CSRHBOT_i;
1312  double CSRHSTI_i;
1313  double CSRHGAT_i;
1314  double CTATBOT_i;
1315  double CTATSTI_i;
1316  double CTATGAT_i;
1320  double CBBTBOT_i;
1321  double CBBTSTI_i;
1322  double CBBTGAT_i;
1323  double FBBTRBOT_i;
1324  double FBBTRSTI_i;
1325  double FBBTRGAT_i;
1326  double STFBBTBOT_i;
1327  double STFBBTSTI_i;
1328  double STFBBTGAT_i;
1329  double VBRBOT_i;
1330  double VBRSTI_i;
1331  double VBRGAT_i;
1332  double PBRBOT_i;
1333  double PBRSTI_i;
1334  double PBRGAT_i;
1335  double SWJUNEXP_i;
1336  double VJUNREF_i;
1337  double FJUNQ_i;
1338  double phitr;
1339  double phitd;
1340  double phitdinv;
1341  double perfc;
1342  double berfc;
1343  double cerfc;
1344  double phigrbot;
1345  double phigrsti;
1346  double phigrgat;
1347  double phigdbot;
1348  double phigdsti;
1349  double phigdgat;
1350  double ftdbot;
1351  double ftdsti;
1352  double ftdgat;
1353  double idsatbot;
1354  double idsatsti;
1355  double idsatgat;
1356  double ubibot;
1357  double ubisti;
1358  double ubigat;
1359  double vbibot;
1360  double vbisti;
1361  double vbigat;
1362  double vbiinvbot;
1363  double vbiinvsti;
1364  double vbiinvgat;
1371  double cjobot;
1372  double cjosti;
1373  double cjogat;
1374  double qprefbot;
1375  double qprefsti;
1376  double qprefgat;
1377  double qpref2bot;
1378  double qpref2sti;
1379  double qpref2gat;
1380  double wdepnulrbot;
1381  double wdepnulrsti;
1382  double wdepnulrgat;
1386  double VBIRBOTinv;
1387  double VBIRSTIinv;
1388  double VBIRGATinv;
1389  double deltaEbot;
1390  double deltaEsti;
1391  double deltaEgat;
1392  double atatbot;
1393  double atatsti;
1394  double atatgat;
1395  double btatpartbot;
1396  double btatpartsti;
1397  double btatpartgat;
1398  double fbbtbot;
1399  double fbbtsti;
1400  double fbbtgat;
1401  double fstopbot;
1402  double fstopsti;
1403  double fstopgat;
1404  double VBRinvbot;
1405  double VBRinvsti;
1406  double VBRinvgat;
1407  double slopebot;
1408  double slopesti;
1409  double slopegat;
1410  double CJORBOTS_i;
1411  double CJORSTIS_i;
1412  double CJORGATS_i;
1413  double VBIRBOTS_i;
1414  double VBIRSTIS_i;
1415  double VBIRGATS_i;
1416  double PBOTS_i;
1417  double PSTIS_i;
1418  double PGATS_i;
1419  double PHIGBOTS_i;
1420  double PHIGSTIS_i;
1421  double PHIGGATS_i;
1425  double XJUNSTIS_i;
1426  double XJUNGATS_i;
1427  double CSRHBOTS_i;
1428  double CSRHSTIS_i;
1429  double CSRHGATS_i;
1430  double CTATBOTS_i;
1431  double CTATSTIS_i;
1432  double CTATGATS_i;
1436  double CBBTBOTS_i;
1437  double CBBTSTIS_i;
1438  double CBBTGATS_i;
1439  double FBBTRBOTS_i;
1440  double FBBTRSTIS_i;
1441  double FBBTRGATS_i;
1445  double VBRBOTS_i;
1446  double VBRSTIS_i;
1447  double VBRGATS_i;
1448  double PBRBOTS_i;
1449  double PBRSTIS_i;
1450  double PBRGATS_i;
1451  double CJORBOTD_i;
1452  double CJORSTID_i;
1453  double CJORGATD_i;
1454  double VBIRBOTD_i;
1455  double VBIRSTID_i;
1456  double VBIRGATD_i;
1457  double PBOTD_i;
1458  double PSTID_i;
1459  double PGATD_i;
1460  double PHIGBOTD_i;
1461  double PHIGSTID_i;
1462  double PHIGGATD_i;
1466  double XJUNSTID_i;
1467  double XJUNGATD_i;
1468  double CSRHBOTD_i;
1469  double CSRHSTID_i;
1470  double CSRHGATD_i;
1471  double CTATBOTD_i;
1472  double CTATSTID_i;
1473  double CTATGATD_i;
1477  double CBBTBOTD_i;
1478  double CBBTSTID_i;
1479  double CBBTGATD_i;
1480  double FBBTRBOTD_i;
1481  double FBBTRSTID_i;
1482  double FBBTRGATD_i;
1486  double VBRBOTD_i;
1487  double VBRSTID_i;
1488  double VBRGATD_i;
1489  double PBRBOTD_i;
1490  double PBRSTID_i;
1491  double PBRGATD_i;
1492  double VJUNREFS_i;
1493  double FJUNQS_i;
1494  double VJUNREFD_i;
1495  double FJUNQD_i;
1496  double phigrbot_s;
1497  double phigrsti_s;
1498  double phigrgat_s;
1499  double phigdbot_s;
1500  double phigdsti_s;
1501  double phigdgat_s;
1502  double ftdbot_s;
1503  double ftdsti_s;
1504  double ftdgat_s;
1505  double idsatbot_s;
1506  double idsatsti_s;
1507  double idsatgat_s;
1508  double ubibot_s;
1509  double ubisti_s;
1510  double ubigat_s;
1511  double vbibot_s;
1512  double vbisti_s;
1513  double vbigat_s;
1514  double vbiinvbot_s;
1515  double vbiinvsti_s;
1516  double vbiinvgat_s;
1523  double cjobot_s;
1524  double cjosti_s;
1525  double cjogat_s;
1526  double qprefbot_s;
1527  double qprefsti_s;
1528  double qprefgat_s;
1529  double qpref2bot_s;
1530  double qpref2sti_s;
1531  double qpref2gat_s;
1541  double deltaEbot_s;
1542  double deltaEsti_s;
1543  double deltaEgat_s;
1544  double atatbot_s;
1545  double atatsti_s;
1546  double atatgat_s;
1550  double fbbtbot_s;
1551  double fbbtsti_s;
1552  double fbbtgat_s;
1553  double fstopbot_s;
1554  double fstopsti_s;
1555  double fstopgat_s;
1556  double VBRinvbot_s;
1557  double VBRinvsti_s;
1558  double VBRinvgat_s;
1559  double slopebot_s;
1560  double slopesti_s;
1561  double slopegat_s;
1562  double phigrbot_d;
1563  double phigrsti_d;
1564  double phigrgat_d;
1565  double phigdbot_d;
1566  double phigdsti_d;
1567  double phigdgat_d;
1568  double ftdbot_d;
1569  double ftdsti_d;
1570  double ftdgat_d;
1571  double idsatbot_d;
1572  double idsatsti_d;
1573  double idsatgat_d;
1574  double ubibot_d;
1575  double ubisti_d;
1576  double ubigat_d;
1577  double vbibot_d;
1578  double vbisti_d;
1579  double vbigat_d;
1580  double vbiinvbot_d;
1581  double vbiinvsti_d;
1582  double vbiinvgat_d;
1589  double cjobot_d;
1590  double cjosti_d;
1591  double cjogat_d;
1592  double qprefbot_d;
1593  double qprefsti_d;
1594  double qprefgat_d;
1595  double qpref2bot_d;
1596  double qpref2sti_d;
1597  double qpref2gat_d;
1607  double deltaEbot_d;
1608  double deltaEsti_d;
1609  double deltaEgat_d;
1610  double atatbot_d;
1611  double atatsti_d;
1612  double atatgat_d;
1616  double fbbtbot_d;
1617  double fbbtsti_d;
1618  double fbbtgat_d;
1619  double fstopbot_d;
1620  double fstopsti_d;
1621  double fstopgat_d;
1622  double VBRinvbot_d;
1623  double VBRinvsti_d;
1624  double VBRinvgat_d;
1625  double slopebot_d;
1626  double slopesti_d;
1627  double slopegat_d;
1628  // end verilog model variables=====
1629 };
1630 
1631 void registerDevice();
1632 
1633 } // namespace ADMSPSP103VA
1634 } // namespace Device
1635 } // namespace Xyce
1636 #endif //Xyce_N_DEV_ADMSPSP103VA_h