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 : Tue, 11 Mar 2014 10:54:42
39 //
40 // Revision Information:
41 // ---------------------
42 //
43 // Revision Number: $Revision: 1.21.2.3 $
44 //
45 // Revision Date : $Date: 2014/03/11 17:21:52 $
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 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,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(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 
459  {
460  return instanceContainer;
461  }
462 
464  {
465  return instanceContainer;
466  }
467 
468 private:
469  std::vector<Instance*> instanceContainer;
470 
471 private:
472 
473  // This one is for the annoying bogus "XyceADMSInstTemp" parameter
474  // that we need so we can set it from the device manager when there's no
475  // "TEMP" model parameter to use
476  double admsModTemp;
477  // Begin verilog Model Variables
478  // Model Parameters
479  double L;
480  double D;
481  double TFIN;
482  double FPITCH;
483  int NF;
484  double NFIN;
485  int NGCON;
486  double ASEO;
487  double ADEO;
488  double PSEO;
489  double PDEO;
490  double ASEJ;
491  double ADEJ;
492  double PSEJ;
493  double PDEJ;
494  double COVS;
495  double COVD;
496  double CGSP;
497  double CGDP;
498  double CDSP;
499  double NRS;
500  double NRD;
501  double LRSD;
502  double XL;
503  double DTEMP;
504  double DELVTRAND;
505  double U0MULT;
506  double IDS0MULT;
507  int DEVTYPE;
508  int BULKMOD;
509  int COREMOD;
510  int GEOMOD;
511  int CGEO1SW;
512  int RDSMOD;
513  int ASYMMOD;
514  int IGCMOD;
515  int IGBMOD;
516  int GIDLMOD;
517  int IIMOD;
518  int NQSMOD;
519  int SHMOD;
520  int RGATEMOD;
521  int RGEOMOD;
522  int CGEOMOD;
523  int CAPMOD;
524  double LINT;
525  double LL;
526  double LLN;
527  double DLC;
528  double DLCACC;
529  double DLBIN;
530  double LLC;
531  double EOT;
532  double TOXP;
533  double EOTBOX;
534  double HFIN;
535  double FECH;
536  double DELTAW;
537  double FECHCV;
538  double DELTAWCV;
539  double NBODY;
540  double NBODYN1;
541  double NBODYN2;
542  double NSD;
543  double PHIG;
544  double PHIGL;
545  double PHIGN1;
546  double PHIGN2;
547  double EPSROX;
548  double EPSRSUB;
549  double EASUB;
550  double NI0SUB;
551  double BG0SUB;
552  double NC0SUB;
553  double NGATE;
554  double Imin;
555  double CIT;
556  double CDSC;
557  double CDSCN1;
558  double CDSCN2;
559  double CDSCD;
560  double CDSCDN1;
561  double CDSCDN2;
562  double CDSCDR;
563  double CDSCDRN1;
564  double CDSCDRN2;
565  double DVT0;
566  double DVT1;
567  double DVT1SS;
568  double PHIN;
569  double ETA0;
570  double ETA0N1;
571  double ETA0N2;
572  double TETA0;
573  double ETA0R;
574  double TETA0R;
575  double DSUB;
576  double DVTP0;
577  double DVTP1;
578  double K1RSCE;
579  double LPE0;
580  double DVTSHIFT;
581  double K0;
582  double K01;
583  double K0SI;
584  double K0SI1;
585  double K1SI;
586  double K1SI1;
587  double PHIBE;
588  double K1;
589  double K11;
590  double K1SAT;
591  double K1SAT1;
592  double QMFACTOR;
593  double QMTCENIV;
594  double QMTCENCV;
595  double QMTCENCVA;
596  double AQMTCEN;
597  double BQMTCEN;
598  double ETAQM;
599  double QM0;
600  double PQM;
601  double QM0ACC;
602  double PQMACC;
603  double VSAT;
604  double VSATN1;
605  double VSATN2;
606  double AVSAT;
607  double BVSAT;
608  double VSAT1;
609  double VSAT1N1;
610  double VSAT1N2;
611  double VSAT1R;
612  double VSAT1RN1;
613  double VSAT1RN2;
614  double AVSAT1;
615  double BVSAT1;
616  double DELTAVSAT;
617  double PSAT;
618  double APSAT;
619  double BPSAT;
620  double KSATIV;
621  double VSATCV;
622  double AVSATCV;
623  double BVSATCV;
624  double DELTAVSATCV;
625  double PSATCV;
626  double APSATCV;
627  double BPSATCV;
628  double MEXP;
629  double AMEXP;
630  double BMEXP;
631  double MEXPR;
632  double AMEXPR;
633  double BMEXPR;
634  double PTWG;
635  double PTWGR;
636  double APTWG;
637  double BPTWG;
638  double AT;
639  double TMEXP;
640  double TMEXPR;
641  double PTWGT;
642  double U0;
643  double U0N1;
644  double U0N2;
645  double ETAMOB;
646  double UP;
647  double LPA;
648  double UA;
649  double AUA;
650  double BUA;
651  double UC;
652  double EU;
653  double AEU;
654  double BEU;
655  double UD;
656  double AUD;
657  double BUD;
658  double UCS;
659  double UTE;
660  double UTL;
661  double EMOBT;
662  double UA1;
663  double UC1;
664  double UD1;
665  double UCSTE;
666  double CHARGEWF;
667  double RDSWMIN;
668  double RDSW;
669  double ARDSW;
670  double BRDSW;
671  double RSWMIN;
672  double RSW;
673  double ARSW;
674  double BRSW;
675  double RDWMIN;
676  double RDW;
677  double ARDW;
678  double BRDW;
679  double RSDR;
680  double RSDRR;
681  double RDDR;
682  double RDDRR;
683  double PRSDR;
684  double PRDDR;
685  double PRWGS;
686  double PRWGD;
687  double WR;
688  double PRT;
689  double TRSDR;
690  double TRDDR;
691  double PDIBL1;
692  double PDIBL1R;
693  double PDIBL2;
694  double DROUT;
695  double PVAG;
696  double PCLM;
697  double APCLM;
698  double BPCLM;
699  double PCLMG;
700  double PCLMCV;
701  double A1;
702  double A11;
703  double A2;
704  double A21;
705  double RGEXT;
706  double RGFIN;
707  double RSHS;
708  double RSHD;
709  double HEPI;
710  double TSILI;
711  double RHOC;
712  double RHORSD;
713  double CRATIO;
714  double DELTAPRSD;
715  int SDTERM;
716  double LSP;
717  double EPSRSP;
718  double TGATE;
719  double TMASK;
720  double ASILIEND;
721  double ARSDEND;
722  double PRSDEND;
723  double NSDE;
724  double RGEOA;
725  double RGEOB;
726  double RGEOC;
727  double RGEOD;
728  double RGEOE;
729  double CGEOA;
730  double CGEOB;
731  double CGEOC;
732  double CGEOD;
733  double CGEOE;
734  double AIGBINV;
735  double AIGBINV1;
736  double BIGBINV;
737  double CIGBINV;
738  double EIGBINV;
739  double NIGBINV;
740  double AIGBACC;
741  double AIGBACC1;
742  double BIGBACC;
743  double CIGBACC;
744  double NIGBACC;
745  double AIGC;
746  double AIGC1;
747  double BIGC;
748  double CIGC;
749  double PIGCD;
750  double DLCIGS;
751  double AIGS;
752  double AIGS1;
753  double BIGS;
754  double CIGS;
755  double DLCIGD;
756  double AIGD;
757  double AIGD1;
758  double BIGD;
759  double CIGD;
760  double TOXREF;
761  double TOXG;
762  double NTOX;
763  double POXEDGE;
764  double AGISL;
765  double BGISL;
766  double CGISL;
767  double EGISL;
768  double PGISL;
769  double AGIDL;
770  double BGIDL;
771  double CGIDL;
772  double EGIDL;
773  double PGIDL;
774  double ALPHA0;
775  double ALPHA01;
776  double ALPHA1;
777  double ALPHA11;
778  double BETA0;
779  double ALPHAII0;
780  double ALPHAII01;
781  double ALPHAII1;
782  double ALPHAII11;
783  double BETAII0;
784  double BETAII1;
785  double BETAII2;
786  double ESATII;
787  double LII;
788  double SII0;
789  double SII1;
790  double SII2;
791  double SIID;
792  double EOTACC;
793  double DELVFBACC;
794  double CFS;
795  double CFD;
796  double CGSO;
797  double CGDO;
798  double CGSL;
799  double CGDL;
800  double CKAPPAS;
801  double CKAPPAD;
802  double CGBO;
803  double CGBN;
804  double CGBL;
805  double CKAPPAB;
806  double CSDESW;
807  double CJS;
808  double CJD;
809  double CJSWS;
810  double CJSWD;
811  double CJSWGS;
812  double CJSWGD;
813  double PBS;
814  double PBD;
815  double PBSWS;
816  double PBSWD;
817  double PBSWGS;
818  double PBSWGD;
819  double MJS;
820  double MJD;
821  double MJSWS;
822  double MJSWD;
823  double MJSWGS;
824  double MJSWGD;
825  double SJS;
826  double SJD;
827  double SJSWS;
828  double SJSWD;
829  double SJSWGS;
830  double SJSWGD;
831  double MJS2;
832  double MJD2;
833  double MJSWS2;
834  double MJSWD2;
835  double MJSWGS2;
836  double MJSWGD2;
837  double JSS;
838  double JSD;
839  double JSWS;
840  double JSWD;
841  double JSWGS;
842  double JSWGD;
843  double NJS;
844  double NJD;
845  double IJTHSFWD;
846  double IJTHDFWD;
847  double IJTHSREV;
848  double IJTHDREV;
849  double BVS;
850  double BVD;
851  double XJBVS;
852  double XJBVD;
853  double JTSS;
854  double JTSD;
855  double JTSSWS;
856  double JTSSWD;
857  double JTSSWGS;
858  double JTSSWGD;
859  double JTWEFF;
860  double NJTS;
861  double NJTSD;
862  double NJTSSW;
863  double NJTSSWD;
864  double NJTSSWG;
865  double NJTSSWGD;
866  double VTSS;
867  double VTSD;
868  double VTSSWS;
869  double VTSSWD;
870  double VTSSWGS;
871  double VTSSWGD;
872  double LINTIGEN;
873  double NTGEN;
874  double AIGEN;
875  double BIGEN;
876  double XRCRG1;
877  double XRCRG2;
878  int NSEG;
879  double EF;
880  double EM;
881  double NOIA;
882  double NOIB;
883  double NOIC;
884  double NTNOI;
885  double TNOM;
886  double TBGASUB;
887  double TBGBSUB;
888  double KT1;
889  double KT1L;
890  double TSS;
891  double IIT;
892  double TII;
893  double TGIDL;
894  double IGT;
895  double TCJ;
896  double TCJSW;
897  double TCJSWG;
898  double TPB;
899  double TPBSW;
900  double TPBSWG;
901  double XTIS;
902  double XTID;
903  double XTSS;
904  double XTSD;
905  double XTSSWS;
906  double XTSSWD;
907  double XTSSWGS;
908  double XTSSWGD;
909  double TNJTS;
910  double TNJTSD;
911  double TNJTSSW;
912  double TNJTSSWD;
913  double TNJTSSWG;
914  double TNJTSSWGD;
915  double RTH0;
916  double CTH0;
917  double WTH0;
918  double LNBODY;
919  double NNBODY;
920  double PNBODY;
921  double LPHIG;
922  double NPHIG;
923  double PPHIG;
924  double LNGATE;
925  double NNGATE;
926  double PNGATE;
927  double LCIT;
928  double NCIT;
929  double PCIT;
930  double LCDSC;
931  double NCDSC;
932  double PCDSC;
933  double LCDSCD;
934  double NCDSCD;
935  double PCDSCD;
936  double LCDSCDR;
937  double NCDSCDR;
938  double PCDSCDR;
939  double LDVT0;
940  double NDVT0;
941  double PDVT0;
942  double LDVT1;
943  double NDVT1;
944  double PDVT1;
945  double LDVT1SS;
946  double NDVT1SS;
947  double PDVT1SS;
948  double LPHIN;
949  double NPHIN;
950  double PPHIN;
951  double LETA0;
952  double NETA0;
953  double PETA0;
954  double LETA0R;
955  double NETA0R;
956  double PETA0R;
957  double LDSUB;
958  double NDSUB;
959  double PDSUB;
960  double LK1RSCE;
961  double NK1RSCE;
962  double PK1RSCE;
963  double LLPE0;
964  double NLPE0;
965  double PLPE0;
966  double LDVTSHIFT;
967  double NDVTSHIFT;
968  double PDVTSHIFT;
969  double LPHIBE;
970  double NPHIBE;
971  double PPHIBE;
972  double LK0;
973  double NK0;
974  double PK0;
975  double LK01;
976  double NK01;
977  double PK01;
978  double LK0SI;
979  double NK0SI;
980  double PK0SI;
981  double LK0SI1;
982  double NK0SI1;
983  double PK0SI1;
984  double LK1SI;
985  double NK1SI;
986  double PK1SI;
987  double LK1SI1;
988  double NK1SI1;
989  double PK1SI1;
990  double LK1;
991  double NK1;
992  double PK1;
993  double LK11;
994  double NK11;
995  double PK11;
996  double LK1SAT;
997  double NK1SAT;
998  double PK1SAT;
999  double LK1SAT1;
1000  double NK1SAT1;
1001  double PK1SAT1;
1002  double LDVTB;
1003  double NDVTB;
1004  double PDVTB;
1005  double LLPEB;
1006  double NLPEB;
1007  double PLPEB;
1008  double LQMFACTOR;
1009  double NQMFACTOR;
1010  double PQMFACTOR;
1011  double LQMTCENIV;
1012  double NQMTCENIV;
1013  double PQMTCENIV;
1014  double LQMTCENCV;
1015  double NQMTCENCV;
1016  double PQMTCENCV;
1017  double LQMTCENCVA;
1018  double NQMTCENCVA;
1019  double PQMTCENCVA;
1020  double LVSAT;
1021  double NVSAT;
1022  double PVSAT;
1023  double LVSAT1;
1024  double NVSAT1;
1025  double PVSAT1;
1026  double LVSAT1R;
1027  double NVSAT1R;
1028  double PVSAT1R;
1029  double LPSAT;
1030  double NPSAT;
1031  double PPSAT;
1032  double LDELTAVSAT;
1033  double NDELTAVSAT;
1034  double PDELTAVSAT;
1035  double LKSATIV;
1036  double NKSATIV;
1037  double PKSATIV;
1038  double LVSATCV;
1039  double NVSATCV;
1040  double PVSATCV;
1041  double LPSATCV;
1042  double NPSATCV;
1043  double PPSATCV;
1047  double LMEXP;
1048  double NMEXP;
1049  double PMEXP;
1050  double LMEXPR;
1051  double NMEXPR;
1052  double PMEXPR;
1053  double LPTWG;
1054  double NPTWG;
1055  double PPTWG;
1056  double LPTWGR;
1057  double NPTWGR;
1058  double PPTWGR;
1059  double LU0;
1060  double NU0;
1061  double PU0;
1062  double LETAMOB;
1063  double NETAMOB;
1064  double PETAMOB;
1065  double LUP;
1066  double NUP;
1067  double PUP;
1068  double LUA;
1069  double NUA;
1070  double PUA;
1071  double LUC;
1072  double NUC;
1073  double PUC;
1074  double LEU;
1075  double NEU;
1076  double PEU;
1077  double LUD;
1078  double NUD;
1079  double PUD;
1080  double LUCS;
1081  double NUCS;
1082  double PUCS;
1083  double LPCLM;
1084  double NPCLM;
1085  double PPCLM;
1086  double LPCLMG;
1087  double NPCLMG;
1088  double PPCLMG;
1089  double LPCLMCV;
1090  double NPCLMCV;
1091  double PPCLMCV;
1092  double LA1;
1093  double NA1;
1094  double PA1;
1095  double LA11;
1096  double NA11;
1097  double PA11;
1098  double LA2;
1099  double NA2;
1100  double PA2;
1101  double LA21;
1102  double NA21;
1103  double PA21;
1104  double LRDSW;
1105  double NRDSW;
1106  double PRDSW;
1107  double LRSW;
1108  double NRSW;
1109  double PRSW;
1110  double LRDW;
1111  double NRDW;
1112  double PRDW;
1113  double LPRWGS;
1114  double NPRWGS;
1115  double PPRWGS;
1116  double LPRWGD;
1117  double NPRWGD;
1118  double PPRWGD;
1119  double LWR;
1120  double NWR;
1121  double PWR;
1122  double LPDIBL1;
1123  double NPDIBL1;
1124  double PPDIBL1;
1125  double LPDIBL1R;
1126  double NPDIBL1R;
1127  double PPDIBL1R;
1128  double LPDIBL2;
1129  double NPDIBL2;
1130  double PPDIBL2;
1131  double LDROUT;
1132  double NDROUT;
1133  double PDROUT;
1134  double LPVAG;
1135  double NPVAG;
1136  double PPVAG;
1137  double LAIGBINV;
1138  double NAIGBINV;
1139  double PAIGBINV;
1140  double LAIGBINV1;
1141  double NAIGBINV1;
1142  double PAIGBINV1;
1143  double LBIGBINV;
1144  double NBIGBINV;
1145  double PBIGBINV;
1146  double LCIGBINV;
1147  double NCIGBINV;
1148  double PCIGBINV;
1149  double LEIGBINV;
1150  double NEIGBINV;
1151  double PEIGBINV;
1152  double LNIGBINV;
1153  double NNIGBINV;
1154  double PNIGBINV;
1155  double LAIGBACC;
1156  double NAIGBACC;
1157  double PAIGBACC;
1158  double LAIGBACC1;
1159  double NAIGBACC1;
1160  double PAIGBACC1;
1161  double LBIGBACC;
1162  double NBIGBACC;
1163  double PBIGBACC;
1164  double LCIGBACC;
1165  double NCIGBACC;
1166  double PCIGBACC;
1167  double LNIGBACC;
1168  double NNIGBACC;
1169  double PNIGBACC;
1170  double LAIGC;
1171  double NAIGC;
1172  double PAIGC;
1173  double LAIGC1;
1174  double NAIGC1;
1175  double PAIGC1;
1176  double LBIGC;
1177  double NBIGC;
1178  double PBIGC;
1179  double LCIGC;
1180  double NCIGC;
1181  double PCIGC;
1182  double LPIGCD;
1183  double NPIGCD;
1184  double PPIGCD;
1185  double LAIGS;
1186  double NAIGS;
1187  double PAIGS;
1188  double LAIGS1;
1189  double NAIGS1;
1190  double PAIGS1;
1191  double LBIGS;
1192  double NBIGS;
1193  double PBIGS;
1194  double LCIGS;
1195  double NCIGS;
1196  double PCIGS;
1197  double LAIGD;
1198  double NAIGD;
1199  double PAIGD;
1200  double LAIGD1;
1201  double NAIGD1;
1202  double PAIGD1;
1203  double LBIGD;
1204  double NBIGD;
1205  double PBIGD;
1206  double LCIGD;
1207  double NCIGD;
1208  double PCIGD;
1209  double LNTOX;
1210  double NNTOX;
1211  double PNTOX;
1212  double LPOXEDGE;
1213  double NPOXEDGE;
1214  double PPOXEDGE;
1215  double LAGISL;
1216  double NAGISL;
1217  double PAGISL;
1218  double LBGISL;
1219  double NBGISL;
1220  double PBGISL;
1221  double LCGISL;
1222  double NCGISL;
1223  double PCGISL;
1224  double LEGISL;
1225  double NEGISL;
1226  double PEGISL;
1227  double LPGISL;
1228  double NPGISL;
1229  double PPGISL;
1230  double LAGIDL;
1231  double NAGIDL;
1232  double PAGIDL;
1233  double LBGIDL;
1234  double NBGIDL;
1235  double PBGIDL;
1236  double LCGIDL;
1237  double NCGIDL;
1238  double PCGIDL;
1239  double LEGIDL;
1240  double NEGIDL;
1241  double PEGIDL;
1242  double LPGIDL;
1243  double NPGIDL;
1244  double PPGIDL;
1245  double LALPHA0;
1246  double NALPHA0;
1247  double PALPHA0;
1248  double LALPHA1;
1249  double NALPHA1;
1250  double PALPHA1;
1251  double LALPHAII0;
1252  double NALPHAII0;
1253  double PALPHAII0;
1254  double LALPHAII1;
1255  double NALPHAII1;
1256  double PALPHAII1;
1257  double LBETA0;
1258  double NBETA0;
1259  double PBETA0;
1260  double LBETAII0;
1261  double NBETAII0;
1262  double PBETAII0;
1263  double LBETAII1;
1264  double NBETAII1;
1265  double PBETAII1;
1266  double LBETAII2;
1267  double NBETAII2;
1268  double PBETAII2;
1269  double LESATII;
1270  double NESATII;
1271  double PESATII;
1272  double LLII;
1273  double NLII;
1274  double PLII;
1275  double LSII0;
1276  double NSII0;
1277  double PSII0;
1278  double LSII1;
1279  double NSII1;
1280  double PSII1;
1281  double LSII2;
1282  double NSII2;
1283  double PSII2;
1284  double LSIID;
1285  double NSIID;
1286  double PSIID;
1287  double LCFS;
1288  double NCFS;
1289  double PCFS;
1290  double LCFD;
1291  double NCFD;
1292  double PCFD;
1293  double LCOVS;
1294  double NCOVS;
1295  double PCOVS;
1296  double LCOVD;
1297  double NCOVD;
1298  double PCOVD;
1299  double LCGSL;
1300  double NCGSL;
1301  double PCGSL;
1302  double LCGDL;
1303  double NCGDL;
1304  double PCGDL;
1305  double LCKAPPAS;
1306  double NCKAPPAS;
1307  double PCKAPPAS;
1308  double LCKAPPAD;
1309  double NCKAPPAD;
1310  double PCKAPPAD;
1311  double LCGBL;
1312  double NCGBL;
1313  double PCGBL;
1314  double LCKAPPAB;
1315  double NCKAPPAB;
1316  double PCKAPPAB;
1317  double LNTGEN;
1318  double NNTGEN;
1319  double PNTGEN;
1320  double LAIGEN;
1321  double NAIGEN;
1322  double PAIGEN;
1323  double LBIGEN;
1324  double NBIGEN;
1325  double PBIGEN;
1326  double LXRCRG1;
1327  double NXRCRG1;
1328  double PXRCRG1;
1329  double LXRCRG2;
1330  double NXRCRG2;
1331  double PXRCRG2;
1332  double LINTNOI;
1333  double LUTE;
1334  double NUTE;
1335  double PUTE;
1336  double LUTL;
1337  double NUTL;
1338  double PUTL;
1339  double LEMOBT;
1340  double NEMOBT;
1341  double PEMOBT;
1342  double LUA1;
1343  double NUA1;
1344  double PUA1;
1345  double LUC1;
1346  double NUC1;
1347  double PUC1;
1348  double LUD1;
1349  double NUD1;
1350  double PUD1;
1351  double LUCSTE;
1352  double NUCSTE;
1353  double PUCSTE;
1354  double LPTWGT;
1355  double NPTWGT;
1356  double PPTWGT;
1357  double LAT;
1358  double NAT;
1359  double PAT;
1360  double LSTTHETASAT;
1361  double NSTTHETASAT;
1362  double PSTTHETASAT;
1363  double LPRT;
1364  double NPRT;
1365  double PPRT;
1366  double LKT1;
1367  double NKT1;
1368  double PKT1;
1369  double LTSS;
1370  double NTSS;
1371  double PTSS;
1372  double LIIT;
1373  double NIIT;
1374  double PIIT;
1375  double LTII;
1376  double NTII;
1377  double PTII;
1378  double LTGIDL;
1379  double NTGIDL;
1380  double PTGIDL;
1381  double LIGT;
1382  double NIGT;
1383  double PIGT;
1384  // Variables of global_model scope
1385  // end verilog model variables=====
1386 };
1387 
1388 void registerDevice();
1389 
1390 } // namespace ADMSbsimcmg
1391 } // namespace Device
1392 } // namespace Xyce
1393 #endif //Xyce_N_DEV_ADMSbsimcmg_h