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