MOSFET Transistor Array CD4007 Parameters – Level 8 Spice Models with LTSpice Files

Level 8 MOSFET models for the PMOS and NMOS FETs in the CD4007 mosfet array chip courtesy of Dr Lynn Fuller of R.I.T.

  • LTSpice Schematic file – All the model parameters are included as spice directives on the schematic so this should be portable and run right out of the box on your machine.  
  • Plot Specification file – goes with the schematic file and plots the I-V characteristic of the PMOS FET and gm/Id which allows the specific current to be calculated

Research Links  RIT Model

Research Links

 

From Foty 1987: Device parameters for this version of the CD4007 are:

  • W = 190 pm
  •  L = 4.0 pm
  • tOx =1200 A
  • NA = 2.8 X 10^16 (boron).

From Foty 1989: Device parameters for this version of the CD4007 are: 

  • W = 495 pm
  • L = 6.35 pm
  • to = 120 nm
  • ND = 3.0 X lOI5 (phosphorus)

GnuPlot Summary and How to Plot Data From a CSV File

Used it a lot at UFSC.  These are my notes on the usage of GnuPlot with examples.

Research Links

 

You can download the file used in the example below and follow along: Processed_P1-Data.csv

Point Gnuplot to the correct directory to find the file full of data that you want to plot

The button with the folder icon and ChDir is what you want:

 

Set up GnuPlot to recognize comma as the field separator

set datafile separator "," 

This needs to match the field separator in your file.  My file has commas.  Watch out for excel files that export sometimes with only a CR and no LF character.  This will drive you crazy because it looks just fine when you look at the file with a text editor unless you are using something like NotePad++.  Then you will see it.  You need a right handed karate chopped n & r.  That would be \n\r.

 

Set the title of the plot

 

Setting up X axis to be log scale

Use the following command to select a log scale on X:

set logscale x 10

When you need to switch back out of this mode:

unset logscale x

It appears they do not have an explicit command for "linear" mode.

 

Setting up the X and Y tics

Example: 

     set xtics 0,.5,10
     set xtics add ("Pi" 3.14159)

This will automatically generate tic marks every 0.5 along x, but will also add an explicit labeled tic mark at pi

Xtics

Setting up the X and Y minor tics

set mxtics 2   # this divides the interval between major tics by 2 and thus you get 1 tic in between major tics

 

Setting up axis formatting

Example:

           set format y "%4.0s"    – this gives 4 integer with nothing after the decimal point

format specifiers

 

Plotting with continuous lines

with line

Example:

plot "Current-Voltage-Power.csv" using 1:3 with line lt-1 lw 3,"Current-Voltage-Power.csv" using 1:7 with line lt-1 lw 3 axes x1y2,"Current-Voltage-Power.csv" using 1:6 with line lt-1 lw 3  

Gnuplot demo scripts

 

Setting the range to avoid taking log(0) and getting an error

When you try to plot a Log(X) axis you will see the following error

   x range must be greater than 0 for log scale

If you have not already done so set your X range so it does not include zero with:    set xrange[1e-10:1e-4] 

or whatever you like for the first value just make it >0.

 

Plotting Log(X) axis values correctly   Without this statement your X axis is labeled:  00000 00000 00000 .00001 .00010 etc and what you want is shown below.

If you use a log scale you will probably also want to format the log axis value labeling.

set logscale x 10
set format x '10^{%L}'  #<- enhanced text.


​

 

At this point the plot function should probably start working

plot "Processed_P1-Data.csv" using 4:8

 

If you want more than one plot on the same graph

In order to plot multiple lines in a single plot, simply put them in a single plot command like

plot 'AAA' u 1:2, 'BBB' u 1:2

 

If you want lines instead of only data points use:

plot "Processed_P1-Data.csv" using 2:3 with lines

Setting line color: You need this when GNUPLOT uses yellow as it is hard to see

set style line 6 linecolor rgb "blue"   

How to turn off the dataset legend that takes up so much room in the plot area

unset key

D-Flip-Flop-Voltage-WaveForms

Set the plot size

set terminal wxt size 800,600 

Running a Script file

load "scriptname"

Plot Decimated data – 1 point for every X

  • Large grouped data plotting
  • Plotting data with GnuPlot – If you have a very, very large file with a lot of data points in it, it might be painfully slow to try to open the file in Excel in order to make a plot of a subset of the data. We have a 2.3GB file of XY points where we want to plot only a couple columns. In this case, gnuplot works really well.

 

MOSFET SubThreshold Slope Measurement Lab Using SPICE

MOSFET-Gm-Over-Id.7z Archive with this file included Run: Diode-Connected-FET-SubVt_Slope.asc   Diode Connected MOSFET The subthreshold slope is a feature of a FET's current–voltage characteristic. In the subthreshold region the drain current behaviour – though being controlled by the gate terminal – is similar to the exponentially increasing current of a forward biased diode. Read more…

Agilent ADS Advanced Design System 2011.05 Math Functions For Measurement Expressions and diff() function padded 0 or 1

I was trying to plot the transconductance of a FET and the first 2 derivatives of it using Agilent ADS.  Agilent has a diff() function that takes the nearest 2 points to compute the derivative of a data set.  The problem is when it reaches the end it runs out of data.

Syntax:  y = diff(data, pad)

pad = pad the differentiated data with an extra value    [0, 1]    integer    0    no

If pad is 1, then the differentiated data is padded with an extra value (last value of differentiated data) to make it the same length as the data to be differentiated. If 0 (default) then the length of the differentiated data is one less than the length of data to be differentiated

The problem is that the code has a bug in that it continues to differentiate till the last data point which means the first derivative's last value is always equal to 0 when padded.  That means the second derivative's last value shoots up to a large value because between the first derivatives next to last point and last point there is a sudden discontinuity.

I thought I had found a solution to this by turning off padding.  It indeed gets around the issue however if you need to do any OTHER math functions on your dataset then it appears you have to have full length derivative data. Otherwise it just refuses to plot the function.   My comprimise was to turn off padding for the first derivative and leave it on for the rest.  This gave me the "go to zero rapidly at the end of data" problem but at least it was contained enough in range to allow for good plots.

Research Links