abse/gameboy

This code defines the hardware mapping and schematic connections for a Raspberry Pi Pico-based development board featuring RP2040 microcontroller, USB-C connector, various power regulation components, decoupling capacitors, resistors, LEDs, headers, and supporting passive components for signal integrity and debugging.

Version
1.0.16
License
unset
Stars
1

PicoGroup.tsx

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 "./imports/B5819W_SL"
import { XL_1608SURC_06 } from "./imports/XL_1608SURC_06"

const denseTraceProps = { thickness: "0.1mm" } as const
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 schSections = {
  rp2040: "rp2040",
  usb: "usb",
  power: "power",
  flash: "flash",
  clock: "clock",
  controls: "controls",
  display: "display",
  status: "status",
  debug: "debug",
} as const

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"]
}

type PicoGroupProps = {
  pcbX?: string | number
  pcbY?: string | number
  pcbRotation?: string | number
  schX?: string | number
  schY?: string | number
  schRotation?: string | number
}

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>
)

export const PicoGroup = (props: PicoGroupProps) => (
  <group name="PICO" {...props}>

    <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={-6} 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={-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.4}
      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.atus} 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={3.4} pcbY={22.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 > .anode" />
    <trace name="LED_G" from=".D1 > .cathode" 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 > .anode" />
    <trace name="PLED_G" from=".D_PWR > .cathode" 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} />
  </group>
)