abse/abse-pico
This code defines 3D models and footprints for various electronic components—such as voltage regulators, microcontrollers, and memory chips—highlighting their physical pin configurations, mounting pads, and visual identifiers for PCB design.
- Version
- 1.0.2
- License
- unset
- Stars
- 0
index.circuit.tsx
PCB
Schematic
import { RP2040 } from "./imports/RP2040"
import { TYPE_C_16PIN_2MD_073_ } from "./imports/TYPE_C_16PIN_2MD_073_"
import { W25Q16JVUXIQ } from "./imports/W25Q16JVUXIQ"
import { AP2112K_3_3TRG1 } from "./imports/AP2112K_3_3TRG1"
import { X322512MSB4SI } from "./imports/X322512MSB4SI"
import { SKRPACE010 } from "./imports/SKRPACE010"
import { B5819W_SL } from "./B5819W_SL"
import { XL_1608SURC_06 } from "./XL_1608SURC_06"
const leftHeaderPins = [
"GP0",
"GP1",
"GND",
"GP2",
"GP3",
"GP4",
"GP5",
"GND",
"GP6",
"GP7",
"GP8",
"GP9",
"GND",
"GP10",
"GP11",
"GP12",
"GP13",
"GND",
"GP14",
"GP15",
]
const rightHeaderPins = [
"VBUS",
"VSYS",
"GND",
"V3V3_EN",
"V3V3",
"ADC_VREF",
"GP28_ADC2",
"GND",
"GP27_ADC1",
"GP26_ADC0",
"RUN",
"GP22",
"GND",
"GP21",
"GP20",
"GP19",
"GP18",
"GND",
"GP17",
"GP16",
]
const makeUniquePinLabels = (pins: string[]) =>
pins.map((pin, index) => (pins.indexOf(pin) === index ? pin : `${pin}_${index + 1}`))
const makePcbPinLabels = (pins: string[]) =>
Object.fromEntries(pins.map((pin, index) => [`pin${index + 1}`, pin]))
const gndLabel = { displayName: "GND", schDisplayLabel: "GND" } as const
const vbusLabel = { displayName: "VBUS", schDisplayLabel: "VBUS" } as const
const vsysLabel = { displayName: "VSYS", schDisplayLabel: "VSYS" } as const
const v3v3Label = { displayName: "V3V3", schDisplayLabel: "V3V3" } as const
const v1v1Label = { displayName: "V1V1", schDisplayLabel: "V1V1" } as const
const adcRefLabel = { displayName: "ADC_REF", schDisplayLabel: "ADC_REF" } as const
const leftHeaderPortLabels = makeUniquePinLabels(leftHeaderPins)
const rightHeaderPortLabels = makeUniquePinLabels(rightHeaderPins)
const leftHeaderPinLabels = makePcbPinLabels(leftHeaderPortLabels)
const rightHeaderPinLabels = makePcbPinLabels(rightHeaderPortLabels)
const denseTraceProps = { thickness: "0.1mm" } as const
const schSections = {
rp2040: "rp2040",
headers: "headers",
usb: "usb",
power: "power",
flash: "flash",
clock: "clock",
controls: "controls",
status: "status",
debug: "debug",
} as const
const leftHeaderNetConnections = leftHeaderPortLabels
.map((portName, index) => [portName, leftHeaderPins[index]])
.filter(([, netName]) => netName === "GND")
const rightHeaderNetConnections = rightHeaderPortLabels
.map((portName, index) => [portName, rightHeaderPins[index]])
.filter(([, netName]) =>
["VBUS", "VSYS", "GND", "V3V3_EN", "ADC_VREF", "RUN"].includes(netName)
)
const headerSignalConnections = [
["U1", "GPIO0", "J_LEFT", "GP0"],
["U1", "GPIO1", "J_LEFT", "GP1"],
["U1", "GPIO2", "J_LEFT", "GP2"],
["U1", "GPIO3", "J_LEFT", "GP3"],
["U1", "GPIO4", "J_LEFT", "GP4"],
["U1", "GPIO5", "J_LEFT", "GP5"],
["U1", "GPIO6", "J_LEFT", "GP6"],
["U1", "GPIO7", "J_LEFT", "GP7"],
["U1", "GPIO8", "J_LEFT", "GP8"],
["U1", "GPIO9", "J_LEFT", "GP9"],
["U1", "GPIO10", "J_LEFT", "GP10"],
["U1", "GPIO11", "J_LEFT", "GP11"],
["U1", "GPIO12", "J_LEFT", "GP12"],
["U1", "GPIO13", "J_LEFT", "GP13"],
["U1", "GPIO14", "J_LEFT", "GP14"],
["U1", "GPIO15", "J_LEFT", "GP15"],
["U1", "GPIO16", "J_RIGHT", "GP16"],
["U1", "GPIO17", "J_RIGHT", "GP17"],
["U1", "GPIO18", "J_RIGHT", "GP18"],
["U1", "GPIO19", "J_RIGHT", "GP19"],
["U1", "GPIO20", "J_RIGHT", "GP20"],
["U1", "GPIO21", "J_RIGHT", "GP21"],
["U1", "GPIO22", "J_RIGHT", "GP22"],
["U1", "GPIO26_ADC0", "J_RIGHT", "GP26_ADC0"],
["U1", "GPIO27_ADC1", "J_RIGHT", "GP27_ADC1"],
["U1", "GPIO28_ADC2", "J_RIGHT", "GP28_ADC2"],
]
const rp2040Pins = {
pin1: ["IOVDD6"],
pin2: ["GPIO0"],
pin3: ["GPIO1"],
pin4: ["GPIO2"],
pin5: ["GPIO3"],
pin6: ["GPIO4"],
pin7: ["GPIO5"],
pin8: ["GPIO6"],
pin9: ["GPIO7"],
pin10: ["IOVDD5"],
pin11: ["GPIO8"],
pin12: ["GPIO9"],
pin13: ["GPIO10"],
pin14: ["GPIO11"],
pin15: ["GPIO12"],
pin16: ["GPIO13"],
pin17: ["GPIO14"],
pin18: ["GPIO15"],
pin19: ["TESTEN"],
pin20: ["XIN"],
pin21: ["XOUT"],
pin22: ["IOVDD4"],
pin23: ["DVDD2"],
pin24: ["SWCLK"],
pin25: ["SWD"],
pin26: ["RUN"],
pin27: ["GPIO16"],
pin28: ["GPIO17"],
pin29: ["GPIO18"],
pin30: ["GPIO19"],
pin31: ["GPIO20"],
pin32: ["GPIO21"],
pin33: ["IOVDD3"],
pin34: ["GPIO22"],
pin35: ["GPIO23"],
pin36: ["GPIO24"],
pin37: ["GPIO25"],
pin38: ["GPIO26_ADC0"],
pin39: ["GPIO27_ADC1"],
pin40: ["GPIO28_ADC2"],
pin41: ["GPIO29_ADC3"],
pin42: ["IOVDD2"],
pin43: ["ADC_AVDD"],
pin44: ["VREG_IN"],
pin45: ["VREG_VOUT"],
pin46: ["USB_DM"],
pin47: ["USB_DP"],
pin48: ["USB_VDD"],
pin49: ["IOVDD1"],
pin50: ["DVDD1"],
pin51: ["QSPI_SD3"],
pin52: ["QSPI_SCLK"],
pin53: ["QSPI_SD0"],
pin54: ["QSPI_SD2"],
pin55: ["QSPI_SD1"],
pin56: ["QSPI_SS"],
pin57: ["GND"]
}
const rp2040HeaderNets = [
"GP0",
"GP1",
"GP2",
"GP3",
"GP4",
"GP5",
"GP6",
"GP7",
"GP8",
"GP9",
"GP10",
"GP11",
"GP12",
"GP13",
"GP14",
"GP15",
"GP16",
"GP17",
"GP18",
"GP19",
"GP20",
"GP21",
"GP22",
"GP26_ADC0",
"GP27_ADC1",
"GP28_ADC2",
"RUN",
]
const flashConnections = [
{ rp2040Pin: "QSPI_SS", flashPin: "CS" },
{ rp2040Pin: "QSPI_SD0", flashPin: "pin5" },
{ rp2040Pin: "QSPI_SD1", flashPin: "pin2" },
{ rp2040Pin: "QSPI_SD2", flashPin: "pin3" },
{ rp2040Pin: "QSPI_SD3", flashPin: "pin7" },
{ rp2040Pin: "QSPI_SCLK", flashPin: "CLK" },
]
const powerPins = [
["IOVDD1", "V3V3"],
["IOVDD2", "V3V3"],
["IOVDD3", "V3V3"],
["IOVDD4", "V3V3"],
["IOVDD5", "V3V3"],
["IOVDD6", "V3V3"],
["DVDD1", "V1V1"],
["DVDD2", "V1V1"],
["VREG_IN", "V3V3"],
["VREG_VOUT", "V1V1"],
["USB_VDD", "V3V3"],
]
const groundPins = ["GND"]
const UsbCFootprint = () => (
<footprint>
<smtpad portHints={["VBUS"]} pcbX="-3.2mm" pcbY="-1.8mm" width="0.6mm" height="1.5mm" shape="rect" />
<smtpad portHints={["D_NEG"]} pcbX="-1.05mm" pcbY="-1.8mm" width="0.5mm" height="1.5mm" shape="rect" />
<smtpad portHints={["D_POS"]} pcbX="1.05mm" pcbY="-1.8mm" width="0.5mm" height="1.5mm" shape="rect" />
<smtpad portHints={["GND"]} pcbX="3.2mm" pcbY="-1.8mm" width="0.6mm" height="1.5mm" shape="rect" />
<smtpad portHints={["CC1"]} pcbX="-2.1mm" pcbY="-1.8mm" width="0.5mm" height="1.5mm" shape="rect" />
<smtpad portHints={["CC2"]} pcbX="2.1mm" pcbY="-1.8mm" width="0.5mm" height="1.5mm" shape="rect" />
<smtpad portHints={["SHIELD1"]} pcbX="-4.6mm" pcbY="0.8mm" width="1.8mm" height="2.4mm" shape="rect" />
<smtpad portHints={["SHIELD2"]} pcbX="4.6mm" pcbY="0.8mm" width="1.8mm" height="2.4mm" shape="rect" />
</footprint>
)
const SmallCrystalFootprint = () => (
<footprint>
<smtpad portHints={["pin1"]} pcbX="-1.25mm" pcbY="0mm" width="1.1mm" height="1.4mm" shape="rect" />
<smtpad portHints={["pin2"]} pcbX="1.25mm" pcbY="0mm" width="1.1mm" height="1.4mm" shape="rect" />
</footprint>
)
const PicoHeaderFootprint = ({ ports }: { ports: string[] }) => (
<footprint insertionDirection="from_above">
{ports.map((portName, index) => (
<platedhole
portHints={[portName]}
pcbX="0mm"
pcbY={`${(9.5 - index) * 2.54}mm`}
shape="circle"
holeDiameter="1mm"
outerDiameter="1.7mm"
/>
))}
</footprint>
)
const HeaderFanout = ({
headerName,
connections,
}: {
headerName: string
connections: string[][]
}) => (
<>
{connections.map(([portName, netName]) => (
<trace key={`${headerName}-${portName}`} from={`.${headerName} > .${portName}`} to={`net.${netName}`} />
))}
</>
)
export default () => (
<board
title="absePico RP2040-compatible development board"
width="34mm"
height="70mm"
layers={2}
minViaHoleDiameter="0.3mm"
minViaPadDiameter="0.45mm"
borderRadius="1.5mm"
autorouterVersion="v6"
>
<schematicsection name={schSections.rp2040} displayName="RP2040" />
<schematicsection name={schSections.headers} displayName="Headers" />
<schematicsection name={schSections.usb} displayName="USB-C" />
<schematicsection name={schSections.power} displayName="Power" />
<schematicsection name={schSections.flash} displayName="Flash" />
<schematicsection name={schSections.clock} displayName="Clock" />
<schematicsection name={schSections.controls} displayName="Controls" />
<schematicsection name={schSections.status} displayName="Status" />
<schematicsection name={schSections.debug} displayName="Debug" />
<trace name="Y1_G1" from=".Y1 > .GND1" to="net.GND" {...gndLabel} />
<trace name="Y1_G2" from=".Y1 > .GND2" to="net.GND" {...gndLabel} />
<trace name="USB_DN_B" from=".J_USB > .B7" to=".R_USB1 > .pin1" />
<trace name="USB_DP_B" from=".J_USB > .B6" to=".R_USB2 > .pin1" />
<B5819W_SL
name="D_VBUS"
schSectionName={schSections.power}
pcbX={-2}
pcbY={21}
pcbRotation={90}
/>
<trace name="VBUS_D" from="net.VBUS" to=".D_VBUS > .anode" {...vbusLabel} />
<trace name="D_VSYS" from=".D_VBUS > .cathode" to="net.VSYS" {...vsysLabel} />
<resistor name="R_3V3_EN" resistance="100k" footprint="0402" schSectionName={schSections.power} pcbX={-4.7} pcbY={17.3} pcbRotation={90} />
<trace name="EN_VSYS" from=".R_3V3_EN > .pin1" to="net.VSYS" {...vsysLabel} />
<trace name="EN_R" from=".R_3V3_EN > .pin2" to=".U3 > .EN" />
<capacitor name="C_IOVDD5" capacitance="100nF" footprint="0402" schSectionName={schSections.rp2040} schOrientation="vertical" pcbRotation={-90} pcbX={-6} pcbY={-10} schX={-9.6} schY={0} />
<capacitor name="C_IOVDD6" capacitance="100nF" footprint="0402" schSectionName={schSections.rp2040} schOrientation="vertical" pcbX={-8} pcbY={1.6} schX={-7.2} schY={2.31} />
<trace name="IO5_3V3" from=".C_IOVDD5 > .pin1" to="net.V3V3" {...v3v3Label} />
<trace name="IO5_G" from=".C_IOVDD5 > .pin2" to="net.GND" {...gndLabel} />
<trace name="IO6_3V3" from=".C_IOVDD6 > .pin1" to="net.V3V3" {...v3v3Label} />
<trace name="IO6_G" from=".C_IOVDD6 > .pin2" to="net.GND" {...gndLabel} />
<capacitor name="C_IOVDD3" capacitance="100nF" footprint="0402" schSectionName={schSections.rp2040} schOrientation="vertical" pcbRotation={-90} pcbX={-8} pcbY={-1} schX={-7.2} schY={-2.31} />
<capacitor name="C_IOVDD4" capacitance="100nF" footprint="0402" schSectionName={schSections.rp2040} schOrientation="vertical" pcbX={-4} pcbY={-7} schX={-7.9} schY={0} />
<trace name="IO3_3V3" from=".C_IOVDD3 > .pin1" to="net.V3V3" {...v3v3Label} />
<trace name="IO3_G" from=".C_IOVDD3 > .pin2" to="net.GND" {...gndLabel} />
<trace name="IO4_3V3" from=".C_IOVDD4 > .pin1" to="net.V3V3" {...v3v3Label} />
<trace name="IO4_G" from=".C_IOVDD4 > .pin2" to="net.GND" {...gndLabel} />
<resistor
name="R_RUN"
resistance="10k"
footprint="0402"
schSectionName={schSections.controls}
pcbX={10.4}
pcbY={-5.5}
/>
<capacitor
name="C_FLASH"
capacitance="100nF"
footprint="0402"
schSectionName={schSections.flash}
schOrientation="vertical"
pcbX={-5.5}
pcbY={10.8}
pcbRotation={180}
schX={16.65}
schY={-6.92}
/>
<capacitor
name="C_IOVDD1"
capacitance="100nF"
footprint="0402"
schSectionName={schSections.rp2040}
schOrientation="vertical"
pcbX={-4}
pcbY={-4.5}
schX={-10.8}
schY={-2.31}
/>
<capacitor
name="C_IOVDD2"
capacitance="100nF"
footprint="0402"
schSectionName={schSections.rp2040}
schOrientation="vertical"
pcbX={-3}
pcbY={6}
schX={-10.8}
schY={2.31}
/>
<capacitor
name="C_USB_VDD"
capacitance="100nF"
footprint="0402"
schSectionName={schSections.usb}
schOrientation="vertical"
pcbX={7.2}
pcbY={14.5}
schX={16.41}
schY={1.2}
/>
<capacitor
name="C_ADC"
capacitance="100nF"
footprint="0402"
schSectionName={schSections.power}
schOrientation="vertical"
pcbX={8}
pcbY={-4.4}
/>
{/* RUN pullup */}
<trace {...denseTraceProps} name="RUN_R" from=".R_RUN > .pin1" to=".U1 > .RUN" />
<trace name="RUN_3V3" from=".R_RUN > .pin2" to="net.V3V3" {...v3v3Label} />
{/* TESTEN */}
<trace name="TEST_G" from=".U1 > .TESTEN" to="net.GND" {...gndLabel} />
{/* Flash decoupling */}
<trace name="FLSH_3V3" from=".C_FLASH > .pin1" to="net.V3V3" {...v3v3Label} />
<trace name="FLSH_G" from=".C_FLASH > .pin2" to="net.GND" {...gndLabel} />
{/* IOVDD decoupling */}
<trace name="IO1_3V3" from=".C_IOVDD1 > .pin1" to="net.V3V3" {...v3v3Label} />
<trace name="IO1_G" from=".C_IOVDD1 > .pin2" to="net.GND" {...gndLabel} />
<trace name="IO2_3V3" from=".C_IOVDD2 > .pin1" to="net.V3V3" {...v3v3Label} />
<trace name="IO2_G" from=".C_IOVDD2 > .pin2" to="net.GND" {...gndLabel} />
{/* USB_VDD decoupling */}
<trace name="UVDD_3V3" from=".C_USB_VDD > .pin1" to="net.V3V3" {...v3v3Label} />
<trace name="UVDD_G" from=".C_USB_VDD > .pin2" to="net.GND" {...gndLabel} />
{/* ADC decoupling */}
<trace name="ADC_REF" from=".C_ADC > .pin1" to="net.ADC_VREF" {...adcRefLabel} />
<trace name="ADC_G" from=".C_ADC > .pin2" to="net.GND" {...gndLabel} />
<TYPE_C_16PIN_2MD_073_
name="J_USB"
schSectionName={schSections.usb}
pcbX={0}
pcbY={31.0}
pcbRotation={180}
/>
<RP2040
name="U1"
showPinAliases
schSectionName={schSections.rp2040}
pcbX={0}
pcbY={0.5}
schX={-0.22}
schY={-1}
schWidth={2.8}
schHeight={5.8}
/>
<W25Q16JVUXIQ
name="U2"
schSectionName={schSections.flash}
pcbX={3.5}
pcbY={9.5}
pcbRotation={90}
schX={18.02}
schY={-4.16}
schHeight={1}
/>
<AP2112K_3_3TRG1
name="U3"
schSectionName={schSections.power}
pcbX={-7.2}
pcbY={20.2}
pcbRotation={0}
schHeight={0.6}
/>
<X322512MSB4SI
name="Y1"
schSectionName={schSections.clock}
pcbX={0}
pcbY={-6}
/>
<SKRPACE010 name="SW_BOOT" schSectionName={schSections.controls} pcbX={8.6} pcbY={21.8} />
<SKRPACE010 name="SW_RUN" schSectionName={schSections.controls} pcbX={5.5} pcbY={-12.5} pcbRotation={90} />
<XL_1608SURC_06 name="D1" color="green" schSectionName={schSections.status} pcbX={10} pcbY={4.2} pcbRotation={90} />
<XL_1608SURC_06 name="D_PWR" color="green" schSectionName={schSections.status} pcbX={-9.8} pcbY={24.8} pcbRotation={90} schX={10.2} schY={-18.52} />
<resistor name="R_BOOT" resistance="10k" footprint="0402" schSectionName={schSections.controls} pcbX={5.1} pcbY={17.8} pcbRotation={90} />
<resistor name="R_LED" resistance="330" footprint="0402" schSectionName={schSections.status} pcbX={7.2} pcbY={1.2} pcbRotation={90} />
<resistor name="R_PWR_LED" resistance="330" footprint="0402" schSectionName={schSections.status} pcbX={-6.2} pcbY={24.8} pcbRotation={90} schOrientation="horizontal" schX={8.6} schY={-18.52} />
<resistor name="R_CC1" resistance="5.1k" footprint="0402" schSectionName={schSections.usb} pcbX={-0.2} pcbY={25.6} />
<resistor name="R_CC2" resistance="5.1k" footprint="0402" schSectionName={schSections.usb} pcbX={3.6} pcbY={26.5} schX={13.91} schY={-4.12} />
<resistor name="R_USB1" resistance="27" footprint="0402" schSectionName={schSections.usb} pcbX={-2.4} pcbY={16.5} pcbRotation={90} schX={14.96} schY={-6.1} />
<resistor name="R_USB2" resistance="27" footprint="0402" schSectionName={schSections.usb} pcbX={2.4} pcbY={16.5} pcbRotation={90} schX={14.96} schY={-8.08} />
<capacitor name="C_VBUS" capacitance="10uF" footprint="0603" schSectionName={schSections.usb} schOrientation="vertical" pcbX={-2.8} pcbY={26.3} pcbRotation={90} schX={15.47} schY={-3.96} />
<capacitor name="C_3V3" capacitance="10uF" footprint="0603" schSectionName={schSections.power} schOrientation="vertical" pcbX={-8.5} pcbY={4.2} />
<capacitor name="C_CORE" capacitance="1uF" footprint="0402" schSectionName={schSections.rp2040} schOrientation="vertical" pcbX={3.8} pcbY={-5.5} schX={-2.8} schY={-4.8} />
<capacitor name="C_USB" capacitance="1uF" footprint="0402" schSectionName={schSections.usb} schOrientation="vertical" pcbX={9.8} pcbY={18.4} schX={16.11} schY={-1.2} />
<capacitor name="C_XIN" capacitance="18pF" footprint="0402" schSectionName={schSections.clock} schOrientation="vertical" pcbX={-8.4} pcbY={-11.8} />
<capacitor name="C_XOUT" capacitance="18pF" footprint="0402" schSectionName={schSections.clock} schOrientation="vertical" pcbX={-2.4} pcbY={-21
} />
<inductor name="L_AVDD" inductance="600ohm@100MHz" footprint="0603" schSectionName={schSections.power} pcbX={8.5} pcbY={-1.8} supplierPartNumbers={{ jlcpcb: ["C1002"] }} pcbRotation={90} />
<testpoint name="TP_SWCLK" footprintVariant="pad" padShape="circle" padDiameter="1.1mm" schSectionName={schSections.debug} pcbX={-6} pcbY={-31} />
<testpoint name="TP_GND" footprintVariant="pad" padShape="circle" padDiameter="1.1mm" schSectionName={schSections.debug} pcbX={-2} pcbY={-31} />
<testpoint name="TP_SWDIO" footprintVariant="pad" padShape="circle" padDiameter="1.1mm" schSectionName={schSections.debug} pcbX={2} pcbY={-31} />
<testpoint name="TP_3V3" footprintVariant="pad" padShape="circle" padDiameter="1.1mm" schSectionName={schSections.debug} pcbX={6} pcbY={-31} />
<trace {...denseTraceProps} name="QSPI_SS" from=".U1 > .QSPI_SS" to=".U2 > .CS" schDisplayLabel="QSPI_SS" />
<trace {...denseTraceProps} name="QSPI_SD0" from=".U1 > .QSPI_SD0" to=".U2 > .pin5" schDisplayLabel="QSPI_SD0" />
<trace {...denseTraceProps} name="QSPI_SD1" from=".U1 > .QSPI_SD1" to=".U2 > .pin2" schDisplayLabel="QSPI_SD1" />
<trace {...denseTraceProps} name="QSPI_SD2" from=".U1 > .QSPI_SD2" to=".U2 > .pin3" schDisplayLabel="QSPI_SD2" />
<trace {...denseTraceProps} name="QSPI_SD3" from=".U1 > .QSPI_SD3" to=".U2 > .pin7" schDisplayLabel="QSPI_SD3" />
<trace {...denseTraceProps} name="QSPI_SCLK" from=".U1 > .QSPI_SCLK" to=".U2 > .CLK" schDisplayLabel="QSPI_SCLK" />
<trace {...denseTraceProps} name="IOVDD1_P" from=".U1 > .IOVDD1" to="net.V3V3" {...v3v3Label} />
<trace {...denseTraceProps} name="IOVDD2_P" from=".U1 > .IOVDD2" to="net.V3V3" {...v3v3Label} />
<trace {...denseTraceProps} name="IOVDD3_P" from=".U1 > .IOVDD3" to="net.V3V3" {...v3v3Label} />
<trace {...denseTraceProps} name="IOVDD4_P" from=".U1 > .IOVDD4" to="net.V3V3" {...v3v3Label} />
<trace {...denseTraceProps} name="IOVDD5_P" from=".U1 > .IOVDD5" to="net.V3V3" {...v3v3Label} />
<trace {...denseTraceProps} name="IOVDD6_P" from=".U1 > .IOVDD6" to="net.V3V3" {...v3v3Label} />
<trace {...denseTraceProps} name="DVDD1_P" from=".U1 > .DVDD1" to="net.V1V1" {...v1v1Label} />
<trace {...denseTraceProps} name="DVDD2_P" from=".U1 > .DVDD2" to="net.V1V1" {...v1v1Label} />
<trace {...denseTraceProps} name="VREG_IN_P" from=".U1 > .VREG_IN" to="net.V3V3" {...v3v3Label} />
<trace {...denseTraceProps} name="VREG_VOUT_P" from=".U1 > .VREG_VOUT" to="net.V1V1" {...v1v1Label} />
<trace {...denseTraceProps} name="USB_VDD_P" from=".U1 > .USB_VDD" to="net.V3V3" {...v3v3Label} />
<trace name="GND_G" from=".U1 > .GND" to="net.GND" {...gndLabel} />
<trace {...denseTraceProps} name="USBV_IO1" from=".U1 > .USB_VDD" to=".U1 > .IOVDD1" />
<trace name="VBUS_A" from=".J_USB > .A4B9" to="net.VBUS" {...vbusLabel} />
<trace name="VBUS_B" from=".J_USB > .B4A9" to="net.VBUS" {...vbusLabel} />
<trace name="USB_DN_A" from=".J_USB > .A7" to=".R_USB1 > .pin1" />
<trace {...denseTraceProps} name="USB_DN" from=".R_USB1 > .pin2" to=".U1 > .USB_DM" />
<trace name="USB_DP_A" from=".J_USB > .A6" to=".R_USB2 > .pin1" />
<trace {...denseTraceProps} name="USB_DP" from=".R_USB2 > .pin2" to=".U1 > .USB_DP" />
<trace {...denseTraceProps} name="CC1" from=".J_USB > .A5" to=".R_CC1 > .pin1" />
<trace {...denseTraceProps} name="CC2" from=".J_USB > .B5" to=".R_CC2 > .pin1" />
<trace {...denseTraceProps} name="USB_G" from=".J_USB > .A1B12" to="net.GND" {...gndLabel} />
<trace {...denseTraceProps} name="USB_G_B" from=".J_USB > .B1A12" to="net.GND" {...gndLabel} />
<trace {...denseTraceProps} name="USB_EH1" from=".J_USB > .EH1" to="net.GND" {...gndLabel} />
<trace {...denseTraceProps} name="USB_EH1_ALT" from=".J_USB > .pin13_alt1" to="net.GND" {...gndLabel} />
<trace {...denseTraceProps} name="USB_EH2" from=".J_USB > .EH2" to="net.GND" {...gndLabel} />
<trace {...denseTraceProps} name="USB_EH2_ALT" from=".J_USB > .pin14_alt1" to="net.GND" {...gndLabel} />
<trace name="CC1_G" from=".R_CC1 > .pin2" to="net.GND" {...gndLabel} />
<trace name="CC2_G" from=".R_CC2 > .pin2" to="net.GND" {...gndLabel} />
<trace name="VBUS_C" from="net.VBUS" to=".C_VBUS > .pin1" {...vbusLabel} />
<trace name="VBUS_G" from=".C_VBUS > .pin2" to="net.GND" {...gndLabel} />
<trace name="VSYS_IN" from="net.VSYS" to=".U3 > .VIN" {...vsysLabel} />
<trace name="REG_3V3" from=".U3 > .VOUT" to="net.V3V3" {...v3v3Label} />
<trace name="REG_G" from=".U3 > .GND" to="net.GND" {...gndLabel} />
<trace name="C3V3_P" from=".C_3V3 > .pin1" to="net.V3V3" {...v3v3Label} />
<trace name="C3V3_G" from=".C_3V3 > .pin2" to="net.GND" {...gndLabel} />
<trace name="CORE_P" from=".C_CORE > .pin1" to="net.V1V1" {...v1v1Label} />
<trace name="CORE_G" from=".C_CORE > .pin2" to="net.GND" {...gndLabel} />
<trace name="CUSB_P" from=".C_USB > .pin1" to="net.V3V3" {...v3v3Label} />
<trace name="CUSB_G" from=".C_USB > .pin2" to="net.GND" {...gndLabel} />
<trace name="AVDD_IN" from=".L_AVDD > .pin1" to="net.V3V3" {...v3v3Label} />
<trace name="AVDD" from=".L_AVDD > .pin2" to="net.ADC_VREF" {...adcRefLabel} />
<trace name="ADC_AVDD" from=".U1 > .ADC_AVDD" to="net.ADC_VREF" {...adcRefLabel} />
<trace name="FLSH_GND" from=".U2 > .GND" to="net.GND" {...gndLabel} />
<trace name="FLSH_VCC" from=".U2 > .VCC" to="net.V3V3" {...v3v3Label} />
<trace name="FLSH_EP" from=".U2 > .EP" to="net.GND" {...gndLabel} />
<trace name="XIN" from=".Y1 > .OSC1" to=".U1 > .XIN" />
<trace name="XOUT" from=".Y1 > .OSC2" to=".U1 > .XOUT" />
<trace name="CXIN" from=".C_XIN > .pin1" to=".Y1 > .OSC1" />
<trace name="CXIN_G" from=".C_XIN > .pin2" to="net.GND" {...gndLabel} />
<trace name="CXOUT" from=".C_XOUT > .pin1" to=".Y1 > .OSC2" />
<trace name="CXOUT_G" from=".C_XOUT > .pin2" to="net.GND" {...gndLabel} />
<trace name="BOOT_SW" from=".SW_BOOT > .pin1" to=".U1 > .QSPI_SS" />
<trace name="BOOT_G" from=".SW_BOOT > .pin3" to="net.GND" {...gndLabel} />
<trace name="BOOT_R" from=".R_BOOT > .pin1" to=".U1 > .QSPI_SS" />
<trace name="BOOT_3V3" from=".R_BOOT > .pin2" to="net.V3V3" {...v3v3Label} />
<trace name="RUN_SW" from=".SW_RUN > .pin1" to=".U1 > .RUN" />
<trace name="RUN_G" from=".SW_RUN > .pin4" to="net.GND" {...gndLabel} />
<trace name="LED_GP25" from=".U1 > .GPIO25" to=".R_LED > .pin1" />
<trace name="LED_D1" from=".R_LED > .pin2" to=".D1 > .pin1" />
<trace name="LED_G" from=".D1 > .pin2" to="net.GND" {...gndLabel} />
<trace name="PLED_3V3" from="net.V3V3" to=".R_PWR_LED > .pin1" {...v3v3Label} />
<trace name="PLED_D" from=".R_PWR_LED > .pin2" to=".D_PWR > .pin1" />
<trace name="PLED_G" from=".D_PWR > .pin2" to="net.GND" {...gndLabel} />
<trace name="SWCLK" from=".U1 > .SWCLK" to=".TP_SWCLK > .pin1" />
<trace name="SWD" from=".U1 > .SWD" to=".TP_SWDIO > .pin1" />
<trace name="TP_G" from=".TP_GND > .pin1" to="net.GND" {...gndLabel} />
<trace name="TP3V3_T" from=".TP_3V3 > .pin1" to="net.V3V3" {...v3v3Label} />
<silkscreentext text="Abse-Pico" fontSize="2mm" pcbX={-8} pcbY={-33} pcbRotation={0} />
<silkscreentext text="Tscircuit" fontSize="7mm" pcbX={0} pcbY={0} pcbRotation={90} layer="bottom" />
<silkscreentext text="TSC" isKnockout fontSize="2mm" pcbX={12} pcbY={-33} />
<silkscreentext text="BOOT" fontSize="0.8mm" pcbX={12} pcbY={14} />
<silkscreentext text="RUN" fontSize="0.8mm" pcbX={-12} pcbY={-30} />
<silkscreentext text="PWR" fontSize="0.8mm" pcbX={-9.8} pcbY={27.4} />
<silkscreentext text="USB-C" fontSize="0.9mm" pcbX={0} pcbY={25} />
</board>
)