LC_oscillator
This commit is contained in:
parent
ecce5eea7c
commit
d7debe9730
|
|
@ -2,10 +2,19 @@
|
|||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"execution_count": 1,
|
||||
"id": "9f325daf-eb3b-4cf7-8ffe-b9b94e7f66ea",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/home/pedersen/.local/lib/python3.10/site-packages/matplotlib/projections/__init__.py:63: UserWarning: Unable to import Axes3D. This may be due to multiple versions of Matplotlib being installed (e.g. as a system package and as a pip package). As a result, the 3D projection is not available.\n",
|
||||
" warnings.warn(\"Unable to import Axes3D. This may be due to multiple versions of \"\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
|
|
@ -18,7 +27,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"execution_count": 2,
|
||||
"id": "b5b31aca-47bf-4461-8e50-16c20f03b337",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
|
|
@ -29,7 +38,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"execution_count": 3,
|
||||
"id": "743dc381-0d35-4aa9-847c-c42c80c17786",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
|
|
@ -40,7 +49,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"execution_count": 4,
|
||||
"id": "b27d5fca-3436-4df7-895f-f6a4bbd7a80d",
|
||||
"metadata": {
|
||||
"jupyter": {
|
||||
|
|
@ -243,7 +252,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"execution_count": 5,
|
||||
"id": "fc95a0ff-ba36-46ce-9fa1-64d6d2d7770f",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
|
|
@ -255,7 +264,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 19,
|
||||
"execution_count": 6,
|
||||
"id": "0cec9718-17e7-42bb-bbfb-732d1c90bcb2",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
|
|
@ -320,7 +329,7 @@
|
|||
" 'vds': 0.6}"
|
||||
]
|
||||
},
|
||||
"execution_count": 19,
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
|
|
@ -346,7 +355,7 @@
|
|||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "6135647378824854a249008cff2939aa",
|
||||
"model_id": "2f171d8e7a364596ae20d7ad33c9ab3e",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
|
|
@ -392,7 +401,7 @@
|
|||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "3de96606da1946dcb4e15f6b7e281eec",
|
||||
"model_id": "0f22b2c0652f4f15b90b79b2a8df5abc",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,123 +0,0 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 450 -435 450 -395 {
|
||||
lab=#net1}
|
||||
N 450 -435 560 -435 {
|
||||
lab=#net1}
|
||||
N 560 -365 620 -365 {
|
||||
lab=#net1}
|
||||
N 560 -435 560 -365 {
|
||||
lab=#net1}
|
||||
N 490 -365 560 -365 {
|
||||
lab=#net1}
|
||||
N 450 -495 450 -435 {
|
||||
lab=#net1}
|
||||
N 450 -525 660 -525 {
|
||||
lab=vdd}
|
||||
N 450 -575 450 -555 {
|
||||
lab=#net2}
|
||||
N 660 -575 660 -555 {
|
||||
lab=#net2}
|
||||
N 560 -575 660 -575 {
|
||||
lab=#net2}
|
||||
N 380 -525 410 -525 {
|
||||
lab=v+}
|
||||
N 700 -525 730 -525 {
|
||||
lab=v-}
|
||||
N 390 -625 520 -625 {
|
||||
lab=iout}
|
||||
N 170 -575 170 -555 {
|
||||
lab=iout}
|
||||
N 170 -575 220 -575 {
|
||||
lab=iout}
|
||||
N 220 -625 240 -625 {
|
||||
lab=iout}
|
||||
N 170 -595 170 -575 {
|
||||
lab=iout}
|
||||
N 220 -625 220 -575 {
|
||||
lab=iout}
|
||||
N 210 -625 220 -625 {
|
||||
lab=iout}
|
||||
N 660 -400 660 -395 {
|
||||
lab=vout}
|
||||
N 560 -595 560 -575 {
|
||||
lab=#net2}
|
||||
N 450 -575 560 -575 {
|
||||
lab=#net2}
|
||||
N 660 -495 660 -400 {
|
||||
lab=vout}
|
||||
N 660 -400 800 -400 {
|
||||
lab=vout}
|
||||
N 450 -305 660 -305 {
|
||||
lab=vss}
|
||||
N 170 -675 170 -625 {
|
||||
lab=vdd}
|
||||
N 560 -675 560 -625 {
|
||||
lab=vdd}
|
||||
N 170 -675 560 -675 {
|
||||
lab=vdd}
|
||||
N 450 -365 450 -305 {
|
||||
lab=vss}
|
||||
N 660 -365 660 -305 {
|
||||
lab=vss}
|
||||
C {sg13g2_pr/sg13_lv_nmos.sym} 640 -365 0 0 {name=M4
|
||||
l=6.24u
|
||||
w=3.09u
|
||||
ng=1
|
||||
m=1
|
||||
model=sg13_lv_nmos
|
||||
spiceprefix=X
|
||||
}
|
||||
C {sg13g2_pr/sg13_lv_nmos.sym} 470 -365 0 1 {name=M3
|
||||
l=6.24u
|
||||
w=3.09u
|
||||
ng=1
|
||||
m=1
|
||||
model=sg13_lv_nmos
|
||||
spiceprefix=X
|
||||
}
|
||||
C {sg13g2_pr/sg13_lv_pmos.sym} 430 -525 0 0 {name=M1
|
||||
l=5.46u
|
||||
w=2.75u
|
||||
ng=1
|
||||
m=1
|
||||
model=sg13_lv_pmos
|
||||
spiceprefix=X
|
||||
}
|
||||
C {sg13g2_pr/sg13_lv_pmos.sym} 540 -625 0 0 {name=M5
|
||||
l=9.98u
|
||||
w=66u
|
||||
ng=10
|
||||
m=1
|
||||
model=sg13_lv_pmos
|
||||
spiceprefix=X
|
||||
}
|
||||
C {iopin.sym} 730 -525 0 0 {name=p10 lab=v-}
|
||||
C {iopin.sym} 380 -525 0 1 {name=p11 lab=v+}
|
||||
C {iopin.sym} 560 -305 1 1 {name=p5 lab=vss}
|
||||
C {iopin.sym} 560 -675 1 1 {name=p1 lab=vdd}
|
||||
C {iopin.sym} 170 -555 0 1 {name=p3 lab=iout}
|
||||
C {iopin.sym} 800 -400 0 0 {name=p8 lab=vout}
|
||||
C {lab_pin.sym} 240 -625 0 1 {name=p7 sig_type=std_logic lab=iout}
|
||||
C {lab_pin.sym} 390 -625 0 0 {name=p4 sig_type=std_logic lab=iout}
|
||||
C {lab_pin.sym} 555 -525 3 0 {name=p2 sig_type=std_logic lab=vdd}
|
||||
C {sg13g2_pr/sg13_lv_pmos.sym} 190 -625 0 1 {name=M6
|
||||
l=9.98u
|
||||
w=66u
|
||||
ng=10
|
||||
m=1
|
||||
model=sg13_lv_pmos
|
||||
spiceprefix=X
|
||||
}
|
||||
C {sg13g2_pr/sg13_lv_pmos.sym} 680 -525 0 1 {name=M2
|
||||
l=5.46u
|
||||
w=2.75u
|
||||
ng=1
|
||||
m=1
|
||||
model=sg13_lv_pmos
|
||||
spiceprefix=X
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
v {xschem version=3.4.5 file_version=1.2
|
||||
}
|
||||
G {}
|
||||
K {type=subcircuit
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -130 -80 130 0 {}
|
||||
L 4 -130 80 130 0 {}
|
||||
L 4 -130 -80 -130 80 {}
|
||||
L 7 -15 -65 -15 -45 {}
|
||||
L 7 -90 65 -90 85 {}
|
||||
L 7 -150 -40 -130 -40 {}
|
||||
L 7 -150 45 -130 45 {}
|
||||
L 7 130 0 150 0 {}
|
||||
L 7 -15 45 -15 65 {}
|
||||
B 5 -17.5 -67.5 -12.5 -62.5 {name=vdd dir=inout}
|
||||
B 5 -92.5 82.5 -87.5 87.5 {name=iout dir=inout}
|
||||
B 5 -152.5 -42.5 -147.5 -37.5 {name=v+ dir=inout}
|
||||
B 5 -152.5 42.5 -147.5 47.5 {name=v- dir=inout}
|
||||
B 5 147.5 -2.5 152.5 2.5 {name=vout dir=inout}
|
||||
B 5 -17.5 62.5 -12.5 67.5 {name=vss dir=inout}
|
||||
T {@2stage_OTA} -76.5 -16 0 0 0.3 0.3 {}
|
||||
T {@name} 40 -52 0 0 0.2 0.2 {}
|
||||
T {vdd} -19 -40 3 1 0.2 0.2 {}
|
||||
T {iout} -86 60 1 1 0.2 0.2 {}
|
||||
T {v+} -125 -44 0 0 0.2 0.2 {}
|
||||
T {v-} -125 41 0 0 0.2 0.2 {}
|
||||
T {vout} 110 -9 0 1 0.2 0.2 {}
|
||||
T {vss} -11 40 1 1 0.2 0.2 {}
|
||||
|
|
@ -1,161 +0,0 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
B 2 685 -880 1485 -480 {flags=graph
|
||||
|
||||
|
||||
ypos1=0
|
||||
ypos2=2
|
||||
divy=5
|
||||
subdivy=4
|
||||
unity=1
|
||||
x1=0
|
||||
|
||||
divx=5
|
||||
subdivx=8
|
||||
xlabmag=1.0
|
||||
ylabmag=1.0
|
||||
|
||||
|
||||
dataset=-1
|
||||
unitx=1
|
||||
logx=1
|
||||
logy=0
|
||||
autoload=0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sim_type=ac
|
||||
|
||||
y2=0.029
|
||||
y1=-160
|
||||
color=4
|
||||
node=ph(vout)
|
||||
x2=7}
|
||||
B 2 680 -1295 1480 -895 {flags=graph
|
||||
y1=-23
|
||||
y2=32
|
||||
ypos1=0
|
||||
ypos2=2
|
||||
divy=5
|
||||
subdivy=1
|
||||
unity=1
|
||||
x1=0
|
||||
|
||||
divx=5
|
||||
subdivx=8
|
||||
xlabmag=1.0
|
||||
ylabmag=1.0
|
||||
dataset=-1
|
||||
unitx=1
|
||||
logx=1
|
||||
logy=0
|
||||
x2=7
|
||||
color=4
|
||||
node="vout / db20()"
|
||||
}
|
||||
N 775 -265 775 -235 {
|
||||
lab=vp}
|
||||
N 1010 -265 1010 -235 {
|
||||
lab=vdd}
|
||||
N 1010 -175 1010 -155 {
|
||||
lab=GND}
|
||||
N 885 -155 1010 -155 {
|
||||
lab=GND}
|
||||
N 345 -345 345 -325 {
|
||||
lab=GND}
|
||||
N 345 -490 345 -475 {
|
||||
lab=vdd}
|
||||
N 190 -450 210 -450 {
|
||||
lab=vp}
|
||||
N 190 -365 210 -365 {
|
||||
lab=vm}
|
||||
N 530 -350 530 -335 {
|
||||
lab=GND}
|
||||
N 330 -110 590 -110 {
|
||||
lab=vout}
|
||||
N 210 -110 275 -110 {
|
||||
lab=vm}
|
||||
N 210 -365 210 -110 {
|
||||
lab=vm}
|
||||
N 210 -50 210 -40 {
|
||||
lab=GND}
|
||||
N 885 -155 885 -135 {
|
||||
lab=GND}
|
||||
N 775 -155 885 -155 {
|
||||
lab=GND}
|
||||
N 775 -175 775 -155 {
|
||||
lab=GND}
|
||||
N 590 -410 620 -410 {
|
||||
lab=vout}
|
||||
N 590 -410 590 -110 {
|
||||
lab=vout}
|
||||
N 510 -410 590 -410 {
|
||||
lab=vout}
|
||||
N 270 -325 270 -290 {
|
||||
lab=#net1}
|
||||
N 270 -230 270 -215 {
|
||||
lab=GND}
|
||||
C {vsource.sym} 775 -205 0 0 {name=V1 value="DC 0.6 AC 1 0"
|
||||
}
|
||||
C {vsource.sym} 1010 -205 0 0 {name=VDD value="DC 1.2"}
|
||||
C {gnd.sym} 885 -135 0 0 {name=l1 lab=GND}
|
||||
C {gnd.sym} 345 -325 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 345 -490 0 0 {name=p1 sig_type=std_logic lab=vdd}
|
||||
C {lab_pin.sym} 1010 -265 0 0 {name=p2 sig_type=std_logic lab=vdd}
|
||||
C {lab_pin.sym} 775 -265 0 0 {name=p3 sig_type=std_logic lab=vp}
|
||||
C {lab_pin.sym} 190 -450 0 0 {name=p5 sig_type=std_logic lab=vp}
|
||||
C {lab_pin.sym} 190 -365 0 0 {name=p6 sig_type=std_logic lab=vm}
|
||||
C {isource.sym} 270 -260 0 0 {name=I0 value=2u}
|
||||
C {gnd.sym} 270 -215 0 0 {name=l3 lab=GND}
|
||||
C {capa.sym} 530 -380 0 0 {name=Cload
|
||||
m=1
|
||||
value=500f
|
||||
footprint=1206
|
||||
device="ceramic capacitor"}
|
||||
C {gnd.sym} 530 -335 0 0 {name=l5 lab=GND}
|
||||
C {iopin.sym} 620 -410 0 0 {name=p7 lab=vout}
|
||||
C {devices/code_shown.sym} -415 -290 0 0 {name=MODEL only_toplevel=false
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib cornerMOSlv.lib mos_tt
|
||||
"}
|
||||
C {devices/code_shown.sym} -435 -650 0 0 {name=NGSPICE only_toplevel=false
|
||||
value="
|
||||
.control
|
||||
op
|
||||
save all
|
||||
write tb_OTA_op.raw
|
||||
.endc
|
||||
|
||||
.control
|
||||
op
|
||||
ac dec 100 1 10e6
|
||||
save all
|
||||
let Av = db(v(vout))
|
||||
write output_file.raw
|
||||
.endc
|
||||
"}
|
||||
C {ind.sym} 305 -110 1 0 {name=L6
|
||||
m=1
|
||||
value=4G
|
||||
footprint=1206
|
||||
device=inductor}
|
||||
C {capa.sym} 210 -80 0 0 {name=C1
|
||||
m=1
|
||||
value=4G
|
||||
footprint=1206
|
||||
device="ceramic capacitor"}
|
||||
C {gnd.sym} 210 -40 0 0 {name=l7 lab=GND}
|
||||
C {launcher.sym} 420 -635 0 0 {name=h5
|
||||
descr="load waves"
|
||||
tclcommand="xschem raw_read $netlist_dir/output_file.raw ac"
|
||||
}
|
||||
C {two_stage_OTA.sym} 360 -410 0 0 {name=x1}
|
||||
|
|
@ -1,97 +0,0 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 725 -405 725 -375 {
|
||||
lab=vp}
|
||||
N 960 -405 960 -375 {
|
||||
lab=vdd}
|
||||
N 960 -315 960 -295 {
|
||||
lab=GND}
|
||||
N 835 -295 960 -295 {
|
||||
lab=GND}
|
||||
N 295 -485 295 -465 {
|
||||
lab=GND}
|
||||
N 295 -630 295 -615 {
|
||||
lab=vdd}
|
||||
N 140 -590 160 -590 {
|
||||
lab=vp}
|
||||
N 140 -505 160 -505 {
|
||||
lab=vout}
|
||||
N 480 -490 480 -475 {
|
||||
lab=GND}
|
||||
N 160 -505 160 -250 {
|
||||
lab=vout}
|
||||
N 835 -295 835 -275 {
|
||||
lab=GND}
|
||||
N 725 -295 835 -295 {
|
||||
lab=GND}
|
||||
N 725 -315 725 -295 {
|
||||
lab=GND}
|
||||
N 540 -550 570 -550 {
|
||||
lab=vout}
|
||||
N 540 -550 540 -250 {
|
||||
lab=vout}
|
||||
N 460 -550 540 -550 {
|
||||
lab=vout}
|
||||
N 220 -465 220 -430 {
|
||||
lab=#net1}
|
||||
N 220 -370 220 -355 {
|
||||
lab=GND}
|
||||
N 160 -250 540 -250 {
|
||||
lab=vout}
|
||||
C {vsource.sym} 725 -345 0 0 {name=V1 value="DC 0.6 AC 1 0"
|
||||
}
|
||||
C {vsource.sym} 960 -345 0 0 {name=VDD value="DC 1.2"}
|
||||
C {gnd.sym} 835 -275 0 0 {name=l1 lab=GND}
|
||||
C {gnd.sym} 295 -465 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 295 -630 0 0 {name=p1 sig_type=std_logic lab=vdd}
|
||||
C {lab_pin.sym} 960 -405 0 0 {name=p2 sig_type=std_logic lab=vdd}
|
||||
C {lab_pin.sym} 725 -405 0 0 {name=p3 sig_type=std_logic lab=vp}
|
||||
C {lab_pin.sym} 140 -590 0 0 {name=p5 sig_type=std_logic lab=vp}
|
||||
C {isource.sym} 220 -400 0 0 {name=I0 value=80u}
|
||||
C {gnd.sym} 220 -355 0 0 {name=l3 lab=GND}
|
||||
C {capa.sym} 480 -520 0 0 {name=Cload
|
||||
m=1
|
||||
value=500f
|
||||
footprint=1206
|
||||
device="ceramic capacitor"}
|
||||
C {gnd.sym} 480 -475 0 0 {name=l5 lab=GND}
|
||||
C {iopin.sym} 570 -550 0 0 {name=p7 lab=vout}
|
||||
C {devices/code_shown.sym} 95 -770 0 0 {name=MODEL only_toplevel=false
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib cornerCAP.lib cap_typ
|
||||
.lib cornerMOSlv.lib mos_tt_mismatch
|
||||
"}
|
||||
C {devices/code_shown.sym} 25 -1260 0 0 {name=NGSPICE only_toplevel=false
|
||||
value="
|
||||
.control
|
||||
let run = 1
|
||||
let mc_runs = 100
|
||||
set curplot = new
|
||||
set scratch = $curplot
|
||||
dowhile run <= mc_runs
|
||||
reset
|
||||
dc temp 0 70 5
|
||||
set run = $&run
|
||||
set dc = $curplot
|
||||
setplot $scratch
|
||||
let off\{$run\} = \{$dc\}.v(vout)
|
||||
let mytemp\{$run\} = \\"\{$dc\}.temp-sweep\\"
|
||||
setplot $dc
|
||||
let run = run + 1
|
||||
end
|
||||
set nolegend
|
||||
plot \{$scratch\}.allv vs \{$scratch\}.mytemp1
|
||||
write ota_testbench_mc_mis.raw \{$scratch\}.allv \{$scratch\}.mytemp1
|
||||
.endc
|
||||
|
||||
"}
|
||||
C {launcher.sym} 430 -635 0 0 {name=h5
|
||||
descr="load waves"
|
||||
tclcommand="xschem raw_read $netlist_dir/output_file.raw ac"
|
||||
}
|
||||
C {two_stage_OTA.sym} 310 -550 0 0 {name=x1}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
** OTA_SIMPLE flat netlist
|
||||
*.PININFO V-:B V+:B VSS:B VDD:B IOUT:B VOUT:B
|
||||
M4 NET3 NET1 VSS VSS SG13_LV_NMOS L=9.75U W=720N NG=1 M=1
|
||||
M3 NET1 NET1 VSS VSS SG13_LV_NMOS L=9.75U W=720N NG=1 M=1
|
||||
M1 NET1 V- NET2 VDD SG13_LV_PMOS L=3.64U W=7.41U NG=1 M=1
|
||||
M2 NET3 V+ NET2 VDD SG13_LV_PMOS L=3.64U W=7.41U NG=1 M=1
|
||||
M5 NET2 IOUT VDD VDD SG13_LV_PMOS L=1.95U W=5.3U NG=1 M=1
|
||||
M7 VOUT IOUT VDD VDD SG13_LV_PMOS L=2.08U W=75U NG=8 M=1
|
||||
M6 VOUT NET3 VSS VSS SG13_LV_NMOS L=9.75U W=28.8U NG=4 M=1
|
||||
M9 IOUT IOUT VDD VDD SG13_LV_PMOS L=2.08U W=75U NG=8 M=1
|
||||
C2 NET3 VOUT CAP_CMIM W=22.295E-6 L=22.295E-6 M=1
|
||||
.end
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
** sch_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_1_bandgap_reference/part_1_OTA/schematic/two_stage_OTA.sch
|
||||
.subckt two_stage_OTA vdd iout v+ v- vout vss
|
||||
*.PININFO v-:B v+:B vss:B vdd:B iout:B vout:B
|
||||
M4 net3 net1 vss vss sg13_lv_nmos l=9.75u w=720n ng=1 m=1
|
||||
M3 net1 net1 vss vss sg13_lv_nmos l=9.75u w=720n ng=1 m=1
|
||||
M1 net1 v- net2 vdd sg13_lv_pmos l=3.64u w=3.705u ng=1 m=1
|
||||
M2 net3 v+ net2 vdd sg13_lv_pmos l=3.64u w=3.705u ng=1 m=1
|
||||
M5 net2 iout vdd vdd sg13_lv_pmos l=1.95u w=5.3u ng=1 m=1
|
||||
M7 vout iout vdd vdd sg13_lv_pmos l=2.08u w=75u ng=8 m=1
|
||||
M6 vout net3 vss vss sg13_lv_nmos l=9.75u w=28.8u ng=4 m=1
|
||||
M9 iout iout vdd vdd sg13_lv_pmos l=2.08u w=75u ng=8 m=1
|
||||
C2 net3 vout cap_cmim w=22.295e-6 l=22.295e-6 m=1
|
||||
.ends
|
||||
.end
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
# xschemrc - Custom configuration file for xschem
|
||||
# This file sources another xschemrc file from a known location
|
||||
|
||||
# Source the base configuration from a known location
|
||||
source $::env(PDK_ROOT)/$::env(PDK)/libs.tech/xschem/xschemrc
|
||||
|
||||
# (Optional) Add any custom overrides or extensions below
|
||||
# set xschem_library_path /home/user/my_libs
|
||||
# set xschem_gui_font "Monospace 10"
|
||||
|
||||
#### include skywater libraries. Here I use [pwd]. This works if I start xschem from here.
|
||||
###only if you dont have this setup already ###
|
||||
###append XSCHEM_LIBRARY_PATH :[file dirname [info script]]
|
||||
|
||||
|
||||
#### Add custom libraries (directories with .lib files)
|
||||
append XSCHEM_LIBRARY_PATH :$PDK_ROOT/ihp-sg13g2/libs.tech/xschem
|
||||
append XSCHEM_LIBRARY_PATH :../schematic/
|
||||
append XSCHEM_LIBRARY_PATH :../../part_2_full_bgr/schematic/verilog/veriloga_tbs/
|
||||
|
|
@ -4,7 +4,36 @@
|
|||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/home/pedersen/.local/lib/python3.10/site-packages/matplotlib/projections/__init__.py:63: UserWarning: Unable to import Axes3D. This may be due to multiple versions of Matplotlib being installed (e.g. as a system package and as a pip package). As a result, the 3D projection is not available.\n",
|
||||
" warnings.warn(\"Unable to import Axes3D. This may be due to multiple versions of \"\n",
|
||||
"/home/pedersen/.local/lib/python3.10/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.17.3 and <1.25.0 is required for this version of SciPy (detected version 2.2.6\n",
|
||||
" warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "ValueError",
|
||||
"evalue": "numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||||
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
|
||||
"Cell \u001b[0;32mIn[1], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpyplot\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mplt\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mnp\u001b[39;00m\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mmosplot\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mplot\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m load_lookup_table, Mosfet, Expression\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mipywidgets\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mwidgets\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mipywidgets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m interactive\n",
|
||||
"File \u001b[0;32m~/.local/lib/python3.10/site-packages/mosplot/plot/__init__.py:1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmosfet\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Mosfet\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutil\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m load_lookup_table\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mexpressions\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Expression\n",
|
||||
"File \u001b[0;32m~/.local/lib/python3.10/site-packages/mosplot/plot/mosfet.py:8\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mexpressions\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Expression\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutil\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m evaluate_expression, extract_2d_table\n\u001b[0;32m----> 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01minterpolation\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m GridInterpolator, KDTreeInterpolator\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mplot\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Plotter\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# >>>\u001b[39;00m\n",
|
||||
"File \u001b[0;32m~/.local/lib/python3.10/site-packages/mosplot/plot/interpolation.py:4\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtyping\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m List, Tuple, Union\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mnp\u001b[39;00m\n\u001b[0;32m----> 4\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01minterpolate\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m griddata\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mspatial\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m cKDTree\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mexpressions\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Expression\n",
|
||||
"File \u001b[0;32m~/.local/lib/python3.10/site-packages/scipy/interpolate/__init__.py:166\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;124;03m========================================\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;124;03mInterpolation (:mod:`scipy.interpolate`)\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[38;5;124;03m(should not be used in new code).\u001b[39;00m\n\u001b[1;32m 165\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m--> 166\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_interpolate\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[1;32m 167\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_fitpack_py\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[1;32m 169\u001b[0m \u001b[38;5;66;03m# New interface to fitpack library:\u001b[39;00m\n",
|
||||
"File \u001b[0;32m~/.local/lib/python3.10/site-packages/scipy/interpolate/_interpolate.py:11\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mnp\u001b[39;00m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m (array, transpose, searchsorted, atleast_1d, atleast_2d,\n\u001b[1;32m 9\u001b[0m ravel, poly1d, asarray, intp)\n\u001b[0;32m---> 11\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mspecial\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mspec\u001b[39;00m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mspecial\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m comb\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_lib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_util\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m prod\n",
|
||||
"File \u001b[0;32m~/.local/lib/python3.10/site-packages/scipy/special/__init__.py:649\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;124;03m========================================\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;124;03mSpecial functions (:mod:`scipy.special`)\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 644\u001b[0m \n\u001b[1;32m 645\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 647\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_sf_error\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m SpecialFunctionWarning, SpecialFunctionError\n\u001b[0;32m--> 649\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _ufuncs\n\u001b[1;32m 650\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_ufuncs\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[1;32m 652\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _basic\n",
|
||||
"File \u001b[0;32m_ufuncs.pyx:1\u001b[0m, in \u001b[0;36minit scipy.special._ufuncs\u001b[0;34m()\u001b[0m\n",
|
||||
"\u001b[0;31mValueError\u001b[0m: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
|
|
@ -17,7 +46,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
|
|
@ -27,24 +56,16 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"dict_keys(['sg13_lv_nmos ', 'description', 'simulator', 'parameter_names', 'device_parameters'])\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"print(lookup_table_nmos.keys())"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
|
|
@ -54,7 +75,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"jupyter": {
|
||||
"source_hidden": true
|
||||
|
|
@ -256,7 +277,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
|
|
@ -286,7 +307,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
|
|
@ -300,7 +321,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
|
|
@ -310,24 +331,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "72114aa1708645529ec782f5479a3a60",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"nmos_M6 = Mosfet(lookup_table=lookup_table_nmos, mos=\"sg13_lv_nmos \", vbs=0, vds=0.6)\n",
|
||||
"reshaped_lengths_nmos_M6 = tile_length_to_match_data(nmos_M6.length, nmos_M6.extracted_table['gm'])\n",
|
||||
|
|
@ -343,20 +349,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"7.949913192125772e-05"
|
||||
]
|
||||
},
|
||||
"execution_count": 10,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# For max gmro and vgs of 0.6V we have gmid of 5\n",
|
||||
"L_M6 = 9.75e-6\n",
|
||||
|
|
@ -369,17 +364,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"gmro_M7 = 222.72\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Now for the pmos output transistor we must have 3 time the output impedance to insure max output gain\n",
|
||||
"ro_M7 = 2 * ro_M6\n",
|
||||
|
|
@ -392,24 +379,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "d2c6f85fa97b4d9d8844e236d1b23f3f",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"pmos_M7 = Mosfet(lookup_table=lookup_table_pmos, mos=\"sg13_lv_pmos\", vbs=0, vds=-0.6, vgs=(-1.2, -0.1))\n",
|
||||
"reshaped_lengths_pmos_M7 = tile_length_to_match_data(pmos_M7.length, pmos_M7.extracted_table['gm'])\n",
|
||||
|
|
@ -427,7 +399,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
|
|
@ -438,20 +410,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"L_M6 = 9.75e-06\n",
|
||||
"gmid_M6 = 5.00\n",
|
||||
"L_M7 = 2.08e-06\n",
|
||||
"gmid_M7 = 10.00\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"print(f'L_M6 = {L_M6:.2e}')\n",
|
||||
"print(f'gmid_M6 = {gmid_M6:.2f}')\n",
|
||||
|
|
@ -461,38 +422,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "3423adf060a5431c9ed9dcfd25cdd5cb",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "d9a07198c63c44209996a193ba18660b",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"plot_data_vs_data(gm_values_M6/id_values_M6,id_values_M6/width_values_M6, vgs_values_M6, reshaped_lengths_nmos_M6, 'gm/id', 'M6 id/W', log=True)\n",
|
||||
"plot_data_vs_data(gm_values_M7/id_values_M7, id_values_M7/width_values_M7,vgs_values_M7, reshaped_lengths_pmos_M7, 'gm/id', 'M7 id/W', log=True)"
|
||||
|
|
@ -500,34 +432,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 16,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"\n",
|
||||
"Output Stage Amplification Summary\n",
|
||||
"Width and Lengths for M6\n",
|
||||
" W = 28.80 um\n",
|
||||
" L = 9.75 um\n",
|
||||
"Inversion Region for M6: Strong Inversion\n",
|
||||
"\n",
|
||||
"Width and Lengths for M7\n",
|
||||
" W = 75.00 um\n",
|
||||
" L = 2.08 um\n",
|
||||
"Inversion Region for M7: Strong Inversion\n",
|
||||
"\n",
|
||||
"Output Stage Bias:\n",
|
||||
" Output Current : 79.50 μA\n",
|
||||
"\n",
|
||||
"Output Stage Gain:\n",
|
||||
" Av2 = 37.12 (31.39 dB)\n",
|
||||
"\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"id_over_W_M6 = 2.76\n",
|
||||
"id_over_W_M7 = 1.06\n",
|
||||
|
|
@ -570,20 +477,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"2.0004294796936965e-06"
|
||||
]
|
||||
},
|
||||
"execution_count": 17,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Now we assume that the max gmro for our nmos in the input stage is 55.68\n",
|
||||
"fp2 = gm_M6/(2*np.pi*Cl)\n",
|
||||
|
|
@ -597,18 +493,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 18,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"mirror_pole_assumption = 20.95 MHz\n",
|
||||
"fp2 = 126.52679816782855 MHz\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"mirror_pole_assumption = (gm_M34/( 4*np.pi*38e-15))*1e-6\n",
|
||||
"print(f'mirror_pole_assumption = {mirror_pole_assumption:.2f} MHz')\n",
|
||||
|
|
@ -617,18 +504,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 19,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"gmro_M12 = 442.56\n",
|
||||
"gmid_M12 = 13.25\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"gmro_M12 = gm_M12 * Rout1*3\n",
|
||||
"gmid_M12 = gm_M12/id_branch\n",
|
||||
|
|
@ -645,38 +523,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 25,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "bc344d417b284a71abea7fb90081872e",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "b312811f418442868110cc154d1cd4b7",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"pmos_M12 = Mosfet(lookup_table=lookup_table_pmos, mos=\"sg13_lv_pmos\", vbs=-0.2, vds=-0.6, vgs=(-1.2, -0.1))\n",
|
||||
"nmos_M34 = Mosfet(lookup_table=lookup_table_nmos, mos=\"sg13_lv_nmos \", vbs=0, vds=0.6)\n",
|
||||
|
|
@ -699,20 +548,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 26,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"L_M12 = 3.64e-06\n",
|
||||
"gmid_M12 = 13.25\n",
|
||||
"L_M34 = 9.75e-06\n",
|
||||
"gmid_M34 = 5.00\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"L_M12 = 3.64e-6\n",
|
||||
"L_M34 = 9.75e-6\n",
|
||||
|
|
@ -726,38 +564,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 27,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "e503a959702844d09e52f5cc34072b5b",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "9299f09d02b1408b88c4ad86a163ce34",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"width_values_M12 = pmos_M12.width\n",
|
||||
"width_values_M34 = nmos_M34.width\n",
|
||||
|
|
@ -768,30 +577,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 28,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"\n",
|
||||
"Input Stage Amplification Summary\n",
|
||||
"Width and Lengths for M12\n",
|
||||
" W = 7.41 um\n",
|
||||
" L = 3.64 um\n",
|
||||
"Inversion Region for M12: Moderate Inversion\n",
|
||||
"Width and Lengths for M34\n",
|
||||
" W = 0.72 um\n",
|
||||
" L = 9.75 um\n",
|
||||
"Inversion Region for M34: Strong Inversion\n",
|
||||
"Input Stage Bias:\n",
|
||||
" Branch Current : 2.00 μA\n",
|
||||
" input Tail current: 4.00 μA\n",
|
||||
"\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"id_over_W_M12 = 0.27\n",
|
||||
"id_over_W_M34 = 2.76\n",
|
||||
|
|
@ -821,67 +609,9 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 29,
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Amplifier is stable\n",
|
||||
"\n",
|
||||
"Summary\n",
|
||||
"Output Stage:\n",
|
||||
" \n",
|
||||
"Output Stage Amplification Summary\n",
|
||||
"Width and Lengths for M6\n",
|
||||
" W = 28.80 um\n",
|
||||
" L = 9.75 um\n",
|
||||
"Inversion Region for M6: Strong Inversion\n",
|
||||
"\n",
|
||||
"Width and Lengths for M7\n",
|
||||
" W = 75.00 um\n",
|
||||
" L = 2.08 um\n",
|
||||
"Inversion Region for M7: Strong Inversion\n",
|
||||
"\n",
|
||||
"Output Stage Bias:\n",
|
||||
" Output Current : 79.50 μA\n",
|
||||
"\n",
|
||||
"Output Stage Gain:\n",
|
||||
" Av2 = 37.12 (31.39 dB)\n",
|
||||
"\n",
|
||||
"Input Stage:\n",
|
||||
" \n",
|
||||
"Input Stage Amplification Summary\n",
|
||||
"Width and Lengths for M12\n",
|
||||
" W = 7.41 um\n",
|
||||
" L = 3.64 um\n",
|
||||
"Inversion Region for M12: Moderate Inversion\n",
|
||||
"Width and Lengths for M34\n",
|
||||
" W = 0.72 um\n",
|
||||
" L = 9.75 um\n",
|
||||
"Inversion Region for M34: Strong Inversion\n",
|
||||
"Input Stage Bias:\n",
|
||||
" Branch Current : 2.00 μA\n",
|
||||
" input Tail current: 4.00 μA\n",
|
||||
"\n",
|
||||
" Input stage gain: 107.48 (40.63 dB)\n",
|
||||
"\n",
|
||||
"Gain and frequency response:\n",
|
||||
" Gain Bandwidth Product: 5623413.251903491 Hz\n",
|
||||
" Dominant Pole Frequency: 1000 Hz\n",
|
||||
" Output Stage Compensation Capacitance: 7.5e-13 F\n",
|
||||
" Load Capacitance: 5e-13 F\n",
|
||||
" dominant pole: 1000.0 Hz\n",
|
||||
" non dominant pole: 126.52679816782855 MHz\n",
|
||||
" mirror pole assumption: 20.945936842105265 MHz\n",
|
||||
" Total gain: 3989.66 (72.02 dB)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# summarizing everything\\\n",
|
||||
"gmro_M12_actual = 396\n",
|
||||
|
|
|
|||
|
|
@ -1,707 +0,0 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "77c55b20-6f03-4db8-a5ac-7ca94c5f1368",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
"from mosplot.plot import load_lookup_table, Mosfet, Expression\n",
|
||||
"import ipywidgets as widgets\n",
|
||||
"from ipywidgets import interactive\n",
|
||||
"from ipywidgets import interactive_output, HBox, VBox\n",
|
||||
"import matplotlib.ticker as ticker "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "02428279-5305-4a97-9369-a67d6e9ae064",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"lookup_table_nmos = load_lookup_table('../../../module_0_foundations/sg13_nmos_lv_LUT.npz')\n",
|
||||
"lookup_table_pmos = load_lookup_table('../../../module_0_foundations/sg13_pmos_lv_LUT.npz')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"id": "167c39d0-87f8-42a0-a4c9-5145a786ad01",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"dict_keys(['sg13_lv_nmos ', 'description', 'simulator', 'parameter_names', 'device_parameters'])\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"print(lookup_table_nmos.keys())"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "1424aa71-d1c5-45d0-95f4-8fe27a7df89c",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"nmos = Mosfet(lookup_table=lookup_table_nmos, mos=\"sg13_lv_nmos \", vbs=0.0, vds=0.6)\n",
|
||||
"pmos = Mosfet(lookup_table=lookup_table_pmos, mos=\"sg13_lv_pmos\", vbs=0.0, vds=-0.6, vgs=(-1.2, -0.15))\n",
|
||||
"\n",
|
||||
"rows_0, cols_0 = np.shape(nmos.extracted_table['gm']) # just for getting the shape of the data\n",
|
||||
"rows_1, cols_1 = np.shape(pmos.extracted_table['gm']) # just for getting the shape of the data\n",
|
||||
"reshaped_lengths_nmos = np.tile(nmos.length[:, np.newaxis], (1, cols_0))\n",
|
||||
"reshaped_lengths_pmos = np.tile(pmos.length[:, np.newaxis], (1, cols_1))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"id": "1f85ca78-e674-4abc-a350-849dc5fe857f",
|
||||
"metadata": {
|
||||
"jupyter": {
|
||||
"source_hidden": true
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def plot_data_vs_data(x_values, y_values, z_values, length, x_axis_name, y_axis_name='y', y_multiplier=1, log=False):\n",
|
||||
" x_values_flat = np.array(x_values).flatten()\n",
|
||||
" y_values_flat = np.array(y_values, dtype=np.float64).flatten()\n",
|
||||
" z_values_flat = np.array(z_values, dtype=np.float64).flatten()\n",
|
||||
" length_flat = np.array(length).flatten()\n",
|
||||
"\n",
|
||||
" # Ensure all inputs have the same length\n",
|
||||
" if not (len(x_values_flat) == len(y_values_flat) == len(z_values_flat) == len(length_flat)):\n",
|
||||
" raise ValueError(\"All input arrays (x_values, y_values, z_values, length) must have the same number of elements.\")\n",
|
||||
"\n",
|
||||
" unique_lengths = np.unique(length_flat)\n",
|
||||
" unique_lengths_in_micro = unique_lengths * 1e6\n",
|
||||
"\n",
|
||||
" def update_plot(selected_length, x_value=None, y_value=None):\n",
|
||||
" plt.figure(figsize=(12, 8)) # Make the figure wider (adjust as needed)\n",
|
||||
"\n",
|
||||
" if selected_length == \"Show All\":\n",
|
||||
" mask = np.ones_like(length_flat, dtype=bool)\n",
|
||||
" else:\n",
|
||||
" selected_length_in_micro = float(selected_length.replace(' μm', ''))\n",
|
||||
" tolerance = 0.01 # Tighten the tolerance to avoid unwanted data points\n",
|
||||
" mask = np.abs(length_flat * 1e6 - selected_length_in_micro) < tolerance\n",
|
||||
"\n",
|
||||
" # Apply the mask to the data\n",
|
||||
" x_values_for_length = x_values_flat[mask]\n",
|
||||
" y_values_for_length = y_values_flat[mask] * y_multiplier\n",
|
||||
" z_values_for_length = z_values_flat[mask]\n",
|
||||
" length_for_length = length_flat[mask] * 1e6\n",
|
||||
"\n",
|
||||
" if selected_length == \"Show All\":\n",
|
||||
" for length_value in np.unique(length_for_length):\n",
|
||||
" mask_all = (length_for_length == length_value)\n",
|
||||
" plt.plot(x_values_for_length[mask_all], y_values_for_length[mask_all])\n",
|
||||
"\n",
|
||||
" min_length = np.min(unique_lengths_in_micro)\n",
|
||||
" max_length = np.max(unique_lengths_in_micro)\n",
|
||||
" plt.title(f'{y_axis_name} vs {x_axis_name} (Length from {min_length:.2f} μm to {max_length:.2f} μm)')\n",
|
||||
"\n",
|
||||
" else:\n",
|
||||
" plt.plot(x_values_for_length, y_values_for_length)\n",
|
||||
" plt.title(f'{y_axis_name} vs {x_axis_name} for {selected_length}')\n",
|
||||
"\n",
|
||||
" plt.xlabel(f'{x_axis_name}')\n",
|
||||
" plt.ylabel(f'{y_axis_name}')\n",
|
||||
"\n",
|
||||
" if log:\n",
|
||||
" plt.yscale('log')\n",
|
||||
" plt.gca().yaxis.set_major_locator(ticker.LogLocator(base=10, subs=[], numticks=10))\n",
|
||||
" plt.gca().yaxis.set_major_formatter(ticker.FuncFormatter(lambda x, _: f'$10^{int(np.log10(x))}$'))\n",
|
||||
" plt.ylabel(f'{y_axis_name} (Log Base 10)')\n",
|
||||
"\n",
|
||||
" if y_value is not None and x_value_widget.disabled:\n",
|
||||
" closest_index = np.abs(y_values_for_length - y_value).argmin()\n",
|
||||
" closest_x = x_values_for_length[closest_index]\n",
|
||||
" closest_y = y_values_for_length[closest_index]\n",
|
||||
" corresponding_z = z_values_for_length[closest_index]\n",
|
||||
"\n",
|
||||
" plt.scatter(closest_x, closest_y, color='blue', label=f'Point ({closest_x:.2f}, {closest_y:.2f})')\n",
|
||||
" z_value_widget.value = corresponding_z\n",
|
||||
" print(f\"The corresponding {x_axis_name} value for {y_axis_name} = {closest_y:.2f} is: {closest_x:.2f}\")\n",
|
||||
" elif x_value is not None and y_value_widget.disabled:\n",
|
||||
" closest_index = np.abs(x_values_for_length - x_value).argmin()\n",
|
||||
" closest_x = x_values_for_length[closest_index]\n",
|
||||
" closest_y = y_values_for_length[closest_index]\n",
|
||||
" corresponding_z = z_values_for_length[closest_index]\n",
|
||||
"\n",
|
||||
" plt.scatter(closest_x, closest_y, color='red', label=f'Point ({closest_x:.2f}, {closest_y:.2f})')\n",
|
||||
" z_value_widget.value = corresponding_z\n",
|
||||
" print(f\"The corresponding {y_axis_name} value for {x_axis_name} = {closest_x:.2f} is: {closest_y:.2f}\")\n",
|
||||
"\n",
|
||||
" plt.grid(True)\n",
|
||||
" plt.legend()\n",
|
||||
" plt.show()\n",
|
||||
"\n",
|
||||
" dropdown_options = [\"Show All\"] + [f'{length:.2f} μm' for length in unique_lengths_in_micro]\n",
|
||||
" length_widget = widgets.Dropdown(\n",
|
||||
" options=dropdown_options,\n",
|
||||
" value=dropdown_options[0],\n",
|
||||
" description='Length:',\n",
|
||||
" layout=widgets.Layout(width='500px') # Make the dropdown wider\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
" x_value_widget = widgets.FloatText(\n",
|
||||
" value=np.mean(x_values_flat),\n",
|
||||
" description=f\"{x_axis_name}:\",\n",
|
||||
" disabled=False,\n",
|
||||
" layout=widgets.Layout(width='300px', margin='0 40px 0 0'), # Push input boxes more to the right\n",
|
||||
" description_width='150px' # Smaller description width\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
" y_value_widget = widgets.FloatText(\n",
|
||||
" value=None,\n",
|
||||
" description=f\"{y_axis_name}:\",\n",
|
||||
" disabled=True,\n",
|
||||
" layout=widgets.Layout(width='300px', margin='0 40px 0 0'), # Push input boxes more to the right\n",
|
||||
" description_width='150px' # Smaller description width\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
" z_value_widget = widgets.FloatText(\n",
|
||||
" value=None,\n",
|
||||
" description=f\" Vgs:\",\n",
|
||||
" disabled=True,\n",
|
||||
" layout=widgets.Layout(width='300px', margin='0 40px 0 0'), # Push input boxes more to the right\n",
|
||||
" description_width='150px' # Smaller description width\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
" select_x_or_y_widget = widgets.Checkbox(\n",
|
||||
" value=True,\n",
|
||||
" description=f\"{x_axis_name} (uncheck for {y_axis_name})\",\n",
|
||||
" layout=widgets.Layout(width='300px') # Make the checkbox wider\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
" def toggle_x_or_y(change):\n",
|
||||
" if change['new']:\n",
|
||||
" x_value_widget.disabled = False\n",
|
||||
" y_value_widget.disabled = True\n",
|
||||
" else:\n",
|
||||
" x_value_widget.disabled = True\n",
|
||||
" y_value_widget.disabled = False\n",
|
||||
"\n",
|
||||
" select_x_or_y_widget.observe(toggle_x_or_y, names='value')\n",
|
||||
"\n",
|
||||
" output = interactive_output(update_plot, {\n",
|
||||
" 'selected_length': length_widget,\n",
|
||||
" 'x_value': x_value_widget,\n",
|
||||
" 'y_value': y_value_widget\n",
|
||||
" })\n",
|
||||
"\n",
|
||||
" display(VBox([length_widget, select_x_or_y_widget, HBox([x_value_widget, y_value_widget]), z_value_widget, output]))\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def display_resistance(ro_value):\n",
|
||||
" \"\"\"Determine the resistance value and its unit.\"\"\"\n",
|
||||
" if ro_value < 1e3:\n",
|
||||
" return ro_value, \"Ω\"\n",
|
||||
" elif ro_value < 1e6:\n",
|
||||
" return ro_value / 1e3, \"kΩ\"\n",
|
||||
" elif ro_value < 1e9:\n",
|
||||
" return ro_value / 1e6, \"MΩ\"\n",
|
||||
" else:\n",
|
||||
" return ro_value / 1e9, \"GΩ\"\n",
|
||||
"\n",
|
||||
"def display_current(Id_value):\n",
|
||||
" \"\"\"Determine the current value and its unit.\"\"\"\n",
|
||||
" if Id_value < 1e-6:\n",
|
||||
" return Id_value * 1e9, \"nA\" # Convert to nA\n",
|
||||
" elif Id_value < 1e-3:\n",
|
||||
" return Id_value * 1e6, \"μA\" # Convert to μA\n",
|
||||
" else:\n",
|
||||
" return Id_value * 1e3, \"mA\" # Convert to mA\n",
|
||||
" \n",
|
||||
"def dB_to_linear(av_db):\n",
|
||||
" return 10 ** (av_db / 20)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def determine_inversion_region(gm_id_value, device_type):\n",
|
||||
" \"\"\"Determine the inversion region based on gm/id value for NMOS or PMOS.\"\"\"\n",
|
||||
" if device_type == 'nmos':\n",
|
||||
" if gm_id_value > 20:\n",
|
||||
" return \"Weak Inversion\"\n",
|
||||
" elif 10 < gm_id_value <= 20:\n",
|
||||
" return \"Moderate Inversion\"\n",
|
||||
" else:\n",
|
||||
" return \"Strong Inversion\"\n",
|
||||
" elif device_type == 'pmos':\n",
|
||||
" if gm_id_value > 20:\n",
|
||||
" return \"Weak Inversion\"\n",
|
||||
" elif 10 < gm_id_value <= 20:\n",
|
||||
" return \"Moderate Inversion\"\n",
|
||||
" else:\n",
|
||||
" return \"Strong Inversion\"\n",
|
||||
" else:\n",
|
||||
" raise ValueError(\"Invalid device type. Use 'nmos' or 'pmos'.\")\n",
|
||||
" \n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 34,
|
||||
"id": "a1c721d6-b8b3-4ff3-a9f8-a53360996723",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"5.1895136425091675"
|
||||
]
|
||||
},
|
||||
"execution_count": 34,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"Av_target = 37 # db\n",
|
||||
"Av_linear = dB_to_linear(Av_target)\n",
|
||||
"ID = 3e-6\n",
|
||||
"Cl = 700e-15\n",
|
||||
"fp1 = 50e3\n",
|
||||
"Ro = 1/(2*np.pi * fp1 * Cl)\n",
|
||||
"gm_input = Av_linear / Ro\n",
|
||||
"gmid_input_transistor = gm_input / ID\n",
|
||||
"\n",
|
||||
"gmid_input_transistor"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "7231cd36-89ea-4936-a8a5-8b74bf2d72a3",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"\n",
|
||||
"\n",
|
||||
"$$A_v = gm_{1,2} \\cdot R_{p} \\vert \\vert R_{n}$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 35,
|
||||
"id": "32ff6468-fb7e-424d-94f7-a56e77a9c9fc",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"141.58915687682762"
|
||||
]
|
||||
},
|
||||
"execution_count": 35,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"gmro_input = 2 * Ro * gm_input\n",
|
||||
"gmro_input"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"id": "e76abc49-8b07-4025-bfe2-6b4fc7068ad9",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "924b76b2c42145feab4bb81a438e59fe",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"pmos = Mosfet(lookup_table=lookup_table_pmos, mos=\"sg13_lv_pmos\", vbs=0, vds=-0.6, vgs=(-1.2, -0.2))\n",
|
||||
"rows_0, cols_0 = np.shape(pmos.extracted_table['gm'])\n",
|
||||
"reshaped_lengths_pmos = np.tile(pmos.length[:, np.newaxis], (1, cols_0))\n",
|
||||
"\n",
|
||||
"width_values_pmos = pmos.width\n",
|
||||
"id_values_pmos = pmos.extracted_table['id']\n",
|
||||
"gm_values_pmos = pmos.extracted_table['gm']\n",
|
||||
"gds_values_pmos = pmos.extracted_table['gds']\n",
|
||||
"vgs_values_pmos = pmos.extracted_table['vgs']\n",
|
||||
"\n",
|
||||
"plot_data_vs_data(gm_values_pmos/id_values_pmos, gm_values_pmos/gds_values_pmos, vgs_values_pmos, reshaped_lengths_pmos, 'gm/id', 'gds')\n",
|
||||
"\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 36,
|
||||
"id": "134b383c-fd21-4259-8722-cc23fbdb2cf8",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"L_input_pmos = 5.46e-6\n",
|
||||
"gmro_input_pmos = 212.47"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 40,
|
||||
"id": "ca8d0f43-af6c-458c-9a32-c485adfbec09",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"ro_nmos = Ro\n",
|
||||
"gmid_nmos = 8\n",
|
||||
"gm_nmos = gmid_nmos * ID\n",
|
||||
"gmro_nmos = gm_nmos * ro_nmos"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"id": "79cacefc-8128-4024-932f-8dde19397334",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "cc77e54d1181444aaf91be44631bd6b3",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"nmos = Mosfet(lookup_table=lookup_table_nmos, mos=\"sg13_lv_nmos \", vbs=0, vds=0.6, vgs=(0.2, 1.0))\n",
|
||||
"rows_0, cols_0 = np.shape(nmos.extracted_table['gm'])\n",
|
||||
"reshaped_lengths_nmos = np.tile(nmos.length[:, np.newaxis], (1, cols_0))\n",
|
||||
"\n",
|
||||
"width_values_nmos = nmos.width\n",
|
||||
"id_values_nmos = nmos.extracted_table['id']\n",
|
||||
"gm_values_nmos = nmos.extracted_table['gm']\n",
|
||||
"gds_values_nmos = nmos.extracted_table['gds']\n",
|
||||
"vgs_values_nmos = nmos.extracted_table['vgs']\n",
|
||||
"\n",
|
||||
"plot_data_vs_data(gm_values_nmos/id_values_nmos, gm_values_nmos/gds_values_nmos, vgs_values_nmos, reshaped_lengths_nmos, 'gm/id', 'gm/gds')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"id": "480c32fb-97b8-4449-a33e-62ecf34d3eb1",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"L_nmos = 9.98e-6\n",
|
||||
"gmro_nmos = 64.7"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"id": "6d86bb64-8379-4adf-b359-420ab40ddc39",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "4f68e95fe4f94bc9aad9d0eb6d81f240",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"plot_data_vs_data(gm_values_nmos/id_values_nmos,id_values_nmos/width_values_nmos, vgs_values_nmos, reshaped_lengths_nmos, 'gm/id', 'nmos id/W', log=True)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 41,
|
||||
"id": "dbaad6ad-7e73-4f58-aa78-56076d533339",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"3.0927835051546395e-06"
|
||||
]
|
||||
},
|
||||
"execution_count": 41,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"idW_nmos = 0.97\n",
|
||||
"W_nmos = ID/ idW_nmos\n",
|
||||
"W_nmos"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"id": "81dbc8a8-e36b-4650-9c2d-07bab20549ed",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "362f09b79e1044459a3af3f4d6947fa9",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"plot_data_vs_data(gm_values_pmos/id_values_pmos,id_values_pmos/width_values_pmos, vgs_values_pmos, reshaped_lengths_pmos, 'gm/id', 'nmos id/W', log=True)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 42,
|
||||
"id": "e465a920-5804-4fc2-8b91-017dba75432f",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"idW_pmos = 1.09\n",
|
||||
"W_pmos = ID / idW_pmos"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 43,
|
||||
"id": "dbf037be-ea06-4028-b70c-206d6ff85bc0",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"PMOS Width (W_pmos): 2.75 µm\n",
|
||||
"PMOS Length (L_input_pmos): 5.46 µm\n",
|
||||
"NMOS Width (W_nmos): 3.09 µm\n",
|
||||
"NMOS Length (L_nmos): 6.24 µm\n",
|
||||
"Tail Current: 6.0 µA\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"print(f\"PMOS Width (W_pmos): {W_pmos * 1e6:.2f} µm\")\n",
|
||||
"print(f\"PMOS Length (L_input_pmos): {L_input_pmos * 1e6:.2f} µm\")\n",
|
||||
"print(f\"NMOS Width (W_nmos): {W_nmos * 1e6:.2f} µm\")\n",
|
||||
"print(f\"NMOS Length (L_nmos): {L_nmos * 1e6:.2f} µm\")\n",
|
||||
"print(f\"Tail Current: {(ID * 2)*1e6} µA\")\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 44,
|
||||
"id": "1fc5f6e3-a883-4fc7-83be-1526cc9437e7",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"53.10132372968084"
|
||||
]
|
||||
},
|
||||
"execution_count": 44,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# total gain\n",
|
||||
"gm_nmos = gmid_nmos * ID\n",
|
||||
"ro_nmos = gmro_nmos / gm_nmos\n",
|
||||
"ro_pmos = gmro_input_pmos / gm_input \n",
|
||||
"\n",
|
||||
"RO_actual = (ro_nmos * ro_pmos)/(ro_nmos + ro_pmos)\n",
|
||||
"Gain_actual = RO_actual * gm_input\n",
|
||||
"Gain_actual"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 45,
|
||||
"id": "3e5d41f5-9044-44dc-b7e5-b7685cc8ac63",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"np.float64(34.50189042162938)"
|
||||
]
|
||||
},
|
||||
"execution_count": 45,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"20*np.log10(53.1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 27,
|
||||
"id": "5400e7cd-6cdf-4e4b-ab71-ecc7e34de299",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#current_mirror_pmos\n",
|
||||
"CMpmos_gmid = 18\n",
|
||||
"Itail = 2 * ID"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 23,
|
||||
"id": "2cd011c5-0085-430b-baa0-9028055bd9a8",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "57a8fd87b3e84375885c798bc7ea9c4a",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"pmos = Mosfet(lookup_table=lookup_table_pmos, mos=\"sg13_lv_pmos\", vbs=0, vds=-0.2, vgs=(-1.2, -0.2))\n",
|
||||
"rows_0, cols_0 = np.shape(pmos.extracted_table['gm'])\n",
|
||||
"reshaped_lengths_pmos = np.tile(pmos.length[:, np.newaxis], (1, cols_0))\n",
|
||||
"\n",
|
||||
"width_values_pmos = pmos.width\n",
|
||||
"id_values_pmos = pmos.extracted_table['id']\n",
|
||||
"gm_values_pmos = pmos.extracted_table['gm']\n",
|
||||
"gds_values_pmos = pmos.extracted_table['gds']\n",
|
||||
"vgs_values_pmos = pmos.extracted_table['vgs']\n",
|
||||
"\n",
|
||||
"plot_data_vs_data(gm_values_pmos/id_values_pmos, gm_values_pmos/gds_values_pmos, vgs_values_pmos, reshaped_lengths_pmos, 'gm/id', 'gds')\n",
|
||||
"\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 24,
|
||||
"id": "6105f41d-e41a-45fc-ab46-b34b548d5fe7",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "d4eea71adbd744979cbe7dec81e8c851",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"VBox(children=(Dropdown(description='Length:', layout=Layout(width='500px'), options=('Show All', '0.13 μm', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"plot_data_vs_data(gm_values_pmos/id_values_pmos,id_values_pmos/width_values_pmos, vgs_values_pmos, reshaped_lengths_pmos, 'gm/id', 'nmos id/W', log=True)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 29,
|
||||
"id": "8f728126-050d-47ed-aebd-ebfef064e941",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"6.666666666666667e-05"
|
||||
]
|
||||
},
|
||||
"execution_count": 29,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"CM_pmos_L = 9.98e-6\n",
|
||||
"id_over_w_CM_pmos = 0.03\n",
|
||||
"W = Itail / id_over_w_CM_pmos\n",
|
||||
"W"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "d151c9a6-22d5-45f7-a4c8-a8a08f081d4f",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.12"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
|
|
@ -12,7 +12,7 @@ ypos2=2
|
|||
divy=5
|
||||
subdivy=1
|
||||
unity=1
|
||||
x1=4.0396485e-08
|
||||
x1=0
|
||||
|
||||
divx=5
|
||||
subdivx=4
|
||||
|
|
@ -24,18 +24,18 @@ dataset=-1
|
|||
unitx=1
|
||||
logx=0
|
||||
logy=0
|
||||
x2=4.0503685e-08
|
||||
x2=1e-08
|
||||
color=4
|
||||
node=clk}
|
||||
B 2 20 -855 820 -455 {flags=graph
|
||||
y1=0.59
|
||||
y2=0.61
|
||||
y2=0.6
|
||||
ypos1=0
|
||||
ypos2=2
|
||||
divy=5
|
||||
subdivy=1
|
||||
unity=1
|
||||
x1=4.0396485e-08
|
||||
x1=0
|
||||
|
||||
divx=5
|
||||
subdivx=4
|
||||
|
|
@ -47,20 +47,20 @@ dataset=-1
|
|||
unitx=1
|
||||
logx=0
|
||||
logy=0
|
||||
x2=4.0503685e-08
|
||||
x2=1e-08
|
||||
|
||||
|
||||
color=4
|
||||
node=vinp}
|
||||
B 2 850 -1225 1650 -825 {flags=graph
|
||||
y1=-1.3
|
||||
y2=1.3
|
||||
y2=0.0088
|
||||
ypos1=0
|
||||
ypos2=2
|
||||
divy=5
|
||||
subdivy=1
|
||||
unity=1
|
||||
x1=4.0396485e-08
|
||||
x1=0
|
||||
|
||||
divx=5
|
||||
subdivx=4
|
||||
|
|
@ -72,14 +72,14 @@ dataset=-1
|
|||
unitx=1
|
||||
logx=0
|
||||
logy=0
|
||||
x2=4.0503685e-08
|
||||
x2=1e-08
|
||||
|
||||
|
||||
color=4
|
||||
node=vout}
|
||||
B 2 850 -805 1650 -405 {flags=graph
|
||||
y1=-0.13480066
|
||||
y2=1.3283316
|
||||
y1=-2e-05
|
||||
y2=1.3
|
||||
ypos1=0
|
||||
ypos2=2
|
||||
divy=5
|
||||
|
|
@ -99,19 +99,19 @@ logy=0
|
|||
|
||||
color=4
|
||||
node=outp
|
||||
x2=4.0503685e-08
|
||||
x1=4.0396485e-08
|
||||
x2=1e-08
|
||||
x1=0
|
||||
hcursor1_y=0.13669334
|
||||
hcursor2_y=1.0706523}
|
||||
B 2 850 -395 1650 5 {flags=graph
|
||||
y1=0.24502661
|
||||
y2=1.4615386
|
||||
y1=1.1
|
||||
y2=1.3
|
||||
ypos1=0
|
||||
ypos2=2
|
||||
divy=5
|
||||
subdivy=1
|
||||
unity=1
|
||||
x1=4.0396485e-08
|
||||
x1=0
|
||||
|
||||
divx=5
|
||||
subdivx=4
|
||||
|
|
@ -123,7 +123,7 @@ dataset=-1
|
|||
unitx=1
|
||||
logx=0
|
||||
logy=0
|
||||
x2=4.0503685e-08
|
||||
x2=1e-08
|
||||
|
||||
|
||||
color=4
|
||||
|
|
@ -189,7 +189,7 @@ format="tcleval( @value )"
|
|||
value="
|
||||
.lib cornerMOSlv.lib mos_tt
|
||||
"}
|
||||
C {devices/code_shown.sym} -1325 -1180 0 0 {name=NGSPICE only_toplevel=false
|
||||
C {devices/code_shown.sym} -1325 -1350 0 0 {name=NGSPICE only_toplevel=false
|
||||
value="
|
||||
.param temp=27
|
||||
.param clock = 100e6 ; 100 MHz clock
|
||||
|
|
@ -206,15 +206,16 @@ set appendwrite
|
|||
|
||||
* Transient analysis
|
||||
.options meas_step_max=1e-10
|
||||
tran 500p 1u
|
||||
tran 500p 20n
|
||||
let vindiff = v(vinp) - v(vbias)
|
||||
let clk = v(clk)
|
||||
let vout = v(outp) - v(outm)
|
||||
|
||||
meas TRAN rise_time TRIG v(outp) VAL=0.12 TD=9n RISE=4 TARG v(outp) VAL=1.08 TD=9n RISE=4
|
||||
meas TRAN fall_time TRIG v(outp) VAL=1.08 TD=9n RISE=4 TARG v(outp) VAL=0.12 TD=9n RISE=4
|
||||
|
||||
set wr_singlescale
|
||||
set wr_vecnames
|
||||
wrdata outp outm clk
|
||||
write comparator_tb.raw
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {vsource.sym} -610 -130 0 0 {name=V3 value="DC 1.2"}
|
||||
|
|
@ -268,7 +269,7 @@ C {launcher.sym} -210 -850 0 0 {name=h5
|
|||
descr="load waves"
|
||||
tclcommand="xschem raw_read $netlist_dir/comparator_tb.raw tran"
|
||||
}
|
||||
C {launcher.sym} -210 -775 0 0 {name=h2
|
||||
C {launcher.sym} -210 -785 0 0 {name=h2
|
||||
descr=SimulateNGSPICE
|
||||
tclcommand="
|
||||
# Setup the default simulation commands if not already set up
|
||||
|
|
|
|||
|
|
@ -0,0 +1,103 @@
|
|||
time outp outm clk
|
||||
0.00000000e+00 1.14253443e+00 1.13460680e+00 0.00000000e+00
|
||||
2.00000000e-12 1.14254322e+00 1.13461632e+00 4.80000000e-03
|
||||
4.00000000e-12 1.14256299e+00 1.13463588e+00 9.60000000e-03
|
||||
8.00000000e-12 1.14261715e+00 1.13468778e+00 1.92000000e-02
|
||||
1.60000000e-11 1.14277475e+00 1.13483007e+00 3.84000000e-02
|
||||
3.20000000e-11 1.14286534e+00 1.13484860e+00 7.68000000e-02
|
||||
6.40000000e-11 1.13986286e+00 1.13154081e+00 1.53600000e-01
|
||||
1.28000000e-10 1.11799999e+00 1.10884277e+00 3.07200000e-01
|
||||
2.56000000e-10 1.12258106e+00 1.11964648e+00 6.14400000e-01
|
||||
3.73468112e-10 1.17166184e+00 1.17289096e+00 8.96323468e-01
|
||||
4.77139871e-10 1.20431174e+00 1.20414131e+00 1.14513569e+00
|
||||
5.00000000e-10 1.20458049e+00 1.20452662e+00 1.20000000e+00
|
||||
5.09675586e-10 1.20251829e+00 1.20248475e+00 1.20000000e+00
|
||||
5.29026759e-10 1.20026433e+00 1.20025917e+00 1.20000000e+00
|
||||
5.67729105e-10 1.19991350e+00 1.19992227e+00 1.20000000e+00
|
||||
6.45133796e-10 1.19996747e+00 1.19997083e+00 1.20000000e+00
|
||||
7.99943178e-10 1.19999464e+00 1.19999579e+00 1.20000000e+00
|
||||
1.06424214e-09 1.19999385e+00 1.19999413e+00 1.20000000e+00
|
||||
1.46424214e-09 1.20000216e+00 1.20000233e+00 1.20000000e+00
|
||||
1.86424214e-09 1.19999611e+00 1.19999613e+00 1.20000000e+00
|
||||
2.26424214e-09 1.20000255e+00 1.20000263e+00 1.20000000e+00
|
||||
2.66424214e-09 1.19999666e+00 1.19999665e+00 1.20000000e+00
|
||||
3.06424214e-09 1.20000240e+00 1.20000245e+00 1.20000000e+00
|
||||
3.46424214e-09 1.19999706e+00 1.19999705e+00 1.20000000e+00
|
||||
3.86424214e-09 1.20000214e+00 1.20000217e+00 1.20000000e+00
|
||||
4.26424214e-09 1.19999742e+00 1.19999741e+00 1.20000000e+00
|
||||
4.66424214e-09 1.20000185e+00 1.20000187e+00 1.20000000e+00
|
||||
5.06424214e-09 1.19999775e+00 1.19999774e+00 1.20000000e+00
|
||||
5.46424214e-09 1.20000156e+00 1.20000158e+00 1.20000000e+00
|
||||
5.50000000e-09 1.19999910e+00 1.19999911e+00 1.20000000e+00
|
||||
5.50658851e-09 1.19977048e+00 1.19977039e+00 1.18418758e+00
|
||||
5.51976553e-09 1.19961139e+00 1.19961131e+00 1.15256273e+00
|
||||
5.54611956e-09 1.19986634e+00 1.19986648e+00 1.08931305e+00
|
||||
5.59882764e-09 1.19997981e+00 1.19997995e+00 9.62813672e-01
|
||||
5.70424378e-09 1.19986176e+00 1.19986177e+00 7.09814921e-01
|
||||
5.85169159e-09 1.19937258e+00 1.19937130e+00 3.55940173e-01
|
||||
6.00000000e-09 1.19962264e+00 1.19961949e+00 0.00000000e+00
|
||||
6.01766397e-09 1.19984100e+00 1.19983822e+00 0.00000000e+00
|
||||
6.05299190e-09 1.20004792e+00 1.20004436e+00 0.00000000e+00
|
||||
6.12364776e-09 1.20022865e+00 1.20020092e+00 0.00000000e+00
|
||||
6.26495949e-09 1.20209774e+00 1.20191002e+00 0.00000000e+00
|
||||
6.45404923e-09 1.20479810e+00 1.20440920e+00 0.00000000e+00
|
||||
6.73971054e-09 1.19861558e+00 1.20161253e+00 0.00000000e+00
|
||||
7.05808263e-09 1.05918288e+00 1.19188373e+00 0.00000000e+00
|
||||
7.36330950e-09 3.58109528e-01 1.19402811e+00 0.00000000e+00
|
||||
7.61553233e-09 -2.58873469e-03 1.20176332e+00 0.00000000e+00
|
||||
7.86277917e-09 8.94531052e-03 1.19892413e+00 0.00000000e+00
|
||||
8.03564441e-09 -3.73926416e-03 1.20024205e+00 0.00000000e+00
|
||||
8.23640675e-09 4.13894745e-03 1.20001674e+00 0.00000000e+00
|
||||
8.63640675e-09 -3.32066632e-03 1.19996652e+00 0.00000000e+00
|
||||
9.03640675e-09 3.07659665e-03 1.20011492e+00 0.00000000e+00
|
||||
9.43640675e-09 -2.82541347e-03 1.19983073e+00 0.00000000e+00
|
||||
9.83640675e-09 2.61674081e-03 1.20020448e+00 0.00000000e+00
|
||||
1.00000000e-08 -2.14797542e-03 1.19975614e+00 0.00000000e+00
|
||||
1.00302639e-08 -1.53855730e-04 1.20038735e+00 7.26333283e-02
|
||||
1.00907917e-08 8.94987957e-04 1.20081611e+00 2.17899985e-01
|
||||
1.02118472e-08 -1.00456161e-03 1.19960928e+00 5.08433298e-01
|
||||
1.03345712e-08 -6.65600883e-03 1.19893809e+00 8.02970881e-01
|
||||
1.04513263e-08 8.51224718e-01 1.20016728e+00 1.08318314e+00
|
||||
1.05000000e-08 1.19448404e+00 1.20011829e+00 1.20000000e+00
|
||||
1.05086470e-08 1.19560431e+00 1.19983500e+00 1.20000000e+00
|
||||
1.05259409e-08 1.19770991e+00 1.19966998e+00 1.20000000e+00
|
||||
1.05605287e-08 1.19982787e+00 1.19993713e+00 1.20000000e+00
|
||||
1.06297043e-08 1.19999581e+00 1.19996024e+00 1.20000000e+00
|
||||
1.07680556e-08 1.19996857e+00 1.19999604e+00 1.20000000e+00
|
||||
1.10139811e-08 1.20001346e+00 1.19999292e+00 1.20000000e+00
|
||||
1.14139811e-08 1.19998409e+00 1.20000251e+00 1.20000000e+00
|
||||
1.18139811e-08 1.20001219e+00 1.19999626e+00 1.20000000e+00
|
||||
1.22139811e-08 1.19998807e+00 1.20000212e+00 1.20000000e+00
|
||||
1.26139811e-08 1.20000966e+00 1.19999739e+00 1.20000000e+00
|
||||
1.30139811e-08 1.19999070e+00 1.20000151e+00 1.20000000e+00
|
||||
1.34139811e-08 1.20000759e+00 1.19999811e+00 1.20000000e+00
|
||||
1.38139811e-08 1.19999264e+00 1.20000101e+00 1.20000000e+00
|
||||
1.42139811e-08 1.20000598e+00 1.19999862e+00 1.20000000e+00
|
||||
1.46139811e-08 1.19999412e+00 1.20000062e+00 1.20000000e+00
|
||||
1.50139811e-08 1.20000473e+00 1.19999900e+00 1.20000000e+00
|
||||
1.54139811e-08 1.19999525e+00 1.20000033e+00 1.20000000e+00
|
||||
1.55000000e-08 1.20000243e+00 1.19999961e+00 1.20000000e+00
|
||||
1.55109598e-08 1.19974458e+00 1.19974302e+00 1.17369659e+00
|
||||
1.55328793e-08 1.19968394e+00 1.19968391e+00 1.12108977e+00
|
||||
1.55767183e-08 1.20000955e+00 1.20000974e+00 1.01587614e+00
|
||||
1.56643963e-08 1.19989019e+00 1.19989021e+00 8.05448869e-01
|
||||
1.58277117e-08 1.19949463e+00 1.19949388e+00 4.13491880e-01
|
||||
1.59759174e-08 1.19964268e+00 1.19963980e+00 5.77982822e-02
|
||||
1.60000000e-08 1.19949457e+00 1.19949113e+00 0.00000000e+00
|
||||
1.60144622e-08 1.19975280e+00 1.19975013e+00 0.00000000e+00
|
||||
1.60433867e-08 1.20002187e+00 1.20001927e+00 0.00000000e+00
|
||||
1.61010013e-08 1.20013048e+00 1.20011509e+00 0.00000000e+00
|
||||
1.62162306e-08 1.20131079e+00 1.20118574e+00 0.00000000e+00
|
||||
1.64466893e-08 1.20480127e+00 1.20441790e+00 0.00000000e+00
|
||||
1.67444287e-08 1.19784071e+00 1.20124173e+00 0.00000000e+00
|
||||
1.70395141e-08 1.08592108e+00 1.19055669e+00 0.00000000e+00
|
||||
1.73601861e-08 3.96151027e-01 1.19334494e+00 0.00000000e+00
|
||||
1.76192342e-08 2.58378789e-03 1.20188906e+00 0.00000000e+00
|
||||
1.78775789e-08 6.35284537e-03 1.19882484e+00 0.00000000e+00
|
||||
1.80632531e-08 -2.09059843e-03 1.20032764e+00 0.00000000e+00
|
||||
1.82658436e-08 2.80281594e-03 1.19997724e+00 0.00000000e+00
|
||||
1.86658436e-08 -2.18725683e-03 1.19999307e+00 0.00000000e+00
|
||||
1.90658436e-08 2.02458540e-03 1.20009543e+00 0.00000000e+00
|
||||
1.94658436e-08 -1.86226069e-03 1.19984326e+00 0.00000000e+00
|
||||
1.98658436e-08 1.72375997e-03 1.20019773e+00 0.00000000e+00
|
||||
2.00000000e-08 -1.35911184e-03 1.19974861e+00 0.00000000e+00
|
||||
|
|
@ -0,0 +1,250 @@
|
|||
time outm clk
|
||||
0.00000000e+00 1.13460680e+00 0.00000000e+00
|
||||
1.00000000e-12 1.13460771e+00 2.40000000e-03
|
||||
2.00000000e-12 1.13461128e+00 4.80000000e-03
|
||||
4.00000000e-12 1.13462119e+00 9.60000000e-03
|
||||
8.00000000e-12 1.13465486e+00 1.92000000e-02
|
||||
1.60000000e-11 1.13475014e+00 3.84000000e-02
|
||||
3.20000000e-11 1.13478626e+00 7.68000000e-02
|
||||
6.40000000e-11 1.13259388e+00 1.53600000e-01
|
||||
1.28000000e-10 1.11596005e+00 3.07200000e-01
|
||||
2.56000000e-10 1.11865563e+00 6.14400000e-01
|
||||
3.76822535e-10 1.16701239e+00 9.04374085e-01
|
||||
4.83277072e-10 1.20242588e+00 1.15986497e+00
|
||||
5.00000000e-10 1.20388416e+00 1.20000000e+00
|
||||
5.07876558e-10 1.20295405e+00 1.20000000e+00
|
||||
5.23629674e-10 1.20153280e+00 1.20000000e+00
|
||||
5.55135906e-10 1.20033206e+00 1.20000000e+00
|
||||
6.18148369e-10 1.19992220e+00 1.20000000e+00
|
||||
7.44173297e-10 1.20000268e+00 1.20000000e+00
|
||||
9.44173297e-10 1.19998778e+00 1.20000000e+00
|
||||
1.14417330e-09 1.20000222e+00 1.20000000e+00
|
||||
1.34417330e-09 1.19999628e+00 1.20000000e+00
|
||||
1.54417330e-09 1.20000021e+00 1.20000000e+00
|
||||
1.74417330e-09 1.19999870e+00 1.20000000e+00
|
||||
1.94417330e-09 1.19999957e+00 1.20000000e+00
|
||||
2.14417330e-09 1.19999948e+00 1.20000000e+00
|
||||
2.34417330e-09 1.19999943e+00 1.20000000e+00
|
||||
2.54417330e-09 1.19999973e+00 1.20000000e+00
|
||||
2.74417330e-09 1.19999943e+00 1.20000000e+00
|
||||
2.94417330e-09 1.19999982e+00 1.20000000e+00
|
||||
3.14417330e-09 1.19999947e+00 1.20000000e+00
|
||||
3.34417330e-09 1.19999985e+00 1.20000000e+00
|
||||
3.54417330e-09 1.19999951e+00 1.20000000e+00
|
||||
3.74417330e-09 1.19999986e+00 1.20000000e+00
|
||||
3.94417330e-09 1.19999954e+00 1.20000000e+00
|
||||
4.14417330e-09 1.19999986e+00 1.20000000e+00
|
||||
4.34417330e-09 1.19999957e+00 1.20000000e+00
|
||||
4.54417330e-09 1.19999986e+00 1.20000000e+00
|
||||
4.74417330e-09 1.19999958e+00 1.20000000e+00
|
||||
4.94417330e-09 1.19999987e+00 1.20000000e+00
|
||||
5.14417330e-09 1.19999960e+00 1.20000000e+00
|
||||
5.34417330e-09 1.19999987e+00 1.20000000e+00
|
||||
5.50000000e-09 1.19999960e+00 1.20000000e+00
|
||||
5.52000000e-09 1.19980384e+00 1.15200000e+00
|
||||
5.56000000e-09 1.19981183e+00 1.05600000e+00
|
||||
5.64000000e-09 1.20000803e+00 8.64000000e-01
|
||||
5.76884458e-09 1.19970684e+00 5.54772999e-01
|
||||
5.90379553e-09 1.19952413e+00 2.30890723e-01
|
||||
6.00000000e-09 1.19945222e+00 0.00000000e+00
|
||||
6.02000000e-09 1.19970811e+00 0.00000000e+00
|
||||
6.06000000e-09 1.20000156e+00 0.00000000e+00
|
||||
6.14000000e-09 1.20029622e+00 0.00000000e+00
|
||||
6.30000000e-09 1.20231538e+00 0.00000000e+00
|
||||
6.50000000e-09 1.20468671e+00 0.00000000e+00
|
||||
6.70000000e-09 1.20326434e+00 0.00000000e+00
|
||||
6.90000000e-09 1.19042666e+00 0.00000000e+00
|
||||
7.10000000e-09 1.18632136e+00 0.00000000e+00
|
||||
7.30000000e-09 1.19271020e+00 0.00000000e+00
|
||||
7.50000000e-09 1.19904325e+00 0.00000000e+00
|
||||
7.65493241e-09 1.20061817e+00 0.00000000e+00
|
||||
7.80772377e-09 1.19933405e+00 0.00000000e+00
|
||||
7.90501491e-09 1.20012327e+00 0.00000000e+00
|
||||
8.02604495e-09 1.19982687e+00 0.00000000e+00
|
||||
8.22604495e-09 1.20007585e+00 0.00000000e+00
|
||||
8.42604495e-09 1.20000138e+00 0.00000000e+00
|
||||
8.62604495e-09 1.20006105e+00 0.00000000e+00
|
||||
8.82604495e-09 1.19997561e+00 0.00000000e+00
|
||||
9.02604495e-09 1.20002257e+00 0.00000000e+00
|
||||
9.22604495e-09 1.19998556e+00 0.00000000e+00
|
||||
9.42604495e-09 1.20000998e+00 0.00000000e+00
|
||||
9.62604495e-09 1.19999249e+00 0.00000000e+00
|
||||
9.82604495e-09 1.20000481e+00 0.00000000e+00
|
||||
1.00000000e-08 1.19999605e+00 0.00000000e+00
|
||||
time outm clk
|
||||
0.00000000e+00 1.13460680e+00 0.00000000e+00
|
||||
1.00000000e-12 1.13460771e+00 2.40000000e-03
|
||||
2.00000000e-12 1.13461128e+00 4.80000000e-03
|
||||
4.00000000e-12 1.13462119e+00 9.60000000e-03
|
||||
8.00000000e-12 1.13465486e+00 1.92000000e-02
|
||||
1.60000000e-11 1.13475014e+00 3.84000000e-02
|
||||
3.20000000e-11 1.13478626e+00 7.68000000e-02
|
||||
6.40000000e-11 1.13259388e+00 1.53600000e-01
|
||||
1.28000000e-10 1.11596005e+00 3.07200000e-01
|
||||
2.56000000e-10 1.11865563e+00 6.14400000e-01
|
||||
3.76822535e-10 1.16701239e+00 9.04374085e-01
|
||||
4.83277072e-10 1.20242588e+00 1.15986497e+00
|
||||
5.00000000e-10 1.20388416e+00 1.20000000e+00
|
||||
5.07876558e-10 1.20295405e+00 1.20000000e+00
|
||||
5.23629674e-10 1.20153280e+00 1.20000000e+00
|
||||
5.55135906e-10 1.20033206e+00 1.20000000e+00
|
||||
6.18148369e-10 1.19992220e+00 1.20000000e+00
|
||||
7.44173297e-10 1.20000268e+00 1.20000000e+00
|
||||
9.44173297e-10 1.19998778e+00 1.20000000e+00
|
||||
1.14417330e-09 1.20000222e+00 1.20000000e+00
|
||||
1.34417330e-09 1.19999628e+00 1.20000000e+00
|
||||
1.54417330e-09 1.20000021e+00 1.20000000e+00
|
||||
1.74417330e-09 1.19999870e+00 1.20000000e+00
|
||||
1.94417330e-09 1.19999957e+00 1.20000000e+00
|
||||
2.14417330e-09 1.19999948e+00 1.20000000e+00
|
||||
2.34417330e-09 1.19999943e+00 1.20000000e+00
|
||||
2.54417330e-09 1.19999973e+00 1.20000000e+00
|
||||
2.74417330e-09 1.19999943e+00 1.20000000e+00
|
||||
2.94417330e-09 1.19999982e+00 1.20000000e+00
|
||||
3.14417330e-09 1.19999947e+00 1.20000000e+00
|
||||
3.34417330e-09 1.19999985e+00 1.20000000e+00
|
||||
3.54417330e-09 1.19999951e+00 1.20000000e+00
|
||||
3.74417330e-09 1.19999986e+00 1.20000000e+00
|
||||
3.94417330e-09 1.19999954e+00 1.20000000e+00
|
||||
4.14417330e-09 1.19999986e+00 1.20000000e+00
|
||||
4.34417330e-09 1.19999957e+00 1.20000000e+00
|
||||
4.54417330e-09 1.19999986e+00 1.20000000e+00
|
||||
4.74417330e-09 1.19999958e+00 1.20000000e+00
|
||||
4.94417330e-09 1.19999987e+00 1.20000000e+00
|
||||
5.14417330e-09 1.19999960e+00 1.20000000e+00
|
||||
5.34417330e-09 1.19999987e+00 1.20000000e+00
|
||||
5.50000000e-09 1.19999960e+00 1.20000000e+00
|
||||
5.52000000e-09 1.19980384e+00 1.15200000e+00
|
||||
5.56000000e-09 1.19981183e+00 1.05600000e+00
|
||||
5.64000000e-09 1.20000803e+00 8.64000000e-01
|
||||
5.76884458e-09 1.19970684e+00 5.54772999e-01
|
||||
5.90379553e-09 1.19952413e+00 2.30890723e-01
|
||||
6.00000000e-09 1.19945222e+00 0.00000000e+00
|
||||
6.02000000e-09 1.19970811e+00 0.00000000e+00
|
||||
6.06000000e-09 1.20000156e+00 0.00000000e+00
|
||||
6.14000000e-09 1.20029622e+00 0.00000000e+00
|
||||
6.30000000e-09 1.20231538e+00 0.00000000e+00
|
||||
6.50000000e-09 1.20468671e+00 0.00000000e+00
|
||||
6.70000000e-09 1.20326434e+00 0.00000000e+00
|
||||
6.90000000e-09 1.19042666e+00 0.00000000e+00
|
||||
7.10000000e-09 1.18632136e+00 0.00000000e+00
|
||||
7.30000000e-09 1.19271020e+00 0.00000000e+00
|
||||
7.50000000e-09 1.19904325e+00 0.00000000e+00
|
||||
7.65493241e-09 1.20061817e+00 0.00000000e+00
|
||||
7.80772377e-09 1.19933405e+00 0.00000000e+00
|
||||
7.90501491e-09 1.20012327e+00 0.00000000e+00
|
||||
8.02604495e-09 1.19982687e+00 0.00000000e+00
|
||||
8.22604495e-09 1.20007585e+00 0.00000000e+00
|
||||
8.42604495e-09 1.20000138e+00 0.00000000e+00
|
||||
8.62604495e-09 1.20006105e+00 0.00000000e+00
|
||||
8.82604495e-09 1.19997561e+00 0.00000000e+00
|
||||
9.02604495e-09 1.20002257e+00 0.00000000e+00
|
||||
9.22604495e-09 1.19998556e+00 0.00000000e+00
|
||||
9.42604495e-09 1.20000998e+00 0.00000000e+00
|
||||
9.62604495e-09 1.19999249e+00 0.00000000e+00
|
||||
9.82604495e-09 1.20000481e+00 0.00000000e+00
|
||||
1.00000000e-08 1.19999605e+00 0.00000000e+00
|
||||
time outm clk
|
||||
0.00000000e+00 1.13460680e+00 0.00000000e+00
|
||||
2.00000000e-12 1.13461258e+00 4.80000000e-03
|
||||
4.00000000e-12 1.13462457e+00 9.60000000e-03
|
||||
8.00000000e-12 1.13465677e+00 1.92000000e-02
|
||||
1.60000000e-11 1.13474855e+00 3.84000000e-02
|
||||
3.20000000e-11 1.13477855e+00 7.68000000e-02
|
||||
6.40000000e-11 1.13258199e+00 1.53600000e-01
|
||||
1.28000000e-10 1.11595491e+00 3.07200000e-01
|
||||
2.56000000e-10 1.11866079e+00 6.14400000e-01
|
||||
3.76808512e-10 1.16701013e+00 9.04340429e-01
|
||||
4.83251602e-10 1.20242319e+00 1.15980385e+00
|
||||
5.00000000e-10 1.20388245e+00 1.20000000e+00
|
||||
5.07883968e-10 1.20295113e+00 1.20000000e+00
|
||||
5.23651905e-10 1.20152914e+00 1.20000000e+00
|
||||
5.55187778e-10 1.20033030e+00 1.20000000e+00
|
||||
6.18259524e-10 1.19992223e+00 1.20000000e+00
|
||||
7.44403016e-10 1.20000272e+00 1.20000000e+00
|
||||
9.78769166e-10 1.19998787e+00 1.20000000e+00
|
||||
1.37876917e-09 1.20000544e+00 1.20000000e+00
|
||||
1.77876917e-09 1.19999437e+00 1.20000000e+00
|
||||
2.17876917e-09 1.20000315e+00 1.20000000e+00
|
||||
2.57876917e-09 1.19999691e+00 1.20000000e+00
|
||||
2.97876917e-09 1.20000159e+00 1.20000000e+00
|
||||
3.37876917e-09 1.19999828e+00 1.20000000e+00
|
||||
3.77876917e-09 1.20000067e+00 1.20000000e+00
|
||||
4.17876917e-09 1.19999905e+00 1.20000000e+00
|
||||
4.57876917e-09 1.20000015e+00 1.20000000e+00
|
||||
4.97876917e-09 1.19999947e+00 1.20000000e+00
|
||||
5.37876917e-09 1.19999986e+00 1.20000000e+00
|
||||
5.50000000e-09 1.19999985e+00 1.20000000e+00
|
||||
5.51402170e-09 1.19980596e+00 1.16634793e+00
|
||||
5.54206509e-09 1.19975701e+00 1.09904379e+00
|
||||
5.59815187e-09 1.19998586e+00 9.64435501e-01
|
||||
5.71032545e-09 1.19985832e+00 6.95218930e-01
|
||||
5.85091095e-09 1.19943491e+00 3.57813716e-01
|
||||
6.00000000e-09 1.19956364e+00 0.00000000e+00
|
||||
6.01856630e-09 1.19976093e+00 0.00000000e+00
|
||||
6.05569890e-09 1.19999295e+00 0.00000000e+00
|
||||
6.12996410e-09 1.20022351e+00 0.00000000e+00
|
||||
6.27849451e-09 1.20195768e+00 0.00000000e+00
|
||||
6.47087106e-09 1.20444391e+00 0.00000000e+00
|
||||
6.75625938e-09 1.20100855e+00 0.00000000e+00
|
||||
7.07485490e-09 1.19248386e+00 0.00000000e+00
|
||||
7.37634075e-09 1.19451900e+00 0.00000000e+00
|
||||
7.65389623e-09 1.20178366e+00 0.00000000e+00
|
||||
7.79631038e-09 1.19975708e+00 0.00000000e+00
|
||||
7.93174077e-09 1.19961573e+00 0.00000000e+00
|
||||
8.07641045e-09 1.20028716e+00 0.00000000e+00
|
||||
8.35378250e-09 1.19975731e+00 0.00000000e+00
|
||||
8.75378250e-09 1.20028641e+00 0.00000000e+00
|
||||
9.15378250e-09 1.19973807e+00 0.00000000e+00
|
||||
9.55378250e-09 1.20023353e+00 0.00000000e+00
|
||||
9.95378250e-09 1.19979028e+00 0.00000000e+00
|
||||
1.00000000e-08 1.20006410e+00 0.00000000e+00
|
||||
1.00128095e-08 1.20019100e+00 3.07428584e-02
|
||||
1.00384286e-08 1.20053849e+00 9.22285752e-02
|
||||
1.00896667e-08 1.20075971e+00 2.15200009e-01
|
||||
1.01921429e-08 1.19990063e+00 4.61142876e-01
|
||||
1.03104850e-08 1.19907354e+00 7.45163906e-01
|
||||
1.04201716e-08 1.19938771e+00 1.00841187e+00
|
||||
1.05000000e-08 1.20062357e+00 1.20000000e+00
|
||||
1.05111383e-08 1.20024712e+00 1.20000000e+00
|
||||
1.05334150e-08 1.19978649e+00 1.20000000e+00
|
||||
1.05779683e-08 1.19983581e+00 1.20000000e+00
|
||||
1.06670750e-08 1.20002927e+00 1.20000000e+00
|
||||
1.07562778e-08 1.19995535e+00 1.20000000e+00
|
||||
1.09266868e-08 1.20001965e+00 1.20000000e+00
|
||||
1.12675048e-08 1.19997756e+00 1.20000000e+00
|
||||
1.16675048e-08 1.20001783e+00 1.20000000e+00
|
||||
1.20675048e-08 1.19998285e+00 1.20000000e+00
|
||||
1.24675048e-08 1.20001439e+00 1.20000000e+00
|
||||
1.28675048e-08 1.19998640e+00 1.20000000e+00
|
||||
1.32675048e-08 1.20001149e+00 1.20000000e+00
|
||||
1.36675048e-08 1.19998912e+00 1.20000000e+00
|
||||
1.40675048e-08 1.20000917e+00 1.20000000e+00
|
||||
1.44675048e-08 1.19999125e+00 1.20000000e+00
|
||||
1.48675048e-08 1.20000732e+00 1.20000000e+00
|
||||
1.52675048e-08 1.19999293e+00 1.20000000e+00
|
||||
1.55000000e-08 1.20000538e+00 1.20000000e+00
|
||||
1.55236992e-08 1.19980828e+00 1.14312183e+00
|
||||
1.55710977e-08 1.19983848e+00 1.02936548e+00
|
||||
1.56658947e-08 1.19999971e+00 8.01852785e-01
|
||||
1.58113898e-08 1.19952095e+00 4.52664417e-01
|
||||
1.59567417e-08 1.19965302e+00 1.03819807e-01
|
||||
1.60000000e-08 1.19948418e+00 0.00000000e+00
|
||||
1.60163473e-08 1.19969644e+00 0.00000000e+00
|
||||
1.60490418e-08 1.19995920e+00 0.00000000e+00
|
||||
1.61144310e-08 1.20015470e+00 0.00000000e+00
|
||||
1.62452092e-08 1.20147670e+00 0.00000000e+00
|
||||
1.64778813e-08 1.20456734e+00 0.00000000e+00
|
||||
1.67714524e-08 1.19995925e+00 0.00000000e+00
|
||||
1.70673622e-08 1.19151351e+00 0.00000000e+00
|
||||
1.73833528e-08 1.19425976e+00 0.00000000e+00
|
||||
1.76623055e-08 1.20181999e+00 0.00000000e+00
|
||||
1.78042607e-08 1.19979434e+00 0.00000000e+00
|
||||
1.79407677e-08 1.19957885e+00 0.00000000e+00
|
||||
1.80865069e-08 1.20031519e+00 0.00000000e+00
|
||||
1.83563896e-08 1.19973370e+00 0.00000000e+00
|
||||
1.87563896e-08 1.20030722e+00 0.00000000e+00
|
||||
1.91563896e-08 1.19972120e+00 0.00000000e+00
|
||||
1.95563896e-08 1.20024744e+00 0.00000000e+00
|
||||
1.99563896e-08 1.19977850e+00 0.00000000e+00
|
||||
2.00000000e-08 1.20006051e+00 0.00000000e+00
|
||||
Binary file not shown.
|
|
@ -27,61 +27,61 @@ node "a_1245_3300#" 64 1432.03 1245 3300 pdif 0 0 0 0 646952 33468 462832 13040
|
|||
node "w_805_2869#" 1242572 5.18828 805 2869 pw 182658 17438 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
node "vdd" 58 17973.9 127 335 m6 0 0 0 0 2395440 52908 883744 19072 642880 13104 642880 13104 1340864 17360 6062752 36968 0 0
|
||||
substrate "gnd" 0 0 -513 -440 m7 0 0 0 0 2036008 30746 224000 4320 224000 4320 224000 4320 654400 6472 1331200 8256 9608000 48040
|
||||
cap "a_944_1911#" "out-" 611.611
|
||||
cap "a_687_2445#" "a_944_1911#" 2249.36
|
||||
cap "V-" "out-" 3.46102
|
||||
cap "out+" "vbias" 0.0904886
|
||||
cap "V-" "a_687_2445#" 785.268
|
||||
cap "clk" "vdd" 2988.42
|
||||
cap "a_687_2445#" "out-" 894.529
|
||||
cap "a_1245_3300#" "out+" 369.238
|
||||
cap "w_805_2869#" "a_1245_3300#" 12.1813
|
||||
cap "vdd" "vbias" 2839.64
|
||||
cap "clk" "a_944_1911#" 247.428
|
||||
cap "a_1245_3300#" "vdd" 2550.93
|
||||
cap "V+" "a_1245_3300#" 765.727
|
||||
cap "clk" "out-" 17.6324
|
||||
cap "a_1752_817#" "vdd" 7111.46
|
||||
cap "a_944_1911#" "vbias" 3.01856
|
||||
cap "clk" "a_687_2445#" 238.332
|
||||
cap "w_805_2869#" "out+" 7.86123
|
||||
cap "out-" "vbias" 0.0904886
|
||||
cap "a_1245_3300#" "a_944_1911#" 8045.22
|
||||
cap "a_944_1911#" "a_1752_817#" 55.7997
|
||||
cap "a_687_2445#" "vbias" 4.05638
|
||||
cap "V-" "a_1245_3300#" 941.789
|
||||
cap "a_1245_3300#" "out-" 367.947
|
||||
cap "out+" "vdd" 1847.73
|
||||
cap "V+" "out+" 3.75851
|
||||
cap "w_805_2869#" "vdd" 153.703
|
||||
cap "w_805_2869#" "V+" 10.369
|
||||
cap "a_1245_3300#" "a_687_2445#" 11353.4
|
||||
cap "a_687_2445#" "a_1752_817#" 45.3073
|
||||
cap "a_944_1911#" "out+" 800.279
|
||||
cap "w_805_2869#" "a_944_1911#" 4.42903
|
||||
cap "V+" "vdd" 4082.05
|
||||
cap "clk" "vbias" 198.783
|
||||
cap "V-" "out+" 9.67399
|
||||
cap "w_805_2869#" "V-" 10.604
|
||||
cap "out+" "out-" 93.2996
|
||||
cap "w_805_2869#" "out-" 7.86123
|
||||
cap "a_1245_3300#" "clk" 447.822
|
||||
cap "clk" "a_1752_817#" 502.499
|
||||
cap "a_944_1911#" "vdd" 1108.62
|
||||
cap "a_687_2445#" "out+" 692.864
|
||||
cap "V+" "a_944_1911#" 1081.78
|
||||
cap "a_944_1911#" "a_1245_3300#" 8045.22
|
||||
cap "out-" "a_687_2445#" 894.529
|
||||
cap "w_805_2869#" "a_687_2445#" 3.06666
|
||||
cap "V-" "vdd" 4061.21
|
||||
cap "V+" "V-" 1610.45
|
||||
cap "a_1245_3300#" "vbias" 2.78546
|
||||
cap "out-" "vdd" 1843.04
|
||||
cap "V+" "out-" 7.34235
|
||||
cap "a_1752_817#" "vbias" 2289.93
|
||||
cap "a_687_2445#" "vdd" 1311.56
|
||||
cap "vdd" "out-" 1843.04
|
||||
cap "a_1752_817#" "a_687_2445#" 45.3073
|
||||
cap "w_805_2869#" "vdd" 153.703
|
||||
cap "vbias" "a_1245_3300#" 2.78546
|
||||
cap "out-" "V-" 3.46102
|
||||
cap "a_944_1911#" "a_687_2445#" 2249.36
|
||||
cap "a_1752_817#" "vdd" 7111.46
|
||||
cap "w_805_2869#" "V-" 10.604
|
||||
cap "V+" "out+" 3.75851
|
||||
cap "out+" "a_1245_3300#" 369.238
|
||||
cap "clk" "out-" 17.6324
|
||||
cap "vdd" "a_944_1911#" 1108.62
|
||||
cap "vbias" "a_687_2445#" 4.05638
|
||||
cap "a_1752_817#" "clk" 502.499
|
||||
cap "a_944_1911#" "V-" 469.011
|
||||
cap "vbias" "vdd" 2839.64
|
||||
cap "w_805_2869#" "out-" 7.86123
|
||||
cap "clk" "a_944_1911#" 247.428
|
||||
cap "out+" "a_687_2445#" 692.864
|
||||
cap "V+" "a_1245_3300#" 765.727
|
||||
cap "out+" "vdd" 1847.73
|
||||
cap "a_944_1911#" "out-" 611.611
|
||||
cap "vbias" "clk" 198.783
|
||||
cap "w_805_2869#" "a_944_1911#" 4.42903
|
||||
cap "out+" "V-" 9.67399
|
||||
cap "V+" "a_687_2445#" 130.255
|
||||
cap "V-" "a_944_1911#" 469.011
|
||||
cap "a_1245_3300#" "a_1752_817#" 3765.33
|
||||
cap "clk" "out+" 16.9002
|
||||
cap "a_687_2445#" "a_1245_3300#" 11353.4
|
||||
cap "a_1752_817#" "a_944_1911#" 55.7997
|
||||
cap "vbias" "out-" 0.0904886
|
||||
cap "out+" "clk" 16.9002
|
||||
cap "vdd" "a_1245_3300#" 2550.93
|
||||
cap "V+" "vdd" 4082.05
|
||||
cap "vbias" "a_1752_817#" 2289.93
|
||||
cap "out+" "out-" 93.2996
|
||||
cap "V-" "a_1245_3300#" 941.789
|
||||
cap "V+" "V-" 1610.45
|
||||
cap "out+" "w_805_2869#" 7.86123
|
||||
cap "vbias" "a_944_1911#" 3.01856
|
||||
cap "clk" "a_1245_3300#" 447.822
|
||||
cap "vdd" "a_687_2445#" 1311.56
|
||||
cap "out-" "a_1245_3300#" 367.947
|
||||
cap "out+" "a_944_1911#" 800.279
|
||||
cap "V+" "out-" 7.34235
|
||||
cap "V-" "a_687_2445#" 785.268
|
||||
cap "V+" "w_805_2869#" 10.369
|
||||
cap "w_805_2869#" "a_1245_3300#" 12.1813
|
||||
cap "clk" "a_687_2445#" 238.332
|
||||
cap "vdd" "V-" 4061.21
|
||||
cap "a_1752_817#" "a_1245_3300#" 3765.33
|
||||
cap "vbias" "out+" 0.0904886
|
||||
device msubckt sg13_lv_nmos 3710 1075 3711 1076 l=40 w=800 "gnd" "gnd" 80 0 "gnd" 0 0 "gnd" 1600 30400,876
|
||||
device msubckt sg13_lv_nmos 3594 1075 3595 1076 l=40 w=800 "gnd" "clk" 80 0 "a_944_1911#" 800 57600,944 "gnd" 800 30400,876
|
||||
device msubckt sg13_lv_nmos 3410 1075 3411 1076 l=40 w=800 "gnd" "a_687_2445#" 80 0 "gnd" 800 30400,876 "a_944_1911#" 800 57600,944
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Generated by kpex 0.2.7
|
||||
crashbackups stop
|
||||
drc off
|
||||
gds read /home/pedersen/projects/IHP-AnalogAcademy/modules/module_3_8_bit_SAR_ADC/part_5_layout/comparator/layout/DIFF_COMPARATOR.gds
|
||||
gds read /home/pedersen/projects/IHP-AnalogAcademy/modules/module_3_8_bit_SAR_ADC/part_5_analog_layout/comparator/layout/DIFF_COMPARATOR.gds
|
||||
load DIFF_COMPARATOR
|
||||
select top cell
|
||||
flatten DIFF_COMPARATOR_flat
|
||||
|
|
@ -9,7 +9,7 @@ load DIFF_COMPARATOR_flat
|
|||
cellname delete DIFF_COMPARATOR -noprompt
|
||||
cellname rename DIFF_COMPARATOR_flat DIFF_COMPARATOR
|
||||
select top cell
|
||||
extract path /home/pedersen/projects/IHP-AnalogAcademy/modules/module_3_8_bit_SAR_ADC/part_5_layout/comparator/pex/pex_output/DIFF_COMPARATOR__DIFF_COMPARATOR/magic_RC
|
||||
extract path /home/pedersen/projects/IHP-AnalogAcademy/modules/module_3_8_bit_SAR_ADC/part_5_analog_layout/comparator/pex/pex_output/DIFF_COMPARATOR__DIFF_COMPARATOR/magic_RC
|
||||
extract do resistance
|
||||
extract all
|
||||
ext2sim labels on
|
||||
|
|
@ -23,5 +23,5 @@ ext2spice rthresh 50
|
|||
ext2spice extresist on
|
||||
ext2spice subcircuits top on
|
||||
ext2spice format ngspice
|
||||
ext2spice -p /home/pedersen/projects/IHP-AnalogAcademy/modules/module_3_8_bit_SAR_ADC/part_5_layout/comparator/pex/pex_output/DIFF_COMPARATOR__DIFF_COMPARATOR/magic_RC -o /home/pedersen/projects/IHP-AnalogAcademy/modules/module_3_8_bit_SAR_ADC/part_5_layout/comparator/pex/pex_output/DIFF_COMPARATOR__DIFF_COMPARATOR/magic_RC/DIFF_COMPARATOR.pex.spice
|
||||
ext2spice -p /home/pedersen/projects/IHP-AnalogAcademy/modules/module_3_8_bit_SAR_ADC/part_5_analog_layout/comparator/pex/pex_output/DIFF_COMPARATOR__DIFF_COMPARATOR/magic_RC -o /home/pedersen/projects/IHP-AnalogAcademy/modules/module_3_8_bit_SAR_ADC/part_5_analog_layout/comparator/pex/pex_output/DIFF_COMPARATOR__DIFF_COMPARATOR/magic_RC/DIFF_COMPARATOR.pex.spice
|
||||
quit -noprompt
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ kpex \
|
|||
--magic_merge conservative \
|
||||
--out_dir ./pex_output
|
||||
|
||||
# Find the generated spice file (assuming only one)
|
||||
# Find the generated spice file
|
||||
spice_location=$(find ./pex_output -type f -name "*.spice" ! -name "*_dummy_schematic.spice" | head -n 1)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -21,43 +21,43 @@ X9 gnd clk a_944_1911# gnd sg13_lv_nmos ad=0.76p pd=4.38u as=1.44p ps=4.72u w=4u
|
|||
X10 out- a_687_2445# vdd vdd sg13_lv_pmos ad=1.36p pd=8.68u as=0.76p ps=4.38u w=4u l=0.2u M=2
|
||||
X11 out+ a_944_1911# gnd gnd sg13_lv_nmos ad=0.68p pd=4.68u as=0.38p ps=2.38u w=2u l=0.2u M=2
|
||||
X12 a_1245_3300# clk a_1752_817# vdd sg13_lv_pmos ad=1.53p pd=9.68u as=0.855p ps=4.88u w=4.5u l=0.3u M=4
|
||||
C0 V+ vdd 4.08205f
|
||||
C1 V- vdd 4.06121f
|
||||
C2 a_1245_3300# V+ 0.76573f
|
||||
C3 vdd a_1752_817# 7.11146f
|
||||
C4 a_1245_3300# V- 0.94179f
|
||||
C5 vdd a_944_1911# 1.10862f
|
||||
C6 a_1245_3300# a_1752_817# 3.76533f
|
||||
C7 a_1245_3300# a_944_1911# 8.04522f
|
||||
C8 vdd out+ 1.84773f
|
||||
C9 vdd out- 1.84304f
|
||||
C10 V- V+ 1.61045f
|
||||
C11 vdd vbias 2.83964f
|
||||
C12 vdd clk 2.98842f
|
||||
C13 a_1245_3300# out+ 0.36924f
|
||||
C14 a_687_2445# vdd 1.31156f
|
||||
C15 a_1245_3300# out- 0.36795f
|
||||
C16 V+ a_944_1911# 1.08178f
|
||||
C17 a_1245_3300# clk 0.44782f
|
||||
C18 V- a_944_1911# 0.46901f
|
||||
C19 a_1245_3300# a_687_2445# 11.3534f
|
||||
C20 a_944_1911# a_1752_817# 0.0558f
|
||||
C21 a_687_2445# V+ 0.13025f
|
||||
C22 a_687_2445# V- 0.78527f
|
||||
C23 out+ a_944_1911# 0.80028f
|
||||
C24 out- a_944_1911# 0.61161f
|
||||
C25 vbias a_1752_817# 2.28993f
|
||||
C26 clk a_1752_817# 0.5025f
|
||||
C27 clk a_944_1911# 0.24743f
|
||||
C28 a_687_2445# a_1752_817# 0.04531f
|
||||
C29 a_687_2445# a_944_1911# 2.24936f
|
||||
C30 out- out+ 0.0933f
|
||||
C31 a_687_2445# out+ 0.69286f
|
||||
C32 clk vbias 0.19878f
|
||||
C33 a_687_2445# out- 0.89453f
|
||||
C34 a_687_2445# clk 0.23833f
|
||||
C35 a_1245_3300# vdd 2.55093f
|
||||
C36 vdd w_805_2869# 0.1537f
|
||||
C0 a_944_1911# V- 0.46901f
|
||||
C1 a_1245_3300# vdd 2.55093f
|
||||
C2 a_687_2445# clk 0.23833f
|
||||
C3 vdd out+ 1.84773f
|
||||
C4 a_1245_3300# out+ 0.36924f
|
||||
C5 vdd out- 1.84304f
|
||||
C6 a_1245_3300# out- 0.36795f
|
||||
C7 a_687_2445# V+ 0.13025f
|
||||
C8 clk vbias 0.19878f
|
||||
C9 a_687_2445# V- 0.78527f
|
||||
C10 out- out+ 0.0933f
|
||||
C11 a_1752_817# vdd 7.11146f
|
||||
C12 a_1245_3300# a_1752_817# 3.76533f
|
||||
C13 a_944_1911# vdd 1.10862f
|
||||
C14 a_1245_3300# a_944_1911# 8.04522f
|
||||
C15 a_944_1911# out+ 0.80028f
|
||||
C16 a_944_1911# out- 0.61161f
|
||||
C17 V- V+ 1.61045f
|
||||
C18 a_944_1911# a_1752_817# 0.0558f
|
||||
C19 a_687_2445# vdd 1.31156f
|
||||
C20 a_1245_3300# a_687_2445# 11.3534f
|
||||
C21 a_687_2445# out+ 0.69286f
|
||||
C22 a_687_2445# out- 0.89453f
|
||||
C23 vdd vbias 2.83964f
|
||||
C24 vdd clk 2.98842f
|
||||
C25 a_1245_3300# clk 0.44782f
|
||||
C26 a_687_2445# a_1752_817# 0.04531f
|
||||
C27 a_687_2445# a_944_1911# 2.24936f
|
||||
C28 vdd V+ 4.08205f
|
||||
C29 a_1245_3300# V+ 0.76573f
|
||||
C30 vdd V- 4.06121f
|
||||
C31 a_1245_3300# V- 0.94179f
|
||||
C32 a_1752_817# vbias 2.28993f
|
||||
C33 w_805_2869# vdd 0.1537f
|
||||
C34 a_1752_817# clk 0.5025f
|
||||
C35 a_944_1911# clk 0.24743f
|
||||
C36 a_944_1911# V+ 1.08178f
|
||||
R0 V+.n6 V+.n0 17.1875
|
||||
R1 V+.n6 V+.n5 16.5321
|
||||
R2 V+.n2 V+.n1 15.8046
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@ S {}
|
|||
E {}
|
||||
B 2 20 -1225 820 -825 {flags=graph
|
||||
y1=0
|
||||
y2=1.3
|
||||
y2=1.2
|
||||
ypos1=0
|
||||
ypos2=2
|
||||
divy=5
|
||||
subdivy=1
|
||||
unity=1
|
||||
x1=4.0396485e-08
|
||||
x1=0
|
||||
|
||||
divx=5
|
||||
subdivx=4
|
||||
|
|
@ -24,7 +24,7 @@ dataset=-1
|
|||
unitx=1
|
||||
logx=0
|
||||
logy=0
|
||||
x2=4.0503685e-08
|
||||
x2=2e-08
|
||||
color=4
|
||||
node=clk}
|
||||
B 2 20 -855 820 -455 {flags=graph
|
||||
|
|
@ -35,7 +35,7 @@ ypos2=2
|
|||
divy=5
|
||||
subdivy=1
|
||||
unity=1
|
||||
x1=4.0396485e-08
|
||||
x1=0
|
||||
|
||||
divx=5
|
||||
subdivx=4
|
||||
|
|
@ -47,7 +47,7 @@ dataset=-1
|
|||
unitx=1
|
||||
logx=0
|
||||
logy=0
|
||||
x2=4.0503685e-08
|
||||
x2=2e-08
|
||||
|
||||
|
||||
color=4
|
||||
|
|
@ -60,7 +60,7 @@ ypos2=2
|
|||
divy=5
|
||||
subdivy=1
|
||||
unity=1
|
||||
x1=4.0396485e-08
|
||||
x1=0
|
||||
|
||||
divx=5
|
||||
subdivx=4
|
||||
|
|
@ -72,7 +72,7 @@ dataset=-1
|
|||
unitx=1
|
||||
logx=0
|
||||
logy=0
|
||||
x2=4.0503685e-08
|
||||
x2=2e-08
|
||||
|
||||
|
||||
color=4
|
||||
|
|
@ -99,10 +99,10 @@ logy=0
|
|||
|
||||
color=4
|
||||
node=outp
|
||||
x2=4.0503685e-08
|
||||
x1=4.0396485e-08
|
||||
hcursor1_y=0.13669334
|
||||
hcursor2_y=1.0706523}
|
||||
x2=2e-08
|
||||
x1=0
|
||||
hcursor2_y=1.0706523
|
||||
hcursor1_y=-0.015633803}
|
||||
B 2 850 -395 1650 5 {flags=graph
|
||||
y1=0.24502661
|
||||
y2=1.4615386
|
||||
|
|
@ -111,7 +111,7 @@ ypos2=2
|
|||
divy=5
|
||||
subdivy=1
|
||||
unity=1
|
||||
x1=4.0396485e-08
|
||||
x1=0
|
||||
|
||||
divx=5
|
||||
subdivx=4
|
||||
|
|
@ -123,7 +123,7 @@ dataset=-1
|
|||
unitx=1
|
||||
logx=0
|
||||
logy=0
|
||||
x2=4.0503685e-08
|
||||
x2=2e-08
|
||||
|
||||
|
||||
color=4
|
||||
|
|
@ -184,12 +184,12 @@ N 80 -300 80 -280 {
|
|||
lab=vinp}
|
||||
N 80 -380 80 -360 {
|
||||
lab=GND}
|
||||
C {devices/code_shown.sym} -1305 -680 0 0 {name=MODEL only_toplevel=false
|
||||
C {devices/code_shown.sym} -1305 -630 0 0 {name=MODEL only_toplevel=false
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib cornerMOSlv.lib mos_tt
|
||||
"}
|
||||
C {devices/code_shown.sym} -1325 -1180 0 0 {name=NGSPICE only_toplevel=false
|
||||
C {devices/code_shown.sym} -1325 -1190 0 0 {name=NGSPICE only_toplevel=false
|
||||
value="
|
||||
.param temp=27
|
||||
.param clock = 100e6 ; 100 MHz clock
|
||||
|
|
@ -206,14 +206,16 @@ set appendwrite
|
|||
|
||||
* Transient analysis
|
||||
.options meas_step_max=1e-10
|
||||
tran 500p 1u
|
||||
tran 500p 20n
|
||||
let vindiff = v(vinp) - v(vbias)
|
||||
let clk = v(clk)
|
||||
let vout = v(outp) - v(outm)
|
||||
|
||||
meas TRAN rise_time TRIG v(outp) VAL=0.12 TD=9n RISE=4 TARG v(outp) VAL=1.08 TD=9n RISE=4
|
||||
meas TRAN fall_time TRIG v(outp) VAL=1.08 TD=9n RISE=4 TARG v(outp) VAL=0.12 TD=9n RISE=4
|
||||
|
||||
meas TRAN rise_time TRIG v(outp) VAL=0.12 TD=0 RISE=1 TARG v(outp) VAL=1.08 TD=0 RISE=1
|
||||
meas TRAN fall_time TRIG v(outp) VAL=1.08 TD=0 FALL=1 TARG v(outp) VAL=0.12 TD=0 FALL=1
|
||||
set wr_singlescale
|
||||
set wr_vecnames
|
||||
wrdata parasitic_rise_time.txt outp outm clk
|
||||
write comparator_tb.raw
|
||||
.endc
|
||||
"}
|
||||
|
|
@ -222,7 +224,7 @@ C {vsource.sym} -540 -130 0 0 {name=V4 value="DC 0.6"}
|
|||
C {gnd.sym} -310 -70 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} -540 -180 2 0 {name=p3 sig_type=std_logic lab=vbias}
|
||||
C {lab_pin.sym} -610 -180 2 0 {name=p4 sig_type=std_logic lab=vdd}
|
||||
C {vsource.sym} -420 -130 0 0 {name=V1 value="PULSE(0 1.2 0 0 0 5N \{period\})"}
|
||||
C {vsource.sym} -420 -130 0 0 {name=V1 value="PULSE(0 1.2 0 10p 10p 5N \{period\})"}
|
||||
C {lab_pin.sym} -420 -180 2 0 {name=p1 sig_type=std_logic lab=clk}
|
||||
C {gnd.sym} -570 -70 0 0 {name=l2 lab=GND}
|
||||
C {vsource.sym} -210 -130 0 0 {name=V2 value="PULSE(595e-3 605e-3 0 tr 1S 1S)"}
|
||||
|
|
@ -309,43 +311,43 @@ X9 gnd clk a_944_1911# gnd sg13_lv_nmos ad=0.76p pd=4.38u as=1.44p ps=4.72u w=4u
|
|||
X10 out- a_687_2445# vdd vdd sg13_lv_pmos ad=1.36p pd=8.68u as=0.76p ps=4.38u w=4u l=0.2u M=2
|
||||
X11 out+ a_944_1911# gnd gnd sg13_lv_nmos ad=0.68p pd=4.68u as=0.38p ps=2.38u w=2u l=0.2u M=2
|
||||
X12 a_1245_3300# clk a_1752_817# vdd sg13_lv_pmos ad=1.53p pd=9.68u as=0.855p ps=4.88u w=4.5u l=0.3u M=4
|
||||
C0 V+ vdd 4.08205f
|
||||
C1 V- vdd 4.06121f
|
||||
C2 a_1245_3300# V+ 0.76573f
|
||||
C3 vdd a_1752_817# 7.11146f
|
||||
C4 a_1245_3300# V- 0.94179f
|
||||
C5 vdd a_944_1911# 1.10862f
|
||||
C6 a_1245_3300# a_1752_817# 3.76533f
|
||||
C7 a_1245_3300# a_944_1911# 8.04522f
|
||||
C8 vdd out+ 1.84773f
|
||||
C9 vdd out- 1.84304f
|
||||
C10 V- V+ 1.61045f
|
||||
C11 vdd vbias 2.83964f
|
||||
C12 vdd clk 2.98842f
|
||||
C13 a_1245_3300# out+ 0.36924f
|
||||
C14 a_687_2445# vdd 1.31156f
|
||||
C15 a_1245_3300# out- 0.36795f
|
||||
C16 V+ a_944_1911# 1.08178f
|
||||
C17 a_1245_3300# clk 0.44782f
|
||||
C18 V- a_944_1911# 0.46901f
|
||||
C19 a_1245_3300# a_687_2445# 11.3534f
|
||||
C20 a_944_1911# a_1752_817# 0.0558f
|
||||
C21 a_687_2445# V+ 0.13025f
|
||||
C22 a_687_2445# V- 0.78527f
|
||||
C23 out+ a_944_1911# 0.80028f
|
||||
C24 out- a_944_1911# 0.61161f
|
||||
C25 vbias a_1752_817# 2.28993f
|
||||
C26 clk a_1752_817# 0.5025f
|
||||
C27 clk a_944_1911# 0.24743f
|
||||
C28 a_687_2445# a_1752_817# 0.04531f
|
||||
C29 a_687_2445# a_944_1911# 2.24936f
|
||||
C30 out- out+ 0.0933f
|
||||
C31 a_687_2445# out+ 0.69286f
|
||||
C32 clk vbias 0.19878f
|
||||
C33 a_687_2445# out- 0.89453f
|
||||
C34 a_687_2445# clk 0.23833f
|
||||
C35 a_1245_3300# vdd 2.55093f
|
||||
C36 vdd w_805_2869# 0.1537f
|
||||
C0 vdd a_944_1911# 1.10862f
|
||||
C1 a_944_1911# out+ 0.80028f
|
||||
C2 a_944_1911# out- 0.61161f
|
||||
C3 a_1245_3300# vdd 2.55093f
|
||||
C4 a_1245_3300# out+ 0.36924f
|
||||
C5 a_1245_3300# out- 0.36795f
|
||||
C6 a_944_1911# V+ 1.08178f
|
||||
C7 vdd out+ 1.84773f
|
||||
C8 vdd out- 1.84304f
|
||||
C9 a_944_1911# V- 0.46901f
|
||||
C10 out- out+ 0.0933f
|
||||
C11 a_687_2445# clk 0.23833f
|
||||
C12 a_687_2445# a_1752_817# 0.04531f
|
||||
C13 a_1245_3300# V+ 0.76573f
|
||||
C14 a_687_2445# a_944_1911# 2.24936f
|
||||
C15 a_1245_3300# V- 0.94179f
|
||||
C16 vdd V+ 4.08205f
|
||||
C17 vdd V- 4.06121f
|
||||
C18 a_1245_3300# a_687_2445# 11.3534f
|
||||
C19 a_687_2445# vdd 1.31156f
|
||||
C20 a_687_2445# out+ 0.69286f
|
||||
C21 a_687_2445# out- 0.89453f
|
||||
C22 clk vbias 0.19878f
|
||||
C23 V- V+ 1.61045f
|
||||
C24 a_1752_817# vbias 2.28993f
|
||||
C25 a_1752_817# clk 0.5025f
|
||||
C26 a_944_1911# clk 0.24743f
|
||||
C27 vdd w_805_2869# 0.1537f
|
||||
C28 a_687_2445# V+ 0.13025f
|
||||
C29 a_944_1911# a_1752_817# 0.0558f
|
||||
C30 a_687_2445# V- 0.78527f
|
||||
C31 a_1245_3300# clk 0.44782f
|
||||
C32 vdd vbias 2.83964f
|
||||
C33 vdd clk 2.98842f
|
||||
C34 a_1245_3300# a_1752_817# 3.76533f
|
||||
C35 a_1245_3300# a_944_1911# 8.04522f
|
||||
C36 vdd a_1752_817# 7.11146f
|
||||
R0 V+.n6 V+.n0 17.1875
|
||||
R1 V+.n6 V+.n5 16.5321
|
||||
R2 V+.n2 V+.n1 15.8046
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata CACE\{simpath\}/CACE\{filename\}_CACE\{N\}.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib CACE\{PDK_ROOT\}/CACE\{PDK\}/libs.tech/ngspice/models/cornerMOSlv.lib mos_CACE\{corner\}
|
||||
|
||||
.include CACE\{DUT_path\}
|
||||
|
||||
.temp CACE\{temperature\}
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=CACE\{vdd\} savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_00/CML_core_tb_0.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp -40
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -3.110742996065e-01
|
||||
1.728000000000e-10 -1.869505717284e-01
|
||||
1.828000000000e-10 -3.563037101706e-02
|
||||
1.928000000000e-10 1.056708524540e-01
|
||||
2.028000000000e-10 2.100393804445e-01
|
||||
2.128000000000e-10 2.784249297688e-01
|
||||
2.228000000000e-10 3.224310579067e-01
|
||||
2.328000000000e-10 3.548600651170e-01
|
||||
2.428000000000e-10 3.792482005271e-01
|
||||
2.528000000000e-10 3.740820324036e-01
|
||||
2.628000000000e-10 3.079440308227e-01
|
||||
2.728000000000e-10 1.813826171807e-01
|
||||
2.828000000000e-10 2.923027813912e-02
|
||||
2.928000000000e-10 -1.118282325615e-01
|
||||
3.028000000000e-10 -2.157337068367e-01
|
||||
3.128000000000e-10 -2.829033176767e-01
|
||||
3.228000000000e-10 -3.260714502323e-01
|
||||
3.328000000000e-10 -3.577361248183e-01
|
||||
3.428000000000e-10 -3.819104006606e-01
|
||||
3.528000000000e-10 -3.764730474160e-01
|
||||
3.628000000000e-10 -3.102968359246e-01
|
||||
3.728000000000e-10 -1.832608913655e-01
|
||||
3.828000000000e-10 -3.084931437320e-02
|
||||
3.928000000000e-10 1.106163095990e-01
|
||||
4.028000000000e-10 2.145714971977e-01
|
||||
4.128000000000e-10 2.819937231053e-01
|
||||
4.228000000000e-10 3.251740998910e-01
|
||||
4.328000000000e-10 3.570946969464e-01
|
||||
4.428000000000e-10 3.813004444382e-01
|
||||
4.528000000000e-10 3.761230596147e-01
|
||||
4.628000000000e-10 3.099646053412e-01
|
||||
4.728000000000e-10 1.831473345022e-01
|
||||
4.828000000000e-10 3.069401022130e-02
|
||||
4.928000000000e-10 -1.106258411343e-01
|
||||
5.028000000000e-10 -2.146793601179e-01
|
||||
5.128000000000e-10 -2.820035552799e-01
|
||||
5.228000000000e-10 -3.252909243829e-01
|
||||
5.328000000000e-10 -3.570986338553e-01
|
||||
5.428000000000e-10 -3.813904658256e-01
|
||||
5.528000000000e-10 -3.760889514061e-01
|
||||
5.628000000000e-10 -3.100114096943e-01
|
||||
5.728000000000e-10 -1.830827247194e-01
|
||||
5.828000000000e-10 -3.072480545922e-02
|
||||
5.928000000000e-10 1.106906463094e-01
|
||||
6.028000000000e-10 2.146493837568e-01
|
||||
6.128000000000e-10 2.820610673881e-01
|
||||
6.228000000000e-10 3.252525482967e-01
|
||||
6.328000000000e-10 3.571504708749e-01
|
||||
6.428000000000e-10 3.813516648295e-01
|
||||
6.528000000000e-10 3.761390656738e-01
|
||||
6.628000000000e-10 3.099742259389e-01
|
||||
6.728000000000e-10 1.831331110808e-01
|
||||
6.828000000000e-10 3.068765829312e-02
|
||||
6.928000000000e-10 -1.106445812930e-01
|
||||
7.028000000000e-10 -2.146859050297e-01
|
||||
7.128000000000e-10 -2.820172231683e-01
|
||||
7.228000000000e-10 -3.252905125649e-01
|
||||
7.328000000000e-10 -3.571078709926e-01
|
||||
7.428000000000e-10 -3.813893177320e-01
|
||||
7.528000000000e-10 -3.760986555866e-01
|
||||
7.628000000000e-10 -3.100117776476e-01
|
||||
7.728000000000e-10 -1.830935153198e-01
|
||||
7.828000000000e-10 -3.072484475908e-02
|
||||
7.928000000000e-10 1.106810594907e-01
|
||||
8.028000000000e-10 2.146507312123e-01
|
||||
8.128000000000e-10 2.820530370402e-01
|
||||
8.228000000000e-10 3.252547871433e-01
|
||||
8.328000000000e-10 3.571432636036e-01
|
||||
8.428000000000e-10 3.813547544577e-01
|
||||
8.528000000000e-10 3.761324372121e-01
|
||||
8.628000000000e-10 3.099775475493e-01
|
||||
8.728000000000e-10 1.831274535707e-01
|
||||
8.828000000000e-10 3.069175078476e-02
|
||||
8.928000000000e-10 -1.106491559136e-01
|
||||
9.028000000000e-10 -2.146821655528e-01
|
||||
9.128000000000e-10 -2.820218639330e-01
|
||||
9.228000000000e-10 -3.252864642203e-01
|
||||
9.328000000000e-10 -3.571122611941e-01
|
||||
9.428000000000e-10 -3.813854215351e-01
|
||||
9.528000000000e-10 -3.761024723822e-01
|
||||
9.628000000000e-10 -3.100075395903e-01
|
||||
9.728000000000e-10 -1.830975404653e-01
|
||||
9.828000000000e-10 -3.072097080048e-02
|
||||
9.928000000000e-10 1.106770531472e-01
|
||||
1.000000000000e-09 1.895325033433e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 0
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: tt
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_00
|
||||
temperature: '-40'
|
||||
vdd: '0.8'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_01/CML_core_tb_1.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp -40
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -3.098686002716e-01
|
||||
1.728000000000e-10 -1.894560696460e-01
|
||||
1.828000000000e-10 -4.059695742871e-02
|
||||
1.928000000000e-10 9.940964501315e-02
|
||||
2.028000000000e-10 2.033133834097e-01
|
||||
2.128000000000e-10 2.719620830710e-01
|
||||
2.228000000000e-10 3.163098950569e-01
|
||||
2.328000000000e-10 3.491513279687e-01
|
||||
2.428000000000e-10 3.741332087119e-01
|
||||
2.528000000000e-10 3.700254590965e-01
|
||||
2.628000000000e-10 3.062168938694e-01
|
||||
2.728000000000e-10 1.827341653261e-01
|
||||
2.828000000000e-10 3.280764574542e-02
|
||||
2.928000000000e-10 -1.069769977212e-01
|
||||
3.028000000000e-10 -2.102924295592e-01
|
||||
3.128000000000e-10 -2.774748738503e-01
|
||||
3.228000000000e-10 -3.207751929169e-01
|
||||
3.328000000000e-10 -3.527202709264e-01
|
||||
3.428000000000e-10 -3.774342269369e-01
|
||||
3.528000000000e-10 -3.730540733905e-01
|
||||
3.628000000000e-10 -3.091949741363e-01
|
||||
3.728000000000e-10 -1.851642002832e-01
|
||||
3.828000000000e-10 -3.487935842603e-02
|
||||
3.928000000000e-10 1.053970083053e-01
|
||||
4.028000000000e-10 2.088131472734e-01
|
||||
4.128000000000e-10 2.762908135843e-01
|
||||
4.228000000000e-10 3.196385089100e-01
|
||||
4.328000000000e-10 3.518763575372e-01
|
||||
4.428000000000e-10 3.766558038448e-01
|
||||
4.528000000000e-10 3.725714207051e-01
|
||||
4.628000000000e-10 3.087619830708e-01
|
||||
4.728000000000e-10 1.849833837695e-01
|
||||
4.828000000000e-10 3.467977975354e-02
|
||||
4.928000000000e-10 -1.054340839288e-01
|
||||
5.028000000000e-10 -2.089448612506e-01
|
||||
5.128000000000e-10 -2.763231704068e-01
|
||||
5.228000000000e-10 -3.197791718821e-01
|
||||
5.328000000000e-10 -3.518998659973e-01
|
||||
5.428000000000e-10 -3.767613178326e-01
|
||||
5.528000000000e-10 -3.725445308461e-01
|
||||
5.628000000000e-10 -3.088109693961e-01
|
||||
5.728000000000e-10 -1.849155432321e-01
|
||||
5.828000000000e-10 -3.470667341543e-02
|
||||
5.928000000000e-10 1.055048847061e-01
|
||||
6.028000000000e-10 2.089187592091e-01
|
||||
6.128000000000e-10 2.763849186823e-01
|
||||
6.228000000000e-10 3.197425041182e-01
|
||||
6.328000000000e-10 3.519544114659e-01
|
||||
6.428000000000e-10 3.767237647599e-01
|
||||
6.528000000000e-10 3.725977061828e-01
|
||||
6.628000000000e-10 3.087755728399e-01
|
||||
6.728000000000e-10 1.849692271918e-01
|
||||
6.828000000000e-10 3.467099374312e-02
|
||||
6.928000000000e-10 -1.054562384013e-01
|
||||
7.028000000000e-10 -2.089544093361e-01
|
||||
7.128000000000e-10 -2.763388509076e-01
|
||||
7.228000000000e-10 -3.197800091948e-01
|
||||
7.328000000000e-10 -3.519101110125e-01
|
||||
7.428000000000e-10 -3.767612419697e-01
|
||||
7.528000000000e-10 -3.725558598664e-01
|
||||
7.628000000000e-10 -3.088133010441e-01
|
||||
7.728000000000e-10 -1.849285593480e-01
|
||||
7.828000000000e-10 -3.470862903587e-02
|
||||
7.928000000000e-10 1.054936381918e-01
|
||||
8.028000000000e-10 2.089186129636e-01
|
||||
8.128000000000e-10 2.763755879874e-01
|
||||
8.228000000000e-10 3.197437164625e-01
|
||||
8.328000000000e-10 3.519463479929e-01
|
||||
8.428000000000e-10 3.767260853907e-01
|
||||
8.528000000000e-10 3.725904126785e-01
|
||||
8.628000000000e-10 3.087783440951e-01
|
||||
8.728000000000e-10 1.849632167070e-01
|
||||
8.828000000000e-10 3.467482549783e-02
|
||||
8.928000000000e-10 -1.054610682584e-01
|
||||
9.028000000000e-10 -2.089507846182e-01
|
||||
9.128000000000e-10 -2.763436586770e-01
|
||||
9.228000000000e-10 -3.197760754687e-01
|
||||
9.328000000000e-10 -3.519146615050e-01
|
||||
9.428000000000e-10 -3.767573997120e-01
|
||||
9.528000000000e-10 -3.725597535055e-01
|
||||
9.628000000000e-10 -3.088090609970e-01
|
||||
9.728000000000e-10 -1.849326628321e-01
|
||||
9.828000000000e-10 -3.470475490247e-02
|
||||
9.928000000000e-10 1.054896146910e-01
|
||||
1.000000000000e-09 1.838520001242e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 1
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: ff
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_01
|
||||
temperature: '-40'
|
||||
vdd: '0.8'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_02/CML_core_tb_2.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp -40
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -3.162797108708e-01
|
||||
1.728000000000e-10 -1.875883768906e-01
|
||||
1.828000000000e-10 -3.217177564589e-02
|
||||
1.928000000000e-10 1.118453904517e-01
|
||||
2.028000000000e-10 2.178869753922e-01
|
||||
2.128000000000e-10 2.869187499571e-01
|
||||
2.228000000000e-10 3.311831063176e-01
|
||||
2.328000000000e-10 3.637965093552e-01
|
||||
2.428000000000e-10 3.884475585753e-01
|
||||
2.528000000000e-10 3.831703446637e-01
|
||||
2.628000000000e-10 3.149426000366e-01
|
||||
2.728000000000e-10 1.840825734866e-01
|
||||
2.828000000000e-10 2.786370536806e-02
|
||||
2.928000000000e-10 -1.159899232258e-01
|
||||
3.028000000000e-10 -2.217323928122e-01
|
||||
3.128000000000e-10 -2.897841810826e-01
|
||||
3.228000000000e-10 -3.334256487170e-01
|
||||
3.328000000000e-10 -3.654508602495e-01
|
||||
3.428000000000e-10 -3.900407544937e-01
|
||||
3.528000000000e-10 -3.846189534315e-01
|
||||
3.628000000000e-10 -3.164922452622e-01
|
||||
3.728000000000e-10 -1.853182634851e-01
|
||||
3.828000000000e-10 -2.898615964086e-02
|
||||
3.928000000000e-10 1.151710782521e-01
|
||||
4.028000000000e-10 2.209054309263e-01
|
||||
4.128000000000e-10 2.891817322742e-01
|
||||
4.228000000000e-10 3.328077516782e-01
|
||||
4.328000000000e-10 3.650515838921e-01
|
||||
4.428000000000e-10 3.896233583948e-01
|
||||
4.528000000000e-10 3.844074302627e-01
|
||||
4.628000000000e-10 3.162448842688e-01
|
||||
4.728000000000e-10 1.852475068120e-01
|
||||
4.828000000000e-10 2.884623360652e-02
|
||||
4.928000000000e-10 -1.151788252337e-01
|
||||
5.028000000000e-10 -2.210147130581e-01
|
||||
5.128000000000e-10 -2.891872658193e-01
|
||||
5.228000000000e-10 -3.329167168088e-01
|
||||
5.328000000000e-10 -3.650471930963e-01
|
||||
5.428000000000e-10 -3.897100874545e-01
|
||||
5.528000000000e-10 -3.843762306477e-01
|
||||
5.628000000000e-10 -3.163013912188e-01
|
||||
5.728000000000e-10 -1.851950213487e-01
|
||||
5.828000000000e-10 -2.889036873678e-02
|
||||
5.928000000000e-10 1.152312899162e-01
|
||||
6.028000000000e-10 2.209735588305e-01
|
||||
6.128000000000e-10 2.892357416511e-01
|
||||
6.228000000000e-10 3.328707955285e-01
|
||||
6.328000000000e-10 3.650931065031e-01
|
||||
6.428000000000e-10 3.896657987149e-01
|
||||
6.528000000000e-10 3.844215105032e-01
|
||||
6.628000000000e-10 3.162596917265e-01
|
||||
6.728000000000e-10 1.852417351036e-01
|
||||
6.828000000000e-10 2.884992827621e-02
|
||||
6.928000000000e-10 -1.151876679011e-01
|
||||
7.028000000000e-10 -2.210123101756e-01
|
||||
7.128000000000e-10 -2.891938845816e-01
|
||||
7.228000000000e-10 -3.329106389600e-01
|
||||
7.328000000000e-10 -3.650518039465e-01
|
||||
7.428000000000e-10 -3.897047407363e-01
|
||||
7.528000000000e-10 -3.843819858648e-01
|
||||
7.628000000000e-10 -3.162978744015e-01
|
||||
7.728000000000e-10 -1.852023753321e-01
|
||||
7.828000000000e-10 -2.888743165850e-02
|
||||
7.928000000000e-10 1.152240030808e-01
|
||||
8.028000000000e-10 2.209771419031e-01
|
||||
8.128000000000e-10 2.892295361788e-01
|
||||
8.228000000000e-10 3.328747680971e-01
|
||||
8.328000000000e-10 3.650871456099e-01
|
||||
8.428000000000e-10 3.896701175780e-01
|
||||
8.528000000000e-10 3.844156912621e-01
|
||||
8.628000000000e-10 3.162637401476e-01
|
||||
8.728000000000e-10 1.852363586492e-01
|
||||
8.828000000000e-10 2.885434112124e-02
|
||||
8.928000000000e-10 -1.151920978903e-01
|
||||
9.028000000000e-10 -2.210084087345e-01
|
||||
9.128000000000e-10 -2.891984388712e-01
|
||||
9.228000000000e-10 -3.329064027155e-01
|
||||
9.328000000000e-10 -3.650560988894e-01
|
||||
9.428000000000e-10 -3.897007143418e-01
|
||||
9.528000000000e-10 -3.843858173814e-01
|
||||
9.628000000000e-10 -3.162935974835e-01
|
||||
9.728000000000e-10 -1.852064424274e-01
|
||||
9.828000000000e-10 -2.888350905479e-02
|
||||
9.928000000000e-10 1.152199079204e-01
|
||||
1.000000000000e-09 1.954791142410e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 2
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: ss
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_02
|
||||
temperature: '-40'
|
||||
vdd: '0.8'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_03/CML_core_tb_3.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp 27
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -2.914571027454e-01
|
||||
1.728000000000e-10 -1.780117263272e-01
|
||||
1.828000000000e-10 -3.802564096594e-02
|
||||
1.928000000000e-10 9.479025580261e-02
|
||||
2.028000000000e-10 1.961220444980e-01
|
||||
2.128000000000e-10 2.643669322964e-01
|
||||
2.228000000000e-10 3.071498875260e-01
|
||||
2.328000000000e-10 3.351667250191e-01
|
||||
2.428000000000e-10 3.529478733093e-01
|
||||
2.528000000000e-10 3.439767079911e-01
|
||||
2.628000000000e-10 2.827109934029e-01
|
||||
2.728000000000e-10 1.683025534555e-01
|
||||
2.828000000000e-10 2.843266655337e-02
|
||||
2.928000000000e-10 -1.036223502576e-01
|
||||
3.028000000000e-10 -2.042863713809e-01
|
||||
3.128000000000e-10 -2.713818104821e-01
|
||||
3.228000000000e-10 -3.132717880322e-01
|
||||
3.328000000000e-10 -3.402903477971e-01
|
||||
3.428000000000e-10 -3.574262556597e-01
|
||||
3.528000000000e-10 -3.476240566503e-01
|
||||
3.628000000000e-10 -2.857203755187e-01
|
||||
3.728000000000e-10 -1.703849236420e-01
|
||||
3.828000000000e-10 -2.994825869373e-02
|
||||
3.928000000000e-10 1.026817167876e-01
|
||||
4.028000000000e-10 2.034750084544e-01
|
||||
4.128000000000e-10 2.707812081585e-01
|
||||
4.228000000000e-10 3.126503625184e-01
|
||||
4.328000000000e-10 3.399043734480e-01
|
||||
4.428000000000e-10 3.571021595385e-01
|
||||
4.528000000000e-10 3.475896983741e-01
|
||||
4.628000000000e-10 2.857411927694e-01
|
||||
4.728000000000e-10 1.706053611761e-01
|
||||
4.828000000000e-10 3.010795594348e-02
|
||||
4.928000000000e-10 -1.024135388755e-01
|
||||
5.028000000000e-10 -2.033190471438e-01
|
||||
5.128000000000e-10 -2.705615444577e-01
|
||||
5.228000000000e-10 -3.125558523975e-01
|
||||
5.328000000000e-10 -3.397330193449e-01
|
||||
5.428000000000e-10 -3.570354300338e-01
|
||||
5.528000000000e-10 -3.474353611027e-01
|
||||
5.628000000000e-10 -2.856876769732e-01
|
||||
5.728000000000e-10 -1.704760895977e-01
|
||||
5.828000000000e-10 -3.008641427314e-02
|
||||
5.928000000000e-10 1.025087996136e-01
|
||||
6.028000000000e-10 2.033209986443e-01
|
||||
6.128000000000e-10 2.706412375819e-01
|
||||
6.228000000000e-10 3.125457575810e-01
|
||||
6.328000000000e-10 3.398008382665e-01
|
||||
6.428000000000e-10 3.570145583479e-01
|
||||
6.528000000000e-10 3.474888598072e-01
|
||||
6.628000000000e-10 2.856551852535e-01
|
||||
6.728000000000e-10 1.705188293935e-01
|
||||
6.828000000000e-10 3.004736925580e-02
|
||||
6.928000000000e-10 -1.024728514478e-01
|
||||
7.028000000000e-10 -2.033602328622e-01
|
||||
7.128000000000e-10 -2.706061106716e-01
|
||||
7.228000000000e-10 -3.125843283316e-01
|
||||
7.328000000000e-10 -3.397655433228e-01
|
||||
7.428000000000e-10 -3.570523646632e-01
|
||||
7.528000000000e-10 -3.474554820929e-01
|
||||
7.628000000000e-10 -2.856929985560e-01
|
||||
7.728000000000e-10 -1.704859799650e-01
|
||||
7.828000000000e-10 -3.008383757896e-02
|
||||
7.928000000000e-10 1.025039608177e-01
|
||||
8.028000000000e-10 2.033261442763e-01
|
||||
8.128000000000e-10 2.706371082838e-01
|
||||
8.228000000000e-10 3.125504649737e-01
|
||||
8.328000000000e-10 3.397966066528e-01
|
||||
8.428000000000e-10 3.570198965640e-01
|
||||
8.528000000000e-10 3.474857187206e-01
|
||||
8.628000000000e-10 2.856614378232e-01
|
||||
8.728000000000e-10 1.705164607562e-01
|
||||
8.828000000000e-10 3.005354621749e-02
|
||||
8.928000000000e-10 -1.024749769036e-01
|
||||
9.028000000000e-10 -2.033548454455e-01
|
||||
9.128000000000e-10 -2.706087008930e-01
|
||||
9.228000000000e-10 -3.125792630790e-01
|
||||
9.328000000000e-10 -3.397683901773e-01
|
||||
9.428000000000e-10 -3.570478314069e-01
|
||||
9.528000000000e-10 -3.474583427153e-01
|
||||
9.628000000000e-10 -2.856887110961e-01
|
||||
9.728000000000e-10 -1.704892548593e-01
|
||||
9.828000000000e-10 -3.008001356704e-02
|
||||
9.928000000000e-10 1.025005080892e-01
|
||||
1.000000000000e-09 1.786649040194e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 3
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: tt
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_03
|
||||
temperature: '27'
|
||||
vdd: '0.8'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_04/CML_core_tb_4.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp 27
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -2.908886906683e-01
|
||||
1.728000000000e-10 -1.805890382926e-01
|
||||
1.828000000000e-10 -4.276329247682e-02
|
||||
1.928000000000e-10 8.882407595099e-02
|
||||
2.028000000000e-10 1.894983505466e-01
|
||||
2.128000000000e-10 2.576242567207e-01
|
||||
2.228000000000e-10 3.005212718886e-01
|
||||
2.328000000000e-10 3.289546768723e-01
|
||||
2.428000000000e-10 3.474240530436e-01
|
||||
2.528000000000e-10 3.394794629215e-01
|
||||
2.628000000000e-10 2.802266193594e-01
|
||||
2.728000000000e-10 1.685520573893e-01
|
||||
2.828000000000e-10 3.081792474830e-02
|
||||
2.928000000000e-10 -9.985913249602e-02
|
||||
3.028000000000e-10 -1.996535082954e-01
|
||||
3.128000000000e-10 -2.663519845580e-01
|
||||
3.228000000000e-10 -3.081166100610e-01
|
||||
3.328000000000e-10 -3.353557582557e-01
|
||||
3.428000000000e-10 -3.530339682910e-01
|
||||
3.528000000000e-10 -3.441234226063e-01
|
||||
3.628000000000e-10 -2.840838930007e-01
|
||||
3.728000000000e-10 -1.712890179908e-01
|
||||
3.828000000000e-10 -3.280692441870e-02
|
||||
3.928000000000e-10 9.858702888345e-02
|
||||
4.028000000000e-10 1.985844458095e-01
|
||||
4.128000000000e-10 2.655374220709e-01
|
||||
4.228000000000e-10 3.073092043222e-01
|
||||
4.328000000000e-10 3.348254361967e-01
|
||||
4.428000000000e-10 3.526065806553e-01
|
||||
4.528000000000e-10 3.440384505411e-01
|
||||
4.628000000000e-10 2.840943593119e-01
|
||||
4.728000000000e-10 1.715352376725e-01
|
||||
4.828000000000e-10 3.300625747524e-02
|
||||
4.928000000000e-10 -9.826793525126e-02
|
||||
5.028000000000e-10 -1.983826392696e-01
|
||||
5.128000000000e-10 -2.652748957302e-01
|
||||
5.228000000000e-10 -3.071819372703e-01
|
||||
5.328000000000e-10 -3.346211766496e-01
|
||||
5.428000000000e-10 -3.525115401756e-01
|
||||
5.528000000000e-10 -3.438520776438e-01
|
||||
5.628000000000e-10 -2.840132934403e-01
|
||||
5.728000000000e-10 -1.713783534881e-01
|
||||
5.828000000000e-10 -3.296528839742e-02
|
||||
5.928000000000e-10 9.838210726041e-02
|
||||
6.028000000000e-10 1.983970962128e-01
|
||||
6.128000000000e-10 2.653685996210e-01
|
||||
6.228000000000e-10 3.071805271474e-01
|
||||
6.328000000000e-10 3.346994451143e-01
|
||||
6.428000000000e-10 3.524959527178e-01
|
||||
6.528000000000e-10 3.439124816552e-01
|
||||
6.628000000000e-10 2.839825148385e-01
|
||||
6.728000000000e-10 1.714247364616e-01
|
||||
6.828000000000e-10 3.292536702304e-02
|
||||
6.928000000000e-10 -9.834444145178e-02
|
||||
7.028000000000e-10 -1.984381153623e-01
|
||||
7.128000000000e-10 -2.653318964793e-01
|
||||
7.228000000000e-10 -3.072207693265e-01
|
||||
7.328000000000e-10 -3.346627011511e-01
|
||||
7.428000000000e-10 -3.525355719541e-01
|
||||
7.528000000000e-10 -3.438780517049e-01
|
||||
7.628000000000e-10 -2.840226095914e-01
|
||||
7.728000000000e-10 -1.713910964736e-01
|
||||
7.828000000000e-10 -3.296406429130e-02
|
||||
7.928000000000e-10 9.837645950128e-02
|
||||
8.028000000000e-10 1.984019833998e-01
|
||||
8.128000000000e-10 2.653640104122e-01
|
||||
8.228000000000e-10 3.071850636337e-01
|
||||
8.328000000000e-10 3.346949515146e-01
|
||||
8.428000000000e-10 3.525014052751e-01
|
||||
8.528000000000e-10 3.439095067618e-01
|
||||
8.628000000000e-10 2.839893402731e-01
|
||||
8.728000000000e-10 1.714228569780e-01
|
||||
8.828000000000e-10 3.293222880403e-02
|
||||
8.928000000000e-10 -9.834616516704e-02
|
||||
9.028000000000e-10 -1.984321208293e-01
|
||||
9.128000000000e-10 -2.653341991167e-01
|
||||
9.228000000000e-10 -3.072152380466e-01
|
||||
9.328000000000e-10 -3.346653803170e-01
|
||||
9.428000000000e-10 -3.525306496503e-01
|
||||
9.528000000000e-10 -3.438807929682e-01
|
||||
9.628000000000e-10 -2.840179937834e-01
|
||||
9.728000000000e-10 -1.713943425416e-01
|
||||
9.828000000000e-10 -3.296001530074e-02
|
||||
9.928000000000e-10 9.837298926970e-02
|
||||
1.000000000000e-09 1.738955459088e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 4
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: ff
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_04
|
||||
temperature: '27'
|
||||
vdd: '0.8'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_05/CML_core_tb_5.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp 27
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -2.958574299710e-01
|
||||
1.728000000000e-10 -1.791897212785e-01
|
||||
1.828000000000e-10 -3.599075048614e-02
|
||||
1.928000000000e-10 9.946703268478e-02
|
||||
2.028000000000e-10 2.032502871016e-01
|
||||
2.128000000000e-10 2.733994094958e-01
|
||||
2.228000000000e-10 3.172845988123e-01
|
||||
2.328000000000e-10 3.455609123691e-01
|
||||
2.428000000000e-10 3.630923957132e-01
|
||||
2.528000000000e-10 3.534419450967e-01
|
||||
2.628000000000e-10 2.903663934708e-01
|
||||
2.728000000000e-10 1.726743312860e-01
|
||||
2.828000000000e-10 2.930291139472e-02
|
||||
2.928000000000e-10 -1.057514312075e-01
|
||||
3.028000000000e-10 -2.091913834589e-01
|
||||
3.128000000000e-10 -2.784696434768e-01
|
||||
3.228000000000e-10 -3.216873931074e-01
|
||||
3.328000000000e-10 -3.491870426412e-01
|
||||
3.428000000000e-10 -3.662894191498e-01
|
||||
3.528000000000e-10 -3.560374131806e-01
|
||||
3.628000000000e-10 -2.925719059469e-01
|
||||
3.728000000000e-10 -1.742159787839e-01
|
||||
3.828000000000e-10 -3.049391935212e-02
|
||||
3.928000000000e-10 1.049756016137e-01
|
||||
4.028000000000e-10 2.084672065617e-01
|
||||
4.128000000000e-10 2.779301238417e-01
|
||||
4.228000000000e-10 3.211180618030e-01
|
||||
4.328000000000e-10 3.488255023686e-01
|
||||
4.428000000000e-10 3.659572542624e-01
|
||||
4.528000000000e-10 3.559493947967e-01
|
||||
4.628000000000e-10 2.925058094407e-01
|
||||
4.728000000000e-10 1.743267017008e-01
|
||||
4.828000000000e-10 3.054314172764e-02
|
||||
4.928000000000e-10 -1.048175245910e-01
|
||||
5.028000000000e-10 -2.084096499031e-01
|
||||
5.128000000000e-10 -2.777998408986e-01
|
||||
5.228000000000e-10 -3.210985617265e-01
|
||||
5.328000000000e-10 -3.487226120056e-01
|
||||
5.428000000000e-10 -3.659481451181e-01
|
||||
5.528000000000e-10 -3.558482598240e-01
|
||||
5.628000000000e-10 -2.924942070749e-01
|
||||
5.728000000000e-10 -1.742324941843e-01
|
||||
5.828000000000e-10 -3.054486718364e-02
|
||||
5.928000000000e-10 1.048934295445e-01
|
||||
6.028000000000e-10 2.083991544976e-01
|
||||
6.128000000000e-10 2.778660140822e-01
|
||||
6.228000000000e-10 3.210794561497e-01
|
||||
6.328000000000e-10 3.487805773205e-01
|
||||
6.428000000000e-10 3.659226785140e-01
|
||||
6.528000000000e-10 3.558970058340e-01
|
||||
6.628000000000e-10 2.924624137185e-01
|
||||
6.728000000000e-10 1.742748110039e-01
|
||||
6.828000000000e-10 3.050920657876e-02
|
||||
6.928000000000e-10 -1.048562048812e-01
|
||||
7.028000000000e-10 -2.084343791218e-01
|
||||
7.128000000000e-10 -2.778299623633e-01
|
||||
7.228000000000e-10 -3.211147582115e-01
|
||||
7.328000000000e-10 -3.487447461690e-01
|
||||
7.428000000000e-10 -3.659575085549e-01
|
||||
7.528000000000e-10 -3.558632428052e-01
|
||||
7.628000000000e-10 -2.924972481137e-01
|
||||
7.728000000000e-10 -1.742418088753e-01
|
||||
7.828000000000e-10 -3.054328720193e-02
|
||||
7.928000000000e-10 1.048870377838e-01
|
||||
8.028000000000e-10 2.084024115537e-01
|
||||
8.128000000000e-10 2.778603942564e-01
|
||||
8.228000000000e-10 3.210827582845e-01
|
||||
8.328000000000e-10 3.487751488045e-01
|
||||
8.428000000000e-10 3.659266824704e-01
|
||||
8.528000000000e-10 3.558925702991e-01
|
||||
8.628000000000e-10 2.924671830422e-01
|
||||
8.728000000000e-10 1.742711856894e-01
|
||||
8.828000000000e-10 3.051417003050e-02
|
||||
8.928000000000e-10 -1.048591994973e-01
|
||||
9.028000000000e-10 -2.084299430076e-01
|
||||
9.128000000000e-10 -2.778331783696e-01
|
||||
9.228000000000e-10 -3.211104359655e-01
|
||||
9.328000000000e-10 -3.487480244246e-01
|
||||
9.428000000000e-10 -3.659535267111e-01
|
||||
9.528000000000e-10 -3.558663548813e-01
|
||||
9.628000000000e-10 -2.924933270906e-01
|
||||
9.728000000000e-10 -1.742451324195e-01
|
||||
9.828000000000e-10 -3.053963678018e-02
|
||||
9.928000000000e-10 1.048836196344e-01
|
||||
1.000000000000e-09 1.830293824662e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 5
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: ss
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_05
|
||||
temperature: '27'
|
||||
vdd: '0.8'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_06/CML_core_tb_6.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp 80
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -2.689355033953e-01
|
||||
1.728000000000e-10 -1.691728954892e-01
|
||||
1.828000000000e-10 -4.423302134033e-02
|
||||
1.928000000000e-10 7.663444207075e-02
|
||||
2.028000000000e-10 1.714764750752e-01
|
||||
2.128000000000e-10 2.368219567798e-01
|
||||
2.228000000000e-10 2.772768132445e-01
|
||||
2.328000000000e-10 3.013675537348e-01
|
||||
2.428000000000e-10 3.140706479520e-01
|
||||
2.528000000000e-10 3.038549886105e-01
|
||||
2.628000000000e-10 2.508404086347e-01
|
||||
2.728000000000e-10 1.528360605683e-01
|
||||
2.828000000000e-10 3.040034809293e-02
|
||||
2.928000000000e-10 -8.785381094258e-02
|
||||
3.028000000000e-10 -1.808734961109e-01
|
||||
3.128000000000e-10 -2.445795528199e-01
|
||||
3.228000000000e-10 -2.838354337528e-01
|
||||
3.328000000000e-10 -3.065800962400e-01
|
||||
3.428000000000e-10 -3.181767360109e-01
|
||||
3.528000000000e-10 -3.065752663659e-01
|
||||
3.628000000000e-10 -2.523878800401e-01
|
||||
3.728000000000e-10 -1.531173668737e-01
|
||||
3.828000000000e-10 -2.992055538556e-02
|
||||
3.928000000000e-10 8.900435641641e-02
|
||||
4.028000000000e-10 1.821756238512e-01
|
||||
4.128000000000e-10 2.460123650690e-01
|
||||
4.228000000000e-10 2.851182310100e-01
|
||||
4.328000000000e-10 3.079291995556e-01
|
||||
4.428000000000e-10 3.194129911462e-01
|
||||
4.528000000000e-10 3.078915366323e-01
|
||||
4.628000000000e-10 2.535144344421e-01
|
||||
4.728000000000e-10 1.541542026196e-01
|
||||
4.828000000000e-10 3.063651583090e-02
|
||||
4.928000000000e-10 -8.839161491074e-02
|
||||
5.028000000000e-10 -1.817999659778e-01
|
||||
5.128000000000e-10 -2.456456661989e-01
|
||||
5.228000000000e-10 -2.849195350591e-01
|
||||
5.328000000000e-10 -3.077091828990e-01
|
||||
5.428000000000e-10 -3.193505374448e-01
|
||||
5.528000000000e-10 -3.078081521678e-01
|
||||
5.628000000000e-10 -2.535787813503e-01
|
||||
5.728000000000e-10 -1.541764927596e-01
|
||||
5.828000000000e-10 -3.077048554081e-02
|
||||
5.928000000000e-10 8.832790620553e-02
|
||||
6.028000000000e-10 1.816551916875e-01
|
||||
6.128000000000e-10 2.455879975104e-01
|
||||
6.228000000000e-10 2.847911932982e-01
|
||||
6.328000000000e-10 3.076677363016e-01
|
||||
6.428000000000e-10 3.192371229053e-01
|
||||
6.528000000000e-10 3.077778412262e-01
|
||||
6.628000000000e-10 2.534819327505e-01
|
||||
6.728000000000e-10 1.541683138663e-01
|
||||
6.828000000000e-10 3.070155435378e-02
|
||||
6.928000000000e-10 -8.831320560130e-02
|
||||
7.028000000000e-10 -1.817038543937e-01
|
||||
7.128000000000e-10 -2.455619958387e-01
|
||||
7.228000000000e-10 -2.848320347671e-01
|
||||
7.328000000000e-10 -3.076358698550e-01
|
||||
7.428000000000e-10 -3.192710667609e-01
|
||||
7.528000000000e-10 -3.077409972388e-01
|
||||
7.628000000000e-10 -2.535098012890e-01
|
||||
7.728000000000e-10 -1.541282589474e-01
|
||||
7.828000000000e-10 -3.072672689244e-02
|
||||
7.928000000000e-10 8.835148526653e-02
|
||||
8.028000000000e-10 1.816795669555e-01
|
||||
8.128000000000e-10 2.455984246601e-01
|
||||
8.228000000000e-10 2.848062931006e-01
|
||||
8.328000000000e-10 3.076705916890e-01
|
||||
8.428000000000e-10 3.192450073559e-01
|
||||
8.528000000000e-10 3.077736319697e-01
|
||||
8.628000000000e-10 2.534831121829e-01
|
||||
8.728000000000e-10 1.541590953584e-01
|
||||
8.828000000000e-10 3.069946612700e-02
|
||||
8.928000000000e-10 -8.832341199891e-02
|
||||
9.028000000000e-10 -1.817063952021e-01
|
||||
9.128000000000e-10 -2.455714256322e-01
|
||||
9.228000000000e-10 -2.848333922463e-01
|
||||
9.328000000000e-10 -3.076440936715e-01
|
||||
9.428000000000e-10 -3.192716274515e-01
|
||||
9.528000000000e-10 -3.077481608676e-01
|
||||
9.628000000000e-10 -2.535093614867e-01
|
||||
9.728000000000e-10 -1.541340765567e-01
|
||||
9.828000000000e-10 -3.072486745089e-02
|
||||
9.928000000000e-10 8.834711873249e-02
|
||||
1.000000000000e-09 1.586239577417e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 6
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: tt
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_06
|
||||
temperature: '80'
|
||||
vdd: '0.8'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_07/CML_core_tb_7.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp 80
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -2.694477874818e-01
|
||||
1.728000000000e-10 -1.721829739194e-01
|
||||
1.828000000000e-10 -4.906833766415e-02
|
||||
1.928000000000e-10 7.069743134728e-02
|
||||
2.028000000000e-10 1.648418946330e-01
|
||||
2.128000000000e-10 2.298765389610e-01
|
||||
2.228000000000e-10 2.702802052070e-01
|
||||
2.328000000000e-10 2.947129455777e-01
|
||||
2.428000000000e-10 3.081296602318e-01
|
||||
2.528000000000e-10 2.990063012040e-01
|
||||
2.628000000000e-10 2.478884705263e-01
|
||||
2.728000000000e-10 1.524230846398e-01
|
||||
2.828000000000e-10 3.216725009037e-02
|
||||
2.928000000000e-10 -8.452884553171e-02
|
||||
3.028000000000e-10 -1.764495371150e-01
|
||||
3.128000000000e-10 -2.394951663999e-01
|
||||
3.228000000000e-10 -2.784178156025e-01
|
||||
3.328000000000e-10 -3.012580547427e-01
|
||||
3.428000000000e-10 -3.133510931360e-01
|
||||
3.528000000000e-10 -3.026055002423e-01
|
||||
3.628000000000e-10 -2.500554574282e-01
|
||||
3.728000000000e-10 -1.530444893437e-01
|
||||
3.828000000000e-10 -3.179895766292e-02
|
||||
3.928000000000e-10 8.573594509971e-02
|
||||
4.028000000000e-10 1.778922744476e-01
|
||||
4.128000000000e-10 2.411102030583e-01
|
||||
4.228000000000e-10 2.798967112063e-01
|
||||
4.328000000000e-10 3.028156837380e-01
|
||||
4.428000000000e-10 3.148075876296e-01
|
||||
4.528000000000e-10 3.041758344829e-01
|
||||
4.628000000000e-10 2.514478797306e-01
|
||||
4.728000000000e-10 1.543354303295e-01
|
||||
4.828000000000e-10 3.272908827542e-02
|
||||
4.928000000000e-10 -8.494488064942e-02
|
||||
5.028000000000e-10 -1.773750790235e-01
|
||||
5.128000000000e-10 -2.406241070550e-01
|
||||
5.228000000000e-10 -2.796032327906e-01
|
||||
5.328000000000e-10 -3.025154625175e-01
|
||||
5.428000000000e-10 -3.146850050735e-01
|
||||
5.528000000000e-10 -3.040456856306e-01
|
||||
5.628000000000e-10 -2.514865398019e-01
|
||||
5.728000000000e-10 -1.543455010081e-01
|
||||
5.828000000000e-10 -3.286780649422e-02
|
||||
5.928000000000e-10 8.487071769529e-02
|
||||
6.028000000000e-10 1.772120847555e-01
|
||||
6.128000000000e-10 2.405506532865e-01
|
||||
6.228000000000e-10 2.794557736074e-01
|
||||
6.328000000000e-10 3.024581955274e-01
|
||||
6.428000000000e-10 3.145521515255e-01
|
||||
6.528000000000e-10 3.039990633934e-01
|
||||
6.628000000000e-10 2.513709142203e-01
|
||||
6.728000000000e-10 1.543241408079e-01
|
||||
6.828000000000e-10 3.278555364704e-02
|
||||
6.928000000000e-10 -8.486327141666e-02
|
||||
7.028000000000e-10 -1.772689800248e-01
|
||||
7.128000000000e-10 -2.405282060865e-01
|
||||
7.228000000000e-10 -2.795021370136e-01
|
||||
7.328000000000e-10 -3.024278022377e-01
|
||||
7.428000000000e-10 -3.145896170200e-01
|
||||
7.528000000000e-10 -3.039617953787e-01
|
||||
7.628000000000e-10 -2.514004690324e-01
|
||||
7.728000000000e-10 -1.542820043229e-01
|
||||
7.828000000000e-10 -3.281110337775e-02
|
||||
7.928000000000e-10 8.490436306023e-02
|
||||
8.028000000000e-10 1.772446330839e-01
|
||||
8.128000000000e-10 2.405674335146e-01
|
||||
8.228000000000e-10 2.794761963085e-01
|
||||
8.328000000000e-10 3.024650976088e-01
|
||||
8.428000000000e-10 3.145632644585e-01
|
||||
8.528000000000e-10 3.039968961590e-01
|
||||
8.628000000000e-10 2.513733111446e-01
|
||||
8.728000000000e-10 1.543150179356e-01
|
||||
8.828000000000e-10 3.278304586331e-02
|
||||
8.928000000000e-10 -8.487456857602e-02
|
||||
9.028000000000e-10 -1.772725618584e-01
|
||||
9.128000000000e-10 -2.405389250041e-01
|
||||
9.228000000000e-10 -2.795045102279e-01
|
||||
9.328000000000e-10 -3.024372521320e-01
|
||||
9.428000000000e-10 -3.145911572553e-01
|
||||
9.528000000000e-10 -3.039701598993e-01
|
||||
9.628000000000e-10 -2.514009218164e-01
|
||||
9.728000000000e-10 -1.542887967264e-01
|
||||
9.828000000000e-10 -3.280979517783e-02
|
||||
9.928000000000e-10 8.489941508642e-02
|
||||
1.000000000000e-09 1.544118489485e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 7
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: ff
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_07
|
||||
temperature: '80'
|
||||
vdd: '0.8'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_08/CML_core_tb_8.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp 80
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=0.8 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -2.722799425151e-01
|
||||
1.728000000000e-10 -1.701277707773e-01
|
||||
1.828000000000e-10 -4.252496989706e-02
|
||||
1.928000000000e-10 8.092536896213e-02
|
||||
2.028000000000e-10 1.785199933375e-01
|
||||
2.128000000000e-10 2.463984181452e-01
|
||||
2.228000000000e-10 2.885755113271e-01
|
||||
2.328000000000e-10 3.131967480955e-01
|
||||
2.428000000000e-10 3.255285716483e-01
|
||||
2.528000000000e-10 3.143820454109e-01
|
||||
2.628000000000e-10 2.595824958850e-01
|
||||
2.728000000000e-10 1.585585813323e-01
|
||||
2.828000000000e-10 3.254606172598e-02
|
||||
2.928000000000e-10 -8.921916265210e-02
|
||||
3.028000000000e-10 -1.857143058967e-01
|
||||
3.128000000000e-10 -2.524588707093e-01
|
||||
3.228000000000e-10 -2.937876617757e-01
|
||||
3.328000000000e-10 -3.173655773168e-01
|
||||
3.428000000000e-10 -3.288566343508e-01
|
||||
3.528000000000e-10 -3.166123605828e-01
|
||||
3.628000000000e-10 -2.609360611345e-01
|
||||
3.728000000000e-10 -1.589355414621e-01
|
||||
3.828000000000e-10 -3.237621747627e-02
|
||||
3.928000000000e-10 8.990939637816e-02
|
||||
4.028000000000e-10 1.864994737191e-01
|
||||
4.128000000000e-10 2.533636311879e-01
|
||||
4.228000000000e-10 2.945633129641e-01
|
||||
4.328000000000e-10 3.182197832362e-01
|
||||
4.428000000000e-10 3.296245618008e-01
|
||||
4.528000000000e-10 3.174841059207e-01
|
||||
4.628000000000e-10 2.616780558587e-01
|
||||
4.728000000000e-10 1.596622360522e-01
|
||||
4.828000000000e-10 3.287681921596e-02
|
||||
4.928000000000e-10 -8.943999963453e-02
|
||||
5.028000000000e-10 -1.862066308093e-01
|
||||
5.128000000000e-10 -2.530527908612e-01
|
||||
5.228000000000e-10 -2.943931136832e-01
|
||||
5.328000000000e-10 -3.180152021024e-01
|
||||
5.428000000000e-10 -3.295545667130e-01
|
||||
5.528000000000e-10 -3.173812952412e-01
|
||||
5.628000000000e-10 -2.617027726155e-01
|
||||
5.728000000000e-10 -1.596411992093e-01
|
||||
5.828000000000e-10 -3.295895028258e-02
|
||||
5.928000000000e-10 8.942267434718e-02
|
||||
6.028000000000e-10 1.861105403656e-01
|
||||
6.128000000000e-10 2.530344325895e-01
|
||||
6.228000000000e-10 2.943051008579e-01
|
||||
6.328000000000e-10 3.180051485103e-01
|
||||
6.428000000000e-10 3.294737915539e-01
|
||||
6.528000000000e-10 3.173744791022e-01
|
||||
6.628000000000e-10 2.616291881364e-01
|
||||
6.728000000000e-10 1.596450333001e-01
|
||||
6.828000000000e-10 3.290088244348e-02
|
||||
6.928000000000e-10 -8.940659470005e-02
|
||||
7.028000000000e-10 -1.861562133447e-01
|
||||
7.128000000000e-10 -2.530116656482e-01
|
||||
7.228000000000e-10 -2.943454309811e-01
|
||||
7.328000000000e-10 -3.179780561670e-01
|
||||
7.428000000000e-10 -3.295087969733e-01
|
||||
7.528000000000e-10 -3.173438661274e-01
|
||||
7.628000000000e-10 -2.616591955397e-01
|
||||
7.728000000000e-10 -1.596115565426e-01
|
||||
7.828000000000e-10 -3.292790237402e-02
|
||||
7.928000000000e-10 8.943927261705e-02
|
||||
8.028000000000e-10 1.861310420114e-01
|
||||
8.128000000000e-10 2.530433655174e-01
|
||||
8.228000000000e-10 2.943195630770e-01
|
||||
8.328000000000e-10 3.180088285378e-01
|
||||
8.428000000000e-10 3.294832118435e-01
|
||||
8.528000000000e-10 3.173732295072e-01
|
||||
8.628000000000e-10 2.616337486722e-01
|
||||
8.728000000000e-10 1.596399004289e-01
|
||||
8.828000000000e-10 3.290244884503e-02
|
||||
8.928000000000e-10 -8.941301350766e-02
|
||||
9.028000000000e-10 -1.861557185261e-01
|
||||
9.128000000000e-10 -2.530180139920e-01
|
||||
9.228000000000e-10 -2.943444772306e-01
|
||||
9.328000000000e-10 -3.179838696148e-01
|
||||
9.428000000000e-10 -3.295076633013e-01
|
||||
9.528000000000e-10 -3.173492560727e-01
|
||||
9.628000000000e-10 -2.616577755083e-01
|
||||
9.728000000000e-10 -1.596163947717e-01
|
||||
9.828000000000e-10 -3.292583900074e-02
|
||||
9.928000000000e-10 8.943518431692e-02
|
||||
1.000000000000e-09 1.621529465729e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 8
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: ss
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_08
|
||||
temperature: '80'
|
||||
vdd: '0.8'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_09/CML_core_tb_9.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp -40
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -3.622644182692e-01
|
||||
1.728000000000e-10 -1.962653738736e-01
|
||||
1.828000000000e-10 -5.712895575235e-03
|
||||
1.928000000000e-10 1.510345047594e-01
|
||||
2.028000000000e-10 2.432775412534e-01
|
||||
2.128000000000e-10 2.772000132926e-01
|
||||
2.228000000000e-10 3.161630086256e-01
|
||||
2.328000000000e-10 3.654121904616e-01
|
||||
2.428000000000e-10 4.070200809677e-01
|
||||
2.528000000000e-10 4.211809118313e-01
|
||||
2.628000000000e-10 3.552666659990e-01
|
||||
2.728000000000e-10 1.954111420719e-01
|
||||
2.828000000000e-10 7.499275151763e-03
|
||||
2.928000000000e-10 -1.488912332472e-01
|
||||
3.028000000000e-10 -2.420325529570e-01
|
||||
3.128000000000e-10 -2.768171400503e-01
|
||||
3.228000000000e-10 -3.164103191401e-01
|
||||
3.328000000000e-10 -3.656815561297e-01
|
||||
3.428000000000e-10 -4.072561733660e-01
|
||||
3.528000000000e-10 -4.210637971044e-01
|
||||
3.628000000000e-10 -3.548415521036e-01
|
||||
3.728000000000e-10 -1.946286859654e-01
|
||||
3.828000000000e-10 -6.746438981043e-03
|
||||
3.928000000000e-10 1.496127957227e-01
|
||||
4.028000000000e-10 2.425057762271e-01
|
||||
4.128000000000e-10 2.772590268750e-01
|
||||
4.228000000000e-10 3.167075169816e-01
|
||||
4.328000000000e-10 3.660182242119e-01
|
||||
4.428000000000e-10 4.074726111052e-01
|
||||
4.528000000000e-10 4.212975956202e-01
|
||||
4.628000000000e-10 3.549573822535e-01
|
||||
4.728000000000e-10 1.947835560361e-01
|
||||
4.828000000000e-10 6.801482567115e-03
|
||||
4.928000000000e-10 -1.495086456760e-01
|
||||
5.028000000000e-10 -2.424863730465e-01
|
||||
5.128000000000e-10 -2.771744431737e-01
|
||||
5.228000000000e-10 -3.166940000076e-01
|
||||
5.328000000000e-10 -3.659398771497e-01
|
||||
5.428000000000e-10 -4.074689465730e-01
|
||||
5.528000000000e-10 -4.212394549000e-01
|
||||
5.628000000000e-10 -3.549741510035e-01
|
||||
5.728000000000e-10 -1.947436351784e-01
|
||||
5.828000000000e-10 -6.830080160870e-03
|
||||
5.928000000000e-10 1.495407150967e-01
|
||||
6.028000000000e-10 2.424570295697e-01
|
||||
6.128000000000e-10 2.772066160972e-01
|
||||
6.228000000000e-10 3.166654934082e-01
|
||||
6.328000000000e-10 3.659723864247e-01
|
||||
6.428000000000e-10 4.074416211051e-01
|
||||
6.528000000000e-10 4.212697301261e-01
|
||||
6.628000000000e-10 3.549467093259e-01
|
||||
6.728000000000e-10 1.947718238583e-01
|
||||
6.828000000000e-10 6.800951177238e-03
|
||||
6.928000000000e-10 -1.495148390529e-01
|
||||
7.028000000000e-10 -2.424852043575e-01
|
||||
7.128000000000e-10 -2.771809105751e-01
|
||||
7.228000000000e-10 -3.166930947909e-01
|
||||
7.328000000000e-10 -3.659459016360e-01
|
||||
7.428000000000e-10 -4.074677461547e-01
|
||||
7.528000000000e-10 -4.212442717757e-01
|
||||
7.628000000000e-10 -3.549717520551e-01
|
||||
7.728000000000e-10 -1.947463263521e-01
|
||||
7.828000000000e-10 -6.825916545420e-03
|
||||
7.928000000000e-10 1.495385751436e-01
|
||||
8.028000000000e-10 2.424609931904e-01
|
||||
8.128000000000e-10 2.772040406871e-01
|
||||
8.228000000000e-10 3.166687905139e-01
|
||||
8.328000000000e-10 3.659694951712e-01
|
||||
8.428000000000e-10 4.074447010218e-01
|
||||
8.528000000000e-10 4.212671408417e-01
|
||||
8.628000000000e-10 3.549498827484e-01
|
||||
8.728000000000e-10 1.947689363825e-01
|
||||
8.828000000000e-10 6.803756635994e-03
|
||||
8.928000000000e-10 -1.495176738691e-01
|
||||
9.028000000000e-10 -2.424825342063e-01
|
||||
9.128000000000e-10 -2.771836734306e-01
|
||||
9.228000000000e-10 -3.166902103892e-01
|
||||
9.328000000000e-10 -3.659485359213e-01
|
||||
9.428000000000e-10 -4.074650210911e-01
|
||||
9.528000000000e-10 -4.212469657833e-01
|
||||
9.628000000000e-10 -3.549694058275e-01
|
||||
9.728000000000e-10 -1.947487958951e-01
|
||||
9.828000000000e-10 -6.823236278537e-03
|
||||
9.928000000000e-10 1.495363177485e-01
|
||||
1.000000000000e-09 2.250264100511e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 9
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: tt
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_09
|
||||
temperature: '-40'
|
||||
vdd: '1.2'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_10/CML_core_tb_10.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp -40
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -3.621881537650e-01
|
||||
1.728000000000e-10 -1.984429143572e-01
|
||||
1.828000000000e-10 -1.024381876325e-02
|
||||
1.928000000000e-10 1.456486678579e-01
|
||||
2.028000000000e-10 2.379497773075e-01
|
||||
2.128000000000e-10 2.714724605336e-01
|
||||
2.228000000000e-10 3.108042897090e-01
|
||||
2.328000000000e-10 3.600441003378e-01
|
||||
2.428000000000e-10 4.020596908788e-01
|
||||
2.528000000000e-10 4.176332246346e-01
|
||||
2.628000000000e-10 3.534480183483e-01
|
||||
2.728000000000e-10 1.957884716864e-01
|
||||
2.828000000000e-10 1.048070619246e-02
|
||||
2.928000000000e-10 -1.446967472000e-01
|
||||
3.028000000000e-10 -2.375576326508e-01
|
||||
3.128000000000e-10 -2.717915022579e-01
|
||||
3.228000000000e-10 -3.116603869888e-01
|
||||
3.328000000000e-10 -3.608573425706e-01
|
||||
3.428000000000e-10 -4.027490548925e-01
|
||||
3.528000000000e-10 -4.178578104758e-01
|
||||
3.628000000000e-10 -3.532507313188e-01
|
||||
3.728000000000e-10 -1.951536666098e-01
|
||||
3.828000000000e-10 -9.813336101525e-03
|
||||
3.928000000000e-10 1.453604720604e-01
|
||||
4.028000000000e-10 2.379857130154e-01
|
||||
4.128000000000e-10 2.721818635676e-01
|
||||
4.228000000000e-10 3.119088225778e-01
|
||||
4.328000000000e-10 3.611475798924e-01
|
||||
4.428000000000e-10 4.029304727738e-01
|
||||
4.528000000000e-10 4.180700216423e-01
|
||||
4.628000000000e-10 3.533627988360e-01
|
||||
4.728000000000e-10 1.953149158213e-01
|
||||
4.828000000000e-10 9.881134950277e-03
|
||||
4.928000000000e-10 -1.452466419838e-01
|
||||
5.028000000000e-10 -2.379576224969e-01
|
||||
5.128000000000e-10 -2.720935242692e-01
|
||||
5.228000000000e-10 -3.118909714313e-01
|
||||
5.328000000000e-10 -3.610674239906e-01
|
||||
5.428000000000e-10 -4.029229661263e-01
|
||||
5.528000000000e-10 -4.180098057029e-01
|
||||
5.628000000000e-10 -3.533753449283e-01
|
||||
5.728000000000e-10 -1.952727841385e-01
|
||||
5.828000000000e-10 -9.906008920915e-03
|
||||
5.928000000000e-10 1.452800172029e-01
|
||||
6.028000000000e-10 2.379306740359e-01
|
||||
6.128000000000e-10 2.721261300904e-01
|
||||
6.228000000000e-10 3.118646486801e-01
|
||||
6.328000000000e-10 3.611003417151e-01
|
||||
6.428000000000e-10 4.028972890619e-01
|
||||
6.528000000000e-10 4.180401129989e-01
|
||||
6.628000000000e-10 3.533488930459e-01
|
||||
6.728000000000e-10 1.953007885397e-01
|
||||
6.828000000000e-10 9.878072761317e-03
|
||||
6.928000000000e-10 -1.452545395230e-01
|
||||
7.028000000000e-10 -2.379578117562e-01
|
||||
7.128000000000e-10 -2.721008877684e-01
|
||||
7.228000000000e-10 -3.118914026492e-01
|
||||
7.328000000000e-10 -3.610744602697e-01
|
||||
7.428000000000e-10 -4.029226014194e-01
|
||||
7.528000000000e-10 -4.180151483436e-01
|
||||
7.628000000000e-10 -3.533732531474e-01
|
||||
7.728000000000e-10 -1.952759500525e-01
|
||||
7.828000000000e-10 -9.902411226855e-03
|
||||
7.928000000000e-10 1.452776462046e-01
|
||||
8.028000000000e-10 2.379341379884e-01
|
||||
8.128000000000e-10 2.721234101956e-01
|
||||
8.228000000000e-10 3.118677116052e-01
|
||||
8.328000000000e-10 3.610975209728e-01
|
||||
8.428000000000e-10 4.029000595077e-01
|
||||
8.528000000000e-10 4.180375331400e-01
|
||||
8.628000000000e-10 3.533517750284e-01
|
||||
8.728000000000e-10 1.952981248182e-01
|
||||
8.828000000000e-10 9.880873061622e-03
|
||||
8.928000000000e-10 -1.452571579233e-01
|
||||
9.028000000000e-10 -2.379551078725e-01
|
||||
9.128000000000e-10 -2.721034614056e-01
|
||||
9.228000000000e-10 -3.118886463518e-01
|
||||
9.328000000000e-10 -3.610770519544e-01
|
||||
9.428000000000e-10 -4.029199107687e-01
|
||||
9.528000000000e-10 -4.180177452829e-01
|
||||
9.628000000000e-10 -3.533708821878e-01
|
||||
9.728000000000e-10 -1.952784134813e-01
|
||||
9.828000000000e-10 -9.899898542678e-03
|
||||
9.928000000000e-10 1.452754037376e-01
|
||||
1.000000000000e-09 2.207322871295e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 10
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: ff
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_10
|
||||
temperature: '-40'
|
||||
vdd: '1.2'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_11/CML_core_tb_11.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp -40
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -3.668500025046e-01
|
||||
1.728000000000e-10 -1.978704758130e-01
|
||||
1.828000000000e-10 -3.069550951996e-03
|
||||
1.928000000000e-10 1.561389387989e-01
|
||||
2.028000000000e-10 2.488697408913e-01
|
||||
2.128000000000e-10 2.833379270136e-01
|
||||
2.228000000000e-10 3.221467647695e-01
|
||||
2.328000000000e-10 3.723176028273e-01
|
||||
2.428000000000e-10 4.147931582649e-01
|
||||
2.528000000000e-10 4.286646301121e-01
|
||||
2.628000000000e-10 3.614677855799e-01
|
||||
2.728000000000e-10 1.982726052647e-01
|
||||
2.828000000000e-10 5.580533140739e-03
|
||||
2.928000000000e-10 -1.536551403474e-01
|
||||
3.028000000000e-10 -2.474729097395e-01
|
||||
3.128000000000e-10 -2.827981749211e-01
|
||||
3.228000000000e-10 -3.222400643179e-01
|
||||
3.328000000000e-10 -3.724510578191e-01
|
||||
3.428000000000e-10 -4.149487937489e-01
|
||||
3.528000000000e-10 -4.285094572794e-01
|
||||
3.628000000000e-10 -3.610716711123e-01
|
||||
3.728000000000e-10 -1.975613483211e-01
|
||||
3.828000000000e-10 -4.936396792217e-03
|
||||
3.928000000000e-10 1.542720670721e-01
|
||||
4.028000000000e-10 2.478554934965e-01
|
||||
4.128000000000e-10 2.831768205427e-01
|
||||
4.228000000000e-10 3.224764565266e-01
|
||||
4.328000000000e-10 3.727376628527e-01
|
||||
4.428000000000e-10 4.151128450004e-01
|
||||
4.528000000000e-10 4.287030398326e-01
|
||||
4.628000000000e-10 3.611465460996e-01
|
||||
4.728000000000e-10 1.976871290976e-01
|
||||
4.828000000000e-10 4.962067120498e-03
|
||||
4.928000000000e-10 -1.541857483448e-01
|
||||
5.028000000000e-10 -2.478549856990e-01
|
||||
5.128000000000e-10 -2.831031432303e-01
|
||||
5.228000000000e-10 -3.224786212940e-01
|
||||
5.328000000000e-10 -3.726675199031e-01
|
||||
5.428000000000e-10 -4.151222726988e-01
|
||||
5.528000000000e-10 -4.286496175832e-01
|
||||
5.628000000000e-10 -3.611719348809e-01
|
||||
5.728000000000e-10 -1.976471175954e-01
|
||||
5.828000000000e-10 -4.995016715658e-03
|
||||
5.928000000000e-10 1.542195273485e-01
|
||||
6.028000000000e-10 2.478226151197e-01
|
||||
6.128000000000e-10 2.831371441394e-01
|
||||
6.228000000000e-10 3.224465270882e-01
|
||||
6.328000000000e-10 3.727020829784e-01
|
||||
6.428000000000e-10 4.150919188021e-01
|
||||
6.528000000000e-10 4.286821395136e-01
|
||||
6.628000000000e-10 3.611419365066e-01
|
||||
6.728000000000e-10 1.976777927703e-01
|
||||
6.828000000000e-10 4.963507878799e-03
|
||||
6.928000000000e-10 -1.541913949207e-01
|
||||
7.028000000000e-10 -2.478529800499e-01
|
||||
7.128000000000e-10 -2.831092109235e-01
|
||||
7.228000000000e-10 -3.224762894768e-01
|
||||
7.328000000000e-10 -3.726728668334e-01
|
||||
7.428000000000e-10 -4.151201370880e-01
|
||||
7.528000000000e-10 -4.286543531433e-01
|
||||
7.628000000000e-10 -3.611692599178e-01
|
||||
7.728000000000e-10 -1.976499135935e-01
|
||||
7.828000000000e-10 -4.990471824028e-03
|
||||
7.928000000000e-10 1.542171227717e-01
|
||||
8.028000000000e-10 2.478269854332e-01
|
||||
8.128000000000e-10 2.831343470853e-01
|
||||
8.228000000000e-10 3.224500362551e-01
|
||||
8.328000000000e-10 3.726987138014e-01
|
||||
8.428000000000e-10 4.150953468135e-01
|
||||
8.528000000000e-10 4.286792233560e-01
|
||||
8.628000000000e-10 3.611455588852e-01
|
||||
8.728000000000e-10 1.976743961081e-01
|
||||
8.828000000000e-10 4.966432661841e-03
|
||||
8.928000000000e-10 -1.541946484524e-01
|
||||
9.028000000000e-10 -2.478502288236e-01
|
||||
9.128000000000e-10 -2.831123474050e-01
|
||||
9.228000000000e-10 -3.224731331421e-01
|
||||
9.328000000000e-10 -3.726757720747e-01
|
||||
9.428000000000e-10 -4.151172388981e-01
|
||||
9.528000000000e-10 -4.286573581279e-01
|
||||
9.628000000000e-10 -3.611667698498e-01
|
||||
9.728000000000e-10 -1.976525646923e-01
|
||||
9.828000000000e-10 -4.987471597641e-03
|
||||
9.928000000000e-10 1.542147143463e-01
|
||||
1.000000000000e-09 2.301006397866e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 11
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: ss
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_11
|
||||
temperature: '-40'
|
||||
vdd: '1.2'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_12/CML_core_tb_12.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp 27
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -3.388323931118e-01
|
||||
1.728000000000e-10 -1.851651732117e-01
|
||||
1.828000000000e-10 -4.985209728467e-03
|
||||
1.928000000000e-10 1.464303664236e-01
|
||||
2.028000000000e-10 2.390890865534e-01
|
||||
2.128000000000e-10 2.778147857521e-01
|
||||
2.228000000000e-10 3.140298283994e-01
|
||||
2.328000000000e-10 3.564486269316e-01
|
||||
2.428000000000e-10 3.920777300126e-01
|
||||
2.528000000000e-10 4.026431485981e-01
|
||||
2.628000000000e-10 3.407818057760e-01
|
||||
2.728000000000e-10 1.919413521399e-01
|
||||
2.828000000000e-10 1.380608162301e-02
|
||||
2.928000000000e-10 -1.377275777470e-01
|
||||
3.028000000000e-10 -2.320727525709e-01
|
||||
3.128000000000e-10 -2.723718882130e-01
|
||||
3.228000000000e-10 -3.097195919600e-01
|
||||
3.328000000000e-10 -3.525356430610e-01
|
||||
3.428000000000e-10 -3.885938438581e-01
|
||||
3.528000000000e-10 -3.995683250409e-01
|
||||
3.628000000000e-10 -3.382392747069e-01
|
||||
3.728000000000e-10 -1.897685835172e-01
|
||||
3.828000000000e-10 -1.211190537496e-02
|
||||
3.928000000000e-10 1.391365825109e-01
|
||||
4.028000000000e-10 2.331433172305e-01
|
||||
4.128000000000e-10 2.733678679410e-01
|
||||
4.228000000000e-10 3.105714733021e-01
|
||||
4.328000000000e-10 3.533708758772e-01
|
||||
4.428000000000e-10 3.892622592719e-01
|
||||
4.528000000000e-10 4.001272859757e-01
|
||||
4.628000000000e-10 3.385642563623e-01
|
||||
4.728000000000e-10 1.899916781684e-01
|
||||
4.828000000000e-10 1.218033620775e-02
|
||||
4.928000000000e-10 -1.390656421002e-01
|
||||
5.028000000000e-10 -2.331398693887e-01
|
||||
5.128000000000e-10 -2.733037181082e-01
|
||||
5.228000000000e-10 -3.105518491305e-01
|
||||
5.328000000000e-10 -3.533032068815e-01
|
||||
5.428000000000e-10 -3.892531494066e-01
|
||||
5.528000000000e-10 -4.000849100741e-01
|
||||
5.628000000000e-10 -3.385845178207e-01
|
||||
5.728000000000e-10 -1.899774211598e-01
|
||||
5.828000000000e-10 -1.221996984529e-02
|
||||
5.928000000000e-10 1.390720456320e-01
|
||||
6.028000000000e-10 2.331027694491e-01
|
||||
6.128000000000e-10 2.733156842718e-01
|
||||
6.228000000000e-10 3.105197170718e-01
|
||||
6.328000000000e-10 3.533171034352e-01
|
||||
6.428000000000e-10 3.892243222051e-01
|
||||
6.528000000000e-10 4.000997182403e-01
|
||||
6.628000000000e-10 3.385594083538e-01
|
||||
6.728000000000e-10 1.899934277570e-01
|
||||
6.828000000000e-10 1.219466050150e-02
|
||||
6.928000000000e-10 -1.390553921853e-01
|
||||
7.028000000000e-10 -2.331263672195e-01
|
||||
7.128000000000e-10 -2.732987102222e-01
|
||||
7.228000000000e-10 -3.105421090081e-01
|
||||
7.328000000000e-10 -3.532994962925e-01
|
||||
7.428000000000e-10 -3.892451651423e-01
|
||||
7.528000000000e-10 -4.000824543639e-01
|
||||
7.628000000000e-10 -3.385783830881e-01
|
||||
7.728000000000e-10 -1.899748483052e-01
|
||||
7.828000000000e-10 -1.221334688082e-02
|
||||
7.928000000000e-10 1.390733351530e-01
|
||||
8.028000000000e-10 2.331082732353e-01
|
||||
8.128000000000e-10 2.733160005972e-01
|
||||
8.228000000000e-10 3.105237742784e-01
|
||||
8.328000000000e-10 3.533165556732e-01
|
||||
8.428000000000e-10 3.892279285214e-01
|
||||
8.528000000000e-10 4.000991009611e-01
|
||||
8.628000000000e-10 3.385625511294e-01
|
||||
8.728000000000e-10 1.899914169425e-01
|
||||
8.828000000000e-10 1.219669858142e-02
|
||||
8.928000000000e-10 -1.390576717936e-01
|
||||
9.028000000000e-10 -2.331245304799e-01
|
||||
9.128000000000e-10 -2.733009677599e-01
|
||||
9.228000000000e-10 -3.105397739050e-01
|
||||
9.328000000000e-10 -3.533012749995e-01
|
||||
9.428000000000e-10 -3.892430673555e-01
|
||||
9.528000000000e-10 -4.000844420176e-01
|
||||
9.628000000000e-10 -3.385768441038e-01
|
||||
9.728000000000e-10 -1.899764612955e-01
|
||||
9.828000000000e-10 -1.221122328152e-02
|
||||
9.928000000000e-10 1.390717643268e-01
|
||||
1.000000000000e-09 2.142511381663e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 12
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: tt
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_12
|
||||
temperature: '27'
|
||||
vdd: '1.2'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_13/CML_core_tb_13.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ff
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp 27
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -3.406999838743e-01
|
||||
1.728000000000e-10 -1.879936990253e-01
|
||||
1.828000000000e-10 -9.262901303246e-03
|
||||
1.928000000000e-10 1.413611635485e-01
|
||||
2.028000000000e-10 2.336775345801e-01
|
||||
2.128000000000e-10 2.717294842894e-01
|
||||
2.228000000000e-10 3.082620487639e-01
|
||||
2.328000000000e-10 3.509422339502e-01
|
||||
2.428000000000e-10 3.871053596645e-01
|
||||
2.528000000000e-10 3.988940820744e-01
|
||||
2.628000000000e-10 3.384312270542e-01
|
||||
2.728000000000e-10 1.913281233779e-01
|
||||
2.828000000000e-10 1.537343295661e-02
|
||||
2.928000000000e-10 -1.347916275204e-01
|
||||
3.028000000000e-10 -2.283419665374e-01
|
||||
3.128000000000e-10 -2.677291408127e-01
|
||||
3.228000000000e-10 -3.052231075401e-01
|
||||
3.328000000000e-10 -3.481601477547e-01
|
||||
3.428000000000e-10 -3.845854123080e-01
|
||||
3.528000000000e-10 -3.965379624605e-01
|
||||
3.628000000000e-10 -3.363314255870e-01
|
||||
3.728000000000e-10 -1.893723794407e-01
|
||||
3.828000000000e-10 -1.375643865463e-02
|
||||
3.928000000000e-10 1.361849816757e-01
|
||||
4.028000000000e-10 2.294005939140e-01
|
||||
4.128000000000e-10 2.686949729273e-01
|
||||
4.228000000000e-10 3.060328157788e-01
|
||||
4.328000000000e-10 3.489590274886e-01
|
||||
4.428000000000e-10 3.852266672724e-01
|
||||
4.528000000000e-10 3.970921187630e-01
|
||||
4.628000000000e-10 3.366736237881e-01
|
||||
4.728000000000e-10 1.896320772426e-01
|
||||
4.828000000000e-10 1.386475371506e-02
|
||||
4.928000000000e-10 -1.360753156283e-01
|
||||
5.028000000000e-10 -2.293675908871e-01
|
||||
5.128000000000e-10 -2.686062530832e-01
|
||||
5.228000000000e-10 -3.059945800423e-01
|
||||
5.328000000000e-10 -3.488729675224e-01
|
||||
5.428000000000e-10 -3.852026785029e-01
|
||||
5.528000000000e-10 -3.970350594993e-01
|
||||
5.628000000000e-10 -3.366834486256e-01
|
||||
5.728000000000e-10 -1.896077423819e-01
|
||||
5.828000000000e-10 -1.389840122586e-02
|
||||
5.928000000000e-10 1.360876217327e-01
|
||||
6.028000000000e-10 2.293336021557e-01
|
||||
6.128000000000e-10 2.686225622920e-01
|
||||
6.228000000000e-10 3.059648098566e-01
|
||||
6.328000000000e-10 3.488907093130e-01
|
||||
6.428000000000e-10 3.851753633828e-01
|
||||
6.528000000000e-10 3.970526526302e-01
|
||||
6.628000000000e-10 3.366583891048e-01
|
||||
6.728000000000e-10 1.896251667832e-01
|
||||
6.828000000000e-10 1.387242911077e-02
|
||||
6.928000000000e-10 -1.360702314024e-01
|
||||
7.028000000000e-10 -2.293580006158e-01
|
||||
7.128000000000e-10 -2.686047945045e-01
|
||||
7.228000000000e-10 -3.059879182353e-01
|
||||
7.328000000000e-10 -3.488722408399e-01
|
||||
7.428000000000e-10 -3.851969589401e-01
|
||||
7.528000000000e-10 -3.970345404264e-01
|
||||
7.628000000000e-10 -3.366782708831e-01
|
||||
7.728000000000e-10 -1.896058621860e-01
|
||||
7.828000000000e-10 -1.389192450355e-02
|
||||
7.928000000000e-10 1.360888260036e-01
|
||||
8.028000000000e-10 2.293391038565e-01
|
||||
8.128000000000e-10 2.686227634282e-01
|
||||
8.228000000000e-10 3.059688096850e-01
|
||||
8.328000000000e-10 3.488900661997e-01
|
||||
8.428000000000e-10 3.851789257250e-01
|
||||
8.528000000000e-10 3.970519764807e-01
|
||||
8.628000000000e-10 3.366616134215e-01
|
||||
8.728000000000e-10 1.896231972496e-01
|
||||
8.828000000000e-10 1.387461571983e-02
|
||||
8.928000000000e-10 -1.360724758723e-01
|
||||
9.028000000000e-10 -2.293560182270e-01
|
||||
9.128000000000e-10 -2.686070528237e-01
|
||||
9.228000000000e-10 -3.059854790954e-01
|
||||
9.328000000000e-10 -3.488740842624e-01
|
||||
9.428000000000e-10 -3.851947329758e-01
|
||||
9.528000000000e-10 -3.970365843841e-01
|
||||
9.628000000000e-10 -3.366766115599e-01
|
||||
9.728000000000e-10 -1.896075309897e-01
|
||||
9.828000000000e-10 -1.388973786858e-02
|
||||
9.928000000000e-10 1.360872156510e-01
|
||||
1.000000000000e-09 2.108297225004e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 13
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: ff
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_13
|
||||
temperature: '27'
|
||||
vdd: '1.2'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_14/CML_core_tb_14.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_ss
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp 27
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -3.445927026449e-01
|
||||
1.728000000000e-10 -1.889320969581e-01
|
||||
1.828000000000e-10 -5.355234564888e-03
|
||||
1.928000000000e-10 1.489911128277e-01
|
||||
2.028000000000e-10 2.434822449071e-01
|
||||
2.128000000000e-10 2.838702060450e-01
|
||||
2.228000000000e-10 3.202156401988e-01
|
||||
2.328000000000e-10 3.629401474789e-01
|
||||
2.428000000000e-10 3.990998051164e-01
|
||||
2.528000000000e-10 4.099063275401e-01
|
||||
2.628000000000e-10 3.477923521709e-01
|
||||
2.728000000000e-10 1.968519788675e-01
|
||||
2.828000000000e-10 1.493750763318e-02
|
||||
2.928000000000e-10 -1.398437743336e-01
|
||||
3.028000000000e-10 -2.362338093992e-01
|
||||
3.128000000000e-10 -2.782887085314e-01
|
||||
3.228000000000e-10 -3.158910292643e-01
|
||||
3.328000000000e-10 -3.590893499920e-01
|
||||
3.428000000000e-10 -3.957248346768e-01
|
||||
3.528000000000e-10 -4.069627998073e-01
|
||||
3.628000000000e-10 -3.454070734708e-01
|
||||
3.728000000000e-10 -1.948243362004e-01
|
||||
3.828000000000e-10 -1.337926088934e-02
|
||||
3.928000000000e-10 1.411472162204e-01
|
||||
4.028000000000e-10 2.372231231196e-01
|
||||
4.128000000000e-10 2.792284454069e-01
|
||||
4.228000000000e-10 3.166817589057e-01
|
||||
4.328000000000e-10 3.598702175634e-01
|
||||
4.428000000000e-10 3.963375250752e-01
|
||||
4.528000000000e-10 4.074753309124e-01
|
||||
4.628000000000e-10 3.456854225481e-01
|
||||
4.728000000000e-10 1.950177434222e-01
|
||||
4.828000000000e-10 1.342430394201e-02
|
||||
4.928000000000e-10 -1.410850608466e-01
|
||||
5.028000000000e-10 -2.372286880899e-01
|
||||
5.128000000000e-10 -2.791659662153e-01
|
||||
5.228000000000e-10 -3.166689293508e-01
|
||||
5.328000000000e-10 -3.598026374101e-01
|
||||
5.428000000000e-10 -3.963331138013e-01
|
||||
5.528000000000e-10 -4.074316676804e-01
|
||||
5.628000000000e-10 -3.457088001737e-01
|
||||
5.728000000000e-10 -1.950000158899e-01
|
||||
5.828000000000e-10 -1.346504722293e-02
|
||||
5.928000000000e-10 1.410957635246e-01
|
||||
6.028000000000e-10 2.371909425038e-01
|
||||
6.128000000000e-10 2.791817404178e-01
|
||||
6.228000000000e-10 3.166356138828e-01
|
||||
6.328000000000e-10 3.598203377806e-01
|
||||
6.428000000000e-10 3.963033609435e-01
|
||||
6.528000000000e-10 4.074499160221e-01
|
||||
6.628000000000e-10 3.456826167292e-01
|
||||
6.728000000000e-10 1.950190841630e-01
|
||||
6.828000000000e-10 1.343803454206e-02
|
||||
6.928000000000e-10 -1.410764950259e-01
|
||||
7.028000000000e-10 -2.372163265848e-01
|
||||
7.128000000000e-10 -2.791624229651e-01
|
||||
7.228000000000e-10 -3.166599225368e-01
|
||||
7.328000000000e-10 -3.598002455584e-01
|
||||
7.428000000000e-10 -3.963259615583e-01
|
||||
7.528000000000e-10 -4.074304662079e-01
|
||||
7.628000000000e-10 -3.457033629648e-01
|
||||
7.728000000000e-10 -1.949983704767e-01
|
||||
7.828000000000e-10 -1.345872104163e-02
|
||||
7.928000000000e-10 1.410962716693e-01
|
||||
8.028000000000e-10 2.371963808526e-01
|
||||
8.128000000000e-10 2.791814500218e-01
|
||||
8.228000000000e-10 3.166396456569e-01
|
||||
8.328000000000e-10 3.598191409746e-01
|
||||
8.428000000000e-10 3.963069790813e-01
|
||||
8.528000000000e-10 4.074488078929e-01
|
||||
8.628000000000e-10 3.456858987705e-01
|
||||
8.728000000000e-10 1.950166421641e-01
|
||||
8.828000000000e-10 1.344025602045e-02
|
||||
8.928000000000e-10 -1.410790665154e-01
|
||||
9.028000000000e-10 -2.372142995262e-01
|
||||
9.128000000000e-10 -2.791649325552e-01
|
||||
9.228000000000e-10 -3.166573514474e-01
|
||||
9.328000000000e-10 -3.598022359716e-01
|
||||
9.428000000000e-10 -3.963236588924e-01
|
||||
9.528000000000e-10 -4.074326778223e-01
|
||||
9.628000000000e-10 -3.457016440453e-01
|
||||
9.728000000000e-10 -1.950001702792e-01
|
||||
9.828000000000e-10 -1.345633761364e-02
|
||||
9.928000000000e-10 1.410945129066e-01
|
||||
1.000000000000e-09 2.176807579100e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
DUT_path: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
N: 14
|
||||
PDK: ihp-sg13g2
|
||||
PDK_ROOT: /home/pedersen/IHP-Open-PDK
|
||||
corner: ss
|
||||
filename: CML_core_tb
|
||||
simpath: /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_14
|
||||
temperature: '27'
|
||||
vdd: '1.2'
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
* a custom spiceinit file for IHP-Open-PDK
|
||||
|
||||
* export PDK_ROOT and PDK environmental variables first and add it to your .bashrc
|
||||
* export PDK_ROOT= installation_specific_directory/IHP-Open-PDK
|
||||
* export PDK=ihp-sg13g2
|
||||
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_stdcell/spice )
|
||||
setcs sourcepath = ( $sourcepath $PDK_ROOT/$PDK/libs.tech/ngspice/models $PDK_ROOT/ihp-sg13g2/libs.ref/sg13g2_io/spice )
|
||||
*echo $sourcepath
|
||||
|
||||
*option tnom=28
|
||||
*option list
|
||||
|
||||
* KLU solver still do not work correctly for every simulation
|
||||
*option klu
|
||||
|
||||
*option node
|
||||
*option opts
|
||||
*option warn=1
|
||||
*option maxwarns=10
|
||||
*option savecurrents
|
||||
|
||||
*set ngbehavior=hsa
|
||||
*set noinit
|
||||
|
||||
* add OSDI
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/psp103_nqs.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/r3_cmc.osdi'
|
||||
osdi '$PDK_ROOT/$PDK/libs.tech/ngspice/osdi/mosvar.osdi'
|
||||
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
N 740 -940 740 -920 {lab=GND}
|
||||
N 740 -1090 740 -1060 {lab=VDD}
|
||||
N 600 -1020 620 -1020 {lab=Vinplus}
|
||||
N 600 -980 620 -980 {lab=Vinminus}
|
||||
N 860 -1020 880 -1020 {lab=Voplus}
|
||||
N 860 -980 880 -980 {lab=Vominus}
|
||||
N 1150 -850 1150 -820 {lab=VDD}
|
||||
N 1150 -760 1150 -730 {lab=GND}
|
||||
N 930 -850 930 -820 {lab=Vinminus}
|
||||
N 930 -760 930 -730 {lab=GND}
|
||||
N 720 -850 720 -820 {lab=Vinplus}
|
||||
N 720 -760 720 -730 {lab=GND}
|
||||
C {code_shown.sym} 10 -1220 0 0 {name=transient_tb only_toplevel=false
|
||||
value="
|
||||
.ic V(Voplus)=1.2
|
||||
.control
|
||||
set noaskquit
|
||||
set numdgt=12
|
||||
|
||||
* Save & simulate
|
||||
save all
|
||||
op
|
||||
write CML_core_tb.raw
|
||||
set appendwrite
|
||||
tran 10p 1n 160p
|
||||
|
||||
* Explicit vectors
|
||||
let vo_p = v(Voplus)
|
||||
let vo_m = v(Vominus)
|
||||
let vo_diff = vo_p - vo_m
|
||||
|
||||
set wr_singlescale
|
||||
wrdata /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/runs/RUN_2025-11-18_12-58-29/parameters/ac_params/run_15/CML_core_tb_15.data vo_diff
|
||||
quit
|
||||
|
||||
.endc
|
||||
"}
|
||||
C {opin.sym} 880 -1020 2 1 {name=p6 lab=Voplus}
|
||||
C {opin.sym} 880 -980 0 0 {name=p9 lab=Vominus}
|
||||
C {devices/code_shown.sym} 10 -620 0 0 {name=SETUP only_toplevel=true
|
||||
format="tcleval( @value )"
|
||||
value="
|
||||
.lib /home/pedersen/IHP-Open-PDK/ihp-sg13g2/libs.tech/ngspice/models/cornerMOSlv.lib mos_tt
|
||||
|
||||
.include /home/pedersen/projects/IHP-AnalogAcademy/modules/module_4_type_2_PLL/CML_divider/xschem/simulations/schematic/CML_divider.spice
|
||||
|
||||
.temp 80
|
||||
"
|
||||
}
|
||||
C {iopin.sym} 740 -1090 0 1 {name=p2 lab=VDD}
|
||||
C {ipin.sym} 600 -1020 2 1 {name=p4 lab=Vinplus}
|
||||
C {ipin.sym} 600 -980 2 1 {name=p1 lab=Vinminus}
|
||||
C {CML_divider.sym} 740 -1000 0 1 {name=x1}
|
||||
C {vsource.sym} 1150 -790 0 0 {name=V1 value=1.2 savecurrent=false}
|
||||
C {gnd.sym} 1150 -730 0 0 {name=l2 lab=GND}
|
||||
C {lab_pin.sym} 1150 -850 0 0 {name=p5 sig_type=std_logic lab=VDD}
|
||||
C {gnd.sym} 930 -730 0 0 {name=l1 lab=GND}
|
||||
C {lab_pin.sym} 930 -850 0 0 {name=p8 sig_type=std_logic lab=Vinminus}
|
||||
C {vsource.sym} 720 -790 0 0 {name=V3 value="SIN(0.6 0.3 10G 0 0 0)" savecurrent=false}
|
||||
C {gnd.sym} 720 -730 0 0 {name=l4 lab=GND
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {lab_pin.sym} 720 -850 0 0 {name=p10 sig_type=std_logic lab=Vinplus
|
||||
value="dc 0 ac 0 SIN(0.6 0.3 12.7k 0 0 0)"}
|
||||
C {vsource.sym} 930 -790 0 0 {name=V2 value="SIN(0.6 0.3 10G 0 0 180)" savecurrent=false}
|
||||
C {gnd.sym} 740 -920 0 0 {name=l3 lab=GND}
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
1.628000000000e-10 -2.831577979118e-01
|
||||
1.728000000000e-10 -1.548331321524e-01
|
||||
1.828000000000e-10 2.954507991941e-03
|
||||
1.928000000000e-10 1.412083661187e-01
|
||||
2.028000000000e-10 2.303947789211e-01
|
||||
2.128000000000e-10 2.725788032239e-01
|
||||
2.228000000000e-10 3.064646814943e-01
|
||||
2.328000000000e-10 3.412898568956e-01
|
||||
2.428000000000e-10 3.692979025942e-01
|
||||
2.528000000000e-10 3.751979264520e-01
|
||||
2.628000000000e-10 3.186495551608e-01
|
||||
2.728000000000e-10 1.849115684226e-01
|
||||
2.828000000000e-10 2.146912258403e-02
|
||||
2.928000000000e-10 -1.215319416200e-01
|
||||
3.028000000000e-10 -2.147336364713e-01
|
||||
3.128000000000e-10 -2.593628319189e-01
|
||||
3.228000000000e-10 -2.947919001104e-01
|
||||
3.328000000000e-10 -3.306034656465e-01
|
||||
3.428000000000e-10 -3.598903423599e-01
|
||||
3.528000000000e-10 -3.674806029527e-01
|
||||
3.628000000000e-10 -3.131864519443e-01
|
||||
3.728000000000e-10 -1.816607205648e-01
|
||||
3.828000000000e-10 -2.002885045896e-02
|
||||
3.928000000000e-10 1.219326732879e-01
|
||||
4.028000000000e-10 2.146583452252e-01
|
||||
4.128000000000e-10 2.593288859790e-01
|
||||
4.228000000000e-10 2.947836961551e-01
|
||||
4.328000000000e-10 3.305873089453e-01
|
||||
4.428000000000e-10 3.597520160348e-01
|
||||
4.528000000000e-10 3.672634041173e-01
|
||||
4.628000000000e-10 3.128292575731e-01
|
||||
4.728000000000e-10 1.812525079401e-01
|
||||
4.828000000000e-10 1.956255085056e-02
|
||||
4.928000000000e-10 -1.223539241893e-01
|
||||
5.028000000000e-10 -2.150587893921e-01
|
||||
5.128000000000e-10 -2.596440912838e-01
|
||||
5.228000000000e-10 -2.950896959018e-01
|
||||
5.328000000000e-10 -3.308452440946e-01
|
||||
5.428000000000e-10 -3.600168265621e-01
|
||||
5.528000000000e-10 -3.674687038170e-01
|
||||
5.628000000000e-10 -3.130140501398e-01
|
||||
5.728000000000e-10 -1.813584327872e-01
|
||||
5.828000000000e-10 -1.965159115909e-02
|
||||
5.928000000000e-10 1.223212864923e-01
|
||||
6.028000000000e-10 2.150157103205e-01
|
||||
6.128000000000e-10 2.596318060931e-01
|
||||
6.228000000000e-10 2.950524078153e-01
|
||||
6.328000000000e-10 3.308363963911e-01
|
||||
6.428000000000e-10 3.599874022300e-01
|
||||
6.528000000000e-10 3.674690181116e-01
|
||||
6.628000000000e-10 3.129980588961e-01
|
||||
6.728000000000e-10 1.813712653368e-01
|
||||
6.828000000000e-10 1.964491680526e-02
|
||||
6.928000000000e-10 -1.223023112353e-01
|
||||
7.028000000000e-10 -2.150202483004e-01
|
||||
7.128000000000e-10 -2.596144309164e-01
|
||||
7.228000000000e-10 -2.950582886643e-01
|
||||
7.328000000000e-10 -3.308199600200e-01
|
||||
7.428000000000e-10 -3.599931640339e-01
|
||||
7.528000000000e-10 -3.674538095645e-01
|
||||
7.628000000000e-10 -3.130042913922e-01
|
||||
7.728000000000e-10 -1.813570925598e-01
|
||||
7.828000000000e-10 -1.965290666609e-02
|
||||
7.928000000000e-10 1.223145971689e-01
|
||||
8.028000000000e-10 2.150114430495e-01
|
||||
8.128000000000e-10 2.596256780136e-01
|
||||
8.228000000000e-10 2.950490452158e-01
|
||||
8.328000000000e-10 3.308307530718e-01
|
||||
8.428000000000e-10 3.599842799802e-01
|
||||
8.528000000000e-10 3.674639698479e-01
|
||||
8.628000000000e-10 3.129957925611e-01
|
||||
8.728000000000e-10 1.813666711568e-01
|
||||
8.828000000000e-10 1.964348030724e-02
|
||||
8.928000000000e-10 -1.223056361887e-01
|
||||
9.028000000000e-10 -2.150207890100e-01
|
||||
9.128000000000e-10 -2.596171721225e-01
|
||||
9.228000000000e-10 -2.950581404305e-01
|
||||
9.328000000000e-10 -3.308221104591e-01
|
||||
9.428000000000e-10 -3.599929167296e-01
|
||||
9.528000000000e-10 -3.674557320782e-01
|
||||
9.628000000000e-10 -3.130039671541e-01
|
||||
9.728000000000e-10 -1.813582011282e-01
|
||||
9.828000000000e-10 -1.965175786777e-02
|
||||
9.928000000000e-10 1.223137237372e-01
|
||||
1.000000000000e-09 1.953703252853e-01
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
v {xschem version=3.4.6 file_version=1.2}
|
||||
G {}
|
||||
K {type=primitive
|
||||
format="@name @pinlist @symname"
|
||||
template="name=x1"
|
||||
}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 4 -120 -20 -100 -20 {}
|
||||
L 4 -120 20 -100 20 {}
|
||||
L 4 100 -20 120 -20 {}
|
||||
L 4 100 20 120 20 {}
|
||||
L 7 0 -60 0 -40 {}
|
||||
L 7 0 40 0 60 {}
|
||||
B 5 -122.5 -22.5 -117.5 -17.5 {name=Vo+ dir=out}
|
||||
B 5 -122.5 17.5 -117.5 22.5 {name=Vo- dir=out}
|
||||
B 5 117.5 -22.5 122.5 -17.5 {name=Vi+ dir=in}
|
||||
B 5 117.5 17.5 122.5 22.5 {name=Vi- dir=in}
|
||||
B 5 -2.5 -62.5 2.5 -57.5 {name=vdd dir=inout}
|
||||
B 5 -2.5 57.5 2.5 62.5 {name=gnd dir=inout}
|
||||
P 4 5 100 -40 -100 -40 -100 40 100 40 100 -40 {}
|
||||
T {@symname} -44 -6 0 0 0.3 0.3 {}
|
||||
T {@name} 45 -52 0 0 0.2 0.2 {}
|
||||
T {Vo+} -95 -24 0 0 0.2 0.2 {}
|
||||
T {Vo-} -95 16 0 0 0.2 0.2 {}
|
||||
T {Vi+} 95 -16 2 0 0.2 0.2 {}
|
||||
T {Vi-} 95 24 2 0 0.2 0.2 {}
|
||||
T {vdd} 10 -39 0 1 0.2 0.2 {}
|
||||
T {gnd} -10 34 2 1 0.2 0.2 {}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue