diff --git a/src/draw.c b/src/draw.c index d0730266..62b06cef 100644 --- a/src/draw.c +++ b/src/draw.c @@ -2138,7 +2138,7 @@ static void draw_graph_variables(int wcnt, int wave_color, int n_nodes, int swee my_free(1189, &ntok_ptr); } if(gr->digital) { - double xt = gr->x1 - 10 * gr->txtsizelab; + double xt = gr->x1 - 15 * gr->txtsizelab; double s1 = DIG_NWAVES; /* 1/DIG_NWAVES waveforms fit in graph if unscaled vertically */ double s2 = DIG_SPACE; /* (DIG_NWAVES - DIG_SPACE) spacing between traces */ double yt; diff --git a/xschem_library/examples/classD_amp.sch b/xschem_library/examples/classD_amp.sch index 85dc69a9..90facfc8 100644 --- a/xschem_library/examples/classD_amp.sch +++ b/xschem_library/examples/classD_amp.sch @@ -4,8 +4,8 @@ K {} V {} S {} E {} -L 3 290 -1250 630 -1250 {} -L 3 1160 -1250 1600 -1250 {} +L 3 50 -1350 390 -1350 {} +L 3 920 -1350 1360 -1350 {} L 4 525 -210 530 -250 {} L 4 530 -250 535 -210 {} L 4 340 -230 342.5 -242.5 {} @@ -55,7 +55,7 @@ L 7 60 -840 70 -835 {} L 7 70 -835 90 -775 {} L 7 100 -770 140 -770 {} L 7 90 -775 100 -770 {} -B 2 1100 -690 2050 -340 {flags=graph +B 2 1060 -660 2040 -350 {flags=graph y1=-41 y2=41 ypos1=2.19058 @@ -63,8 +63,8 @@ ypos2=36.4765 divy=5 subdivy=1 unity=1 -x1=0.00125174 -x2=0.00189302 +x1=0.00050943 +x2=0.00178945 divx=5 subdivx=1 node="out @@ -74,16 +74,16 @@ color="7 8 6" dataset=0 unitx=u digital=0} -B 2 1100 -330 2050 -90 {flags=graph +B 2 1060 -340 2040 -150 {flags=graph y1=0 y2=12 -ypos1=0.0476856 -ypos2=6.80536 +ypos1=-1.9553 +ypos2=8.02886 divy=5 subdivy=1 unity=1 -x1=0.00125174 -x2=0.00189302 +x1=0.00050943 +x2=0.00178945 divx=5 subdivx=1 @@ -91,21 +91,22 @@ subdivx=1 dataset=0 unitx=u digital=1 -color="7 4 4 4" +color="7 4 4 4 6" node="\\"out;out 8 / 5 +\\" \\"Gate Up;gu out -\\" \\"Gate Down;gd vnn -\\" -drive"} -B 2 1100 -1040 2050 -710 {flags=graph -y1=0.00051 +drive +ref"} +B 2 1060 -990 2040 -680 {flags=graph +y1=0.0016 y2=10 ypos1=-3.90706 ypos2=14.7089 divy=5 subdivy=1 unity=1 -x1=0.00125174 -x2=0.00189302 +x1=0.00050943 +x2=0.00178945 divx=5 subdivx=1 @@ -120,6 +121,27 @@ in"} B 2 610 -650 1006 -505 {flags=image,unscaled alpha=0.6 image_data=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} +B 2 1060 -1310 2040 -1000 {flags=graph +y1=-21.5085 +y2=139.735 +ypos1=2.19058 +ypos2=36.4765 +divy=5 +subdivy=1 +unity=1 +x1=0.00050943 +x2=0.00178945 +divx=5 +subdivx=1 + + +dataset=0 +unitx=u +digital=0 +color="4 7 8" +node="\\"xm1 power;vpp out - i(vu) * avg()\\" +\\"xm2 power;out vnn - i(vd) * avg()\\" +\\"Load power;out_lpf 2 ** 8 / avg()\\""} T {PWM Modulator} 470 -480 0 0 0.6 0.6 {} T {Driver} 230 -930 0 0 0.6 0.6 {} T {LP @@ -131,7 +153,7 @@ T {VREF} 65 -1085 0 0 0.2 0.2 {layer=4} T {10} 5 -1165 0 0 0.2 0.2 {} T {DRIVE} 125 -765 0 0 0.2 0.2 {} T {DRIVE} 125 -1085 0 0 0.2 0.2 {} -T {Class D amplifier } 670 -1280 0 0 1 1 {} +T {Class D amplifier } 430 -1380 0 0 1 1 {} N 460 -1020 460 -1000 {lab=#net1} N 460 -920 460 -900 {lab=OUT} N 460 -840 460 -800 {lab=#net2} @@ -167,10 +189,6 @@ N 320 -510 320 -490 { lab=0} N 320 -590 320 -570 { lab=VSS} -N 570 -920 570 -870 { -lab=OUT} -N 570 -810 570 -790 { -lab=VSS} N 220 -1090 280 -1090 { lab=GU} N 220 -770 280 -770 { @@ -304,10 +322,10 @@ C {ammeter.sym} 460 -970 0 0 {name=vu net_name=true current=0.2005} C {lab_pin.sym} 460 -1160 0 0 {name=p27 lab=VPP} C {lab_pin.sym} 460 -910 0 0 {name=p3 lab=OUT} C {comp_ngspice.sym} 550 -370 0 0 {name=x1 VCC=VCC} -C {bsource.sym} 220 -730 0 1 {name=B1 VAR=V FUNC="'10/2*(1+tanh(V(REF,DRIVE)*20))'" +C {bsource.sym} 220 -730 0 1 {name=B1 VAR=V FUNC="'6/2*(1+tanh(V(REF,DRIVE)*20))'" } C {lab_pin.sym} 710 -370 0 1 {name=p6 lab=DRIVE} -C {bsource.sym} 220 -1050 0 1 {name=B2 VAR=V FUNC="'10/2*(1+tanh(V(DRIVE,REF)*20))'" +C {bsource.sym} 220 -1050 0 1 {name=B2 VAR=V FUNC="'6/2*(1+tanh(V(DRIVE,REF)*20))'" } C {code_shown.sym} 20 -420 0 0 {name=CONTROL value=" .param VCC=10 @@ -319,20 +337,18 @@ write classD_amp.raw " net_name=true} C {title.sym} 160 -40 0 0 {name=l1 author="Stefan Schippers" net_name=true} -C {vsource.sym} 70 -540 0 0 {name=V3 value=40} +C {vsource.sym} 70 -540 0 0 {name=VVPP value=40} C {lab_pin.sym} 70 -490 0 0 {name=p9 lab=VSS} C {lab_pin.sym} 70 -590 0 0 {name=p10 lab=VPP} -C {vsource.sym} 190 -540 0 0 {name=V4 value=-40} +C {vsource.sym} 190 -540 0 0 {name=VVNN value=-40} C {lab_pin.sym} 190 -490 0 0 {name=p11 lab=VSS} C {lab_pin.sym} 190 -590 0 0 {name=p12 lab=VNN} -C {vsource.sym} 320 -540 0 0 {name=V5 value=0} +C {vsource.sym} 320 -540 0 0 {name=VVSS value=0} C {lab_pin.sym} 320 -490 0 0 {name=p13 lab=0} C {lab_pin.sym} 320 -590 0 0 {name=p14 lab=VSS} C {lab_pin.sym} 220 -1090 0 0 {name=p15 lab=GU} C {lab_pin.sym} 220 -770 0 0 {name=p16 lab=GD} -C {res.sym} 570 -840 0 1 {name=R1 m=1 value=8} -C {lab_pin.sym} 570 -790 0 0 {name=p17 lab=VSS} -C {launcher.sym} 1160 -1080 0 0 {name=h5 +C {launcher.sym} 1290 -50 0 0 {name=h5 descr="Select arrow and Ctrl-Left-Click to load/unload waveforms" tclcommand=" @@ -343,7 +359,7 @@ C {res.sym} 310 -1090 1 1 {name=R2 m=1 value=2} C {res.sym} 310 -770 1 1 {name=R3 m=1 value=2} C {parax_cap.sym} 370 -1080 0 0 {name=C3 gnd=0 value=20f m=1} C {parax_cap.sym} 370 -760 0 0 {name=C1 gnd=0 value=20f m=1} -C {parax_cap.sym} 610 -910 0 0 {name=C2 gnd=0 value=1u m=1} +C {parax_cap.sym} 610 -910 0 0 {name=C2 gnd=0 value=10n m=1} C {lab_wire.sym} 410 -1090 0 0 {name=l19 lab=GU_I} C {lab_wire.sym} 410 -770 0 0 {name=l2 lab=GD_I} C {vsource.sym} 490 -180 0 0 {name=V6 value="pulse 0 VCC 0 5u 5u 5p 10u"} @@ -368,7 +384,7 @@ C {lab_pin.sym} 940 -920 0 1 {name=p4 lab=OUT_LPF} C {lab_pin.sym} 780 -810 0 0 {name=p7 lab=VSS} C {res.sym} 900 -860 0 1 {name=R4 m=1 value=8} C {lab_pin.sym} 900 -810 0 0 {name=p8 lab=VSS} -C {launcher.sym} 1160 -1140 0 0 {name=h1 +C {launcher.sym} 1290 -110 0 0 {name=h1 descr="Netlist + Simulate Ctrl-Left-Click" tclcommand="xschem netlist; xschem simulate"