Another glance on the MOS transistor equations

A few posts ago, I created the first part of an EKV-model discussion and we had a somewhat earlier post on MOS modeling. I haven’t compiled part two yet, but thought we could quickly revisit the Schichman-Hodges model and just look at the formulae again, and get a feeling for parameters and relationships. Also revisiting a unified expression for the current in “all” operating regions of the transistor.


For hand-calculations of MOS transistors we still, kind-of, use the Schichman-Hodges model from 1968 for the three regions (cut-off, linear, and saturation):

I_D = 0
I_D = \frac{\mu_0 \cdot C_{ox} } { 2 } \cdot \frac{W}{L} \cdot \left( 2 \left( V_{gs} - V_{th} \right) - V_{ds}^2 \right)
I_D = \frac{\mu_0 \cdot C_{ox} } { 2 } \cdot \frac{W}{L} \cdot \left( V_{gs} - V_{th} \right)^2

where the parameters are effective carrier mobility, oxide capacitance per area, effective width and length of channel, gate-source voltage, drain-source voltage, and threshold voltage. Of course there should be large approximation signs, due to many reasons as discussed before. The transistor operates in different regions dependent on the voltages across it. See table further down below.

Also, the channel length modulation, lambda, is not included in the formula either.

Anyhow, I’ve always thought the formulas look a bit skewed and not that unified, arguably since they originally aimed at distinct operating regions. The drive and supply voltages were considerably higher than the threshold voltage and the chance/risk of the transistors sliding over between the different regions was very small.

There are suggestions on ways to glue the three regions together and use some indeces back and forth. We can for example introduce the channel length modulation for all three equations. The channel length modulation is (for hand calculations) assumed to be very small, and in the linear region, the inherent low drain-source voltage drop will further diminish its impact.

I_D = 0 \cdot \left(1 + \lambda \cdot \left( V_{ds} - V_{ds, sat} \right) \right)
I_D = \frac{\mu_0 \cdot C_{ox} } { 2 } \cdot \frac{W}{L} \cdot \left( 2 \left( V_{gs} - V_{th} \right)\cdot V_{ds} - V_{ds}^2 \right) \cdot \left(1 + \lambda \cdot \left( V_{ds} - V_{ds, sat} \right) \right)
I_D = \frac{\mu_0 \cdot C_{ox} } { 2 } \cdot \frac{W}{L} \cdot \left( V_{gs} - V_{th} \right)^2 \cdot \left(1 + \lambda \cdot \left( V_{ds} - V_{ds, sat} \right) \right)

where I use the drain-source saturation voltage, which Sedra omitted.

V_{ds, sat} = V_{gs} - V_{th}

Let us consider the linear region first and do some manipulations

\alpha = \frac{\mu_0 \cdot C_{ox} } { 2 } \cdot \frac{W}{L}
M = \left(1 + \lambda \cdot \left( V_{ds} - V_{ds, sat} \right)\right)

I_D = \alpha  \cdot \left( 2 \left( V_{gs} - V_{th} \right)\cdot V_{ds} - V_{ds}^2 \right) \cdot M  =
= \alpha  \cdot \left(\left( V_{gs} - V_{th} \right)^2 - \left( V_{gs} - V_{th} \right)^2 +  2 \left( V_{gs} - V_{th} \right)\cdot V_{ds} - V_{ds}^2 \right) \cdot M  =
= \alpha  \cdot \left(\left( V_{gs} - V_{th} \right)^2 - \left(  V_{gs} - V_{th} - V_{ds} \right)^2  \right) \cdot M  =
= \alpha  \cdot \left(\left( V_{gs} - V_{th} \right)^2 - \left(  V_{gd} - V_{th}  \right)^2  \right) \cdot M  =
= \alpha  \cdot \left(\left(\underbrace{ V_{gs} - V_{th}}_{V_{gs, eff}} \right)^2 - \left( \underbrace{ V_{gd} - V_{th} }_{V_{gd, eff}} \right)^2  \right) \cdot M  =
= \alpha  \cdot \left( V_{gs, eff}^2 -  V_{gd, eff}^2  \right) \cdot M

And actually, we also see that

V_{ds} - V_{ds, sat} = V_{ds} - (V_{gs} - V_{th}) = -V_{gd} + V_{th} = - V_{gd,eff}

which compiles the equations as

I_D = \frac{\mu_0 \cdot C_{ox} } { 2 } \cdot \frac{W}{L} \cdot 0 \cdot \left(1 - \lambda \cdot  V_{gd, eff} \right)
I_D = \frac{\mu_0 \cdot C_{ox} } { 2 } \cdot \frac{W}{L} \cdot \left( V_{gs, eff}^2 -  V_{gd, eff}^2   \right) \cdot \left(1 - \lambda \cdot  V_{gd, eff} \right)
I_D = \frac{\mu_0 \cdot C_{ox} } { 2 } \cdot \frac{W}{L} \cdot   V_{gs, eff}^2    \cdot \left(1 - \lambda \cdot  V_{gd, eff} \right)

and one could now introduce a couple of binary parameters such that all regions could be covered in one go.

I_D = \frac{\mu_0 \cdot C_{ox} } { 2 } \cdot \frac{W}{L} \cdot r_{on} \cdot \left( V_{gs, eff}^2 - r_{lin} \cdot  V_{gd, eff}^2   \right) \cdot \left(1 - \lambda \cdot  V_{gd, eff} \right)

and the table compiles the choices. Now we have only two voltages to consider, and the different regions, and the physical parameters, of course.

Region r_{on} r_{lin} Conditions
Cut-off 0 V_{gs,eff} < 0
Linear 1 1 V_{gs,eff} > 0, V_{gs,eff} > V_{ds,eff}
Saturation 1 0 V_{gs,eff} > 0, V_{gs,eff} < V_{ds,eff}


Notably omitted

As always, the brasklapp, reservation is that the formulas above are far from accurate today, and we have not consider for example bulk effects and many, many more effects. However, the target was just to give another glance on the hand calculations and if there are ways to write them just a bit more intuitively…

Hackman’s philosophy at Linköping University

Just as a side dish, without talking to the source (Mr. Peter Hackman) itself, I have chosen to translate a few laws, principles, lemma, theorem, lemmas, or what have you, what ever lingua mathematicians use.

Mr. Peter Hackman was with the Mathematics department at Linköping University – from the origins (yes, we’re not that old) – more or less – until his retirement in 2006. He was famous for the books in various types of algebra, for example the “Book with the cow on”. I had the pleasure to have Mr. Hackman in two courses, Linear Algebra and Linear Algebra, second course. One could argue what use I have had of that knowledge in my current life as an electronics engineer, but nevertheless, the maths is quite fun and nice to work with. In-between, the rotation of the parrot was, and this needs confirmation, done by a fellow Ölänning of mine.

Anyhow, Mr. Hackman, had quite a set of different opinions and on his home page he has published a few ideas on “pedagoja”, a combination of the words pedagogics and “goja”, where the latter implies talking jibberisch. (The latter could also refer to parrot in slang-Swedish.) So, the laws, lemmas, theorem, what have you, are the following (and I am taking them from the source directly and try to translate to the best of my knowledge):

  1. “Hackmans Enkelhetsprincip”, “Krångla inte till saker i onödan”.
    Hackman’s principle of simplicity. Don’t make things too complicated if you do not have to.
  2. “Hackmans Nyttoprincip”. “Gör inte en massa dumheter i onödan”
    Hackman’s principle of utility. Don’t do a lot of silly things if you do not have to.
  3. “Hackmans Kausalitetsprincip”. “Det är så för det blir så”.
    Hackman’s principle of causality. It is that way, since it is that way. or [edit, kiitos Janne] That is a fact because the result will be so.
  4. “Hackmans Osäkerhetsprincip”. “Goda föreläsningar drivs av osäkerheten om deras slutliga innehåll”.
    Hackman’s principle of uncertainty. Good lectures are driven by the uncertainty about their final contents.
  5. “Hackmans Paradox”. “Läroböcker ska vara kompletta, föreläsaren ska komplettera dem.”
    Hackman’s paradox. Course literature should be complete. The lecturer should complement them.
  6. “Hackmans genusprincip”. “Även kvinnor tjänar på att behandlas som individer”.
    Hackman’s principle of gender. Women too benefit from being treated as individuals.
  7. “Hackmans omvända kvadratlag”. “Professorers intellektuella briljans avtar med kvadraten på avståndet till den egna specialiteten”.
    Hackman’s inverse square law. [Edit, thanks Mikael]. The intellectual brilliance of professors is inversely proportional to the square of the distance from their own field of expertise.

All of these would apply to most fields of education and research. And I must say I support most of them. I guess it is worth with a follow-up post on this…

And once again, the disclaimer here is that this is work by Mr. Hackman, the quotes are from his public homepage, and I just replicate them with a translation into English. And I know that some of it is lost in translation and I might need some assistance to finalize them…

How do things stick?

The world’s strongest adhesive

Since I work with education, I want to know how to make things
stick. And stick for ever, sort of. What kind of tools and helps are
there out there?

My study has come this far. And I have only done a few experimental
results with most of them. I am listing the three strongest adhesive’s
known to man below. The weakest of the three super powers is mentioned

Number 3: “Conrad’s Super Gluer”

From Pippi Longstocking. There was a guy, Conrad, that travelled
around a sold “super glue that sticks when other glues come
unstuck”. I remember Pippi buying some of this and could walk in the
ceiling. (I think, actually cannot find the reference now, maybe I
don’t remember correctly, or the correct memory didn’t stick!)

Feed your hens a little Super Gluer and you’ll get unbreakable eggs,
you can’t beat that! Ha ha! A little joke there kids. Unbreakable eggs
nobody can beat that?”


Number 2: 3M’s Guinness World Record Adhesive

I will let the video speak for it self… They glue two metal rods together and lift a forklift weighing 8.1 tonnes, and then leave it hanging for more than an hour.

Number 1: The laptop charger cable

The laptop charger cable (alternatively the headphone cable) is simply the best adhesive known to man.

  • Leave the cable on a table, gently pull the cable: Vases, China, jewellery, …, anything will come with it.
  • Leave it on the floor and pull, it will magically form a knot and get a firm grip of the chair’s leg.
  • Let your children play around in the house and they will get attached to the cable and voila Laptop down on the floor.


Yes! I know about the MacIntosh charger cable… Still though, it does not help you with respect to ear pieces…

Calculating the check sum for the microcontroller ROM

Simple, but yet, I wanted to quickly generate the check sum in my hex file to be loaded into a PIC microcontroller. The file format is Intel Hex and I will not spend any time explaining the details. Read the Wiki page and you will understand.

Essentially, we have a string from the hex file in which we should change a number.


into e.g.


How do we quickly get the check sum out of that. Of course, we can just do the summation on a piece of paper and get the result. There are plenty of C hacks, there are plenty of Python hacks, but in general too much is hidden in the noise floor on the internet. Of course, we can also use the internal hex editor of the compiler tool, and there are some more options available out there.

However, this is my contribution to the noise floor. Here I did a spread sheet (and I have to admit I saved it in XLSX – gasp!) for a potentially wider audience. So download the spread sheet. Copy the string from the emacs buffer (or vi, ththth – read more about the editor war… nerdy, nerdy. ),

Allright, now I will at least find it next time I’m searching for it…