kusti8 / gmIdNeoKit

Gm Id Kit with GUI to Work with Matlab Data file similar to Prof. Boris Murmann's gm/ID Starter Kit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

gmIdNeoKit

Gm Id Kit with GUI to Work with Matlab Data file similar to Prof. Boris Murmann’s gm/ID Starter Kit (https://web.stanford.edu/~murmann/gmid). GmIdGUI_Demo I would like to thank Prof. Murmann for giving permission to use his work.

Usage

Overall Description

There are two parts in this Gm Id Kit : matlab part for data generation, and python gui for mos sizing and optimization

Matlab Data Generation

The matlab data generation part is created based on Prof. Boris Murmann’s gm/ID Starter Kit. Please read the README in Prof. Murmann’s starter kit before you use the modified kit. There are several changes to make the MATLAB data generated work better with the GUI.

  1. More data saved in the configuration file such as ‘GMOVERID’ and ‘FUG’
  2. Change of the matlab file formet to flatten the struct of mos transistors and store in proper version

In order to work with the GUI, the name of the data saved by the spectre_run script should be in the following format : techCode_deviceName_cornerCode.mat

  1. techCode : code name for the technology
  2. deviceName : start with ‘n’ or ‘p’ to indicate the type of the mos transistors
  3. cornerCode : only the following five corner would be automated recognized ‘tt’, ‘ff’, ‘ss’, ‘fs’, and ‘sf’
  4. ’-’ : symbol used to split the matlab file

Python GUI Usage

Open a command line and type in ‘python runGmIdSizing.py’ and you will start the GUI

Load the Data and Set the Gate Length

  1. Hit ‘Sel’ button and choose the folder with the mat files
  2. Pick the desired .mat file and hit ‘Set’ button to set the device and corner
  3. Pick ‘Ldes’ - desired gate length for plot & data readout, ‘Lref’ - the reference gate length for plot, and ‘Lchk’ - the gate length for the mos transitor checking
    • ‘Lref’ and ‘Ldes’ also set the range for the gate length in the ‘Opt’ function
  4. Hit ‘Ldes’ & ‘Lref’ & ‘Lchk’ to finish the setting of the corresponding gate length
  5. Hit ‘Plot’ to plot the curves
    • Only ‘Lref’ and ‘Ldes’ are needed for plotting

Plot Readout

There are four tabs included to show plots that might help GmId design : Vstar, Id, Vgs, GmId The other two tabs (OptOp & OptW) would show the calculation results in the Opt Tab of Mos Transistor Sizing

  • In those three tabs, automatic readout function is enabled so that you can move the mouse around in Fig1 while different information for the mos transistor information is listed at the corresponding operation point
  • You can change the design corner with the ‘Des Corner’ combobox if the data sets for different corners are stored in the folder
  • You can use checkboxes on the top of the plots to change of the visibilities of the responding curves

Mos Transistor Checking

I included there different sizing methods : Syn, Cal, Opt. In order to use the Syn & Cal function, you need to set the gate length for checking mos operation point by pick the desired gate length and hit ‘Lchk’. Further, you could set the bias of the transistor by editing the ‘Vds’ and ‘Vbs’. Specially for mos sizing, you could specify the multiplier and number of fingers by changing ‘Mult’ and ‘Finger’ so that the width of finger is calculated besides the total width of the transistor. $Wtot=m× nf × Wfinger$

Syn : Check the VGS for Certain GmOverId(Vstar) and Calculate the Width of the Transistor for the Specific GM/Id

Cal : Check the GmOverId and ID for certain VGS and Gate Width

Opt : Optmize the MOS transistor across ‘Ldes’ and ‘Lref’

Oppt
  • Calculate the VGS across different gate L with one of the three limitations of Vstar, Ft, and SelfGain(Av)
  • Set the desired limitation by hitting one of the three green checkboxes
  • Optimization results are plotted in the ‘OptOp’ tab on the left side of the GUI
Size
  • Size : Calculate the Width of the transistor under the OptVgs limitation and one of the two limitations of Gm or Area with the VGS as calculated earlier in ‘Oppt’
  • Set the desired limitation by hitting one of the three green checkboxes
  • Optimization results are plotted in the ‘OptW’ tab on the left side of the GUI

Warning

  1. The Generation of the Curve may be slow especially for the optimization function
  2. The code has only been tested with python 3.6.8 in macOs Mojave 10.14.6
  3. You would need PyQt5, pyqtgraph, h5py, scipy, numpy to run the GUI

Limitations

Accuracy Limitation

  1. Assumption : $ID \propto W$
    • Clearly this assumption would not hold if the calculated gate width is far from the gate width used to extract the data
  2. Interpolation Error
    • The interpolation in the GUI is implemented with interpn & CubisSpline from scipy.interpolate.
    • As long as the intial step in the simulation for the matlab data generation are fine enough, the average error from the interpolation should be around 1%.

Noise

  1. Flicker noise corner frequency $f_c$ is not included
  2. Noise parameters $V_n$ and $I_n$ are not calculated and updated based on the actual sizing of the MOS transistor

About

Gm Id Kit with GUI to Work with Matlab Data file similar to Prof. Boris Murmann's gm/ID Starter Kit

License:GNU General Public License v3.0


Languages

Language:Python 83.5%Language:MATLAB 16.5%