Add examples for the IHP Open Source PDK

This commit is contained in:
Holger Vogt 2026-06-30 09:45:49 +02:00
parent d881158a41
commit 64bf572264
4 changed files with 89377 additions and 0 deletions

View File

@ -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

View File

@ -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

View File

@ -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