1
\$\begingroup\$

I'm trying to understand what this model exactly specifies.For example, is k1 the same as k' used in equations, and is u0 the same as mu_0?

* Customized PTM 65nm NMOS

.model  nmos  nmos  level = 54

+version = 4.0    binunit = 1    paramchk= 1    mobmod  = 0
+capmod  = 2      igcmod  = 1    igbmod  = 1    geomod  = 1
+diomod  = 1      rdsmod  = 0    rbodymod= 1    rgatemod= 1
+permod  = 1      acnqsmod= 0    trnqsmod= 0

* parameters related to the technology node
+tnom = 27    epsrox = 3.9
+eta0 = 0.0058    nfactor = 1.9    wint = 5e-09
+cgso = 1.5e-10    cgdo = 1.5e-10    xl = -3e-08

* parameters customized by the user
+toxe = 1.85e-09    toxp = 1.2e-09    toxm = 1.85e-09    toxref = 1.85e-09
+dtox = 6.5e-10    lint = 5.25e-09
+vth0 = 0.429    k1 = 0.497    u0 = 0.04861    vsat = 124340
+rdsw = 165    ndep = 2.6e+18    xj = 1.96e-08

* secondary parameters
+ll      = 0            wl      = 0            lln     = 1            wln     = 1          
+lw      = 0            ww      = 0            lwn     = 1            wwn     = 1          
+lwl     = 0            wwl     = 0            xpart   = 0               
+k2      = 0.01         k3      = 0          
+k3b     = 0            w0      = 2.5e-006     dvt0    = 1            dvt1    = 2       
+dvt2    = -0.032       dvt0w   = 0            dvt1w   = 0            dvt2w   = 0          
+dsub    = 0.1          minv    = 0.05         voffl   = 0            dvtp0   = 1.0e-009     
+dvtp1   = 0.1          lpe0    = 0            lpeb    = 0               
+ngate   = 2e+020       nsd     = 2e+020       phin    = 0          
+cdsc    = 0.000        cdscb   = 0            cdscd   = 0            cit     = 0          
+voff    = -0.13        etab    = 0          
+vfb     = -0.55        ua      = 6e-010       ub      = 1.2e-018     
+uc      = 0            a0      = 1.0          ags     = 1e-020     
+a1      = 0            a2      = 1.0          b0      = 0            b1      = 0          
+keta    = 0.04         dwg     = 0            dwb     = 0            pclm    = 0.04       
+pdiblc1 = 0.001        pdiblc2 = 0.001        pdiblcb = -0.005       drout   = 0.5        
+pvag    = 1e-020       delta   = 0.01         pscbe1  = 8.14e+008    pscbe2  = 1e-007     
+fprout  = 0.2          pdits   = 0.08         pditsd  = 0.23         pditsl  = 2.3e+006   
+rsh     = 5            rsw     = 85           rdw     = 85        
+rdswmin = 0            rdwmin  = 0            rswmin  = 0            prwg    = 0          
+prwb    = 6.8e-011     wr      = 1            alpha0  = 0.074        alpha1  = 0.005      
+beta0   = 30           agidl   = 0.0002       bgidl   = 2.1e+009     cgidl   = 0.0002     
+egidl   = 0.8          

+aigbacc = 0.012        bigbacc = 0.0028       cigbacc = 0.002     
+nigbacc = 1            aigbinv = 0.014        bigbinv = 0.004        cigbinv = 0.004      
+eigbinv = 1.1          nigbinv = 3            aigc    = 0.012        bigc    = 0.0028     
+cigc    = 0.002        aigsd   = 0.012        bigsd   = 0.0028       cigsd   = 0.002     
+nigc    = 1            poxedge = 1            pigcd   = 1            ntox    = 1          

+xrcrg1  = 12           xrcrg2  = 5          
+cgbo    = 2.56e-011    cgdl    = 2.653e-10     
+cgsl    = 2.653e-10    ckappas = 0.03         ckappad = 0.03         acde    = 1          
+moin    = 15           noff    = 0.9          voffcv  = 0.02       

+kt1     = -0.11        kt1l    = 0            kt2     = 0.022        ute     = -1.5       
+ua1     = 4.31e-009    ub1     = 7.61e-018    uc1     = -5.6e-011    prt     = 0          
+at      = 33000      

+fnoimod = 1            tnoimod = 0          

+jss     = 0.0001       jsws    = 1e-011       jswgs   = 1e-010       njs     = 1          
+ijthsfwd= 0.01         ijthsrev= 0.001        bvs     = 10           xjbvs   = 1          
+jsd     = 0.0001       jswd    = 1e-011       jswgd   = 1e-010       njd     = 1          
+ijthdfwd= 0.01         ijthdrev= 0.001        bvd     = 10           xjbvd   = 1          
+pbs     = 1            cjs     = 0.0005       mjs     = 0.5          pbsws   = 1          
+cjsws   = 5e-010       mjsws   = 0.33         pbswgs  = 1            cjswgs  = 3e-010     
+mjswgs  = 0.33         pbd     = 1            cjd     = 0.0005       mjd     = 0.5        
+pbswd   = 1            cjswd   = 5e-010       mjswd   = 0.33         pbswgd  = 1          
+cjswgd  = 5e-010       mjswgd  = 0.33         tpb     = 0.005        tcj     = 0.001      
+tpbsw   = 0.005        tcjsw   = 0.001        tpbswg  = 0.005        tcjswg  = 0.001      
+xtis    = 3            xtid    = 3          

+dmcg    = 0e-006       dmci    = 0e-006       dmdg    = 0e-006       dmcgt   = 0e-007     
+dwj     = 0.0e-008     xgw     = 0e-007       xgl     = 0e-008     

+rshg    = 0.4          gbmin   = 1e-010       rbpb    = 5            rbpd    = 15         
+rbps    = 15           rbdb    = 15           rbsb    = 15           ngcon   = 1          

Also, if they are what I think they are, can we use these to calculate the gain at a particular bias?(Do these values change?).

Problem:

I am supposed to design and simulate a two-stage opamp with miller compensation using this and a similar pmos model.Analytically, I can fix some values for the various parameters ( gm,go,etc.) but how can I change them in my model for the simulation?I experimented with W,L values, but couldn't meet the specifications. enter image description here

\$\endgroup\$
5
  • 4
    \$\begingroup\$ To get a better understanding, you will need to dive into the model that is used. It says ".model nmos nmos level 54" so just search for "mos model level 54", first link: km2000.us/franklinduan/articles/hspice/hspice_2001_2-173.html it describes all parameters of the BSIM level 54 model. Follow some of the other links from the search to see what the used equations are. Realize that such models are much, much more complex than the standard quadratic model: Id = Kp(Vgs -Vt)^2 than we use for hand calculations. \$\endgroup\$ Dec 11, 2021 at 21:09
  • 1
    \$\begingroup\$ This looks like a good manual that explains how MOS models work: www2.ece.rochester.edu/courses/ECE222/hspice/hspice_mosfet.pdf If you manage do understand that document then you will appreciate the complexity that goes into these models and that MOSFET modelling is a specialty of its own. \$\endgroup\$ Dec 11, 2021 at 21:13
  • 1
    \$\begingroup\$ k' pretty much goes out the door after LEVEL 1 or 2. Those are very basic models. Luckily, you can try to extract an approximation (it will not be constant). I struggled with that for a long time. \$\endgroup\$
    – pat
    Dec 11, 2021 at 21:26
  • \$\begingroup\$ This link will be of interest to you. \$\endgroup\$
    – Syed
    Dec 12, 2021 at 5:39
  • 1
    \$\begingroup\$ I don't think your struggle is so much with the models, but you are struggling with designing a basic two stage amplifier. You could randomly assign w/l values and at some point it would be working (assuming vin and ibias are reasonable, say VDD/2 and > 100uA). Understanding how to translate the W/L into all those working variables (small signal parameters and bias points) is part of the art of design. Take some time to build simple models (like two device common source) and work your way up to the op amp. It will pay off in big ways if you ever design for a career. \$\endgroup\$
    – pat
    Dec 12, 2021 at 22:39

3 Answers 3

2
\$\begingroup\$

The BSIM model parameters don't have a direct dependency on physical properties of the FET. There are also multiple interactions between parameters and curve fit and smoothing adjustments.

If you want to align to a mental simple MOS model, create a new transistor with a simple SPICE model; simulate both simultaneously and adjust the new model to match the characteristics in order of your importance. This might be VTH; u0, ROUT etc.

\$\endgroup\$
1
  • \$\begingroup\$ I am supposed to design a two-stage opamp with miller compensation using this and a similar pmos model.So If there is no direct dependency on physical properties, how could I try to relate whatever I have done analytically and change parameters to simulate results?I could only change the W,L values which definitely changed the output, but it does not satisfy the specifications. \$\endgroup\$
    – 0-0
    Dec 12, 2021 at 6:55
2
\$\begingroup\$

Yes, U0 is the surface mobility and is typically notated as \$\mu_0\$. I think the k' you are referring to is what they call KP in the simpler LEVEL=1 (Shichman-Hodges model). It is the transconductance parameter.

The .model definition you listed is calling out LEVEL=54, which implies a BSIM4 architecture. These higher level models are much more sophisticated and are typically defined using geometrical/physical parameters instead of simplified electrical parameters, such as KP. You can either use equations to map certain geometrical parameters to get your desired electrical parameter, or use the higher level model in a test simulation and proceed as if you were extracting the electrical parameter.

The following answer works through examples of both methods for a BSIM3 model. Just keep in mind that KP is non-constant in the higher-level models, so the mapping down to the lower-level parameter comes with accuracy caveats.

Opamp design using LTspice


If attempting the "mapping via equations" method for BSIM4, the changes I would make would be to use TOXE as \$t_{ox}\$, and EPSROX as \$\varepsilon_r\$ . One extra annoying thing to keep in mind is that BSIM4'a TOXE and U0 are expressed in meters while BSIM3's TOX and U0 use centimeters. So you have to compensate and use the right units for \$\varepsilon_0\$. With all that in mind, then you can calculate KP as:

$$ \text{KP} = \mu_0 \cdot \frac{\varepsilon_r \varepsilon_0}{t_{ox}} = 0.04861 \frac{\text{m}^2}{\text{V} \cdot \text{s}} \cdot \frac{3.9 \cdot (8.85 \times 10^{-12} \text{F/m})}{(1.85 \times 10^{-9} \text{m})} \approx 906.095 \times 10^{-6} \frac{\text{A}}{\text{V}^2} $$


One extra thing to note here. I attempted to run the extraction simulation and noticed that the model doesn't behave properly within LTspice (I get a negative \$I_d\$). I don't know if this is an LTspice specific problem, but I had to set both igcmod and igbmod to zero to get a correct curve. This could be one reason why you can't solve your specific opamp design problem.

\$\endgroup\$
1
\$\begingroup\$

how could I try to relate whatever I have done analytically and change parameters to simulate results?

It is quite doable, although time consuming and difficult. The normative document is BSIM4v4.8.0 Manual Copyright © 2013 UC Berkeley.

The relevant part is Chapter 5: Drain Current Model, page 31 (39/185). I've never read this doc thoroughly, only taking from there the formulas, and have just detected some mess in the text, as when deriving the formula (5.23) for the drain current for the triode region the authors are writing Substituting (6.17) in (6.16), we get when in fact they substitute (5.21) into (5.20). Also, I doubt that

The first region is the triode (or linear) region in which carrier velocity is not saturated.

(the first phrase in page 40).

Still, the formulas (5.23) and (5.49) are used in BSIM4.8.0 and they work.

When analyzing the diff pair stage, you use parameters λ and β. In BSIMv4, the output resistance is not a constant in the saturation mode, and you can write down \$r_{out} = {1 \over {λI_D}}\$ only approximately, see a plot in Figure 5.1 General behavior of MOSFET output resistance of the BSIM4v4.8.0 Manual document. So you develop your own approximation on top of the BSIM4v4.8.0 model, starting with reasonable estimations of transistor sizes and using the Level 1 (Schichman-Hodges) model equations, while deciding on the values of \$V_{th}\$ (and consequently \$V_{Dsat}\ = V_{gs}-V_{th}\$) of your transistors (and maybe mobility) that are best fitting the approximated I-V curves to the I_V curves calculated with the exact BSIM4v4.8.0 drain current formulas. The hardest part of your work is that the calculated transistor sizes may (and certainly would) differ from the starting values, and the Level 1 approximation for new sizes would give significantly different parameter values. To encourage you, notice that people use back-of-the-envelope calculations for transistor sizing, and use successful approximation technique, correcting the calculation results with the help of the SPICE simulation and alternating by-hand calculations with SPICE simulation runs. See, for example, the course notes CMOS Analog Circuits Simulations, Design Example in slide 27, Basic Amplifiers.

When browsing for useful references for my answer, I've found the article Towards an Improved Model for 65-nm CMOS at Cryogenic Temperatures. They used a similar technique of adjusting the temperature-dependent model parameters to extent the model validity up (down) to the liquid helium temperature. The article also lists the numerical values of the parameters (in the RT columns) that you can readily use for your back-of-the-envelope calculations, see TABLE 1, DEVICES AND TEMPERATURE-DEPENDENT PARAMETERS. Also, the plots of I-V curves show what you might expect to see in your analysis, if you have never plotted these curves before.

\$\endgroup\$
2
  • \$\begingroup\$ Yes, it makes sense. We could first try to first experiment a bit with the W/L values and bias sources and when we obtain the required output, we could try to extract a quadratic model for the mosfets around their bias and see whether the analytic solution, using this approximation gives similar values. \$\endgroup\$
    – 0-0
    Dec 14, 2021 at 12:43
  • \$\begingroup\$ So SPICE modeling, ideal for simulation, is hardly ever fit for design, and hand calculations (with the square law equation) involve tiresome, lengthy iterations... It's time to switch to the \$gm/I_D\$ design methodology! \$\endgroup\$
    – V.V.T
    Dec 16, 2021 at 13:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.