Added Node.js + netlistsvg to the EDA container; make_svg.py renders a SKiDL block to a schematic SVG. Generated hardware/eda/schematics/*.svg for 12 blocks (audio stages 1-4 + integrated, power tree, RP2350 core, RTC, MIDI, indicator, speaker) -- open in a browser. Auto-routed (functional, not pretty); per-block so they're readable. interconnect omitted (netlistsvg layout engine errors on the 24-pin USB-C + headers; its mapping is in DESIGN.md s7). Intermediates (.json/_skin.svg) git-ignored. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
215 lines
16 KiB
XML
215 lines
16 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:s="https://github.com/nturley/netlistsvg" width="260.47900000000004" height="391.456">
|
||
<style>svg {
|
||
stroke: #000;
|
||
fill: none;
|
||
stroke-linejoin: round;
|
||
stroke-linecap: round;
|
||
}
|
||
text {
|
||
fill: #000;
|
||
stroke: none;
|
||
font-size: 10px;
|
||
font-weight: bold;
|
||
font-family: "Courier New", monospace;
|
||
}
|
||
.skidl_text {
|
||
fill: #999;
|
||
stroke: none;
|
||
font-weight: bold;
|
||
font-family: consolas, "Courier New", monospace;
|
||
}
|
||
.pin_num_text {
|
||
fill: #840000;
|
||
}
|
||
.pin_name_text {
|
||
fill: #008484;
|
||
}
|
||
.net_name_text {
|
||
font-style: italic;
|
||
fill: #840084;
|
||
}
|
||
.part_text {
|
||
fill: #840000;
|
||
}
|
||
.part_ref_text {
|
||
fill: #008484;
|
||
}
|
||
.part_name_text {
|
||
fill: #008484;
|
||
}
|
||
.pen_fill {
|
||
fill: #840000;
|
||
}
|
||
.background_fill {
|
||
fill: #FFFFC2
|
||
}
|
||
.nodelabel {
|
||
text-anchor: middle;
|
||
}
|
||
.inputPortLabel {
|
||
text-anchor: end;
|
||
}
|
||
.splitjoinBody {
|
||
fill: #000;
|
||
}
|
||
.symbol {
|
||
stroke-linejoin: round;
|
||
stroke-linecap: round;
|
||
stroke: #840000;
|
||
}
|
||
.detail {
|
||
stroke-linejoin: round;
|
||
stroke-linecap: round;
|
||
fill: #000;
|
||
}</style>
|
||
<g s:type="C_1_" s:width="39.014" s:height="73.152" transform="translate(51.547000000000004,105.65200000000003)" id="cell_C1">
|
||
<s:alias val="C_1_"/>
|
||
<polyline points="0.000,29.261 39.014,29.261" style="stroke-width:4.877" class="cell_C1 symbol none"/>
|
||
<polyline points="0.000,43.891 39.014,43.891" style="stroke-width:4.877" class="cell_C1 symbol none"/>
|
||
<polyline points="19.507,0.000 19.507,26.822" style="stroke-width:0.960" class="cell_C1 symbol none"/>
|
||
<text class="pin_num_text" x="19.507" y="26.822" transform="rotate(-90 19.507 26.822)" style="font-size:12.192" dominant-baseline="" text-anchor="start"> 1</text>
|
||
<text class="pin_name_text" x="19.507" y="26.822" transform="rotate(-90 19.507 26.822)" style="font-size:12.192" dominant-baseline="central" text-anchor="end">~ </text>
|
||
<g s:x="19.507" s:y="0.000" s:pid="1" s:position="top"/>
|
||
<polyline points="19.507,73.152 19.507,46.330" style="stroke-width:0.960" class="cell_C1 symbol none"/>
|
||
<text class="pin_num_text" x="19.507" y="46.330" transform="rotate(-90 19.507 46.330)" style="font-size:12.192" dominant-baseline="" text-anchor="end">2 </text>
|
||
<text class="pin_name_text" x="19.507" y="46.330" transform="rotate(-90 19.507 46.330)" style="font-size:12.192" dominant-baseline="central" text-anchor="start"> ~</text>
|
||
<g s:x="19.507" s:y="73.152" s:pid="2" s:position="bottom"/>
|
||
<text class="part_ref_text" x="25.603" y="12.192" transform="rotate(0 25.603 12.192)" style="font-size:12.192" dominant-baseline="central" text-anchor="start" s:attribute="ref">C1</text>
|
||
<text class="part_name_text" x="25.603" y="60.960" transform="rotate(0 25.603 60.960)" style="font-size:12.192" dominant-baseline="central" text-anchor="start" s:attribute="value">1uF</text>
|
||
</g>
|
||
<g s:type="C_1_" s:width="39.014" s:height="73.152" transform="translate(22.04,258.8040000000001)" id="cell_C2">
|
||
<s:alias val="C_1_"/>
|
||
<polyline points="0.000,29.261 39.014,29.261" style="stroke-width:4.877" class="cell_C2 symbol none"/>
|
||
<polyline points="0.000,43.891 39.014,43.891" style="stroke-width:4.877" class="cell_C2 symbol none"/>
|
||
<polyline points="19.507,0.000 19.507,26.822" style="stroke-width:0.960" class="cell_C2 symbol none"/>
|
||
<text class="pin_num_text" x="19.507" y="26.822" transform="rotate(-90 19.507 26.822)" style="font-size:12.192" dominant-baseline="" text-anchor="start"> 1</text>
|
||
<text class="pin_name_text" x="19.507" y="26.822" transform="rotate(-90 19.507 26.822)" style="font-size:12.192" dominant-baseline="central" text-anchor="end">~ </text>
|
||
<g s:x="19.507" s:y="0.000" s:pid="1" s:position="top"/>
|
||
<polyline points="19.507,73.152 19.507,46.330" style="stroke-width:0.960" class="cell_C2 symbol none"/>
|
||
<text class="pin_num_text" x="19.507" y="46.330" transform="rotate(-90 19.507 46.330)" style="font-size:12.192" dominant-baseline="" text-anchor="end">2 </text>
|
||
<text class="pin_name_text" x="19.507" y="46.330" transform="rotate(-90 19.507 46.330)" style="font-size:12.192" dominant-baseline="central" text-anchor="start"> ~</text>
|
||
<g s:x="19.507" s:y="73.152" s:pid="2" s:position="bottom"/>
|
||
<text class="part_ref_text" x="25.603" y="12.192" transform="rotate(0 25.603 12.192)" style="font-size:12.192" dominant-baseline="central" text-anchor="start" s:attribute="ref">C2</text>
|
||
<text class="part_name_text" x="25.603" y="60.960" transform="rotate(0 25.603 60.960)" style="font-size:12.192" dominant-baseline="central" text-anchor="start" s:attribute="value">100nF</text>
|
||
</g>
|
||
<g s:type="C_1_" s:width="39.014" s:height="73.152" transform="translate(173.972,12)" id="cell_C3">
|
||
<s:alias val="C_1_"/>
|
||
<polyline points="0.000,29.261 39.014,29.261" style="stroke-width:4.877" class="cell_C3 symbol none"/>
|
||
<polyline points="0.000,43.891 39.014,43.891" style="stroke-width:4.877" class="cell_C3 symbol none"/>
|
||
<polyline points="19.507,0.000 19.507,26.822" style="stroke-width:0.960" class="cell_C3 symbol none"/>
|
||
<text class="pin_num_text" x="19.507" y="26.822" transform="rotate(-90 19.507 26.822)" style="font-size:12.192" dominant-baseline="" text-anchor="start"> 1</text>
|
||
<text class="pin_name_text" x="19.507" y="26.822" transform="rotate(-90 19.507 26.822)" style="font-size:12.192" dominant-baseline="central" text-anchor="end">~ </text>
|
||
<g s:x="19.507" s:y="0.000" s:pid="1" s:position="top"/>
|
||
<polyline points="19.507,73.152 19.507,46.330" style="stroke-width:0.960" class="cell_C3 symbol none"/>
|
||
<text class="pin_num_text" x="19.507" y="46.330" transform="rotate(-90 19.507 46.330)" style="font-size:12.192" dominant-baseline="" text-anchor="end">2 </text>
|
||
<text class="pin_name_text" x="19.507" y="46.330" transform="rotate(-90 19.507 46.330)" style="font-size:12.192" dominant-baseline="central" text-anchor="start"> ~</text>
|
||
<g s:x="19.507" s:y="73.152" s:pid="2" s:position="bottom"/>
|
||
<text class="part_ref_text" x="25.603" y="12.192" transform="rotate(0 25.603 12.192)" style="font-size:12.192" dominant-baseline="central" text-anchor="start" s:attribute="ref">C3</text>
|
||
<text class="part_name_text" x="25.603" y="60.960" transform="rotate(0 25.603 60.960)" style="font-size:12.192" dominant-baseline="central" text-anchor="start" s:attribute="value">1uF</text>
|
||
</g>
|
||
<g s:type="C_1_" s:width="39.014" s:height="73.152" transform="translate(163.972,286.304)" id="cell_C4">
|
||
<s:alias val="C_1_"/>
|
||
<polyline points="0.000,29.261 39.014,29.261" style="stroke-width:4.877" class="cell_C4 symbol none"/>
|
||
<polyline points="0.000,43.891 39.014,43.891" style="stroke-width:4.877" class="cell_C4 symbol none"/>
|
||
<polyline points="19.507,0.000 19.507,26.822" style="stroke-width:0.960" class="cell_C4 symbol none"/>
|
||
<text class="pin_num_text" x="19.507" y="26.822" transform="rotate(-90 19.507 26.822)" style="font-size:12.192" dominant-baseline="" text-anchor="start"> 1</text>
|
||
<text class="pin_name_text" x="19.507" y="26.822" transform="rotate(-90 19.507 26.822)" style="font-size:12.192" dominant-baseline="central" text-anchor="end">~ </text>
|
||
<g s:x="19.507" s:y="0.000" s:pid="1" s:position="top"/>
|
||
<polyline points="19.507,73.152 19.507,46.330" style="stroke-width:0.960" class="cell_C4 symbol none"/>
|
||
<text class="pin_num_text" x="19.507" y="46.330" transform="rotate(-90 19.507 46.330)" style="font-size:12.192" dominant-baseline="" text-anchor="end">2 </text>
|
||
<text class="pin_name_text" x="19.507" y="46.330" transform="rotate(-90 19.507 46.330)" style="font-size:12.192" dominant-baseline="central" text-anchor="start"> ~</text>
|
||
<g s:x="19.507" s:y="73.152" s:pid="2" s:position="bottom"/>
|
||
<text class="part_ref_text" x="25.603" y="12.192" transform="rotate(0 25.603 12.192)" style="font-size:12.192" dominant-baseline="central" text-anchor="start" s:attribute="ref">C4</text>
|
||
<text class="part_name_text" x="25.603" y="60.960" transform="rotate(0 25.603 60.960)" style="font-size:12.192" dominant-baseline="central" text-anchor="start" s:attribute="value">1uF</text>
|
||
</g>
|
||
<g s:type="R_1_" s:width="32.918" s:height="73.152" transform="translate(81.054,278.804)" id="cell_R1">
|
||
<s:alias val="R_1_"/>
|
||
<rect x="0.000" y="12.192" width="19.507" height="48.768" style="stroke-width:2.438" class="cell_R1 symbol none"/>
|
||
<polyline points="9.754,0.000 9.754,12.192" style="stroke-width:0.960" class="cell_R1 symbol none"/>
|
||
<text class="pin_num_text" x="9.754" y="12.192" transform="rotate(-90 9.754 12.192)" style="font-size:12.192" dominant-baseline="" text-anchor="start"> 1</text>
|
||
<text class="pin_name_text" x="9.754" y="12.192" transform="rotate(-90 9.754 12.192)" style="font-size:12.192" dominant-baseline="central" text-anchor="end">~ </text>
|
||
<g s:x="9.754" s:y="0.000" s:pid="1" s:position="top"/>
|
||
<polyline points="9.754,73.152 9.754,60.960" style="stroke-width:0.960" class="cell_R1 symbol none"/>
|
||
<text class="pin_num_text" x="9.754" y="60.960" transform="rotate(-90 9.754 60.960)" style="font-size:12.192" dominant-baseline="" text-anchor="end">2 </text>
|
||
<text class="pin_name_text" x="9.754" y="60.960" transform="rotate(-90 9.754 60.960)" style="font-size:12.192" dominant-baseline="central" text-anchor="start"> ~</text>
|
||
<g s:x="9.754" s:y="73.152" s:pid="2" s:position="bottom"/>
|
||
<text class="part_ref_text" x="29.261" y="36.576" transform="rotate(-90 29.261 36.576)" style="font-size:12.192" dominant-baseline="central" text-anchor="start" s:attribute="ref">R1</text>
|
||
<text class="part_name_text" x="9.754" y="36.576" transform="rotate(-90 9.754 36.576)" style="font-size:12.192" dominant-baseline="central" text-anchor="start" s:attribute="value">100k</text>
|
||
</g>
|
||
<g s:type="R_1_" s:width="32.918" s:height="73.152" transform="translate(183.72500000000002,90.152)" id="cell_R2">
|
||
<s:alias val="R_1_"/>
|
||
<rect x="0.000" y="12.192" width="19.507" height="48.768" style="stroke-width:2.438" class="cell_R2 symbol none"/>
|
||
<polyline points="9.754,0.000 9.754,12.192" style="stroke-width:0.960" class="cell_R2 symbol none"/>
|
||
<text class="pin_num_text" x="9.754" y="12.192" transform="rotate(-90 9.754 12.192)" style="font-size:12.192" dominant-baseline="" text-anchor="start"> 1</text>
|
||
<text class="pin_name_text" x="9.754" y="12.192" transform="rotate(-90 9.754 12.192)" style="font-size:12.192" dominant-baseline="central" text-anchor="end">~ </text>
|
||
<g s:x="9.754" s:y="0.000" s:pid="1" s:position="top"/>
|
||
<polyline points="9.754,73.152 9.754,60.960" style="stroke-width:0.960" class="cell_R2 symbol none"/>
|
||
<text class="pin_num_text" x="9.754" y="60.960" transform="rotate(-90 9.754 60.960)" style="font-size:12.192" dominant-baseline="" text-anchor="end">2 </text>
|
||
<text class="pin_name_text" x="9.754" y="60.960" transform="rotate(-90 9.754 60.960)" style="font-size:12.192" dominant-baseline="central" text-anchor="start"> ~</text>
|
||
<g s:x="9.754" s:y="73.152" s:pid="2" s:position="bottom"/>
|
||
<text class="part_ref_text" x="29.261" y="36.576" transform="rotate(-90 29.261 36.576)" style="font-size:12.192" dominant-baseline="central" text-anchor="start" s:attribute="ref">R2</text>
|
||
<text class="part_name_text" x="9.754" y="36.576" transform="rotate(-90 9.754 36.576)" style="font-size:12.192" dominant-baseline="central" text-anchor="start" s:attribute="value">68k</text>
|
||
</g>
|
||
<g s:type="generic" s:width="30" s:height="40" transform="translate(210.479,178.304)" id="cell_U12">
|
||
<text x="15" y="-4" class="nodelabel cell_U12" s:attribute="ref">PAM8302A_1_</text>
|
||
<rect width="30" height="100" x="0" y="0" s:generic="body" class="cell_U12"/>
|
||
<g transform="translate(0,10)" s:x="0" s:y="10" s:pid="in0" s:position="left" id="port_U12~1">
|
||
<text x="-3" y="-4" class="inputPortLabel cell_U12">1</text>
|
||
</g>
|
||
<g transform="translate(0,30)" s:x="0" s:y="10" s:pid="in0" s:position="left" id="port_U12~3">
|
||
<text x="-3" y="-4" class="inputPortLabel cell_U12">3</text>
|
||
</g>
|
||
<g transform="translate(0,50)" s:x="0" s:y="10" s:pid="in0" s:position="left" id="port_U12~4">
|
||
<text x="-3" y="-4" class="inputPortLabel cell_U12">4</text>
|
||
</g>
|
||
<g transform="translate(0,70)" s:x="0" s:y="10" s:pid="in0" s:position="left" id="port_U12~6">
|
||
<text x="-3" y="-4" class="inputPortLabel cell_U12">6</text>
|
||
</g>
|
||
<g transform="translate(0,90)" s:x="0" s:y="10" s:pid="in0" s:position="left" id="port_U12~7">
|
||
<text x="-3" y="-4" class="inputPortLabel cell_U12">7</text>
|
||
</g>
|
||
<g transform="translate(30,10)" s:x="30" s:y="10" s:pid="out0" s:position="right" id="port_U12~5">
|
||
<text x="5" y="-4" class="cell_U12">5</text>
|
||
</g>
|
||
<g transform="translate(30,30)" s:x="30" s:y="10" s:pid="out0" s:position="right" id="port_U12~8">
|
||
<text x="5" y="-4" class="cell_U12">8</text>
|
||
</g>
|
||
</g>
|
||
<line x1="90.808" x2="90.80800000000002" y1="351.95599999999996" y2="379.456" class="net_8"/>
|
||
<line x1="90.80800000000002" x2="12.04" y1="379.456" y2="379.456" class="net_8"/>
|
||
<line x1="12.04" x2="12.04" y1="379.456" y2="248.80400000000003" class="net_8"/>
|
||
<circle cx="12.04" cy="248.80400000000003" r="2" style="fill:#000" class="net_8"/>
|
||
<line x1="12.04" x2="210.479" y1="248.80400000000003" y2="248.804" class="net_8"/>
|
||
<line x1="210.479" x2="12.04" y1="248.804" y2="248.80400000000003" class="net_8"/>
|
||
<line x1="12.04" x2="12.04" y1="248.80400000000003" y2="95.65200000000003" class="net_8"/>
|
||
<line x1="12.04" x2="71.054" y1="95.65200000000003" y2="95.65200000000003" class="net_8"/>
|
||
<circle cx="12.04" cy="248.80400000000003" r="2" style="fill:#000" class="net_8"/>
|
||
<line x1="71.054" x2="71.054" y1="95.65200000000003" y2="105.65200000000003" class="net_8"/>
|
||
<line x1="210.479" x2="12.04" y1="248.804" y2="248.80400000000003" class="net_8"/>
|
||
<line x1="12.04" x2="12.04" y1="248.80400000000003" y2="248.80400000000006" class="net_8"/>
|
||
<line x1="12.04" x2="41.547" y1="248.80400000000006" y2="248.80400000000006" class="net_8"/>
|
||
<circle cx="12.04" cy="248.80400000000006" r="2" style="fill:#000" class="net_8"/>
|
||
<circle cx="12.04" cy="248.80400000000003" r="2" style="fill:#000" class="net_8"/>
|
||
<line x1="41.547" x2="41.547" y1="248.80400000000006" y2="258.8040000000001" class="net_8"/>
|
||
<line x1="210.479" x2="183.479" y1="228.804" y2="228.80400000000003" class="net_7"/>
|
||
<line x1="183.479" x2="183.479" y1="228.80400000000003" y2="286.304" class="net_7"/>
|
||
<line x1="210.479" x2="90.80800000000002" y1="188.804" y2="188.80400000000003" class="net_5"/>
|
||
<line x1="90.80800000000002" x2="90.808" y1="188.80400000000003" y2="278.804" class="net_5"/>
|
||
<line x1="193.479" x2="193.479" y1="85.152" y2="90.152" class="net_1"/>
|
||
<line x1="71.054" x2="71.054" y1="178.80400000000003" y2="268.804" class="net_9"/>
|
||
<circle cx="71.054" cy="268.804" r="2" style="fill:#000" class="net_9"/>
|
||
<line x1="71.054" x2="210.479" y1="268.804" y2="268.804" class="net_9"/>
|
||
<line x1="41.547" x2="41.547" y1="331.9560000000001" y2="369.456" class="net_9"/>
|
||
<line x1="41.547" x2="71.054" y1="369.456" y2="369.456" class="net_9"/>
|
||
<line x1="71.054" x2="71.054" y1="369.456" y2="268.804" class="net_9"/>
|
||
<circle cx="71.054" cy="369.456" r="2" style="fill:#000" class="net_9"/>
|
||
<circle cx="71.054" cy="268.804" r="2" style="fill:#000" class="net_9"/>
|
||
<line x1="71.054" x2="210.479" y1="268.804" y2="268.804" class="net_9"/>
|
||
<line x1="183.479" x2="183.479" y1="359.45599999999996" y2="369.456" class="net_9"/>
|
||
<line x1="183.479" x2="71.054" y1="369.456" y2="369.456" class="net_9"/>
|
||
<line x1="71.054" x2="71.054" y1="369.456" y2="268.804" class="net_9"/>
|
||
<circle cx="71.054" cy="268.804" r="2" style="fill:#000" class="net_9"/>
|
||
<line x1="71.054" x2="210.479" y1="268.804" y2="268.804" class="net_9"/>
|
||
<line x1="193.479" x2="193.479" y1="163.304" y2="208.80400000000003" class="net_6"/>
|
||
<line x1="193.479" x2="210.479" y1="208.80400000000003" y2="208.804" class="net_6"/>
|
||
</svg>
|