I use Cadence composer to draw schematic, Virtuoso to draw layout, spectre and spectremdl to run simulation.
Change the testbench in EE214 to spectre format, record the gmoverid, ids, etc ,and can easily get the waveform just like in the paper.
1)Edit "gmid_nmos_ee214.scs"
//NMOS gm/id simulation
simulator lang=spectre insensitiv=yes
//global parameters
global 0
//include model files
include "./tsmc011.scs" section=tt_33
include "./macro.scs"
//include netlist
xmn (d g 0 0) n2 w=10 l=0.5 m=1
//parameters
parameters pwrvgs=1.8
//stimulus
vd (d 0) vsource type=dc dc=1.65
vg (g 0) vsource type=dc dc=pwrvgs
//options
Setoption options scale=1u
SetTempoption options temp=25
//output option
sppSaveoptions options save=allpub
//Alter groups
Alter_tt altergroup {
include "./tsmc011.scs" section=tt_33
}
2)Edit "gmid_nmos_ee214.mdl"
alias measurement finddc {
run dc
export real ids, gm, gmoverid, vstar, vstar1, idsoverwl
ids=xmn.n:ids
idsoverwl=ids*0.5/10
gm=xmn.mn:gm
gmoverid=xmn.mn:gmoverid
vstar=2/gmoverid
vstar1=2*ids/gm
}
foreach pwrvgs from swp {start=0.01, stop=3.3, step=0.1){
run finddc
}
3)run "spectremdl -batch gmid_nmos_ee214.mdl -design gmid_nmos_ee214.scs"
4)open "wavescan&"
5)In the wavescan window,open "gmid_nmos_ee214.raw",
6)click "finddc_meas-meas_foreach",click "gmoverid", then click top-left "Y Vs Y for two signals", and then click "idsoverwl"
7)In the waveform showup, click x-axis, chosse "scaling--log", click "ok", and can easily get the waveform just like in the paper.
Attached is the testbench and waveform in ee214.