Add examples for the IHP Open Source PDK
This commit is contained in:
parent
d881158a41
commit
64bf572264
|
|
@ -0,0 +1,75 @@
|
|||
NAND-2 Ring Oscillator IHP Open PDK
|
||||
|
||||
.lib "$PDK_ROOT/$PDK/libs.tech/ngspice/models/cornerMOSlv.lib" mos_tt
|
||||
|
||||
.subckt nand2 a b vdd vss z
|
||||
xm01 vdd a z vdd sg13_lv_pmos l=0.15u w=0.96u as=0.20405p ad=0.20405p ps=2.07u pd=2.07u
|
||||
xm02 vss a sig3 vss sg13_lv_nmos l=0.15u w=0.82u as=0.1749p ad=0.1749p ps=1.85u pd=1.85u
|
||||
xm03 z b vdd vdd sg13_lv_pmos l=0.15u w=0.96u as=0.20405p ad=0.20405p ps=2.07u pd=2.07u
|
||||
xm04 sig3 b z vss sg13_lv_nmos l=0.15u w=0.82u as=0.1749p ad=0.1749p ps=1.85u pd=1.85u
|
||||
c4 a vss 0.549f
|
||||
c5 b vss 0.578f
|
||||
c1 z vss 0.609f
|
||||
.ends
|
||||
|
||||
XNAND1 1 1 vd vs 2 nand2
|
||||
XNAND2 2 2 vd vs 3 nand2
|
||||
XNAND3 3 3 vd vs 4 nand2
|
||||
XNAND4 4 4 vd vs 5 nand2
|
||||
XNAND5 5 5 vd vs 6 nand2
|
||||
XNAND6 6 6 vd vs 7 nand2
|
||||
XNAND7 7 7 vd vs 8 nand2
|
||||
XNAND8 8 8 vd vs 9 nand2
|
||||
XNAND9 9 9 vd vs 10 nand2
|
||||
XNAND10 10 10 vd vs 11 nand2
|
||||
XNAND11 11 11 vd vs 12 nand2
|
||||
XNAND12 12 12 vd vs 13 nand2
|
||||
XNAND13 13 13 vd vs 14 nand2
|
||||
XNAND14 14 14 vd vs 15 nand2
|
||||
XNAND15 15 15 vd vs 16 nand2
|
||||
XNAND16 16 16 vd vs 17 nand2
|
||||
XNAND17 17 17 vd vs 18 nand2
|
||||
XNAND18 18 18 vd vs 19 nand2
|
||||
XNAND19 19 19 vd vs 1 nand2
|
||||
|
||||
XNAND20 1 1 vd 0 out nand2
|
||||
|
||||
Vdd vd 0 1.5
|
||||
Vss vs 0 0
|
||||
|
||||
.option noinit
|
||||
|
||||
.tran 10p 80n uic
|
||||
|
||||
.control
|
||||
pre_osdi ../lib/ngspice/psp103_nqs.osdi
|
||||
pre_osdi ../lib/ngspice/psp103.osdi
|
||||
set temp=0
|
||||
option klu
|
||||
run
|
||||
rusage
|
||||
set xbrushwidth=3
|
||||
plot i(Vss) ylimit 0 500u xlimit 50n 60n
|
||||
plot out xlimit 50n 60n
|
||||
meas tran tdiff TRIG V(out) val=0.7 rise=5 TARG v(out) val=0.7 rise=15
|
||||
let freq=10/tdiff
|
||||
print freq
|
||||
linearize out
|
||||
fft out
|
||||
plot mag(out) xlimit 300Meg 2300Meg
|
||||
meas sp fmax MAX_AT out from=1e8 to=1e9
|
||||
echo
|
||||
echo
|
||||
set temp=120
|
||||
run
|
||||
plot out xlimit 50n 60n
|
||||
meas tran tdiff TRIG V(out) val=0.7 rise=5 TARG v(out) val=0.7 rise=15
|
||||
let freq=10/tdiff
|
||||
print freq
|
||||
linearize out
|
||||
fft out
|
||||
plot mag(out) xlimit 300Meg 2300Meg
|
||||
meas sp fmax MAX_AT out from=1e8 to=1e9
|
||||
.endc
|
||||
|
||||
.end
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
H. Vogt, 30.06.2026
|
||||
|
||||
|
||||
Install IHP PDK from github at https://github.com/IHP-GmbH/IHP-Open-PDK
|
||||
Set the environmental variables PDK_ROOT and PDK, e.g.
|
||||
|
||||
PDK_ROOT D:\Spice_general\IHP-Open-PDK
|
||||
PDK ihp-sg13g2
|
||||
|
||||
Have the OpenVAF-compiled models for MOS ready: psp103.osdi, psp103_nqs.osdi.
|
||||
|
||||
in .spiceinit, add the following:
|
||||
|
||||
set ngbehavior=hsa
|
||||
option KLU
|
||||
|
||||
Run the examples.
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,45 @@
|
|||
*** NMOS and PMOS transistors PSP103.6 IHP Open PDK (Id-Vgs, Vbs) (Id-Vds, Vgs) (Id-Vgs, T) ***
|
||||
|
||||
xm02 2 1 3 4 sg13_lv_nmos l=0.15u w=0.495u as=0.131175p ad=0.131175p ps=1.52u pd=1.52u
|
||||
vgsn 1 0 3.5
|
||||
vdsn 2 0 0.1
|
||||
vssn 3 0 0
|
||||
vbsn 4 0 0
|
||||
|
||||
xm01 22 11 33 44 sg13_lv_pmos l=0.15u w=0.99u as=0.26235p ad=0.26235p ps=2.51u pd=2.51u
|
||||
vgsp 11 0 -3.5
|
||||
vdsp 22 0 -0.1
|
||||
vssp 33 0 0
|
||||
vbsp 44 0 0
|
||||
|
||||
* IHP Open PDK
|
||||
.lib "D:\Spice_general\IHP-Open-PDK\ihp-sg13g2\libs.tech\ngspice\models\cornerMOSlv.lib" mos_tt
|
||||
|
||||
.control
|
||||
pre_osdi ../lib/ngspice/psp103.osdi
|
||||
|
||||
set xgridwidth=2
|
||||
set xbrushwidth=3
|
||||
|
||||
* NMOS
|
||||
dc vgsn 0 1.5 0.05 vbsn 0 -1.5 -0.3
|
||||
plot vssn#branch ylabel 'Id vs. Vgs, Vbs 0 ... -1.5'
|
||||
plot abs(vssn#branch) ylog ylabel 'Id vs. Vgs, Vbs 0 ... -1.5'
|
||||
dc vdsn 0 1.6 0.01 vgsn 0 1.6 0.2
|
||||
plot vssn#branch ylabel 'Id vs. Vds, Vgs 0 ... 1.6'
|
||||
dc vgsn 0 1.5 0.05 temp -40 160 40
|
||||
plot vssn#branch ylabel 'Id vs. Vds, Temp. -40 ... 160'
|
||||
plot abs(vssn#branch) ylog ylabel 'Id vs. Vds, Temp. -40 ... 160'
|
||||
|
||||
* PMOS
|
||||
dc vgsp 0 -1.5 -0.05 vbsp 0 1.5 0.3
|
||||
plot vssp#branch ylabel 'Id vs. Vgs, Vbs 0 ... 1.5'
|
||||
plot abs(vssp#branch) ylog ylabel 'Id vs. Vgs, Vbs 0 ... 1.5'
|
||||
dc vdsp 0 -1.6 -0.01 vgsp 0 -1.6 -0.2
|
||||
plot vssp#branch ylabel 'Id vs. Vds, Vgs 0 ... -1.6'
|
||||
dc vgsp 0 -1.5 -0.05 temp -40 160 40
|
||||
plot vssp#branch ylabel 'Id vs. Vds, Temp. -40 ... 160'
|
||||
plot abs(vssp#branch) ylog ylabel 'Id vs. Vds, Temp. -40 ... 160'
|
||||
.endc
|
||||
|
||||
.end
|
||||
Loading…
Reference in New Issue