Commit 7f108d61 authored by Weston's avatar Weston
Browse files

added new files

parent 1fee42b7
* NGSPICE file created from ringosc_flat.ext - technology: sky130A
.subckt ringosc_flat out vdd gnd
X0 sky130_fd_sc_hd__inv_1_0[4]/A sky130_fd_sc_hd__inv_1_0[3]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=1.82e+12p ps=1.764e+07u w=1e+06u l=150000u
X1 sky130_fd_sc_hd__inv_1_0[2]/A sky130_fd_sc_hd__inv_1_0[1]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=1.183e+12p ps=1.274e+07u w=650000u l=150000u
X2 sky130_fd_sc_hd__inv_1_0[5]/A sky130_fd_sc_hd__inv_1_0[4]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X3 sky130_fd_sc_hd__inv_1_0[3]/A sky130_fd_sc_hd__inv_1_0[2]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X4 sky130_fd_sc_hd__inv_1_0[1]/A out vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X5 sky130_fd_sc_hd__inv_1_0[1]/A out gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X6 sky130_fd_sc_hd__inv_1_0[3]/A sky130_fd_sc_hd__inv_1_0[2]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X7 sky130_fd_sc_hd__inv_1_0[6]/A sky130_fd_sc_hd__inv_1_0[5]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X8 sky130_fd_sc_hd__inv_1_0[5]/A sky130_fd_sc_hd__inv_1_0[4]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X9 sky130_fd_sc_hd__inv_1_0[6]/A sky130_fd_sc_hd__inv_1_0[5]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X10 out sky130_fd_sc_hd__inv_1_0[6]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X11 sky130_fd_sc_hd__inv_1_0[2]/A sky130_fd_sc_hd__inv_1_0[1]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X12 sky130_fd_sc_hd__inv_1_0[4]/A sky130_fd_sc_hd__inv_1_0[3]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X13 out sky130_fd_sc_hd__inv_1_0[6]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
.ends
* NGSPICE file created from /home/wbraun/projects/sky130-analog/designs/ringosc/layout/ringosc_flat.ext - technology: sky130A
.subckt home/wbraun/projects/sky130-analog/designs/ringosc/layout/ringosc_flat out
+ vdd gnd
X0 sky130_fd_sc_hd__inv_1_0[4]/A sky130_fd_sc_hd__inv_1_0[3]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=1.82e+12p ps=1.764e+07u w=1e+06u l=150000u
X1 sky130_fd_sc_hd__inv_1_0[2]/A sky130_fd_sc_hd__inv_1_0[1]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=1.183e+12p ps=1.274e+07u w=650000u l=150000u
X2 sky130_fd_sc_hd__inv_1_0[5]/A sky130_fd_sc_hd__inv_1_0[4]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X3 sky130_fd_sc_hd__inv_1_0[3]/A sky130_fd_sc_hd__inv_1_0[2]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X4 sky130_fd_sc_hd__inv_1_0[1]/A out vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X5 sky130_fd_sc_hd__inv_1_0[1]/A out gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X6 sky130_fd_sc_hd__inv_1_0[3]/A sky130_fd_sc_hd__inv_1_0[2]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X7 sky130_fd_sc_hd__inv_1_0[6]/A sky130_fd_sc_hd__inv_1_0[5]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X8 sky130_fd_sc_hd__inv_1_0[5]/A sky130_fd_sc_hd__inv_1_0[4]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X9 sky130_fd_sc_hd__inv_1_0[6]/A sky130_fd_sc_hd__inv_1_0[5]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X10 out sky130_fd_sc_hd__inv_1_0[6]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X11 sky130_fd_sc_hd__inv_1_0[2]/A sky130_fd_sc_hd__inv_1_0[1]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X12 sky130_fd_sc_hd__inv_1_0[4]/A sky130_fd_sc_hd__inv_1_0[3]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X13 out sky130_fd_sc_hd__inv_1_0[6]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
C0 vdd sky130_fd_sc_hd__inv_1_0[2]/A 0.41fF
C1 sky130_fd_sc_hd__inv_1_0[2]/A sky130_fd_sc_hd__inv_1_0[4]/A 0.01fF
C2 sky130_fd_sc_hd__inv_1_0[5]/A sky130_fd_sc_hd__inv_1_0[3]/A 0.01fF
C3 sky130_fd_sc_hd__inv_1_0[1]/A out 0.35fF
C4 sky130_fd_sc_hd__inv_1_0[5]/A sky130_fd_sc_hd__inv_1_0[6]/A 0.22fF
C5 sky130_fd_sc_hd__inv_1_0[5]/A vdd 0.41fF
C6 sky130_fd_sc_hd__inv_1_0[5]/A sky130_fd_sc_hd__inv_1_0[4]/A 0.22fF
C7 sky130_fd_sc_hd__inv_1_0[1]/A sky130_fd_sc_hd__inv_1_0[2]/A 0.22fF
C8 out sky130_fd_sc_hd__inv_1_0[2]/A 0.20fF
C9 vdd sky130_fd_sc_hd__inv_1_0[3]/A 0.41fF
C10 sky130_fd_sc_hd__inv_1_0[4]/A sky130_fd_sc_hd__inv_1_0[3]/A 0.22fF
C11 vdd sky130_fd_sc_hd__inv_1_0[6]/A 0.43fF
C12 sky130_fd_sc_hd__inv_1_0[6]/A sky130_fd_sc_hd__inv_1_0[4]/A 0.01fF
C13 sky130_fd_sc_hd__inv_1_0[5]/A out 0.20fF
C14 vdd sky130_fd_sc_hd__inv_1_0[4]/A 0.41fF
C15 sky130_fd_sc_hd__inv_1_0[1]/A sky130_fd_sc_hd__inv_1_0[3]/A 0.01fF
C16 out sky130_fd_sc_hd__inv_1_0[3]/A 0.19fF
C17 sky130_fd_sc_hd__inv_1_0[2]/A sky130_fd_sc_hd__inv_1_0[3]/A 0.22fF
C18 out sky130_fd_sc_hd__inv_1_0[6]/A 0.40fF
C19 vdd out 0.85fF
C20 sky130_fd_sc_hd__inv_1_0[1]/A vdd 0.43fF
C21 out sky130_fd_sc_hd__inv_1_0[4]/A 0.19fF
C22 sky130_fd_sc_hd__inv_1_0[6]/A gnd 0.40fF
C23 sky130_fd_sc_hd__inv_1_0[5]/A gnd 0.04fF
C24 sky130_fd_sc_hd__inv_1_0[4]/A gnd 0.40fF
C25 sky130_fd_sc_hd__inv_1_0[3]/A gnd 0.40fF
C26 sky130_fd_sc_hd__inv_1_0[2]/A gnd 0.40fF
C27 sky130_fd_sc_hd__inv_1_0[1]/A gnd 0.40fF
C28 out gnd 0.50fF
C29 vdd gnd 4.74fF
.ends
magic
tech sky130A
magscale 1 2
timestamp 1614649810
<< locali >>
rect 230 201 360 249
rect 506 201 636 249
rect 782 201 912 249
rect 1058 201 1188 249
rect 1334 201 1464 249
rect 1610 202 1806 249
rect 1841 241 2083 244
rect 1841 207 1846 241
rect 1880 207 2083 241
rect 1841 196 2083 207
<< viali >>
rect 91 207 125 241
rect 1846 207 1880 241
<< metal1 >>
rect 2044 482 2082 578
rect 79 241 1892 253
rect 79 207 91 241
rect 125 207 1846 241
rect 1880 207 1892 241
rect 79 195 1892 207
rect 2044 -62 2082 34
use sky130_fd_sc_hd__tapvpwrvgnd_1 sky130_fd_sc_hd__tapvpwrvgnd_1_1 $PDKPATH/libs.ref/sky130_fd_sc_hd/mag
timestamp 1614649810
transform 1 0 1952 0 1 -14
box -38 -48 130 592
use sky130_fd_sc_hd__tapvpwrvgnd_1 sky130_fd_sc_hd__tapvpwrvgnd_1_0
timestamp 1614649810
transform 1 0 -72 0 1 -14
box -38 -48 130 592
use sky130_fd_sc_hd__inv_1 sky130_fd_sc_hd__inv_1_0 $PDKPATH/libs.ref/sky130_fd_sc_hd/mag
array 0 6 276 0 0 544
timestamp 1614649810
transform 1 0 20 0 1 -14
box -38 -48 314 592
<< labels >>
flabel locali 1841 196 2083 244 1 FreeSans 400 0 0 0 out
flabel metal1 2044 482 2082 578 1 FreeSans 400 0 0 0 vdd
flabel metal1 2044 -62 2082 34 1 FreeSans 400 0 0 0 gnd
<< end >>
This diff is collapsed.
* NGSPICE file created from /home/wbraun/projects/sky130-analog/designs/ringosc/layout/ringosc_flat.ext - technology: sky130A
.subckt pex out
+ vdd gnd
X0 sky130_fd_sc_hd__inv_1_0[4]/A sky130_fd_sc_hd__inv_1_0[3]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=1.82e+12p ps=1.764e+07u w=1e+06u l=150000u
X1 sky130_fd_sc_hd__inv_1_0[2]/A sky130_fd_sc_hd__inv_1_0[1]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=1.183e+12p ps=1.274e+07u w=650000u l=150000u
X2 sky130_fd_sc_hd__inv_1_0[5]/A sky130_fd_sc_hd__inv_1_0[4]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X3 sky130_fd_sc_hd__inv_1_0[3]/A sky130_fd_sc_hd__inv_1_0[2]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X4 sky130_fd_sc_hd__inv_1_0[1]/A out vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X5 sky130_fd_sc_hd__inv_1_0[1]/A out gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X6 sky130_fd_sc_hd__inv_1_0[3]/A sky130_fd_sc_hd__inv_1_0[2]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X7 sky130_fd_sc_hd__inv_1_0[6]/A sky130_fd_sc_hd__inv_1_0[5]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X8 sky130_fd_sc_hd__inv_1_0[5]/A sky130_fd_sc_hd__inv_1_0[4]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X9 sky130_fd_sc_hd__inv_1_0[6]/A sky130_fd_sc_hd__inv_1_0[5]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X10 out sky130_fd_sc_hd__inv_1_0[6]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X11 sky130_fd_sc_hd__inv_1_0[2]/A sky130_fd_sc_hd__inv_1_0[1]/A vdd vdd sky130_fd_pr__pfet_01v8_hvt ad=2.6e+11p pd=2.52e+06u as=0p ps=0u w=1e+06u l=150000u
X12 sky130_fd_sc_hd__inv_1_0[4]/A sky130_fd_sc_hd__inv_1_0[3]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
X13 out sky130_fd_sc_hd__inv_1_0[6]/A gnd gnd sky130_fd_pr__nfet_01v8 ad=1.69e+11p pd=1.82e+06u as=0p ps=0u w=650000u l=150000u
C0 vdd sky130_fd_sc_hd__inv_1_0[2]/A 0.41fF
C1 sky130_fd_sc_hd__inv_1_0[2]/A sky130_fd_sc_hd__inv_1_0[4]/A 0.01fF
C2 sky130_fd_sc_hd__inv_1_0[5]/A sky130_fd_sc_hd__inv_1_0[3]/A 0.01fF
C3 sky130_fd_sc_hd__inv_1_0[1]/A out 0.35fF
C4 sky130_fd_sc_hd__inv_1_0[5]/A sky130_fd_sc_hd__inv_1_0[6]/A 0.22fF
C5 sky130_fd_sc_hd__inv_1_0[5]/A vdd 0.41fF
C6 sky130_fd_sc_hd__inv_1_0[5]/A sky130_fd_sc_hd__inv_1_0[4]/A 0.22fF
C7 sky130_fd_sc_hd__inv_1_0[1]/A sky130_fd_sc_hd__inv_1_0[2]/A 0.22fF
C8 out sky130_fd_sc_hd__inv_1_0[2]/A 0.20fF
C9 vdd sky130_fd_sc_hd__inv_1_0[3]/A 0.41fF
C10 sky130_fd_sc_hd__inv_1_0[4]/A sky130_fd_sc_hd__inv_1_0[3]/A 0.22fF
C11 vdd sky130_fd_sc_hd__inv_1_0[6]/A 0.43fF
C12 sky130_fd_sc_hd__inv_1_0[6]/A sky130_fd_sc_hd__inv_1_0[4]/A 0.01fF
C13 sky130_fd_sc_hd__inv_1_0[5]/A out 0.20fF
C14 vdd sky130_fd_sc_hd__inv_1_0[4]/A 0.41fF
C15 sky130_fd_sc_hd__inv_1_0[1]/A sky130_fd_sc_hd__inv_1_0[3]/A 0.01fF
C16 out sky130_fd_sc_hd__inv_1_0[3]/A 0.19fF
C17 sky130_fd_sc_hd__inv_1_0[2]/A sky130_fd_sc_hd__inv_1_0[3]/A 0.22fF
C18 out sky130_fd_sc_hd__inv_1_0[6]/A 0.40fF
C19 vdd out 0.85fF
C20 sky130_fd_sc_hd__inv_1_0[1]/A vdd 0.43fF
C21 out sky130_fd_sc_hd__inv_1_0[4]/A 0.19fF
C22 sky130_fd_sc_hd__inv_1_0[6]/A gnd 0.40fF
C23 sky130_fd_sc_hd__inv_1_0[5]/A gnd 0.04fF
C24 sky130_fd_sc_hd__inv_1_0[4]/A gnd 0.40fF
C25 sky130_fd_sc_hd__inv_1_0[3]/A gnd 0.40fF
C26 sky130_fd_sc_hd__inv_1_0[2]/A gnd 0.40fF
C27 sky130_fd_sc_hd__inv_1_0[1]/A gnd 0.40fF
C28 out gnd 0.50fF
C29 vdd gnd 4.74fF
.ends
v {xschem version=2.9.9 file_version=1.2 }
G {}
K {type=primitive
format="@name @pinlist @symname"
template="name=x1"
}
V {}
S {}
E {}
L 4 20 0 40 0 {}
L 4 -40 -60 -40 -40 {}
L 4 -40 40 -40 60 {}
L 4 20 -40 20 40 {}
L 4 -80 40 20 40 {}
L 4 -80 -40 -80 40 {}
L 4 -80 -40 -40 -40 {}
L 4 -40 -40 20 -40 {}
B 5 37.5 -2.5 42.5 2.5 {name=OUT dir=out}
B 5 -42.5 -62.5 -37.5 -57.5 {name=VDD dir=in
}
B 5 -42.5 57.5 -37.5 62.5 {name=VSS dir=in}
T {OUT} 15 -4 0 1 0.2 0.2 {}
T {VDD} -35 -24 0 1 0.2 0.2 {}
T {VSS} -35 16 0 1 0.2 0.2 {}
T {@symname
} -70 -10 0 0 0.2 0.2 {}
T {@name} -20 -60 0 0 0.2 0.2 {}
v {xschem version=2.9.9 file_version=1.2 }
G {}
K {}
V {}
S {}
E {}
N 300 -500 340 -500 { lab=#net1}
N 420 -500 460 -500 { lab=#net2}
N 540 -500 580 -500 { lab=#net3}
N 660 -500 700 -500 { lab=#net4}
N 580 -712.5 580 -700 { lab=VDD2}
N 580 -640 580 -633.125 { lab=GND}
N 200 -500 220 -500 { lab=#net5}
N 200 -500 200 -460 { lab=#net5}
N 200 -460 800 -460 { lab=#net5}
N 780 -500 780 -460 { lab=#net5}
N 820 -500 820 -460 { lab=#net5}
N 800 -460 820 -460 { lab=#net5}
N 900 -500 920 -500 { lab=OUT}
C {sky130_stdcells/inv_8.sym} 260 -500 0 0 {name=x1 VGND=VSS VNB=VNB VPB=VPWR VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/inv_8.sym} 380 -500 0 0 {name=x2 VGND=VSS VNB=VNB VPB=VPWR VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/inv_8.sym} 500 -500 0 0 {name=x3 VGND=VSS VNB=VNB VPB=VPWR VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/inv_8.sym} 620 -500 0 0 {name=x4 VGND=VSS VNB=VNB VPB=VPWR VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/inv_8.sym} 740 -500 0 0 {name=x5 VGND=VSS VNB=VNB VPB=VPWR VPWR=VPWR prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/inv_8.sym} 860 -500 0 0 {name=x6 VGND=VSS VNB=VNB VPB=VDD2 VPWR=VDD2 prefix=sky130_fd_sc_hd__ }
C {devices/vsource.sym} 580 -670 0 0 {name=V1 value=1.8
}
C {devices/gnd.sym} 580 -633.125 0 0 {name=l1 lab=GND}
C {devices/lab_pin.sym} 580 -712.5 0 0 {name=l2 sig_type=std_logic lab=VDD2}
C {devices/lab_pin.sym} 920 -500 2 0 {name=l4 sig_type=std_logic lab=OUT
}
C {devices/code_shown.sym} 58.75 -851.875 0 0 {name=NGSPICE
only_toplevel=true
value="
vvss VNB 0 dc 0
vvsss VSS 0 dc 0
vvcc VPWR 0 pwl 0 0 10n 0 10.1n 1.8 20n 1.8 20.1n 0
.control
.save all
tran 0.01n 30n
write ringosc.raw
.endc
"
name=s1 only_toplevel=false value=blabla}
C {devices/code.sym} 650 -960 0 0 {name=STDCELL_MODELS
only_toplevel=true
place=end
format="tcleval(@value )"
value="[sky130_models]"
name=s1 only_toplevel=false value=blabla}
C {devices/code.sym} 840 -930 0 0 {name=TT_MODELS
only_toplevel=true
format="tcleval( @value )"
value="
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8/sky130_fd_pr__nfet_01v8__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8_lvt/sky130_fd_pr__nfet_01v8_lvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8/sky130_fd_pr__pfet_01v8__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_03v3_nvt/sky130_fd_pr__nfet_03v3_nvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_05v0_nvt/sky130_fd_pr__nfet_05v0_nvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/esd_nfet_01v8/sky130_fd_pr__esd_nfet_01v8__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_lvt/sky130_fd_pr__pfet_01v8_lvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_hvt/sky130_fd_pr__pfet_01v8_hvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/esd_pfet_g5v0d10v5/sky130_fd_pr__esd_pfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_g5v0d16v0/sky130_fd_pr__pfet_g5v0d16v0__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_g5v0d10v5/sky130_fd_pr__nfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_g5v0d16v0/sky130_fd_pr__nfet_g5v0d16v0__tt_discrete.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/esd_nfet_g5v0d10v5/sky130_fd_pr__esd_nfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/models/corners/tt/nonfet.spice
* Mismatch parameters
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8/sky130_fd_pr__nfet_01v8__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8/sky130_fd_pr__pfet_01v8__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8_lvt/sky130_fd_pr__nfet_01v8_lvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_lvt/sky130_fd_pr__pfet_01v8_lvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_hvt/sky130_fd_pr__pfet_01v8_hvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_g5v0d10v5/sky130_fd_pr__nfet_g5v0d10v5__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_05v0_nvt/sky130_fd_pr__nfet_05v0_nvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_03v3_nvt/sky130_fd_pr__nfet_03v3_nvt__mismatch.corner.spice
* Resistor\\\\$::SKYWATER_MODELS\\\\/Capacitor
.include \\\\$::SKYWATER_MODELS\\\\/models/r+c/res_typical__cap_typical.spice
.include \\\\$::SKYWATER_MODELS\\\\/models/r+c/res_typical__cap_typical__lin.spice
* Special cells
.include \\\\$::SKYWATER_MODELS\\\\/models/corners/tt/specialized_cells.spice
* All models
.include \\\\$::SKYWATER_MODELS\\\\/models/all.spice
* Corner
.include \\\\$::SKYWATER_MODELS\\\\/models/corners/tt/rf.spice
"
}
v {xschem version=2.9.9 file_version=1.2 }
G {}
K {}
V {}
S {}
E {}
N 300 -500 340 -500 { lab=#net1}
N 420 -500 460 -500 { lab=#net2}
N 540 -500 580 -500 { lab=#net3}
N 660 -500 700 -500 { lab=#net4}
N 200 -500 220 -500 { lab=out}
N 200 -500 200 -460 { lab=out}
N 200 -460 780 -460 { lab=out}
N 780 -500 820 -500 { lab=#net5}
N 900 -500 940 -500 { lab=#net6}
N 1020 -500 1060 -500 { lab=out}
N 780 -460 1280 -460 { lab=out}
N 1260 -500 1280 -500 { lab=out}
N 1280 -460 1500 -460 { lab=out}
N 1500 -500 1500 -460 { lab=out}
N 1480 -500 1500 -500 { lab=out}
N 1500 -500 1520 -500 { lab=out}
N 1280 -500 1480 -500 { lab=out}
N 1060 -500 1260 -500 { lab=out}
C {sky130_stdcells/inv_1.sym} 260 -500 0 0 {name=x1 VGND=gnd VNB=gnd VPB=vdd VPWR=vdd prefix=sky130_fd_sc_hd__ }
C {devices/code_shown.sym} -311.25 -941.875 0 0 {name=STIMULI
only_toplevel=true
value="
vvcc vdd 0 DC 1.5
.control
.save all
tran 0.01n 30n
write ringosc_subcircuit.raw
.endc
"}
C {devices/code.sym} 650 -930 0 0 {name=STDCELL_MODELS
only_toplevel=true
place=end
format="tcleval(@value )"
value="[sky130_models]"
}
C {devices/code.sym} 840 -930 0 0 {name=TT_MODELS
only_toplevel=true
format="tcleval( @value )"
value="
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8/sky130_fd_pr__nfet_01v8__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8_lvt/sky130_fd_pr__nfet_01v8_lvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8/sky130_fd_pr__pfet_01v8__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_03v3_nvt/sky130_fd_pr__nfet_03v3_nvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_05v0_nvt/sky130_fd_pr__nfet_05v0_nvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/esd_nfet_01v8/sky130_fd_pr__esd_nfet_01v8__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_lvt/sky130_fd_pr__pfet_01v8_lvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_hvt/sky130_fd_pr__pfet_01v8_hvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/esd_pfet_g5v0d10v5/sky130_fd_pr__esd_pfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_g5v0d16v0/sky130_fd_pr__pfet_g5v0d16v0__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_g5v0d10v5/sky130_fd_pr__nfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_g5v0d16v0/sky130_fd_pr__nfet_g5v0d16v0__tt_discrete.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/esd_nfet_g5v0d10v5/sky130_fd_pr__esd_nfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/models/corners/tt/nonfet.spice
* Mismatch parameters
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8/sky130_fd_pr__nfet_01v8__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8/sky130_fd_pr__pfet_01v8__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8_lvt/sky130_fd_pr__nfet_01v8_lvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_lvt/sky130_fd_pr__pfet_01v8_lvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_hvt/sky130_fd_pr__pfet_01v8_hvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_g5v0d10v5/sky130_fd_pr__nfet_g5v0d10v5__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_05v0_nvt/sky130_fd_pr__nfet_05v0_nvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_03v3_nvt/sky130_fd_pr__nfet_03v3_nvt__mismatch.corner.spice
* Resistor\\\\$::SKYWATER_MODELS\\\\/Capacitor
.include \\\\$::SKYWATER_MODELS\\\\/models/r+c/res_typical__cap_typical.spice
.include \\\\$::SKYWATER_MODELS\\\\/models/r+c/res_typical__cap_typical__lin.spice
* Special cells
.include \\\\$::SKYWATER_MODELS\\\\/models/corners/tt/specialized_cells.spice
* All models
.include \\\\$::SKYWATER_MODELS\\\\/models/all.spice
* Corner
.include \\\\$::SKYWATER_MODELS\\\\/models/corners/tt/rf.spice
"
}
C {devices/opin.sym} 1520 -500 0 0 {name=p1 lab=out
}
C {devices/ipin.sym} 780 -600 0 0 {name=p2 lab=vdd}
C {devices/ipin.sym} 830 -400 2 0 {name=p3 lab=gnd}
C {sky130_stdcells/inv_1.sym} 380 -500 0 0 {name=x2 VGND=gnd VNB=gnd VPB=vdd VPWR=vdd prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/inv_1.sym} 500 -500 0 0 {name=x3 VGND=gnd VNB=gnd VPB=vdd VPWR=vdd prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/inv_1.sym} 620 -500 0 0 {name=x4 VGND=gnd VNB=gnd VPB=vdd VPWR=vdd prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/inv_1.sym} 740 -500 0 0 {name=x5 VGND=gnd VNB=gnd VPB=vdd VPWR=vdd prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/inv_1.sym} 860 -500 0 0 {name=x6 VGND=gnd VNB=gnd VPB=vdd VPWR=vdd prefix=sky130_fd_sc_hd__ }
C {sky130_stdcells/inv_1.sym} 980 -500 0 0 {name=x7 VGND=gnd VNB=gnd VPB=vdd VPWR=vdd prefix=sky130_fd_sc_hd__ }
v {xschem version=2.9.9 file_version=1.2 }
G {}
K {type=subcircuit
format="@name @pinlist @symname"
template="name=x1"
}
V {}
S {}
E {}
L 4 20 0 40 0 {}
L 4 -40 -60 -40 -40 {}
L 4 -40 40 -40 60 {}
L 4 20 -40 20 40 {}
L 4 -80 40 20 40 {}
L 4 -80 -40 -80 40 {}
L 4 -80 -40 -40 -40 {}
L 4 -40 -40 20 -40 {}
B 5 37.5 -2.5 42.5 2.5 {name=OUT dir=out}
B 5 -42.5 -62.5 -37.5 -57.5 {name=VDD dir=in
}
B 5 -42.5 57.5 -37.5 62.5 {name=VSS dir=in}
T {OUT} 15 -4 0 1 0.2 0.2 {}
T {VDD} -35 -24 0 1 0.2 0.2 {}
T {VSS} -35 16 0 1 0.2 0.2 {}
T {@symname
} -70 -10 0 0 0.2 0.2 {}
T {@name} -20 -60 0 0 0.2 0.2 {}
v {xschem version=2.9.9 file_version=1.2 }
G {}
K {}
V {}
S {}
E {}
N 910 -350 910 -330 { lab=V1V8}
N 910 -270 910 -250 { lab=GND}
N 440 -340 440 -320 { lab=GND}
N 520 -400 600 -400 { lab=#net1}
N 440 -480 440 -460 { lab=VCTRL}
N 680 -400 720 -400 { lab=OUT1}
N 440 -120 440 -100 { lab=GND}
N 520 -180 600 -180 { lab=#net2}
N 680 -180 720 -180 { lab=OUT2}
N 440 -260 440 -240 { lab=VCTRL}
C {devices/code_shown.sym} 198.75 -701.875 0 0 {name=NGSPICE
only_toplevel=true
value="
VRING VCTRL 0 DC 1.8
.include /home/wbraun/projects/sky130-analog/designs/ringosc/pex.spice
.control
.save all
.ic V(OUT1)=0
.ic V(OUT2)=0
tran 0.01n 30n uic
write ringosc_tb.raw
.endc
"}
C {devices/code.sym} 130 -420 0 0 {name=STDCELL_MODELS
only_toplevel=true
place=end
format="tcleval(@value )"
value="[sky130_models]"
name=s1 only_toplevel=false value=blabla}
C {devices/code.sym} 130 -250 0 0 {name=TT_MODELS
only_toplevel=true
format="tcleval( @value )"
value="
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8/sky130_fd_pr__nfet_01v8__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8_lvt/sky130_fd_pr__nfet_01v8_lvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8/sky130_fd_pr__pfet_01v8__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_03v3_nvt/sky130_fd_pr__nfet_03v3_nvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_05v0_nvt/sky130_fd_pr__nfet_05v0_nvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/esd_nfet_01v8/sky130_fd_pr__esd_nfet_01v8__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_lvt/sky130_fd_pr__pfet_01v8_lvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_hvt/sky130_fd_pr__pfet_01v8_hvt__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/esd_pfet_g5v0d10v5/sky130_fd_pr__esd_pfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_g5v0d16v0/sky130_fd_pr__pfet_g5v0d16v0__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_g5v0d10v5/sky130_fd_pr__nfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_g5v0d16v0/sky130_fd_pr__nfet_g5v0d16v0__tt_discrete.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/esd_nfet_g5v0d10v5/sky130_fd_pr__esd_nfet_g5v0d10v5__tt.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/models/corners/tt/nonfet.spice
* Mismatch parameters
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8/sky130_fd_pr__nfet_01v8__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8/sky130_fd_pr__pfet_01v8__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_01v8_lvt/sky130_fd_pr__nfet_01v8_lvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_lvt/sky130_fd_pr__pfet_01v8_lvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_01v8_hvt/sky130_fd_pr__pfet_01v8_hvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_g5v0d10v5/sky130_fd_pr__nfet_g5v0d10v5__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/pfet_g5v0d10v5/sky130_fd_pr__pfet_g5v0d10v5__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_05v0_nvt/sky130_fd_pr__nfet_05v0_nvt__mismatch.corner.spice
.include \\\\$::SKYWATER_MODELS\\\\/cells/nfet_03v3_nvt/sky130_fd_pr__nfet_03v3_nvt__mismatch.corner.spice
* Resistor\\\\$::SKYWATER_MODELS\\\\/Capacitor
.include \\\\$::SKYWATER_MODELS\\\\/models/r+c/res_typical__cap_typical.spice
.include \\\\$::SKYWATER_MODELS\\\\/models/r+c/res_typical__cap_typical__lin.spice
* Special cells
.include \\\\$::SKYWATER_MODELS\\\\/models/corners/tt/specialized_cells.spice
* All models
.include \\\\$::SKYWATER_MODELS\\\\/models/all.spice
* Corner
.include \\\\$::SKYWATER_MODELS\\\\/models/corners/tt/rf.spice
"
}
C {sky130_stdcells/inv_1.sym} 640 -400 0 0 {name=x1 VGND=GND VNB=GND VPB=V1V8 VPWR=V1V8 prefix=sky130_fd_sc_hd__ }
C {devices/gnd.sym} 440 -320 0 0 {name=l1 lab=GND}
C {devices/vsource.sym} 910 -300 0 0 {name=V1 value=1.8}
C {devices/gnd.sym} 910 -250 0 0 {name=l2 lab=GND}
C {devices/lab_pin.sym} 910 -350 0 0 {name=l3 sig_type=std_logic lab=V1V8
}
C {/home/wbraun/projects/sky130-analog/designs/ringosc/ringosc_subcircuit.sym} 480 -400 0 0 {}
C {devices/lab_pin.sym} 440 -480 0 0 {name=l4 sig_type=std_logic lab=VCTRL
}
C {devices/lab_pin.sym} 720 -400 2 0 {name=l5 sig_type=std_logic lab=OUT1
}
C {/home/wbraun/projects/sky130-analog/designs/ringosc/pex.sym} 480 -180 0 0 {name=x2}
C {devices/gnd.sym} 440 -100 0 0 {name=l6 lab=GND}
C {sky130_stdcells/inv_1.sym} 640 -180 0 0 {name=x3 VGND=GND VNB=GND VPB=V1V8 VPWR=V1V8 prefix=sky130_fd_sc_hd__ }
C {devices/lab_pin.sym} 720 -180 2 0 {name=l7 sig_type=std_logic lab=OUT2
}
C {devices/lab_pin.sym} 440 -260 0 0 {name=l8 sig_type=std_logic lab=VCTRL
}
......@@ -6,12 +6,22 @@ module filter #(
input real in
);
// ADD VARIABLE DECLARATIONS HERE AS NECESSARY
real last_time = 0;
real out_val = 0;
real delta_t;
real in_last;
function real out();
// FILL IN FUNCTION IMPLEMENTATION
delta_t = $realtime - last_time;
last_time = $realtime;
out_val = $exp(-delta_t/tau)*out_val + (1 - $exp(-delta_t/tau)) * in;
return out_val;
endfunction
always @(in) begin
// UPDATE INTERNAL STATE VARIABLES AS NECESSARY
delta_t = $realtime - last_time;
last_time = $realtime;
out_val = $exp(-delta_t/tau)*out_val + (1 - $exp(-delta_t/tau)) * in_last;
in_last = in;
end
endmodule
// UPDATE THESE VARIABLES
`define KI_CTRL 0
`define KP_CTRL 0
`define INIT_CTRL 0
`define KI_CTRL 16500
`define KP_CTRL 0.0045
`define INIT_CTRL 1.43
// NO NEED TO MODIFY THE REST OF THIS FILE
`timescale 1s/1fs
......
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# Data for plotting
volts = np.array([1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8])
freq_sim = np.array([2.62E8, 5.05E8, 7.87E8, 1.1E9, 1.41E9, 1.73E9, 2.04E9, 2.34E9, 2.63E9])
freq_extract = np.array([1.43E8, 2.79E8, 4.42E8, 6.22E8, 8.13E8, 1.01E9, 1.19E9, 1.38E9, 1.56E9])
freq_ideal = []
volts_ = np.arange(1.0, 1.8, 0.01)
freq_ideal = []
for volt in volts_:
value = min(2E9, max(0.5E9, volt*3.4E9-3.9E9))
freq_ideal.append(value)
z= np.polyfit(volts, freq_extract, 2)
print(z)
p = np.poly1d(z)
model = p(volts)
print(max(abs(model-freq_extract)))
print(p(1))
p1 = np.polyder(p)
print(p1(1.5003))
fig, ax = plt.subplots()
ax.plot(volts, model)
ax.plot(volts, freq_extract)
ax.set(xlabel='Voltage', ylabel='Frequency',
title='VCO Response')
ax.grid()
#fig.savefig("test.png")
plt.show()
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# Data for plotting
volts = np.arange(0.0, 1.8, 0.01)
freq = []
for volt in volts:
value = min(2E9, max(0.5E9, volt*3.4E9-3.9E9))
freq.append(value)
fig, ax = plt.subplots()
ax.plot(volts, freq)
ax.set(xlabel='Voltage', ylabel='Frequency',
title='VCO Response')
ax.grid()
fig.savefig("test.png")
plt.show()
\ No newline at end of file
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# Data for plotting
volts = [1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8]
freq_sim = [2.62E8, 5.05E8, 7.87E8, 1.1E9, 1.41E9, 1.73E9, 2.04E9, 2.34E9, 2.63E9]
freq_extract = [1.43E8, 2.79E8, 4.42E8, 6.22E8, 8.13E8, 1.01E9, 1.19E9, 1.38E9, 1.56E9]
freq_ideal = []
volts_ = np.arange(1.0, 1.8, 0.01)
freq_ideal = []
for volt in volts_: