blob: 4ee1c6b8f0efe83a85c7c64277a28881f84b25a0 [file] [log] [blame]
v {xschem version=2.9.9 file_version=1.2 }
G {}
K {}
V {}
S {}
E {}
N -110 80 -110 110 { lab=vref}
N -110 170 -110 210 { lab=GND}
N 820 -420 1190 -420 { lab=feedback_p}
N 690 -240 740 -240 { lab=vin_p}
N 1350 -280 1350 -250 { lab=vdd}
N 1350 -210 1350 -180 { lab=GND}
N 690 140 740 140 { lab=vin_n}
N 1340 120 1340 150 { lab=vdd}
N 1340 190 1340 220 { lab=GND}
N 2230 -230 2310 -230 { lab=audio_p}
N 2250 -230 2250 -220 { lab=audio_p}
N 2250 -160 2250 -140 { lab=GND}
N 2250 240 2250 260 { lab=GND}
N 670 -240 690 -240 { lab=vin_p}
N 1390 170 1400 170 { lab=vcmp_n}
N -20 80 -20 110 { lab=vdd}
N -20 170 -20 200 { lab=GND}
N 1550 -290 1550 -270 { lab=vdd}
N 1550 -190 1550 -170 { lab=GND}
N 1550 110 1550 130 { lab=vdd}
N 1550 210 1550 230 { lab=GND}
N 1400 170 1420 170 { lab=vcmp_n}
N 2220 180 2250 180 { lab=audio_n}
N 2310 -230 2310 -20 { lab=audio_p}
N 2310 -20 2310 -10 { lab=audio_p}
N 2310 50 2310 180 { lab=audio_n}
N 2250 180 2310 180 { lab=audio_n}
N 1010 -90 1220 -90 { lab=vtriang}
N 190 -40 350 -40 { lab=#net1}
N 360 -20 390 -20 { lab=vref}
N 360 -40 390 -40 { lab=#net1}
N 510 -110 510 -90 { lab=vdd}
N 510 -10 510 10 { lab=GND}
N 820 -420 820 -260 { lab=feedback_p}
N 740 -260 740 -240 { lab=vin_p}
N 800 -260 820 -260 { lab=feedback_p}
N 800 140 820 140 { lab=feedback_n}
N 1400 -230 1420 -230 { lab=vcmp_p}
N 1070 -190 1070 -180 { lab=GND}
N 850 -80 880 -80 { lab=vbias2}
N 850 -60 880 -60 { lab=vref}
N 1010 -60 1060 -60 { lab=vsquare}
N 830 390 1210 390 { lab=feedback_n}
N 830 140 830 390 { lab=feedback_n}
N 190 20 190 40 { lab=GND}
N 1250 -420 1850 -420 { lab=out_p}
N 1270 390 1840 390 { lab=out_n}
N 850 -100 880 -100 { lab=vbias1}
N 350 -40 360 -40 { lab=#net1}
N 360 -60 390 -60 { lab=vbias4}
N 360 -80 390 -80 { lab=vbias3}
N 740 -150 740 -120 { lab=#net2}
N 740 -150 940 -150 { lab=#net2}
N 940 -150 940 -130 { lab=#net2}
N 940 -130 940 -120 { lab=#net2}
N 740 -60 740 -40 { lab=GND}
N 670 140 690 140 { lab=vin_n}
N 630 -240 630 -60 { lab=vin_p}
N 630 -240 670 -240 { lab=vin_p}
N 630 -40 630 140 { lab=vin_n}
N 630 140 670 140 { lab=vin_n}
N 2040 -420 2040 -30 { lab=out_p}
N 2040 -10 2040 380 { lab=out_n}
N 2040 380 2040 390 { lab=out_n}
N 1840 390 2040 390 { lab=out_n}
N 1850 -420 2040 -420 { lab=out_p}
N 1680 160 1710 160 { lab=vn_p}
N 1710 -10 1710 160 { lab=vn_p}
N 1710 -10 1740 -10 { lab=vn_p}
N 1670 180 1740 180 { lab=vn_n}
N 1740 10 1740 180 { lab=vn_n}
N 1670 -240 1730 -240 { lab=vp_p}
N 1730 -240 1740 -240 { lab=vp_p}
N 1740 -240 1740 -50 { lab=vp_p}
N 1670 -220 1700 -220 { lab=vp_n}
N 1700 -220 1700 -30 { lab=vp_n}
N 1700 -30 1740 -30 { lab=vp_n}
N 1860 -100 1860 -60 { lab=#net3}
N 1890 -100 1890 -60 { lab=#net3}
N 1800 -200 1800 -150 { lab=GND}
N 1800 -300 1800 -260 { lab=#net3}
N 1800 -300 1860 -300 { lab=#net3}
N 1860 -300 1860 -100 { lab=#net3}
N 1860 -100 1890 -100 { lab=#net3}
N 2040 180 2160 180 { lab=out_n}
N 2040 -230 2170 -230 { lab=out_p}
N 1890 20 1890 70 { lab=GND}
N 1670 160 1680 160 { lab=vn_p}
N 820 140 830 140 { lab=feedback_n}
N 1070 -340 1070 -290 { lab=vdd}
N 1070 -230 1070 -190 { lab=GND}
N 900 -240 920 -240 { lab=vref}
N 820 -280 870 -280 { lab=feedback_p}
N 870 -280 920 -280 { lab=feedback_p}
N 900 -260 920 -260 { lab=vbias5}
N 1220 -260 1240 -260 { lab=error_p}
N 1240 -260 1240 -250 { lab=error_p}
N 1240 -250 1290 -250 { lab=error_p}
N 1220 -230 1290 -230 { lab=vtriang}
N 1220 -230 1220 -90 { lab=vtriang}
N 1240 -210 1290 -210 { lab=vbias7}
N 940 -40 940 0 { lab=GND}
N 1070 90 1070 130 { lab=vdd}
N 1070 190 1070 210 { lab=GND}
N 830 140 920 140 { lab=feedback_n}
N 880 160 920 160 { lab=vbias6}
N 880 180 920 180 { lab=vref}
N 1250 190 1280 190 { lab=vbias8}
N 1220 150 1220 160 { lab=error_n}
N 1220 150 1280 150 { lab=error_n}
N 1220 -90 1220 120 { lab=vtriang}
N 1220 120 1260 120 { lab=vtriang}
N 1260 120 1260 170 { lab=vtriang}
N 1260 170 1280 170 { lab=vtriang}
N 480 280 480 360 { lab=#net4}
N 480 560 480 610 { lab=GND}
N 480 190 480 220 { lab=vdd}
N 580 390 630 390 { lab=vbias1}
N 580 410 630 410 { lab=vbias2}
N 580 430 630 430 { lab=vbias3}
N 580 450 630 450 { lab=vbias4}
N 580 470 630 470 { lab=vbias5}
N 580 490 630 490 { lab=vbias6}
N 580 510 630 510 { lab=vbias7}
N 580 530 630 530 { lab=vbias8}
C {vsource.sym} 190 -10 0 0 {name=V1 value="sin(0.9 0.4 5k)"}
C {code_shown.sym} -860 -420 0 0 {name=s2 only_toplevel=false value="
.option rshunt=1e20
.nodeset V(audio_p)=0.9 V(audio_n)=0.9 V(vp_p)=0.79 V(vn_p)=0 V(vcmp_p)=0.859
+ V(vp_n)=0.79 V(vn_n)=0 V(vcmp_n)=0.859 v(vin_p)=0.9 v(vin_n)=0.9 v(vtriang)=0.9
*.nodeset all=0.9
*.option VNTOL=1e-6 ABSTOL=1e-9
*.option savecurrents
*set the absolute voltage error tolerance and absolute current error tolerance
.control
save out_p out_n audio_p audio_n I(V4) I(V2) @r6[i] @r1[i] i(v3) i(v6) vtriang vin_p vin_n error_p error_n vcmp_p vcmp_n vp_p vp_n vn_p vn_n
*save vtriang audio_p audio_n I(V2) @r6[i] out_p out_n
*op
tran 3n 10m 0.1m
*linearize V(audio)
*linearize V(out)
*fft V(out)
*fft V(audio)
*plot mag(V(audio))
*plot mag(V(out))
let pout=@r6[i]*(V(audio_p)-V(audio_n))
let pin=1.8*(I(V4)+I(V2)+I(V3))
meas tran pload avg pout from=2m to=9m
meas tran p_supply avg pin from=2m to=9m
*print pload/p_supply
set nfreqs=20
*fourier 10k V(out_p)-V(out_n)
fourier 5k V(audio_p)-V(audio_n)
write class_d_5k_04_post_notflat.raw
.endc
"}
C {netlist_not_shown.sym} 370 -350 0 0 {name=TT_MODELS1
spice_ignore=false
only_toplevel=true
format="tcleval( @value )"
value="
.include /home/eda/pdk/skywater-pdk/libraries/sky130_fd_pr_ngspice/latest/models/corners/tt.spice
.include /home/eda/magic/class_d_audio_amplifier/OTA/OTA_int_post.spice
.include /home/eda/magic/class_d_audio_amplifier/OTA/OTA_post.spice
.include /home/eda/magic/class_d_audio_amplifier/S_to_D/S_to_D_post.spice
.include /home/eda/magic/class_d_audio_amplifier/S_to_D/S_to_D_revised_post.spice
.include /home/eda/magic/class_d_audio_amplifier/triang/triangle_post.spice
.include /home/eda/magic/class_d_audio_amplifier/triang/triangle_revised_post.spice
.include /home/eda/magic/class_d_audio_amplifier/comparator/comparator_post.spice
.include /home/eda/magic/class_d_audio_amplifier/dead_time/dead_time_post.spice
.include /home/eda/magic/class_d_audio_amplifier/output_driver/output_driver_post_r.spice
.include /home/eda/magic/class_d_audio_amplifier/integrator/integrator_post.spice
.include /home/eda/magic/class_d_audio_amplifier/biasing_network.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
"
}
C {lab_wire.sym} 1140 -90 0 0 {name=l9 sig_type=std_logic lab=vtriang}
C {vsource.sym} -110 140 0 0 {name=V5 value=0.9}
C {lab_wire.sym} -110 100 0 0 {name=l26 sig_type=std_logic lab=vref}
C {lab_wire.sym} 690 -240 0 1 {name=l1 sig_type=std_logic lab=vin_p}
C {lab_wire.sym} 1070 -320 0 0 {name=l6 sig_type=std_logic lab=vdd}
C {ind.sym} 2200 -230 1 0 {name=L1
m=1
value=28u
footprint=1206
device=inductor}
C {capa.sym} 2250 -190 0 0 {name=C1
m=1
value=1.3u
footprint=1206
device="ceramic capacitor"}
C {res.sym} 1220 -420 1 0 {name=R1
value=200k
footprint=1206
device=resistor
m=1}
C {res.sym} 770 -260 1 0 {name=R3
value=200k
footprint=1206
device=resistor
m=1}
C {lab_wire.sym} 820 -330 0 0 {name=l18 sig_type=std_logic lab=feedback_p}
C {lab_wire.sym} 1410 -230 0 0 {name=l19 sig_type=std_logic lab=vcmp_p}
C {lab_wire.sym} 1350 -270 0 0 {name=l21 sig_type=std_logic lab=vdd}
C {lab_wire.sym} 1270 -250 0 0 {name=l8 sig_type=std_logic lab=error_p}
C {lab_wire.sym} 1070 110 0 0 {name=l24 sig_type=std_logic lab=vdd}
C {lab_wire.sym} 900 180 0 0 {name=l27 sig_type=std_logic lab=vref}
C {res.sym} 1240 390 1 0 {name=R4
value=200k
footprint=1206
device=resistor
m=1}
C {res.sym} 770 140 1 0 {name=R5
value=200k
footprint=1206
device=resistor
m=1}
C {lab_wire.sym} 1340 130 0 0 {name=l38 sig_type=std_logic lab=vdd}
C {ind.sym} 2190 180 3 1 {name=L2
m=1
value=28u
footprint=1206
device=inductor}
C {capa.sym} 2250 210 0 1 {name=C4
m=1
value=1.3u
footprint=1206
device="ceramic capacitor"}
C {res.sym} 2310 20 2 0 {name=R6
value=8
footprint=1206
device=resistor
m=1}
C {lab_wire.sym} 1230 150 0 0 {name=l29 sig_type=std_logic lab=error_n}
C {lab_wire.sym} 830 220 0 0 {name=l30 sig_type=std_logic lab=feedback_n}
C {lab_wire.sym} 1400 170 0 1 {name=l40 sig_type=std_logic lab=vcmp_n}
C {lab_wire.sym} 2260 -230 0 1 {name=l43 sig_type=std_logic lab=audio_p}
C {lab_wire.sym} 2260 180 0 1 {name=l44 sig_type=std_logic lab=audio_n}
C {vsource.sym} -20 140 0 0 {name=V4 value="pulse(0 1.8 0 10n 10n 10 20)"}
C {lab_wire.sym} -20 90 0 0 {name=l16 sig_type=std_logic lab=vdd}
C {lab_wire.sym} 1550 -290 0 0 {name=l17 sig_type=std_logic lab=vdd}
C {lab_wire.sym} 1550 110 0 0 {name=l34 sig_type=std_logic lab=vdd}
C {lab_wire.sym} 1700 160 0 0 {name=l51 sig_type=std_logic lab=vn_p}
C {lab_wire.sym} 1710 180 0 0 {name=l52 sig_type=std_logic lab=vn_n}
C {lab_wire.sym} 380 -80 0 0 {name=l36 sig_type=std_logic lab=vbias3}
C {lab_wire.sym} 380 -20 0 0 {name=l56 sig_type=std_logic lab=vref}
C {lab_wire.sym} 510 -100 0 0 {name=l57 sig_type=std_logic lab=vdd}
C {lab_wire.sym} 910 -260 0 0 {name=l3 sig_type=std_logic lab=vbias5}
C {lab_wire.sym} 900 160 0 0 {name=l14 sig_type=std_logic lab=vbias6}
C {lab_wire.sym} 1280 -210 0 0 {name=l20 sig_type=std_logic lab=vbias7}
C {lab_wire.sym} 860 -80 0 0 {name=l45 sig_type=std_logic lab=vbias2}
C {lab_wire.sym} 860 -60 0 0 {name=l46 sig_type=std_logic lab=vref}
C {lab_wire.sym} 1020 -60 0 1 {name=l60 sig_type=std_logic lab=vsquare}
C {lab_wire.sym} 1260 190 0 0 {name=l61 sig_type=std_logic lab=vbias8}
C {gnd.sym} -20 200 0 0 {name=l63 lab=GND}
C {gnd.sym} -110 210 0 0 {name=l2 lab=GND}
C {gnd.sym} 190 40 0 0 {name=l4 lab=GND}
C {gnd.sym} 510 10 0 0 {name=l5 lab=GND}
C {gnd.sym} 1070 -180 0 0 {name=l11 lab=GND}
C {gnd.sym} 1350 -180 0 0 {name=l13 lab=GND}
C {gnd.sym} 1550 -170 0 0 {name=l22 lab=GND}
C {gnd.sym} 1550 230 0 0 {name=l41 lab=GND}
C {gnd.sym} 1340 220 0 0 {name=l42 lab=GND}
C {gnd.sym} 1070 210 0 0 {name=l48 lab=GND}
C {gnd.sym} 2250 260 0 0 {name=l55 lab=GND}
C {gnd.sym} 2250 -140 0 0 {name=l58 lab=GND}
C {lab_wire.sym} 860 -100 0 0 {name=l32 sig_type=std_logic lab=vbias1}
C {lab_wire.sym} 380 -60 0 0 {name=l35 sig_type=std_logic lab=vbias4}
C {vsource.sym} 740 -90 0 0 {name=V2 value=1.8}
C {gnd.sym} 740 -40 0 0 {name=l47 lab=GND}
C {lab_wire.sym} 680 140 0 1 {name=l23 sig_type=std_logic lab=vin_n}
C {src/output_driver/output_driver_post.sym} 1910 -10 0 0 {name=x9}
C {lab_wire.sym} 1720 -240 0 1 {name=l15 sig_type=std_logic lab=vp_p}
C {lab_wire.sym} 1700 -190 0 1 {name=l25 sig_type=std_logic lab=vp_n}
C {vsource.sym} 1800 -230 0 0 {name=V3 value=1.8}
C {gnd.sym} 1800 -150 0 0 {name=l28 lab=GND}
C {gnd.sym} 1890 70 0 0 {name=l31 lab=GND}
C {lab_wire.sym} 2090 -230 0 1 {name=l33 sig_type=std_logic lab=out_p}
C {lab_wire.sym} 2100 180 0 1 {name=l37 sig_type=std_logic lab=out_n}
C {lab_wire.sym} 910 -240 0 0 {name=l7 sig_type=std_logic lab=vref}
C {gnd.sym} 940 0 0 0 {name=l12 lab=GND}
C {src/dead_time/dead_time_post.sym} 1480 -250 0 0 {name=x7}
C {src/dead_time/dead_time_post.sym} 1480 150 0 0 {name=x8}
C {src/comparator/comparator_post.sym} 1300 -250 0 0 {name=x5}
C {src/comparator/comparator_post.sym} 1290 150 0 0 {name=x6}
C {src/integrator/integrator_post.sym} 950 -260 0 0 {name=x3}
C {src/integrator/integrator_post.sym} 950 160 0 0 {name=x4}
C {src/S_to_D/S_to_D_revised_post.sym} 390 -70 0 0 {name=x1}
C {src/triangle/triangle_revised_post.sym} 870 -80 0 0 {name=x2}
C {src/biasing_network/biasing_network.sym} 430 460 0 0 {name=x10}
C {gnd.sym} 480 610 0 0 {name=l10 lab=GND}
C {res.sym} 480 250 2 0 {name=R2
value=83k
footprint=1206
device=resistor
m=1}
C {lab_wire.sym} 480 200 0 0 {name=l39 sig_type=std_logic lab=vdd}
C {lab_wire.sym} 630 390 0 0 {name=l49 sig_type=std_logic lab=vbias1}
C {lab_wire.sym} 630 410 0 0 {name=l50 sig_type=std_logic lab=vbias2}
C {lab_wire.sym} 630 430 0 0 {name=l53 sig_type=std_logic lab=vbias3}
C {lab_wire.sym} 630 450 0 0 {name=l54 sig_type=std_logic lab=vbias4}
C {lab_wire.sym} 630 470 0 0 {name=l59 sig_type=std_logic lab=vbias5}
C {lab_wire.sym} 630 490 0 0 {name=l62 sig_type=std_logic lab=vbias6}
C {lab_wire.sym} 630 510 0 0 {name=l64 sig_type=std_logic lab=vbias7}
C {lab_wire.sym} 630 530 0 0 {name=l65 sig_type=std_logic lab=vbias8}