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 : Thu, 06 Mar 2014 16:00:39
39 //
40 // Revision Information:
41 // ---------------------
42 //
43 // Revision Number: $Revision: 1.34.2.2 $
44 //
45 // Revision Date : $Date: 2014/03/06 23:33:42 $
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 const int numNodes() {return 4;}
76  static const bool modelRequired() {return true;}
77  static const 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(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 
613  {
614  return instanceContainer;
615  }
616 
618  {
619  return instanceContainer;
620  }
621 
622 private:
623  std::vector<Instance*> instanceContainer;
624 
625 private:
626 
627  // This one is for the annoying bogus "XyceADMSInstTemp" parameter
628  // that we need so we can set it from the device manager when there's no
629  // "TEMP" model parameter to use
630  double admsModTemp;
631  // Begin verilog Model Variables
632  // Model Parameters
633  double LEVEL;
634  double TYPE;
635  double TR;
636  double SWGEO;
637  double SWIGATE;
638  double SWIMPACT;
639  double SWGIDL;
640  double SWJUNCAP;
641  double SWJUNASYM;
642  double SWNUD;
643  double SWDELVTAC;
644  double QMC;
645  double VFB;
646  double STVFB;
647  double TOX;
648  double EPSROX;
649  double NEFF;
650  double FACNEFFAC;
651  double GFACNUD;
652  double VSBNUD;
653  double DVSBNUD;
654  double VNSUB;
655  double NSLP;
656  double DNSUB;
657  double DPHIB;
658  double DELVTAC;
659  double NP;
660  double CT;
661  double TOXOV;
662  double TOXOVD;
663  double NOV;
664  double NOVD;
665  double CF;
666  double CFB;
667  double BETN;
668  double STBET;
669  double MUE;
670  double STMUE;
671  double THEMU;
672  double STTHEMU;
673  double CS;
674  double STCS;
675  double XCOR;
676  double STXCOR;
677  double FETA;
678  double RS;
679  double STRS;
680  double RSB;
681  double RSG;
682  double THESAT;
683  double STTHESAT;
684  double THESATB;
685  double THESATG;
686  double AX;
687  double ALP;
688  double ALP1;
689  double ALP2;
690  double VP;
691  double A1;
692  double A2;
693  double STA2;
694  double A3;
695  double A4;
696  double GCO;
697  double IGINV;
698  double IGOV;
699  double IGOVD;
700  double STIG;
701  double GC2;
702  double GC3;
703  double CHIB;
704  double AGIDL;
705  double AGIDLD;
706  double BGIDL;
707  double BGIDLD;
708  double STBGIDL;
709  double STBGIDLD;
710  double CGIDL;
711  double CGIDLD;
712  double COX;
713  double CGOV;
714  double CGOVD;
715  double CGBOV;
716  double CFR;
717  double CFRD;
718  double FNT;
719  double NFA;
720  double NFB;
721  double NFC;
722  double EF;
723  double RG;
724  double RSE;
725  double RDE;
726  double RBULK;
727  double RWELL;
728  double RJUNS;
729  double RJUND;
730  double POVFB;
731  double PLVFB;
732  double PWVFB;
733  double PLWVFB;
734  double POSTVFB;
735  double PLSTVFB;
736  double PWSTVFB;
737  double PLWSTVFB;
738  double POTOX;
739  double POEPSROX;
740  double PONEFF;
741  double PLNEFF;
742  double PWNEFF;
743  double PLWNEFF;
744  double POFACNEFFAC;
745  double PLFACNEFFAC;
746  double PWFACNEFFAC;
747  double PLWFACNEFFAC;
748  double POGFACNUD;
749  double PLGFACNUD;
750  double PWGFACNUD;
751  double PLWGFACNUD;
752  double POVSBNUD;
753  double PODVSBNUD;
754  double POVNSUB;
755  double PONSLP;
756  double PODNSUB;
757  double PODPHIB;
758  double PLDPHIB;
759  double PWDPHIB;
760  double PLWDPHIB;
761  double PODELVTAC;
762  double PLDELVTAC;
763  double PWDELVTAC;
764  double PLWDELVTAC;
765  double PONP;
766  double PLNP;
767  double PWNP;
768  double PLWNP;
769  double POCT;
770  double PLCT;
771  double PWCT;
772  double PLWCT;
773  double POTOXOV;
774  double POTOXOVD;
775  double PONOV;
776  double PLNOV;
777  double PWNOV;
778  double PLWNOV;
779  double PONOVD;
780  double PLNOVD;
781  double PWNOVD;
782  double PLWNOVD;
783  double POCF;
784  double PLCF;
785  double PWCF;
786  double PLWCF;
787  double POCFB;
788  double POBETN;
789  double PLBETN;
790  double PWBETN;
791  double PLWBETN;
792  double POSTBET;
793  double PLSTBET;
794  double PWSTBET;
795  double PLWSTBET;
796  double POMUE;
797  double PLMUE;
798  double PWMUE;
799  double PLWMUE;
800  double POSTMUE;
801  double POTHEMU;
802  double POSTTHEMU;
803  double POCS;
804  double PLCS;
805  double PWCS;
806  double PLWCS;
807  double POSTCS;
808  double POXCOR;
809  double PLXCOR;
810  double PWXCOR;
811  double PLWXCOR;
812  double POSTXCOR;
813  double POFETA;
814  double PORS;
815  double PLRS;
816  double PWRS;
817  double PLWRS;
818  double POSTRS;
819  double PORSB;
820  double PORSG;
821  double POTHESAT;
822  double PLTHESAT;
823  double PWTHESAT;
824  double PLWTHESAT;
825  double POSTTHESAT;
826  double PLSTTHESAT;
827  double PWSTTHESAT;
828  double PLWSTTHESAT;
829  double POTHESATB;
830  double PLTHESATB;
831  double PWTHESATB;
832  double PLWTHESATB;
833  double POTHESATG;
834  double PLTHESATG;
835  double PWTHESATG;
836  double PLWTHESATG;
837  double POAX;
838  double PLAX;
839  double PWAX;
840  double PLWAX;
841  double POALP;
842  double PLALP;
843  double PWALP;
844  double PLWALP;
845  double POALP1;
846  double PLALP1;
847  double PWALP1;
848  double PLWALP1;
849  double POALP2;
850  double PLALP2;
851  double PWALP2;
852  double PLWALP2;
853  double POVP;
854  double POA1;
855  double PLA1;
856  double PWA1;
857  double PLWA1;
858  double POA2;
859  double POSTA2;
860  double POA3;
861  double PLA3;
862  double PWA3;
863  double PLWA3;
864  double POA4;
865  double PLA4;
866  double PWA4;
867  double PLWA4;
868  double POGCO;
869  double POIGINV;
870  double PLIGINV;
871  double PWIGINV;
872  double PLWIGINV;
873  double POIGOV;
874  double PLIGOV;
875  double PWIGOV;
876  double PLWIGOV;
877  double POIGOVD;
878  double PLIGOVD;
879  double PWIGOVD;
880  double PLWIGOVD;
881  double POSTIG;
882  double POGC2;
883  double POGC3;
884  double POCHIB;
885  double POAGIDL;
886  double PLAGIDL;
887  double PWAGIDL;
888  double PLWAGIDL;
889  double POAGIDLD;
890  double PLAGIDLD;
891  double PWAGIDLD;
892  double PLWAGIDLD;
893  double POBGIDL;
894  double POBGIDLD;
895  double POSTBGIDL;
896  double POSTBGIDLD;
897  double POCGIDL;
898  double POCGIDLD;
899  double POCOX;
900  double PLCOX;
901  double PWCOX;
902  double PLWCOX;
903  double POCGOV;
904  double PLCGOV;
905  double PWCGOV;
906  double PLWCGOV;
907  double POCGOVD;
908  double PLCGOVD;
909  double PWCGOVD;
910  double PLWCGOVD;
911  double POCGBOV;
912  double PLCGBOV;
913  double PWCGBOV;
914  double PLWCGBOV;
915  double POCFR;
916  double PLCFR;
917  double PWCFR;
918  double PLWCFR;
919  double POCFRD;
920  double PLCFRD;
921  double PWCFRD;
922  double PLWCFRD;
923  double POFNT;
924  double PONFA;
925  double PLNFA;
926  double PWNFA;
927  double PLWNFA;
928  double PONFB;
929  double PLNFB;
930  double PWNFB;
931  double PLWNFB;
932  double PONFC;
933  double PLNFC;
934  double PWNFC;
935  double PLWNFC;
936  double POEF;
937  double POKVTHOWE;
938  double PLKVTHOWE;
939  double PWKVTHOWE;
940  double PLWKVTHOWE;
941  double POKUOWE;
942  double PLKUOWE;
943  double PWKUOWE;
944  double PLWKUOWE;
945  double LMIN;
946  double LMAX;
947  double WMIN;
948  double WMAX;
949  double LVARO;
950  double LVARL;
951  double LVARW;
952  double LAP;
953  double WVARO;
954  double WVARL;
955  double WVARW;
956  double WOT;
957  double DLQ;
958  double DWQ;
959  double VFBO;
960  double VFBL;
961  double VFBW;
962  double VFBLW;
963  double STVFBO;
964  double STVFBL;
965  double STVFBW;
966  double STVFBLW;
967  double TOXO;
968  double EPSROXO;
969  double NSUBO;
970  double NSUBW;
971  double WSEG;
972  double NPCK;
973  double NPCKW;
974  double WSEGP;
975  double LPCK;
976  double LPCKW;
977  double FOL1;
978  double FOL2;
979  double FACNEFFACO;
980  double FACNEFFACL;
981  double FACNEFFACW;
982  double FACNEFFACLW;
983  double GFACNUDO;
984  double GFACNUDL;
985  double GFACNUDLEXP;
986  double GFACNUDW;
987  double GFACNUDLW;
988  double VSBNUDO;
989  double DVSBNUDO;
990  double VNSUBO;
991  double NSLPO;
992  double DNSUBO;
993  double DPHIBO;
994  double DPHIBL;
995  double DPHIBLEXP;
996  double DPHIBW;
997  double DPHIBLW;
998  double DELVTACO;
999  double DELVTACL;
1000  double DELVTACLEXP;
1001  double DELVTACW;
1002  double DELVTACLW;
1003  double NPO;
1004  double NPL;
1005  double CTO;
1006  double CTL;
1007  double CTLEXP;
1008  double CTW;
1009  double CTLW;
1010  double TOXOVO;
1011  double TOXOVDO;
1012  double LOV;
1013  double LOVD;
1014  double NOVO;
1015  double NOVDO;
1016  double CFL;
1017  double CFLEXP;
1018  double CFW;
1019  double CFBO;
1020  double UO;
1021  double FBET1;
1022  double FBET1W;
1023  double LP1;
1024  double LP1W;
1025  double FBET2;
1026  double LP2;
1027  double BETW1;
1028  double BETW2;
1029  double WBET;
1030  double STBETO;
1031  double STBETL;
1032  double STBETW;
1033  double STBETLW;
1034  double MUEO;
1035  double MUEW;
1036  double STMUEO;
1037  double THEMUO;
1038  double STTHEMUO;
1039  double CSO;
1040  double CSL;
1041  double CSLEXP;
1042  double CSW;
1043  double CSLW;
1044  double STCSO;
1045  double XCORO;
1046  double XCORL;
1047  double XCORW;
1048  double XCORLW;
1049  double STXCORO;
1050  double FETAO;
1051  double RSW1;
1052  double RSW2;
1053  double STRSO;
1054  double RSBO;
1055  double RSGO;
1056  double THESATO;
1057  double THESATL;
1058  double THESATLEXP;
1059  double THESATW;
1060  double THESATLW;
1061  double STTHESATO;
1062  double STTHESATL;
1063  double STTHESATW;
1064  double STTHESATLW;
1065  double THESATBO;
1066  double THESATGO;
1067  double AXO;
1068  double AXL;
1069  double ALPL;
1070  double ALPLEXP;
1071  double ALPW;
1072  double ALP1L1;
1073  double ALP1LEXP;
1074  double ALP1L2;
1075  double ALP1W;
1076  double ALP2L1;
1077  double ALP2LEXP;
1078  double ALP2L2;
1079  double ALP2W;
1080  double VPO;
1081  double A1O;
1082  double A1L;
1083  double A1W;
1084  double A2O;
1085  double STA2O;
1086  double A3O;
1087  double A3L;
1088  double A3W;
1089  double A4O;
1090  double A4L;
1091  double A4W;
1092  double GCOO;
1093  double IGINVLW;
1094  double IGOVW;
1095  double IGOVDW;
1096  double STIGO;
1097  double GC2O;
1098  double GC3O;
1099  double CHIBO;
1100  double AGIDLW;
1101  double AGIDLDW;
1102  double BGIDLO;
1103  double BGIDLDO;
1104  double STBGIDLO;
1105  double STBGIDLDO;
1106  double CGIDLO;
1107  double CGIDLDO;
1108  double CGBOVL;
1109  double CFRW;
1110  double CFRDW;
1111  double FNTO;
1112  double NFALW;
1113  double NFBLW;
1114  double NFCLW;
1115  double EFO;
1116  double LINTNOI;
1117  double ALPNOI;
1118  double KVTHOWEO;
1119  double KVTHOWEL;
1120  double KVTHOWEW;
1121  double KVTHOWELW;
1122  double KUOWEO;
1123  double KUOWEL;
1124  double KUOWEW;
1125  double KUOWELW;
1126  double RGO;
1127  double RINT;
1128  double RVPOLY;
1129  double RSHG;
1130  double DLSIL;
1131  double RSH;
1132  double RSHD;
1133  double RBULKO;
1134  double RWELLO;
1135  double RJUNSO;
1136  double RJUNDO;
1137  double SAREF;
1138  double SBREF;
1139  double WLOD;
1140  double KUO;
1141  double KVSAT;
1142  double TKUO;
1143  double LKUO;
1144  double WKUO;
1145  double PKUO;
1146  double LLODKUO;
1147  double WLODKUO;
1148  double KVTHO;
1149  double LKVTHO;
1150  double WKVTHO;
1151  double PKVTHO;
1152  double LLODVTH;
1153  double WLODVTH;
1154  double STETAO;
1155  double LODETAO;
1156  double SCREF;
1157  double WEB;
1158  double WEC;
1159  double IMAX;
1160  double TRJ;
1161  double CJORBOT;
1162  double CJORSTI;
1163  double CJORGAT;
1164  double VBIRBOT;
1165  double VBIRSTI;
1166  double VBIRGAT;
1167  double PBOT;
1168  double PSTI;
1169  double PGAT;
1170  double PHIGBOT;
1171  double PHIGSTI;
1172  double PHIGGAT;
1173  double IDSATRBOT;
1174  double IDSATRSTI;
1175  double IDSATRGAT;
1176  double CSRHBOT;
1177  double CSRHSTI;
1178  double CSRHGAT;
1179  double XJUNSTI;
1180  double XJUNGAT;
1181  double CTATBOT;
1182  double CTATSTI;
1183  double CTATGAT;
1184  double MEFFTATBOT;
1185  double MEFFTATSTI;
1186  double MEFFTATGAT;
1187  double CBBTBOT;
1188  double CBBTSTI;
1189  double CBBTGAT;
1190  double FBBTRBOT;
1191  double FBBTRSTI;
1192  double FBBTRGAT;
1193  double STFBBTBOT;
1194  double STFBBTSTI;
1195  double STFBBTGAT;
1196  double VBRBOT;
1197  double VBRSTI;
1198  double VBRGAT;
1199  double PBRBOT;
1200  double PBRSTI;
1201  double PBRGAT;
1202  double CJORBOTD;
1203  double CJORSTID;
1204  double CJORGATD;
1205  double VBIRBOTD;
1206  double VBIRSTID;
1207  double VBIRGATD;
1208  double PBOTD;
1209  double PSTID;
1210  double PGATD;
1211  double PHIGBOTD;
1212  double PHIGSTID;
1213  double PHIGGATD;
1214  double IDSATRBOTD;
1215  double IDSATRSTID;
1216  double IDSATRGATD;
1217  double CSRHBOTD;
1218  double CSRHSTID;
1219  double CSRHGATD;
1220  double XJUNSTID;
1221  double XJUNGATD;
1222  double CTATBOTD;
1223  double CTATSTID;
1224  double CTATGATD;
1225  double MEFFTATBOTD;
1226  double MEFFTATSTID;
1227  double MEFFTATGATD;
1228  double CBBTBOTD;
1229  double CBBTSTID;
1230  double CBBTGATD;
1231  double FBBTRBOTD;
1232  double FBBTRSTID;
1233  double FBBTRGATD;
1234  double STFBBTBOTD;
1235  double STFBBTSTID;
1236  double STFBBTGATD;
1237  double VBRBOTD;
1238  double VBRSTID;
1239  double VBRGATD;
1240  double PBRBOTD;
1241  double PBRSTID;
1242  double PBRGATD;
1243  double SWJUNEXP;
1244  double VJUNREF;
1245  double FJUNQ;
1246  double VJUNREFD;
1247  double FJUNQD;
1248  double DTA;
1249  // Variables of global_model scope
1250  double NSUBO_i;
1251  double WSEG_i;
1252  double NPCK_i;
1253  double WSEGP_i;
1254  double LPCK_i;
1255  double LOV_i;
1256  double LOVD_i;
1257  double LP1_i;
1258  double LP2_i;
1259  double WBET_i;
1260  double AXL_i;
1261  double ALP1L2_i;
1262  double ALP2L2_i;
1263  double TOXO_i;
1264  double TOXOVO_i;
1265  double TOXOVDO_i;
1266  double EPSROXO_i;
1267  double RINT_i;
1268  double RVPOLY_i;
1269  double RSHG_i;
1270  double RSH_i;
1271  double RSHD_i;
1272  double SAREF_i;
1273  double SBREF_i;
1274  double KVSAT_i;
1275  double LLODKUO_i;
1276  double WLODKUO_i;
1277  double LLODVTH_i;
1278  double WLODVTH_i;
1279  double LODETAO_i;
1280  double SCREF_i;
1281  double WEB_i;
1282  double WEC_i;
1283  double QMC_i;
1284  double TKD;
1285  double dT;
1286  double rT;
1287  double rTn;
1288  double EPSSI;
1289  double phit;
1290  double inv_phit;
1291  double Eg;
1292  double phibFac;
1293  double nt0;
1295  int SWGEO_i;
1301  int SWNUD_i;
1303  double IMAX_i;
1304  double CJORBOT_i;
1305  double CJORSTI_i;
1306  double CJORGAT_i;
1307  double VBIRBOT_i;
1308  double VBIRSTI_i;
1309  double VBIRGAT_i;
1310  double PBOT_i;
1311  double PSTI_i;
1312  double PGAT_i;
1313  double PHIGBOT_i;
1314  double PHIGSTI_i;
1315  double PHIGGAT_i;
1316  double IDSATRBOT_i;
1317  double IDSATRSTI_i;
1318  double IDSATRGAT_i;
1319  double XJUNSTI_i;
1320  double XJUNGAT_i;
1321  double CSRHBOT_i;
1322  double CSRHSTI_i;
1323  double CSRHGAT_i;
1324  double CTATBOT_i;
1325  double CTATSTI_i;
1326  double CTATGAT_i;
1330  double CBBTBOT_i;
1331  double CBBTSTI_i;
1332  double CBBTGAT_i;
1333  double FBBTRBOT_i;
1334  double FBBTRSTI_i;
1335  double FBBTRGAT_i;
1336  double STFBBTBOT_i;
1337  double STFBBTSTI_i;
1338  double STFBBTGAT_i;
1339  double VBRBOT_i;
1340  double VBRSTI_i;
1341  double VBRGAT_i;
1342  double PBRBOT_i;
1343  double PBRSTI_i;
1344  double PBRGAT_i;
1345  double SWJUNEXP_i;
1346  double VJUNREF_i;
1347  double FJUNQ_i;
1348  double phitr;
1349  double phitd;
1350  double phitdinv;
1351  double perfc;
1352  double berfc;
1353  double cerfc;
1354  double phigrbot;
1355  double phigrsti;
1356  double phigrgat;
1357  double phigdbot;
1358  double phigdsti;
1359  double phigdgat;
1360  double ftdbot;
1361  double ftdsti;
1362  double ftdgat;
1363  double idsatbot;
1364  double idsatsti;
1365  double idsatgat;
1366  double ubibot;
1367  double ubisti;
1368  double ubigat;
1369  double vbibot;
1370  double vbisti;
1371  double vbigat;
1372  double vbiinvbot;
1373  double vbiinvsti;
1374  double vbiinvgat;
1381  double cjobot;
1382  double cjosti;
1383  double cjogat;
1384  double qprefbot;
1385  double qprefsti;
1386  double qprefgat;
1387  double qpref2bot;
1388  double qpref2sti;
1389  double qpref2gat;
1390  double wdepnulrbot;
1391  double wdepnulrsti;
1392  double wdepnulrgat;
1396  double VBIRBOTinv;
1397  double VBIRSTIinv;
1398  double VBIRGATinv;
1399  double deltaEbot;
1400  double deltaEsti;
1401  double deltaEgat;
1402  double atatbot;
1403  double atatsti;
1404  double atatgat;
1405  double btatpartbot;
1406  double btatpartsti;
1407  double btatpartgat;
1408  double fbbtbot;
1409  double fbbtsti;
1410  double fbbtgat;
1411  double fstopbot;
1412  double fstopsti;
1413  double fstopgat;
1414  double VBRinvbot;
1415  double VBRinvsti;
1416  double VBRinvgat;
1417  double slopebot;
1418  double slopesti;
1419  double slopegat;
1420  double CJORBOTS_i;
1421  double CJORSTIS_i;
1422  double CJORGATS_i;
1423  double VBIRBOTS_i;
1424  double VBIRSTIS_i;
1425  double VBIRGATS_i;
1426  double PBOTS_i;
1427  double PSTIS_i;
1428  double PGATS_i;
1429  double PHIGBOTS_i;
1430  double PHIGSTIS_i;
1431  double PHIGGATS_i;
1435  double XJUNSTIS_i;
1436  double XJUNGATS_i;
1437  double CSRHBOTS_i;
1438  double CSRHSTIS_i;
1439  double CSRHGATS_i;
1440  double CTATBOTS_i;
1441  double CTATSTIS_i;
1442  double CTATGATS_i;
1446  double CBBTBOTS_i;
1447  double CBBTSTIS_i;
1448  double CBBTGATS_i;
1449  double FBBTRBOTS_i;
1450  double FBBTRSTIS_i;
1451  double FBBTRGATS_i;
1455  double VBRBOTS_i;
1456  double VBRSTIS_i;
1457  double VBRGATS_i;
1458  double PBRBOTS_i;
1459  double PBRSTIS_i;
1460  double PBRGATS_i;
1461  double CJORBOTD_i;
1462  double CJORSTID_i;
1463  double CJORGATD_i;
1464  double VBIRBOTD_i;
1465  double VBIRSTID_i;
1466  double VBIRGATD_i;
1467  double PBOTD_i;
1468  double PSTID_i;
1469  double PGATD_i;
1470  double PHIGBOTD_i;
1471  double PHIGSTID_i;
1472  double PHIGGATD_i;
1476  double XJUNSTID_i;
1477  double XJUNGATD_i;
1478  double CSRHBOTD_i;
1479  double CSRHSTID_i;
1480  double CSRHGATD_i;
1481  double CTATBOTD_i;
1482  double CTATSTID_i;
1483  double CTATGATD_i;
1487  double CBBTBOTD_i;
1488  double CBBTSTID_i;
1489  double CBBTGATD_i;
1490  double FBBTRBOTD_i;
1491  double FBBTRSTID_i;
1492  double FBBTRGATD_i;
1496  double VBRBOTD_i;
1497  double VBRSTID_i;
1498  double VBRGATD_i;
1499  double PBRBOTD_i;
1500  double PBRSTID_i;
1501  double PBRGATD_i;
1502  double VJUNREFS_i;
1503  double FJUNQS_i;
1504  double VJUNREFD_i;
1505  double FJUNQD_i;
1506  double phigrbot_s;
1507  double phigrsti_s;
1508  double phigrgat_s;
1509  double phigdbot_s;
1510  double phigdsti_s;
1511  double phigdgat_s;
1512  double ftdbot_s;
1513  double ftdsti_s;
1514  double ftdgat_s;
1515  double idsatbot_s;
1516  double idsatsti_s;
1517  double idsatgat_s;
1518  double ubibot_s;
1519  double ubisti_s;
1520  double ubigat_s;
1521  double vbibot_s;
1522  double vbisti_s;
1523  double vbigat_s;
1524  double vbiinvbot_s;
1525  double vbiinvsti_s;
1526  double vbiinvgat_s;
1533  double cjobot_s;
1534  double cjosti_s;
1535  double cjogat_s;
1536  double qprefbot_s;
1537  double qprefsti_s;
1538  double qprefgat_s;
1539  double qpref2bot_s;
1540  double qpref2sti_s;
1541  double qpref2gat_s;
1551  double deltaEbot_s;
1552  double deltaEsti_s;
1553  double deltaEgat_s;
1554  double atatbot_s;
1555  double atatsti_s;
1556  double atatgat_s;
1560  double fbbtbot_s;
1561  double fbbtsti_s;
1562  double fbbtgat_s;
1563  double fstopbot_s;
1564  double fstopsti_s;
1565  double fstopgat_s;
1566  double VBRinvbot_s;
1567  double VBRinvsti_s;
1568  double VBRinvgat_s;
1569  double slopebot_s;
1570  double slopesti_s;
1571  double slopegat_s;
1572  double phigrbot_d;
1573  double phigrsti_d;
1574  double phigrgat_d;
1575  double phigdbot_d;
1576  double phigdsti_d;
1577  double phigdgat_d;
1578  double ftdbot_d;
1579  double ftdsti_d;
1580  double ftdgat_d;
1581  double idsatbot_d;
1582  double idsatsti_d;
1583  double idsatgat_d;
1584  double ubibot_d;
1585  double ubisti_d;
1586  double ubigat_d;
1587  double vbibot_d;
1588  double vbisti_d;
1589  double vbigat_d;
1590  double vbiinvbot_d;
1591  double vbiinvsti_d;
1592  double vbiinvgat_d;
1599  double cjobot_d;
1600  double cjosti_d;
1601  double cjogat_d;
1602  double qprefbot_d;
1603  double qprefsti_d;
1604  double qprefgat_d;
1605  double qpref2bot_d;
1606  double qpref2sti_d;
1607  double qpref2gat_d;
1617  double deltaEbot_d;
1618  double deltaEsti_d;
1619  double deltaEgat_d;
1620  double atatbot_d;
1621  double atatsti_d;
1622  double atatgat_d;
1626  double fbbtbot_d;
1627  double fbbtsti_d;
1628  double fbbtgat_d;
1629  double fstopbot_d;
1630  double fstopsti_d;
1631  double fstopgat_d;
1632  double VBRinvbot_d;
1633  double VBRinvsti_d;
1634  double VBRinvgat_d;
1635  double slopebot_d;
1636  double slopesti_d;
1637  double slopegat_d;
1638  // end verilog model variables=====
1639 };
1640 
1641 void registerDevice();
1642 
1643 } // namespace ADMSPSP103VA
1644 } // namespace Device
1645 } // namespace Xyce
1646 #endif //Xyce_N_DEV_ADMSPSP103VA_h