Xyce  6.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
N_DEV_ADMSbsimcmg.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_ADMSbsimcmg.h,v $
29 //
30 // Purpose :
31 //
32 // Special Notes : Generated from verilog file bsimcmg.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:31:50
39 //
40 // Revision Information:
41 // ---------------------
42 //
43 // Revision Number: $Revision: 1.26 $
44 //
45 // Revision Date : $Date: 2014/06/02 17:46:46 $
46 //
47 // Current Owner : $Author: tvrusso $
48 //-----------------------------------------------------------------------------
49 #ifndef Xyce_N_DEV_ADMSbsimcmg_h
50 #define Xyce_N_DEV_ADMSbsimcmg_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 ADMSbsimcmg {
66 
67 class Model;
68 class Instance;
69 
70 struct Traits: public DeviceTraits<Model, Instance, MOSFET1::Traits>
71 {
72  static const char *name() {return "BSIM-CMG FINFET v107.0.0";}
73  static const char *deviceTypeName() {return "m level 107";}
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,14> 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 
145 private:
146  // Limited exponential --- NOT what verilog LRM says, but what qucs,
147  // ng-spice, and zspice do.
148 
149  template <typename T>
150  T limexp(const T &x)
151  {
152  if ((x) < 80.0)
153  return (exp(x));
154  else
155  return (exp(80.0)*(x-79.0));
156  }
157 
158 
159 public:
160  // iterator reference to the bsimcmg model which owns this instance.
161  // Getters and setters
163  {
164  return model_;
165  }
166 
167 private:
168 
169  Model & model_; //< Owning Model
170  // Begin verilog Instance Variables
171  // Instance Parameters
172  double L;
173  double D;
174  double TFIN;
175  double FPITCH;
176  double NFIN;
177  int NGCON;
178  double ASEO;
179  double ADEO;
180  double PSEO;
181  double PDEO;
182  double ASEJ;
183  double ADEJ;
184  double PSEJ;
185  double PDEJ;
186  double COVS;
187  double COVD;
188  double CGSP;
189  double CGDP;
190  double CDSP;
191  double NRS;
192  double NRD;
193  double LRSD;
194  // Variables of global_instance scope
195  // end verilog Instance Variables=====
196  // Nodal LID Variables
197  int li_d;
198  int li_g;
199  int li_s;
200  int li_e;
201  int li_di;
202  int li_si;
203  // end Nodal LID Variables
204  // Branch LID Variables
205  // end Branch LID Variables
206  // Jacobian pointers
279  // end of Jacobian and pointers
280  // node numbers
281  static const int admsNodeID_d = 0;
282  static const int admsNodeID_g = 1;
283  static const int admsNodeID_s = 2;
284  static const int admsNodeID_e = 3;
285  static const int admsNodeID_di = 4;
286  static const int admsNodeID_si = 5;
287  // end node numbers
288  // Additional IDs for branch equations
289  // end branch numbers
290  // Probe numbers
291  static const int admsProbeID_V_s_si = 0;
292  static const int admsProbeID_V_d_di = 1;
293  static const int admsProbeID_V_e_g = 2;
294  static const int admsProbeID_V_d_s = 3;
295  static const int admsProbeID_V_g_d = 4;
296  static const int admsProbeID_V_g_s = 5;
297  static const int admsProbeID_V_di_d = 6;
298  static const int admsProbeID_V_si_s = 7;
299  static const int admsProbeID_V_g_e = 8;
300  static const int admsProbeID_V_e_di = 9;
301  static const int admsProbeID_V_e_si = 10;
302  static const int admsProbeID_V_g_di = 11;
303  static const int admsProbeID_V_di_si = 12;
304  static const int admsProbeID_V_g_si = 13;
305  // end probe numbers
306  // State LIDs
307  // end state LIDs
308  // Arrays to hold probes
309  std::vector < AdmsFadType > probeVars;
310  // Arrays to hold contributions
311  // dynamic contributions are differentiated w.r.t time
312  std::vector < AdmsFadType > staticContributions;
313  std::vector < AdmsFadType > dynamicContributions;
314 
315 
316  // this is what we'll use when any model uses $temperature. We'll
317  // set it in updateTemperature, and initialize it to whatever
318  // is in devOptions when the instance is constructed.
320 
321  // vt at $temperature;
322  double adms_vt_nom;
323 
324 
325  // This one is for the annoying bogus "XyceADMSInstTemp" parameter
326  // that we need so we can set it from the device manager when there's no
327  // "TEMP" parameter to use
328  double admsInstTemp;
329 
330  // thermal voltage at kelvin temperature temp)
331  inline double adms_vt(double temp) {return(CONSTKoverQ*temp);};
332 
333  static std::vector< std::vector<int> > jacStamp;
334  static std::vector<int> jacMap;
335  static std::vector< std::vector<int> > jacMap2;
336 };
337 
338 
339 // Class AnalogFunctions
340 
342 {
343 public:
344 
345  // Analog Function lexp
346  template<typename ScalarT> ScalarT lexp(ScalarT x)
347  {
348 
349 
350  ScalarT lexp;
351  {
352  if ((x>80.0))
353  {
354  lexp = (5.540622384e+34*((1.0+x)-80.0));
355  }
356  else
357  {
358  if ((x<(-80.0)))
359  {
360  lexp = 1.804851387e-35;
361  }
362  else
363  {
364  lexp = exp(x);
365  }
366  }
367  }
368  return(lexp);
369  }
370 
371 
372  // Analog Function lln
373  template<typename ScalarT> ScalarT lln(ScalarT x)
374  {
375 
376 
377  ScalarT lln;
378  {
379  lln = log(std::max(x,1.0e-38));
380  }
381  return(lln);
382  }
383 
384 
385  // Analog Function hypsmooth
386  template<typename ScalarT> ScalarT hypsmooth(ScalarT x, ScalarT c)
387  {
388 
389 
390  ScalarT hypsmooth;
391  {
392  hypsmooth = (0.5*(x+sqrt(((x*x)+((4*c)*c)))));
393  }
394  return(hypsmooth);
395  }
396 
397 
398  // Analog Function hypmax
399  template<typename ScalarT> ScalarT hypmax(ScalarT x, ScalarT xmin, ScalarT c)
400  {
401 
402 
403  ScalarT hypmax;
404  {
405  hypmax = (xmin+(0.5*(((x-xmin)-c)+sqrt(((((x-xmin)-c)*((x-xmin)-c))-((4*xmin)*c))))));
406  }
407  return(hypmax);
408  }
409 
410 };
411 
412 
413 //-----------------------------------------------------------------------------
414 // Class : Model
415 
416 // Purpose :
417 // Special Notes :
418 // Creator :
419 // Creation Date :
420 //-----------------------------------------------------------------------------
421 class Model : public DeviceModel
422 {
423  typedef std::vector<Instance *> InstanceVector;
424 
425  friend class ParametricData<Model>;
426  friend class Instance;
427  friend class Traits;
428 
429  typedef Sacado::Fad::SFad<double,14> AdmsFadType;
430 
431 public:
432  Model(
433  const Configuration & configuration,
434  const ModelBlock & model_block,
435  const FactoryBlock & factory_block);
436 
437  ~Model();
438 
439 private:
440  Model(const Model &);
441  Model &operator=(const Model &);
442 
443 public:
444  virtual void forEachInstance(DeviceInstanceOp &op) const /* override */;
445  virtual std::ostream &printOutInstances(std::ostream &os) const;
446  bool processParams();
447  bool processInstanceParams();
448 
449 private:
451 
452 public:
453  void addInstance(Instance *instance)
454  {
455  instanceContainer.push_back(instance);
456  }
457 
458 private:
459  std::vector<Instance*> instanceContainer;
460 
461 private:
462 
463  // This one is for the annoying bogus "XyceADMSInstTemp" parameter
464  // that we need so we can set it from the device manager when there's no
465  // "TEMP" model parameter to use
466  double admsModTemp;
467  // Begin verilog Model Variables
468  // Model Parameters
469  double L;
470  double D;
471  double TFIN;
472  double FPITCH;
473  int NF;
474  double NFIN;
475  int NGCON;
476  double ASEO;
477  double ADEO;
478  double PSEO;
479  double PDEO;
480  double ASEJ;
481  double ADEJ;
482  double PSEJ;
483  double PDEJ;
484  double COVS;
485  double COVD;
486  double CGSP;
487  double CGDP;
488  double CDSP;
489  double NRS;
490  double NRD;
491  double LRSD;
492  double XL;
493  double DTEMP;
494  double DELVTRAND;
495  double U0MULT;
496  double IDS0MULT;
497  int DEVTYPE;
498  int BULKMOD;
499  int COREMOD;
500  int GEOMOD;
501  int CGEO1SW;
502  int RDSMOD;
503  int ASYMMOD;
504  int IGCMOD;
505  int IGBMOD;
506  int GIDLMOD;
507  int IIMOD;
508  int NQSMOD;
509  int SHMOD;
510  int RGATEMOD;
511  int RGEOMOD;
512  int CGEOMOD;
513  int CAPMOD;
514  double LINT;
515  double LL;
516  double LLN;
517  double DLC;
518  double DLCACC;
519  double DLBIN;
520  double LLC;
521  double EOT;
522  double TOXP;
523  double EOTBOX;
524  double HFIN;
525  double FECH;
526  double DELTAW;
527  double FECHCV;
528  double DELTAWCV;
529  double NBODY;
530  double NBODYN1;
531  double NBODYN2;
532  double NSD;
533  double PHIG;
534  double PHIGL;
535  double PHIGN1;
536  double PHIGN2;
537  double EPSROX;
538  double EPSRSUB;
539  double EASUB;
540  double NI0SUB;
541  double BG0SUB;
542  double NC0SUB;
543  double NGATE;
544  double Imin;
545  double CIT;
546  double CDSC;
547  double CDSCN1;
548  double CDSCN2;
549  double CDSCD;
550  double CDSCDN1;
551  double CDSCDN2;
552  double CDSCDR;
553  double CDSCDRN1;
554  double CDSCDRN2;
555  double DVT0;
556  double DVT1;
557  double DVT1SS;
558  double PHIN;
559  double ETA0;
560  double ETA0N1;
561  double ETA0N2;
562  double TETA0;
563  double ETA0R;
564  double TETA0R;
565  double DSUB;
566  double DVTP0;
567  double DVTP1;
568  double K1RSCE;
569  double LPE0;
570  double DVTSHIFT;
571  double K0;
572  double K01;
573  double K0SI;
574  double K0SI1;
575  double K1SI;
576  double K1SI1;
577  double PHIBE;
578  double K1;
579  double K11;
580  double K1SAT;
581  double K1SAT1;
582  double QMFACTOR;
583  double QMTCENIV;
584  double QMTCENCV;
585  double QMTCENCVA;
586  double AQMTCEN;
587  double BQMTCEN;
588  double ETAQM;
589  double QM0;
590  double PQM;
591  double QM0ACC;
592  double PQMACC;
593  double VSAT;
594  double VSATN1;
595  double VSATN2;
596  double AVSAT;
597  double BVSAT;
598  double VSAT1;
599  double VSAT1N1;
600  double VSAT1N2;
601  double VSAT1R;
602  double VSAT1RN1;
603  double VSAT1RN2;
604  double AVSAT1;
605  double BVSAT1;
606  double DELTAVSAT;
607  double PSAT;
608  double APSAT;
609  double BPSAT;
610  double KSATIV;
611  double VSATCV;
612  double AVSATCV;
613  double BVSATCV;
614  double DELTAVSATCV;
615  double PSATCV;
616  double APSATCV;
617  double BPSATCV;
618  double MEXP;
619  double AMEXP;
620  double BMEXP;
621  double MEXPR;
622  double AMEXPR;
623  double BMEXPR;
624  double PTWG;
625  double PTWGR;
626  double APTWG;
627  double BPTWG;
628  double AT;
629  double TMEXP;
630  double TMEXPR;
631  double PTWGT;
632  double U0;
633  double U0N1;
634  double U0N2;
635  double ETAMOB;
636  double UP;
637  double LPA;
638  double UA;
639  double AUA;
640  double BUA;
641  double UC;
642  double EU;
643  double AEU;
644  double BEU;
645  double UD;
646  double AUD;
647  double BUD;
648  double UCS;
649  double UTE;
650  double UTL;
651  double EMOBT;
652  double UA1;
653  double UC1;
654  double UD1;
655  double UCSTE;
656  double CHARGEWF;
657  double RDSWMIN;
658  double RDSW;
659  double ARDSW;
660  double BRDSW;
661  double RSWMIN;
662  double RSW;
663  double ARSW;
664  double BRSW;
665  double RDWMIN;
666  double RDW;
667  double ARDW;
668  double BRDW;
669  double RSDR;
670  double RSDRR;
671  double RDDR;
672  double RDDRR;
673  double PRSDR;
674  double PRDDR;
675  double PRWGS;
676  double PRWGD;
677  double WR;
678  double PRT;
679  double TRSDR;
680  double TRDDR;
681  double PDIBL1;
682  double PDIBL1R;
683  double PDIBL2;
684  double DROUT;
685  double PVAG;
686  double PCLM;
687  double APCLM;
688  double BPCLM;
689  double PCLMG;
690  double PCLMCV;
691  double A1;
692  double A11;
693  double A2;
694  double A21;
695  double RGEXT;
696  double RGFIN;
697  double RSHS;
698  double RSHD;
699  double HEPI;
700  double TSILI;
701  double RHOC;
702  double RHORSD;
703  double CRATIO;
704  double DELTAPRSD;
705  int SDTERM;
706  double LSP;
707  double EPSRSP;
708  double TGATE;
709  double TMASK;
710  double ASILIEND;
711  double ARSDEND;
712  double PRSDEND;
713  double NSDE;
714  double RGEOA;
715  double RGEOB;
716  double RGEOC;
717  double RGEOD;
718  double RGEOE;
719  double CGEOA;
720  double CGEOB;
721  double CGEOC;
722  double CGEOD;
723  double CGEOE;
724  double AIGBINV;
725  double AIGBINV1;
726  double BIGBINV;
727  double CIGBINV;
728  double EIGBINV;
729  double NIGBINV;
730  double AIGBACC;
731  double AIGBACC1;
732  double BIGBACC;
733  double CIGBACC;
734  double NIGBACC;
735  double AIGC;
736  double AIGC1;
737  double BIGC;
738  double CIGC;
739  double PIGCD;
740  double DLCIGS;
741  double AIGS;
742  double AIGS1;
743  double BIGS;
744  double CIGS;
745  double DLCIGD;
746  double AIGD;
747  double AIGD1;
748  double BIGD;
749  double CIGD;
750  double TOXREF;
751  double TOXG;
752  double NTOX;
753  double POXEDGE;
754  double AGISL;
755  double BGISL;
756  double CGISL;
757  double EGISL;
758  double PGISL;
759  double AGIDL;
760  double BGIDL;
761  double CGIDL;
762  double EGIDL;
763  double PGIDL;
764  double ALPHA0;
765  double ALPHA01;
766  double ALPHA1;
767  double ALPHA11;
768  double BETA0;
769  double ALPHAII0;
770  double ALPHAII01;
771  double ALPHAII1;
772  double ALPHAII11;
773  double BETAII0;
774  double BETAII1;
775  double BETAII2;
776  double ESATII;
777  double LII;
778  double SII0;
779  double SII1;
780  double SII2;
781  double SIID;
782  double EOTACC;
783  double DELVFBACC;
784  double CFS;
785  double CFD;
786  double CGSO;
787  double CGDO;
788  double CGSL;
789  double CGDL;
790  double CKAPPAS;
791  double CKAPPAD;
792  double CGBO;
793  double CGBN;
794  double CGBL;
795  double CKAPPAB;
796  double CSDESW;
797  double CJS;
798  double CJD;
799  double CJSWS;
800  double CJSWD;
801  double CJSWGS;
802  double CJSWGD;
803  double PBS;
804  double PBD;
805  double PBSWS;
806  double PBSWD;
807  double PBSWGS;
808  double PBSWGD;
809  double MJS;
810  double MJD;
811  double MJSWS;
812  double MJSWD;
813  double MJSWGS;
814  double MJSWGD;
815  double SJS;
816  double SJD;
817  double SJSWS;
818  double SJSWD;
819  double SJSWGS;
820  double SJSWGD;
821  double MJS2;
822  double MJD2;
823  double MJSWS2;
824  double MJSWD2;
825  double MJSWGS2;
826  double MJSWGD2;
827  double JSS;
828  double JSD;
829  double JSWS;
830  double JSWD;
831  double JSWGS;
832  double JSWGD;
833  double NJS;
834  double NJD;
835  double IJTHSFWD;
836  double IJTHDFWD;
837  double IJTHSREV;
838  double IJTHDREV;
839  double BVS;
840  double BVD;
841  double XJBVS;
842  double XJBVD;
843  double JTSS;
844  double JTSD;
845  double JTSSWS;
846  double JTSSWD;
847  double JTSSWGS;
848  double JTSSWGD;
849  double JTWEFF;
850  double NJTS;
851  double NJTSD;
852  double NJTSSW;
853  double NJTSSWD;
854  double NJTSSWG;
855  double NJTSSWGD;
856  double VTSS;
857  double VTSD;
858  double VTSSWS;
859  double VTSSWD;
860  double VTSSWGS;
861  double VTSSWGD;
862  double LINTIGEN;
863  double NTGEN;
864  double AIGEN;
865  double BIGEN;
866  double XRCRG1;
867  double XRCRG2;
868  int NSEG;
869  double EF;
870  double EM;
871  double NOIA;
872  double NOIB;
873  double NOIC;
874  double NTNOI;
875  double TNOM;
876  double TBGASUB;
877  double TBGBSUB;
878  double KT1;
879  double KT1L;
880  double TSS;
881  double IIT;
882  double TII;
883  double TGIDL;
884  double IGT;
885  double TCJ;
886  double TCJSW;
887  double TCJSWG;
888  double TPB;
889  double TPBSW;
890  double TPBSWG;
891  double XTIS;
892  double XTID;
893  double XTSS;
894  double XTSD;
895  double XTSSWS;
896  double XTSSWD;
897  double XTSSWGS;
898  double XTSSWGD;
899  double TNJTS;
900  double TNJTSD;
901  double TNJTSSW;
902  double TNJTSSWD;
903  double TNJTSSWG;
904  double TNJTSSWGD;
905  double RTH0;
906  double CTH0;
907  double WTH0;
908  double LNBODY;
909  double NNBODY;
910  double PNBODY;
911  double LPHIG;
912  double NPHIG;
913  double PPHIG;
914  double LNGATE;
915  double NNGATE;
916  double PNGATE;
917  double LCIT;
918  double NCIT;
919  double PCIT;
920  double LCDSC;
921  double NCDSC;
922  double PCDSC;
923  double LCDSCD;
924  double NCDSCD;
925  double PCDSCD;
926  double LCDSCDR;
927  double NCDSCDR;
928  double PCDSCDR;
929  double LDVT0;
930  double NDVT0;
931  double PDVT0;
932  double LDVT1;
933  double NDVT1;
934  double PDVT1;
935  double LDVT1SS;
936  double NDVT1SS;
937  double PDVT1SS;
938  double LPHIN;
939  double NPHIN;
940  double PPHIN;
941  double LETA0;
942  double NETA0;
943  double PETA0;
944  double LETA0R;
945  double NETA0R;
946  double PETA0R;
947  double LDSUB;
948  double NDSUB;
949  double PDSUB;
950  double LK1RSCE;
951  double NK1RSCE;
952  double PK1RSCE;
953  double LLPE0;
954  double NLPE0;
955  double PLPE0;
956  double LDVTSHIFT;
957  double NDVTSHIFT;
958  double PDVTSHIFT;
959  double LPHIBE;
960  double NPHIBE;
961  double PPHIBE;
962  double LK0;
963  double NK0;
964  double PK0;
965  double LK01;
966  double NK01;
967  double PK01;
968  double LK0SI;
969  double NK0SI;
970  double PK0SI;
971  double LK0SI1;
972  double NK0SI1;
973  double PK0SI1;
974  double LK1SI;
975  double NK1SI;
976  double PK1SI;
977  double LK1SI1;
978  double NK1SI1;
979  double PK1SI1;
980  double LK1;
981  double NK1;
982  double PK1;
983  double LK11;
984  double NK11;
985  double PK11;
986  double LK1SAT;
987  double NK1SAT;
988  double PK1SAT;
989  double LK1SAT1;
990  double NK1SAT1;
991  double PK1SAT1;
992  double LDVTB;
993  double NDVTB;
994  double PDVTB;
995  double LLPEB;
996  double NLPEB;
997  double PLPEB;
998  double LQMFACTOR;
999  double NQMFACTOR;
1000  double PQMFACTOR;
1001  double LQMTCENIV;
1002  double NQMTCENIV;
1003  double PQMTCENIV;
1004  double LQMTCENCV;
1005  double NQMTCENCV;
1006  double PQMTCENCV;
1007  double LQMTCENCVA;
1008  double NQMTCENCVA;
1009  double PQMTCENCVA;
1010  double LVSAT;
1011  double NVSAT;
1012  double PVSAT;
1013  double LVSAT1;
1014  double NVSAT1;
1015  double PVSAT1;
1016  double LVSAT1R;
1017  double NVSAT1R;
1018  double PVSAT1R;
1019  double LPSAT;
1020  double NPSAT;
1021  double PPSAT;
1022  double LDELTAVSAT;
1023  double NDELTAVSAT;
1024  double PDELTAVSAT;
1025  double LKSATIV;
1026  double NKSATIV;
1027  double PKSATIV;
1028  double LVSATCV;
1029  double NVSATCV;
1030  double PVSATCV;
1031  double LPSATCV;
1032  double NPSATCV;
1033  double PPSATCV;
1037  double LMEXP;
1038  double NMEXP;
1039  double PMEXP;
1040  double LMEXPR;
1041  double NMEXPR;
1042  double PMEXPR;
1043  double LPTWG;
1044  double NPTWG;
1045  double PPTWG;
1046  double LPTWGR;
1047  double NPTWGR;
1048  double PPTWGR;
1049  double LU0;
1050  double NU0;
1051  double PU0;
1052  double LETAMOB;
1053  double NETAMOB;
1054  double PETAMOB;
1055  double LUP;
1056  double NUP;
1057  double PUP;
1058  double LUA;
1059  double NUA;
1060  double PUA;
1061  double LUC;
1062  double NUC;
1063  double PUC;
1064  double LEU;
1065  double NEU;
1066  double PEU;
1067  double LUD;
1068  double NUD;
1069  double PUD;
1070  double LUCS;
1071  double NUCS;
1072  double PUCS;
1073  double LPCLM;
1074  double NPCLM;
1075  double PPCLM;
1076  double LPCLMG;
1077  double NPCLMG;
1078  double PPCLMG;
1079  double LPCLMCV;
1080  double NPCLMCV;
1081  double PPCLMCV;
1082  double LA1;
1083  double NA1;
1084  double PA1;
1085  double LA11;
1086  double NA11;
1087  double PA11;
1088  double LA2;
1089  double NA2;
1090  double PA2;
1091  double LA21;
1092  double NA21;
1093  double PA21;
1094  double LRDSW;
1095  double NRDSW;
1096  double PRDSW;
1097  double LRSW;
1098  double NRSW;
1099  double PRSW;
1100  double LRDW;
1101  double NRDW;
1102  double PRDW;
1103  double LPRWGS;
1104  double NPRWGS;
1105  double PPRWGS;
1106  double LPRWGD;
1107  double NPRWGD;
1108  double PPRWGD;
1109  double LWR;
1110  double NWR;
1111  double PWR;
1112  double LPDIBL1;
1113  double NPDIBL1;
1114  double PPDIBL1;
1115  double LPDIBL1R;
1116  double NPDIBL1R;
1117  double PPDIBL1R;
1118  double LPDIBL2;
1119  double NPDIBL2;
1120  double PPDIBL2;
1121  double LDROUT;
1122  double NDROUT;
1123  double PDROUT;
1124  double LPVAG;
1125  double NPVAG;
1126  double PPVAG;
1127  double LAIGBINV;
1128  double NAIGBINV;
1129  double PAIGBINV;
1130  double LAIGBINV1;
1131  double NAIGBINV1;
1132  double PAIGBINV1;
1133  double LBIGBINV;
1134  double NBIGBINV;
1135  double PBIGBINV;
1136  double LCIGBINV;
1137  double NCIGBINV;
1138  double PCIGBINV;
1139  double LEIGBINV;
1140  double NEIGBINV;
1141  double PEIGBINV;
1142  double LNIGBINV;
1143  double NNIGBINV;
1144  double PNIGBINV;
1145  double LAIGBACC;
1146  double NAIGBACC;
1147  double PAIGBACC;
1148  double LAIGBACC1;
1149  double NAIGBACC1;
1150  double PAIGBACC1;
1151  double LBIGBACC;
1152  double NBIGBACC;
1153  double PBIGBACC;
1154  double LCIGBACC;
1155  double NCIGBACC;
1156  double PCIGBACC;
1157  double LNIGBACC;
1158  double NNIGBACC;
1159  double PNIGBACC;
1160  double LAIGC;
1161  double NAIGC;
1162  double PAIGC;
1163  double LAIGC1;
1164  double NAIGC1;
1165  double PAIGC1;
1166  double LBIGC;
1167  double NBIGC;
1168  double PBIGC;
1169  double LCIGC;
1170  double NCIGC;
1171  double PCIGC;
1172  double LPIGCD;
1173  double NPIGCD;
1174  double PPIGCD;
1175  double LAIGS;
1176  double NAIGS;
1177  double PAIGS;
1178  double LAIGS1;
1179  double NAIGS1;
1180  double PAIGS1;
1181  double LBIGS;
1182  double NBIGS;
1183  double PBIGS;
1184  double LCIGS;
1185  double NCIGS;
1186  double PCIGS;
1187  double LAIGD;
1188  double NAIGD;
1189  double PAIGD;
1190  double LAIGD1;
1191  double NAIGD1;
1192  double PAIGD1;
1193  double LBIGD;
1194  double NBIGD;
1195  double PBIGD;
1196  double LCIGD;
1197  double NCIGD;
1198  double PCIGD;
1199  double LNTOX;
1200  double NNTOX;
1201  double PNTOX;
1202  double LPOXEDGE;
1203  double NPOXEDGE;
1204  double PPOXEDGE;
1205  double LAGISL;
1206  double NAGISL;
1207  double PAGISL;
1208  double LBGISL;
1209  double NBGISL;
1210  double PBGISL;
1211  double LCGISL;
1212  double NCGISL;
1213  double PCGISL;
1214  double LEGISL;
1215  double NEGISL;
1216  double PEGISL;
1217  double LPGISL;
1218  double NPGISL;
1219  double PPGISL;
1220  double LAGIDL;
1221  double NAGIDL;
1222  double PAGIDL;
1223  double LBGIDL;
1224  double NBGIDL;
1225  double PBGIDL;
1226  double LCGIDL;
1227  double NCGIDL;
1228  double PCGIDL;
1229  double LEGIDL;
1230  double NEGIDL;
1231  double PEGIDL;
1232  double LPGIDL;
1233  double NPGIDL;
1234  double PPGIDL;
1235  double LALPHA0;
1236  double NALPHA0;
1237  double PALPHA0;
1238  double LALPHA1;
1239  double NALPHA1;
1240  double PALPHA1;
1241  double LALPHAII0;
1242  double NALPHAII0;
1243  double PALPHAII0;
1244  double LALPHAII1;
1245  double NALPHAII1;
1246  double PALPHAII1;
1247  double LBETA0;
1248  double NBETA0;
1249  double PBETA0;
1250  double LBETAII0;
1251  double NBETAII0;
1252  double PBETAII0;
1253  double LBETAII1;
1254  double NBETAII1;
1255  double PBETAII1;
1256  double LBETAII2;
1257  double NBETAII2;
1258  double PBETAII2;
1259  double LESATII;
1260  double NESATII;
1261  double PESATII;
1262  double LLII;
1263  double NLII;
1264  double PLII;
1265  double LSII0;
1266  double NSII0;
1267  double PSII0;
1268  double LSII1;
1269  double NSII1;
1270  double PSII1;
1271  double LSII2;
1272  double NSII2;
1273  double PSII2;
1274  double LSIID;
1275  double NSIID;
1276  double PSIID;
1277  double LCFS;
1278  double NCFS;
1279  double PCFS;
1280  double LCFD;
1281  double NCFD;
1282  double PCFD;
1283  double LCOVS;
1284  double NCOVS;
1285  double PCOVS;
1286  double LCOVD;
1287  double NCOVD;
1288  double PCOVD;
1289  double LCGSL;
1290  double NCGSL;
1291  double PCGSL;
1292  double LCGDL;
1293  double NCGDL;
1294  double PCGDL;
1295  double LCKAPPAS;
1296  double NCKAPPAS;
1297  double PCKAPPAS;
1298  double LCKAPPAD;
1299  double NCKAPPAD;
1300  double PCKAPPAD;
1301  double LCGBL;
1302  double NCGBL;
1303  double PCGBL;
1304  double LCKAPPAB;
1305  double NCKAPPAB;
1306  double PCKAPPAB;
1307  double LNTGEN;
1308  double NNTGEN;
1309  double PNTGEN;
1310  double LAIGEN;
1311  double NAIGEN;
1312  double PAIGEN;
1313  double LBIGEN;
1314  double NBIGEN;
1315  double PBIGEN;
1316  double LXRCRG1;
1317  double NXRCRG1;
1318  double PXRCRG1;
1319  double LXRCRG2;
1320  double NXRCRG2;
1321  double PXRCRG2;
1322  double LINTNOI;
1323  double LUTE;
1324  double NUTE;
1325  double PUTE;
1326  double LUTL;
1327  double NUTL;
1328  double PUTL;
1329  double LEMOBT;
1330  double NEMOBT;
1331  double PEMOBT;
1332  double LUA1;
1333  double NUA1;
1334  double PUA1;
1335  double LUC1;
1336  double NUC1;
1337  double PUC1;
1338  double LUD1;
1339  double NUD1;
1340  double PUD1;
1341  double LUCSTE;
1342  double NUCSTE;
1343  double PUCSTE;
1344  double LPTWGT;
1345  double NPTWGT;
1346  double PPTWGT;
1347  double LAT;
1348  double NAT;
1349  double PAT;
1350  double LSTTHETASAT;
1351  double NSTTHETASAT;
1352  double PSTTHETASAT;
1353  double LPRT;
1354  double NPRT;
1355  double PPRT;
1356  double LKT1;
1357  double NKT1;
1358  double PKT1;
1359  double LTSS;
1360  double NTSS;
1361  double PTSS;
1362  double LIIT;
1363  double NIIT;
1364  double PIIT;
1365  double LTII;
1366  double NTII;
1367  double PTII;
1368  double LTGIDL;
1369  double NTGIDL;
1370  double PTGIDL;
1371  double LIGT;
1372  double NIGT;
1373  double PIGT;
1374  // Variables of global_model scope
1375  // end verilog model variables=====
1376 };
1377 
1378 void registerDevice();
1379 
1380 } // namespace ADMSbsimcmg
1381 } // namespace Device
1382 } // namespace Xyce
1383 #endif //Xyce_N_DEV_ADMSbsimcmg_h