ShiboSoftwareDev/i-wan

This code defines a PCB and schematic for a microcontroller development board, incorporating various surface-mount components (resistors, capacitors, headers, connectors, crystals, and an IC), with detailed footprints, electrical nets, and routing instructions.

Version
1.0.10
License
unset
Stars
0

index.circuit.tsx

PCBPCB preview for index.circuit.tsx
SchematicSchematic preview for index.circuit.tsx
import { CSTCR4M00G53_R0 } from "./imports/CSTCR4M00G53_R0"
import { MicroXNJ } from "./imports/MicroXNJ"
import { MSP430F5528IRGCR } from "./imports/MSP430F5528IRGCR"
import { MSP430FR2433IRGER } from "./imports/MSP430FR2433IRGER"
import { SC_32S32_768kHz20PPM12_5pF } from "./imports/SC_32S32_768kHz20PPM12_5pF"
import { TS342A2P_WZ } from "./imports/TS342A2P_WZ"
import { USBLC6_2SC6 } from "./imports/USBLC6_2SC6"
import { throughViaFanoutAutorouter } from "./routing/ThroughViaFanoutAutorouter"

// The schematic follows the two-sheet organization used by TI's
// MSP-EXP430FR2433 LaunchPad reference: eZ-FET/USB first, target second.
// These coordinates affect only the schematic; PCB placement and routing stay fixed.
const onEzFetSheet = <const T extends Record<string, unknown>>(placement: T) => ({
  schSheetName: "EZ_FET",
  ...placement,
})

const onTargetSheet = <const T extends Record<string, unknown>>(placement: T) => ({
  schSheetName: "TARGET",
  ...placement,
})

const SCH = {
  // Sheet 1: USB interface and power supply (upper-left in the TI reference)
  J_USB: onEzFetSheet({ schX: -13, schY: 5.2 }),
  U_ESD: onEzFetSheet({ schX: -9.5, schY: 4.5, schRotation: 180 }),
  R_USB_DM: onEzFetSheet({ schX: -6.5, schY: 4, schOrientation: "horizontal" }),
  R_USB_DP: onEzFetSheet({ schX: -6.5, schY: 5, schOrientation: "horizontal" }),
  R_USB_PUR: onEzFetSheet({ schX: -6.5, schY: 2.5, schOrientation: "horizontal" }),
  R_DBG_VBUS_LINK: onEzFetSheet({ schX: -7.5, schY: 7, schOrientation: "horizontal" }),
  R_SHIELD: onEzFetSheet({ schX: -11.5, schY: 1, schOrientation: "vertical" }),
  C_SHIELD: onEzFetSheet({ schX: -11.5, schY: -1, schOrientation: "vertical" }),

  // Sheet 1: conventional LDO replacing the reference EnergyTrace converter
  U_LDO: onEzFetSheet({ schX: -8, schY: -4 }),
  C_LDO_IN: onEzFetSheet({ schX: -11.5, schY: -5.5, schOrientation: "vertical" }),
  C_LDO_OUT: onEzFetSheet({ schX: -5, schY: -5.5, schOrientation: "vertical" }),
  R_LDO_EN: onEzFetSheet({ schX: -11.5, schY: -3, schOrientation: "horizontal" }),
  R_LED_PWR: onEzFetSheet({ schX: -2.5, schY: -3.5, schOrientation: "vertical" }),
  LED_PWR: onEzFetSheet({ schX: -2.5, schY: -5.5, schOrientation: "vertical" }),

  // Sheet 1: host MCU for emulation and local support circuitry
  U_DBG: onEzFetSheet({ schX: 3.5, schY: 1.5 }),
  Y_DBG: onEzFetSheet({ schX: -0.5, schY: 5.5, schOrientation: "right" }),
  C_DBG_VCORE: onEzFetSheet({ schX: 10, schY: 6.7, schOrientation: "vertical" }),
  C_DBG_VUSB: onEzFetSheet({ schX: 0, schY: -3, schOrientation: "vertical" }),
  C_DBG_V18: onEzFetSheet({ schX: 0, schY: -5, schOrientation: "vertical" }),
  C_DBG_AVCC: onEzFetSheet({ schX: 3, schY: -5.5, schOrientation: "vertical" }),
  C_DBG_DVCC1: onEzFetSheet({ schX: 5, schY: -5.5, schOrientation: "vertical" }),
  C_DBG_DVCC2: onEzFetSheet({ schX: 7, schY: -5.5, schOrientation: "vertical" }),
  C_DBG_BULK: onEzFetSheet({ schX: 11, schY: -5.5, schOrientation: "vertical" }),
  R_DBG_RST: onEzFetSheet({ schX: 8, schY: 8, schOrientation: "horizontal" }),
  C_DBG_RST: onEzFetSheet({ schX: 11, schY: 8, schOrientation: "vertical" }),
  R_DBG_RED: onEzFetSheet({ schX: 0, schY: 8, schOrientation: "horizontal" }),
  LED_DBG_RED: onEzFetSheet({ schX: -2, schY: 8, schOrientation: "horizontal" }),
  R_DBG_GREEN: onEzFetSheet({ schX: 0, schY: 6.8, schOrientation: "horizontal" }),
  LED_DBG_GREEN: onEzFetSheet({ schX: -2, schY: 6.8, schOrientation: "horizontal" }),
  J_DBG_PROG: onEzFetSheet({ schX: 5, schY: 8, schRotation: 180 }),

  // Sheet 1: eZ-FET target isolation block at the lower-right
  J_ISO_SBW_TST: onEzFetSheet({ schX: 8.5, schY: 3 }),
  J_ISO_SBW_RST: onEzFetSheet({ schX: 8.5, schY: 1.6 }),
  J_ISO_UART_RX: onEzFetSheet({ schX: 8.5, schY: 0.2 }),
  J_ISO_UART_TX: onEzFetSheet({ schX: 8.5, schY: -1.2 }),
  J_ISO_3V3: onEzFetSheet({ schX: 8.5, schY: -2.6 }),
  J_ISO_5V: onEzFetSheet({ schX: 8.5, schY: -4 }),
  J_ISO_GND: onEzFetSheet({ schX: 8.5, schY: -5.4 }),

  // Sheet 2: target MCU and support circuitry
  U_TARGET: onTargetSheet({ schX: 0, schY: 2 }),
  C_TARGET_DEC: onTargetSheet({ schX: -11.5, schY: 1.5, schOrientation: "vertical" }),
  C_TARGET_BULK: onTargetSheet({ schX: -8.5, schY: 1.5, schOrientation: "vertical" }),
  R_TARGET_RST: onTargetSheet({ schX: -8, schY: 7.2, schOrientation: "horizontal" }),
  C_TARGET_RST: onTargetSheet({ schX: -6, schY: 5.3, schOrientation: "vertical" }),
  SW_RESET: onTargetSheet({ schX: -5.5, schY: 7.2, schOrientation: "down" }),
  SW1: onTargetSheet({ schX: -12.5, schY: 7, schOrientation: "down" }),
  SW2: onTargetSheet({ schX: -12.5, schY: 4.5, schOrientation: "down" }),

  // Sheet 2: 32-kHz clock at lower-left of the MCU
  Y_TARGET: onTargetSheet({ schX: -9, schY: -1.3, schOrientation: "horizontal" }),
  R_XIN: onTargetSheet({ schX: -5.5, schY: -0.5, schOrientation: "horizontal" }),
  R_XOUT: onTargetSheet({ schX: -5.5, schY: -2.2, schOrientation: "horizontal" }),
  C_XIN: onTargetSheet({ schX: -10.5, schY: -3.5, schOrientation: "vertical" }),
  C_XOUT: onTargetSheet({ schX: -7.5, schY: -3.5, schOrientation: "vertical" }),

  // Sheet 2: BoosterPack headers across the lower middle
  J1: onTargetSheet({ schX: -3, schY: -3.2 }),
  J2: onTargetSheet({ schX: 5, schY: -3.2 }),

  // Sheet 2: user LEDs at lower-right
  R_LED1_EN: onTargetSheet({ schX: 8, schY: -4.5, schOrientation: "horizontal" }),
  R_LED1: onTargetSheet({ schX: 10.5, schY: -4.5, schOrientation: "horizontal" }),
  LED1: onTargetSheet({ schX: 13, schY: -4.5, schOrientation: "horizontal" }),
  R_LED2_EN: onTargetSheet({ schX: 8, schY: -7, schOrientation: "horizontal" }),
  R_LED2: onTargetSheet({ schX: 10.5, schY: -7, schOrientation: "horizontal" }),
  LED2: onTargetSheet({ schX: 13, schY: -7, schOrientation: "horizontal" }),

  // Sheet 2: external power, supercapacitor, and bring-up points
  J_EXT_PWR: onTargetSheet({ schX: -12, schY: -7 }),
  J_SUPERCAP: onTargetSheet({ schX: 10.5, schY: 5.5 }),
  R_SUPERCAP: onTargetSheet({ schX: 13, schY: 5.5, schOrientation: "horizontal" }),
  C_SUPERCAP: onTargetSheet({ schX: 10.5, schY: 2.5, schOrientation: "vertical" }),
  TP_5V: onTargetSheet({ schX: -12, schY: -9.2 }),
  TP_3V3: onTargetSheet({ schX: -8, schY: -9.2 }),
  TP_GND: onTargetSheet({ schX: -4, schY: -9.2 }),
  TP_RST: onTargetSheet({ schX: 0, schY: -9.2 }),
} as const

const jlcpcbPart = (manufacturerPartNumber: string, lcscPartNumber: string) => ({
  manufacturerPartNumber,
  supplierPartNumbers: { jlcpcb: [lcscPartNumber] },
})

// One reviewed, in-stock JLCPCB/LCSC choice for every fitted generic part.
// The imported ICs/connectors/oscillators already carry their exact C-numbers.
const JLC_PARTS = {
  CAP_100NF_0402: jlcpcbPart("CL05B104KO5NNNC", "C1525"),
  CAP_10UF_0805: jlcpcbPart("CL21A106KAYNNNE", "C15850"),
  CAP_1NF_0402: jlcpcbPart("0402B102K500NT", "C1523"),
  CAP_470NF_0402: jlcpcbPart("CL05A474KP5NNNC", "C47339"),
  CAP_220NF_0402: jlcpcbPart("CL05B224KO5NNNC", "C16772"),
  CAP_1UF_0603: jlcpcbPart("CL10A105KB8NNNC", "C15849"),
  CAP_1NF_0603: jlcpcbPart("CL10B102KB8NNNC", "C1588"),
  CAP_12PF_0402: jlcpcbPart("0402CG120J500NT", "C1547"),
  RES_390R_0603: jlcpcbPart("0603WAF3900T5E", "C23151"),
  RES_470R_0603: jlcpcbPart("0603WAF4700T5E", "C23179"),
  RES_47K_0402: jlcpcbPart("0402WGF4702TCE", "C25792"),
  RES_0R_0402: jlcpcbPart("0402WGF0000TCE", "C17168"),
  RES_10K_0402: jlcpcbPart("0402WGF1002TCE", "C25744"),
  RES_1K_0603: jlcpcbPart("0603WAF1001T5E", "C21190"),
  RES_0R_0603: jlcpcbPart("0603WAF0000T5E", "C21189"),
  RES_1M_0603: jlcpcbPart("0603WAF1004T5E", "C22935"),
  RES_22R_0603: jlcpcbPart("0603WAF220JT5E", "C23345"),
  RES_27R_0402: jlcpcbPart("0402WGF270JTCE", "C25100"),
  RES_1K4_0402: jlcpcbPart("FRC0402F1401TS", "C2974008"),
  LED_RED_0603: jlcpcbPart("KT-0603R", "C2286"),
  LED_GREEN_0603: jlcpcbPart("XL-1608SYGC-06", "C965805"),
  HEADER_1X2_MALE: jlcpcbPart("PZ254V-11-02P", "C492401"),
  HEADER_1X3_MALE: jlcpcbPart("PZ254V-11-03P", "C2937625"),
  HEADER_1X7_MALE: jlcpcbPart("PZ254V-11-07P", "C492406"),
  HEADER_1X10_FEMALE: jlcpcbPart("PM254-1-10-Z-8.5", "C2897373"),
} as const

const Ldo3V3 = (props: any) => (
  <chip
    {...props}
    manufacturerPartNumber="TLV70033DDCR"
    supplierPartNumbers={{ jlcpcb: ["C11337"] }}
    footprint="sot23_5"
    pinLabels={{
      pin1: "IN",
      pin2: "GND",
      pin3: "EN",
      pin4: "NC",
      pin5: "OUT",
    }}
    pinAttributes={{
      IN: { requiresPower: true },
      GND: { requiresGround: true },
      EN: { mustBeConnected: true },
      OUT: { providesPower: true },
    }}
  />
)

const TwoPinHeaderJumper = ({
  name,
  pcbX,
  schX,
  schY,
  schSheetName,
}: {
  name: string
  pcbX: number
  schX: number
  schY: number
  schSheetName: string
}) => (
  <jumper
    name={name}
    {...JLC_PARTS.HEADER_1X2_MALE}
    footprint={
      <footprint>
        <platedhole shape="circle" portHints={["pin1"]} pcbX="0mm" pcbY="1.27mm" holeDiameter="0.9mm" outerDiameter="1.7mm" />
        <platedhole shape="circle" portHints={["pin2"]} pcbX="0mm" pcbY="-1.27mm" holeDiameter="0.9mm" outerDiameter="1.7mm" />
        <silkscreenrect width="2mm" height="3.4mm" />
      </footprint>
    }
    pinLabels={{ pin1: "HOST", pin2: "TARGET" }}
    schPinArrangement={{ leftSide: ["HOST"], rightSide: ["TARGET"] }}
    schX={schX}
    schY={schY}
    schSheetName={schSheetName}
    pcbX={pcbX}
    pcbY={6.5}
  />
)

export default () => (
  <board
    title="MSP-EXP430FR2433 compatible LaunchPad - tscircuit edition"
    width="54mm"
    height="86mm"
    layers={4}
    borderRadius="2mm"
    minTraceWidth="0.1mm"
    minViaHoleDiameter="0.3mm"
    minViaPadDiameter="0.45mm"
    pcbStyle={{ viaHoleDiameter: "0.3mm", viaPadDiameter: "0.45mm" }}
    autorouter={throughViaFanoutAutorouter}
  >
    <schematicsheet name="EZ_FET" displayName="eZ-FET, USB, and Power" sheetIndex={0}>
      <schematictext
        text="USB Interface and Power Supply"
        schX={-14.5}
        schY={9.5}
        fontSize={0.65}
        anchor="left"
      />
      <schematictext
        text="Host MCU for emulation"
        schX={1}
        schY={9.5}
        fontSize={0.65}
        anchor="left"
      />
      <schematictext
        text="eZ-FET Target"
        schX={8}
        schY={4.8}
        fontSize={0.65}
        anchor="left"
      />
      <schematictext
        text="This edition uses a conventional 3.3 V LDO; the TI EnergyTrace converter is not fitted."
        schX={-14.5}
        schY={-8.5}
        fontSize={0.35}
        anchor="left"
        color="#555555"
      />
    </schematicsheet>
    <schematicsheet name="TARGET" displayName="MSP430FR2433 Target" sheetIndex={1}>
      <schematictext
        text="MSP430FR2433 Target Device"
        schX={-2.5}
        schY={9.5}
        fontSize={0.65}
        anchor="left"
      />
      <schematictext
        text="Super Capacitor"
        schX={9}
        schY={8.5}
        fontSize={0.55}
        anchor="left"
      />
      <schematictext
        text="LEDs"
        schX={10}
        schY={-3}
        fontSize={0.55}
        anchor="left"
      />
      <netlabel
        net="GND"
        connection="SW_RESET.pin2"
        schX={-4.7}
        schY={6.1}
        anchorSide="top"
      />
      <netlabel
        net="GND"
        connection="C_TARGET_RST.pin2"
        schX={-6}
        schY={4.1}
        anchorSide="top"
      />
      <netlabel
        net="TARGET_RST"
        connection="R_TARGET_RST.pin1"
        schX={-8.6}
        schY={7.2}
        anchorSide="right"
      />
      <netlabel
        net="TARGET_RST"
        connection="U_TARGET.RST"
        schX={4.2}
        schY={1.9}
        anchorSide="left"
      />
    </schematicsheet>

    {/* Mechanical outline and identification */}
    <hole name="H_MOUNT_1" diameter="3.2mm" pcbX={-23} pcbY={38} />
    <hole name="H_MOUNT_2" diameter="3.2mm" pcbX={23} pcbY={38} />
    <hole name="H_MOUNT_3" diameter="3.2mm" pcbX={-23} pcbY={-38} />
    <hole name="H_MOUNT_4" diameter="3.2mm" pcbX={23} pcbY={-38} />
    <fiducial name="FID1" padDiameter="1mm" soldermaskPullback="1mm" pcbX={-20} pcbY={34} />
    <fiducial name="FID2" padDiameter="1mm" soldermaskPullback="1mm" pcbX={20} pcbY={-34} />
    <silkscreentext
      text="MSP-EXP430FR2433 compatible"
      fontSize="1.2mm"
      pcbX={0}
      pcbY={-40.5}
    />
    <silkscreentext text="eZ-FET / USB" fontSize="1mm" pcbX={0} pcbY={10.5} />
    <silkscreentext text="TARGET" fontSize="1mm" pcbX={0} pcbY={1.8} />

    {/* USB input and protected USB 2.0 data path */}
    <MicroXNJ name="J_USB" {...SCH.J_USB} pcbX={0} pcbY={39.2} pcbRotation={90} noConnect={["ID"]} />
    <USBLC6_2SC6
      name="U_ESD"
      {...SCH.U_ESD}
      pcbX={0}
      pcbY={32.5}
      pcbRotation={90}
      pinAttributes={{
        VBUS: { requiresPower: true },
        GND: { requiresGround: true },
      }}
    />
    <resistor name="R_USB_DM" {...SCH.R_USB_DM} {...JLC_PARTS.RES_27R_0402} resistance="27ohm" footprint="0402" pcbX={-7} pcbY={21.75} />
    <resistor name="R_USB_DP" {...SCH.R_USB_DP} {...JLC_PARTS.RES_27R_0402} resistance="27ohm" footprint="0402" pcbX={-7} pcbY={22.75} />
    <resistor name="R_USB_PUR" {...SCH.R_USB_PUR} {...JLC_PARTS.RES_1K4_0402} resistance="1.4kohm" footprint="0402" layer="bottom" pcbX={-11} pcbY={23.5} />
    <resistor name="R_DBG_VBUS_LINK" {...SCH.R_DBG_VBUS_LINK} {...JLC_PARTS.RES_0R_0402} resistance="0ohm" footprint="0402" layer="bottom" pcbX={-8} pcbY={18} />
    <resistor name="R_SHIELD" {...SCH.R_SHIELD} {...JLC_PARTS.RES_1M_0603} resistance="1Mohm" footprint="0603" pcbX={7.2} pcbY={36.7} />
    <capacitor name="C_SHIELD" {...SCH.C_SHIELD} {...JLC_PARTS.CAP_1NF_0603} capacitance="1nF" footprint="0603" pcbX={7.2} pcbY={34.7} />

    {/* Conventional 3.3 V regulator replacing the EnergyTrace switcher */}
    <Ldo3V3 name="U_LDO" {...SCH.U_LDO} pcbX={-14.5} pcbY={32} pcbRotation={180} />
    <capacitor name="C_LDO_IN" {...SCH.C_LDO_IN} {...JLC_PARTS.CAP_1UF_0603} capacitance="1uF" footprint="0603" pcbX={-18.5} pcbY={32} />
    <capacitor name="C_LDO_OUT" {...SCH.C_LDO_OUT} {...JLC_PARTS.CAP_1UF_0603} capacitance="1uF" footprint="0603" pcbX={-10.5} pcbY={32} />
    <resistor name="R_LDO_EN" {...SCH.R_LDO_EN} {...JLC_PARTS.RES_10K_0402} resistance="10kohm" footprint="0402" pcbX={-10.5} pcbY={35} />
    <led name="LED_PWR" {...SCH.LED_PWR} {...JLC_PARTS.LED_GREEN_0603} color="green" footprint="0603" pcbX={-17} pcbY={27.5} />
    <resistor name="R_LED_PWR" {...SCH.R_LED_PWR} {...JLC_PARTS.RES_1K_0603} resistance="1kohm" footprint="0603" pcbX={-13.5} pcbY={27.5} />

    {/* MSP430F5528 eZ-FET Lite host controller */}
    <MSP430F5528IRGCR
      name="U_DBG"
      {...SCH.U_DBG}
      schWidth="5.5mm"
      schHeight="8mm"
      pcbX={0}
      pcbY={19.5}
      pcbRotation={0}
      pinAttributes={{
        AVCC1: { requiresPower: true },
        AVSS1: { requiresGround: true },
        DVCC1: { requiresPower: true },
        DVSS1: { requiresGround: true },
        DVCC2: { requiresPower: true },
        DVSS2: { requiresGround: true },
        AVSS2: { requiresGround: true },
        VSSU: { requiresGround: true },
        GND_EP: { requiresGround: true },
        VBUS: { requiresPower: true },
      }}
    />
    <CSTCR4M00G53_R0
      name="Y_DBG"
      {...SCH.Y_DBG}
      pcbX={-10}
      pcbY={19.5}
      pcbRotation={90}
      pinAttributes={{ GND: { requiresGround: true } }}
    />
    <capacitor name="C_DBG_VCORE" {...SCH.C_DBG_VCORE} {...JLC_PARTS.CAP_470NF_0402} capacitance="470nF" maxDecouplingTraceLength="10mm" footprint="0402" layer="bottom" pcbX={5.7} pcbY={16.26} pcbRotation={270} />
    <capacitor name="C_DBG_VUSB" {...SCH.C_DBG_VUSB} {...JLC_PARTS.CAP_220NF_0402} capacitance="220nF" maxDecouplingTraceLength="10mm" footprint="0402" pcbX={-7} pcbY={20.75} pcbRotation={180} />
    <capacitor name="C_DBG_V18" {...SCH.C_DBG_V18} {...JLC_PARTS.CAP_220NF_0402} capacitance="220nF" maxDecouplingTraceLength="10mm" footprint="0402" pcbX={-7} pcbY={19.5} pcbRotation={180} />
    <capacitor name="C_DBG_AVCC" {...SCH.C_DBG_AVCC} {...JLC_PARTS.CAP_100NF_0402} capacitance="100nF" footprint="0402" pcbX={0} pcbY={13.2} />
    <capacitor name="C_DBG_DVCC1" {...SCH.C_DBG_DVCC1} {...JLC_PARTS.CAP_100NF_0402} capacitance="100nF" footprint="0402" pcbX={2.2} pcbY={13.2} />
    <capacitor name="C_DBG_DVCC2" {...SCH.C_DBG_DVCC2} {...JLC_PARTS.CAP_100NF_0402} capacitance="100nF" footprint="0402" pcbX={4.4} pcbY={13.2} />
    <capacitor name="C_DBG_BULK" {...SCH.C_DBG_BULK} {...JLC_PARTS.CAP_10UF_0805} capacitance="10uF" footprint="0805" pcbX={-4} pcbY={12.4} />
    <resistor name="R_DBG_RST" {...SCH.R_DBG_RST} {...JLC_PARTS.RES_47K_0402} resistance="47kohm" footprint="0402" pcbX={-7.5} pcbY={14} />
    <capacitor name="C_DBG_RST" {...SCH.C_DBG_RST} {...JLC_PARTS.CAP_1NF_0402} capacitance="1nF" footprint="0402" pcbX={-9.5} pcbY={14} />
    <led name="LED_DBG_RED" {...SCH.LED_DBG_RED} {...JLC_PARTS.LED_RED_0603} color="red" footprint="0603" pcbX={8.5} pcbY={29} />
    <resistor name="R_DBG_RED" {...SCH.R_DBG_RED} {...JLC_PARTS.RES_470R_0603} resistance="470ohm" footprint="0603" pcbX={12.5} pcbY={29} />
    <led name="LED_DBG_GREEN" {...SCH.LED_DBG_GREEN} {...JLC_PARTS.LED_GREEN_0603} color="green" footprint="0603" pcbX={8.5} pcbY={26} />
    <resistor name="R_DBG_GREEN" {...SCH.R_DBG_GREEN} {...JLC_PARTS.RES_390R_0603} resistance="390ohm" footprint="0603" pcbX={12.5} pcbY={25.5} />
    <pinheader
      name="J_DBG_PROG"
      {...SCH.J_DBG_PROG}
      {...JLC_PARTS.HEADER_1X7_MALE}
      pinCount={7}
      gender="male"
      pitch="2.54mm"
      footprint="pinrow7_p2.54mm"
      pinLabels={["TEST", "TDO", "TDI", "TMS", "TCK", "RST", "GND"]}
      showSilkscreenPinLabels={true}
      pcbX={-21.5}
      pcbY={20}
      pcbRotation={270}
    />

    {/* Seven removable isolation links, arranged as the LaunchPad 2x7 block */}
    <TwoPinHeaderJumper name="J_ISO_SBW_TST" pcbX={-10.5} {...SCH.J_ISO_SBW_TST} />
    <TwoPinHeaderJumper name="J_ISO_SBW_RST" pcbX={-7} {...SCH.J_ISO_SBW_RST} />
    <TwoPinHeaderJumper name="J_ISO_UART_RX" pcbX={-3.5} {...SCH.J_ISO_UART_RX} />
    <TwoPinHeaderJumper name="J_ISO_UART_TX" pcbX={0} {...SCH.J_ISO_UART_TX} />
    <TwoPinHeaderJumper name="J_ISO_3V3" pcbX={3.5} {...SCH.J_ISO_3V3} />
    <TwoPinHeaderJumper name="J_ISO_5V" pcbX={7} {...SCH.J_ISO_5V} />
    <TwoPinHeaderJumper name="J_ISO_GND" pcbX={10.5} {...SCH.J_ISO_GND} />
    <silkscreentext text="TST RST RX TX 3V3 5V GND" fontSize="0.65mm" pcbX={0} pcbY={9.3} />

    {/* MSP430FR2433 target section */}
    <MSP430FR2433IRGER
      name="U_TARGET"
      {...SCH.U_TARGET}
      schWidth="6.5mm"
      schPinArrangement={{
        leftSide: [24, 7, 8, 9, 10, 3, 4, 5, 6, 21, 22, 11, 13, 15, 16, 17, 19],
        rightSide: [2, 12, 14, 20, 1, 18, 23, 25],
      }}
      pcbX={0}
      pcbY={-13}
      pcbRotation={0}
      pinAttributes={{
        DVCC: { requiresPower: true },
        GND1: { requiresGround: true },
        GND2: { requiresGround: true },
        GND_EP: { requiresGround: true },
      }}
    />
    <capacitor name="C_TARGET_DEC" {...SCH.C_TARGET_DEC} {...JLC_PARTS.CAP_100NF_0402} capacitance="100nF" maxDecouplingTraceLength="15mm" footprint="0402" pcbX={4.5} pcbY={-9.2} />
    <capacitor name="C_TARGET_BULK" {...SCH.C_TARGET_BULK} {...JLC_PARTS.CAP_10UF_0805} capacitance="10uF" maxDecouplingTraceLength="15mm" footprint="0805" pcbX={7.5} pcbY={-9.2} />
    <resistor name="R_TARGET_RST" {...SCH.R_TARGET_RST} {...JLC_PARTS.RES_47K_0402} resistance="47kohm" footprint="0402" pcbX={-6} pcbY={-8.5} />
    <capacitor name="C_TARGET_RST" {...SCH.C_TARGET_RST} {...JLC_PARTS.CAP_1NF_0402} capacitance="1nF" footprint="0402" pcbX={-8} pcbY={-8.5} />
    <TS342A2P_WZ name="SW_RESET" {...SCH.SW_RESET} pcbX={-14} pcbY={-5} />
    <TS342A2P_WZ name="SW1" {...SCH.SW1} pcbX={-13} pcbY={-20} />
    <TS342A2P_WZ name="SW2" {...SCH.SW2} pcbX={13} pcbY={-20} />

    <SC_32S32_768kHz20PPM12_5pF name="Y_TARGET" {...SCH.Y_TARGET} pcbX={-9} pcbY={-13} pcbRotation={90} />
    <resistor name="R_XIN" {...SCH.R_XIN} {...JLC_PARTS.RES_0R_0402} resistance="0ohm" footprint="0402" pcbX={-6} pcbY={-11.5} />
    <resistor name="R_XOUT" {...SCH.R_XOUT} {...JLC_PARTS.RES_0R_0402} resistance="0ohm" footprint="0402" pcbX={-6} pcbY={-14.5} />
    <capacitor name="C_XIN" {...SCH.C_XIN} {...JLC_PARTS.CAP_12PF_0402} capacitance="12pF" footprint="0402" pcbX={-8.5} pcbY={-9.5} />
    <capacitor name="C_XOUT" {...SCH.C_XOUT} {...JLC_PARTS.CAP_12PF_0402} capacitance="12pF" footprint="0402" pcbX={-8.5} pcbY={-16.5} />

    <resistor name="R_LED1_EN" {...SCH.R_LED1_EN} {...JLC_PARTS.RES_0R_0603} resistance="0ohm" footprint="0603" pcbX={-10} pcbY={-25} />
    <resistor name="R_LED1" {...SCH.R_LED1} {...JLC_PARTS.RES_470R_0603} resistance="470ohm" footprint="0603" pcbX={-6} pcbY={-25} />
    <led name="LED1" {...SCH.LED1} {...JLC_PARTS.LED_RED_0603} color="red" footprint="0603" pcbX={-2} pcbY={-25} />
    <resistor name="R_LED2_EN" {...SCH.R_LED2_EN} {...JLC_PARTS.RES_0R_0603} resistance="0ohm" footprint="0603" pcbX={2} pcbY={-25} />
    <resistor name="R_LED2" {...SCH.R_LED2} {...JLC_PARTS.RES_390R_0603} resistance="390ohm" footprint="0603" pcbX={6} pcbY={-25} />
    <led name="LED2" {...SCH.LED2} {...JLC_PARTS.LED_GREEN_0603} color="green" footprint="0603" pcbX={10} pcbY={-25} />

    {/* 20-pin BoosterPack-compatible headers */}
    <pinheader
      name="J1"
      {...SCH.J1}
      {...JLC_PARTS.HEADER_1X10_FEMALE}
      pinCount={10}
      gender="female"
      pitch="2.54mm"
      footprint="pinrow10_p2.54mm"
      pinLabels={["V3_3", "A0", "UART_RX", "UART_TX", "GPIO_A6", "GPIO_A7", "SPI_CLK", "GPIO_8", "I2C_SCL", "I2C_SDA"]}
      schPinArrangement={{ leftSide: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] }}
      showSilkscreenPinLabels={true}
      pcbX={-23}
      pcbY={-20}
      pcbRotation={90}
    />
    <pinheader
      name="J2"
      {...SCH.J2}
      {...JLC_PARTS.HEADER_1X10_FEMALE}
      pinCount={10}
      gender="female"
      pitch="2.54mm"
      footprint="pinrow10_p2.54mm"
      pinLabels={["GPIO_11", "SPI_CS0", "SPI_CS1", "SPI_MISO", "SPI_MOSI", "RST", "GPIO_17", "GPIO_18", "PWM", "GND"]}
      schPinArrangement={{ rightSide: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] }}
      showSilkscreenPinLabels={true}
      pcbX={23}
      pcbY={-20}
      pcbRotation={90}
    />

    {/* External power, optional supercapacitor, and bring-up test points */}
    <pinheader
      name="J_EXT_PWR"
      {...SCH.J_EXT_PWR}
      {...JLC_PARTS.HEADER_1X3_MALE}
      pinCount={3}
      gender="male"
      pitch="2.54mm"
      footprint="pinrow3_p2.54mm"
      pinLabels={["V5", "V3_3", "GND"]}
      showSilkscreenPinLabels={true}
      pcbX={-8}
      pcbY={-34}
    />
    <pinheader
      name="J_SUPERCAP"
      {...SCH.J_SUPERCAP}
      {...JLC_PARTS.HEADER_1X3_MALE}
      pinCount={3}
      gender="male"
      pitch="2.54mm"
      footprint="pinrow3_p2.54mm"
      pinLabels={["USE", "CAP", "CHARGE"]}
      showSilkscreenPinLabels={true}
      pcbX={7}
      pcbY={-34}
    />
    <resistor name="R_SUPERCAP" {...SCH.R_SUPERCAP} {...JLC_PARTS.RES_22R_0603} resistance="22ohm" footprint="0603" pcbX={3} pcbY={-30.5} />
    <capacitor
      name="C_SUPERCAP"
      {...SCH.C_SUPERCAP}
      capacitance="0.22F"
      manufacturerPartNumber="EEC-S0HD224H"
      doNotPlace={true}
      footprint={
        <footprint>
          <platedhole shape="circle" portHints={["pin1"]} pcbX="-1mm" pcbY="0mm" holeDiameter="0.8mm" outerDiameter="1.6mm" />
          <platedhole shape="circle" portHints={["pin2"]} pcbX="1mm" pcbY="0mm" holeDiameter="0.8mm" outerDiameter="1.6mm" />
          <silkscreencircle pcbX="0mm" pcbY="0mm" radius="3.5mm" />
        </footprint>
      }
      pcbX={14}
      pcbY={-31.5}
    />
    <testpoint name="TP_5V" {...SCH.TP_5V} footprintVariant="pad" padShape="circle" padDiameter="1.2mm" pcbX={-15} pcbY={-30} />
    <testpoint name="TP_3V3" {...SCH.TP_3V3} footprintVariant="pad" padShape="circle" padDiameter="1.2mm" pcbX={-12} pcbY={-30} />
    <testpoint name="TP_GND" {...SCH.TP_GND} footprintVariant="pad" padShape="circle" padDiameter="1.2mm" pcbX={-9} pcbY={-30} />
    <testpoint name="TP_RST" {...SCH.TP_RST} footprintVariant="pad" padShape="circle" padDiameter="1.2mm" pcbX={-6} pcbY={-30} />

    {/* USB and debugger power/data nets */}
    <trace from="J_USB.VBUS" to="net.VBUS_USB" thickness="0.3mm" />
    <trace from="J_USB.GND" to="net.GND" thickness="0.3mm" />
    <trace from="J_USB.SH1" to="net.USB_SHIELD" thickness="0.3mm" />
    <trace from="J_USB.SH2" to="net.USB_SHIELD" thickness="0.3mm" />
    <trace from="J_USB.SH3" to="net.USB_SHIELD" thickness="0.3mm" />
    <trace from="J_USB.SH4" to="net.USB_SHIELD" thickness="0.3mm" />
    <trace from="R_SHIELD.pin1" to="net.USB_SHIELD" />
    <trace from="R_SHIELD.pin2" to="net.GND" />
    <trace from="C_SHIELD.pin1" to="net.USB_SHIELD" />
    <trace from="C_SHIELD.pin2" to="net.GND" />
    <trace from="J_USB.D_NEG" to="U_ESD.DM_CONNECTOR" thickness="0.22mm" />
    <trace from="J_USB.D_POS" to="U_ESD.DP_CONNECTOR" thickness="0.22mm" />
    <trace from="U_ESD.DM_MCU" to="R_USB_DM.pin1" thickness="0.22mm" />
    <trace from="U_ESD.DP_MCU" to="R_USB_DP.pin1" thickness="0.22mm" />
    <trace from="U_ESD.VBUS" to="U_LDO.IN" thickness="0.3mm" />
    <trace from="U_ESD.GND" to="net.GND" />
    <trace from="R_USB_DM.pin2" to="U_DBG.USB_DM" thickness="0.22mm" />
    <trace from="R_USB_DP.pin2" to="U_DBG.USB_DP" thickness="0.22mm" />
    <trace from="U_DBG.PUR" to="R_USB_PUR.pin1" />
    <trace from="R_USB_PUR.pin2" to="net.EZ_3V3" />
    <trace from="U_DBG.VBUS" to="R_DBG_VBUS_LINK.pin1" thickness="0.3mm" />
    <trace from="R_DBG_VBUS_LINK.pin2" to="net.VBUS_USB" thickness="0.3mm" />
    <trace from="U_DBG.VUSB" to="C_DBG_VUSB.pin1" maxLength="3mm" />
    <trace from="C_DBG_VUSB.pin2" to="net.GND" />
    <trace from="U_DBG.V18" to="C_DBG_V18.pin1" maxLength="3mm" />
    <trace from="C_DBG_V18.pin2" to="net.GND" />

    <trace from="U_LDO.IN" to="net.VBUS_USB" thickness="0.3mm" />
    <trace from="U_LDO.EN" to="R_LDO_EN.pin1" />
    <trace from="R_LDO_EN.pin2" to="net.VBUS_USB" />
    <trace from="U_LDO.GND" to="net.GND" thickness="0.3mm" />
    <trace from="U_LDO.OUT" to="net.EZ_3V3" thickness="0.3mm" />
    <trace from="C_LDO_IN.pin1" to="net.VBUS_USB" thickness="0.3mm" />
    <trace from="C_LDO_IN.pin2" to="net.GND" />
    <trace from="C_LDO_OUT.pin1" to="net.EZ_3V3" thickness="0.3mm" />
    <trace from="C_LDO_OUT.pin2" to="net.GND" />
    <trace from="R_LED_PWR.pin1" to="net.EZ_3V3" />
    <trace from="R_LED_PWR.pin2" to="LED_PWR.anode" />
    <trace from="LED_PWR.cathode" to="net.GND" />

    {/* eZ-FET host MCU support */}
    <trace from="U_DBG.AVCC1" to="net.EZ_3V3" thickness="0.3mm" />
    <trace from="U_DBG.DVCC1" to="net.EZ_3V3" thickness="0.3mm" />
    <trace from="U_DBG.DVCC2" to="net.EZ_3V3" thickness="0.3mm" />
    <trace from="U_DBG.AVSS1" to="net.GND" />
    <trace from="U_DBG.DVSS1" to="net.GND" />
    <trace from="U_DBG.DVSS2" to="net.GND" />
    <trace from="U_DBG.AVSS2" to="net.GND" />
    <trace from="U_DBG.VSSU" to="net.GND" />
    <trace from="U_DBG.GND_EP" to="net.GND" thickness="0.3mm" />
    <trace from="U_DBG.VCORE" to="C_DBG_VCORE.pin1" maxLength="3mm" />
    <trace from="C_DBG_VCORE.pin2" to="net.GND" />
    <trace from="C_DBG_AVCC.pin1" to="net.EZ_3V3" />
    <trace from="C_DBG_AVCC.pin2" to="net.GND" />
    <trace from="C_DBG_DVCC1.pin1" to="net.EZ_3V3" />
    <trace from="C_DBG_DVCC1.pin2" to="net.GND" />
    <trace from="C_DBG_DVCC2.pin1" to="net.EZ_3V3" />
    <trace from="C_DBG_DVCC2.pin2" to="net.GND" />
    <trace from="C_DBG_BULK.pin1" to="net.EZ_3V3" thickness="0.3mm" />
    <trace from="C_DBG_BULK.pin2" to="net.GND" />
    <trace from="U_DBG.RST" to="net.DBG_RST" />
    <trace from="R_DBG_RST.pin1" to="net.DBG_RST" />
    <trace from="R_DBG_RST.pin2" to="net.EZ_3V3" />
    <trace from="C_DBG_RST.pin1" to="net.DBG_RST" />
    <trace from="C_DBG_RST.pin2" to="net.GND" />
    <trace from="Y_DBG.pin1" to="U_DBG.XT2OUT" />
    <trace from="Y_DBG.pin3" to="U_DBG.XT2IN" />
    <trace from="Y_DBG.pin2" to="net.GND" />
    <trace from="U_DBG.LED0" to="R_DBG_RED.pin1" />
    <trace from="R_DBG_RED.pin2" to="LED_DBG_RED.anode" />
    <trace from="LED_DBG_RED.cathode" to="net.GND" />
    <trace from="U_DBG.LED1" to="R_DBG_GREEN.pin1" />
    <trace from="R_DBG_GREEN.pin2" to="LED_DBG_GREEN.anode" />
    <trace from="LED_DBG_GREEN.cathode" to="net.GND" />
    <trace from="J_DBG_PROG.pin1" to="U_DBG.TEST" />
    <trace from="J_DBG_PROG.pin2" to="U_DBG.TDO" />
    <trace from="J_DBG_PROG.pin3" to="U_DBG.TDI" />
    <trace from="J_DBG_PROG.pin4" to="U_DBG.TMS" />
    <trace from="J_DBG_PROG.pin5" to="U_DBG.TCK" />
    <trace from="J_DBG_PROG.pin6" to="net.DBG_RST" />
    <trace from="J_DBG_PROG.pin7" to="net.GND" />

    {/* Isolation block: install all seven shunts for normal LaunchPad operation */}
    <trace from="U_DBG.TARGET_SBWTCK" to="J_ISO_SBW_TST.HOST" />
    <trace from="J_ISO_SBW_TST.TARGET" to="U_TARGET.TEST" />
    <trace from="U_DBG.TARGET_SBWTDIO" to="J_ISO_SBW_RST.HOST" />
    <trace from="J_ISO_SBW_RST.TARGET" to="net.TARGET_RST" />
    <trace from="U_DBG.UART_TXD" to="J_ISO_UART_RX.HOST" />
    <trace from="J_ISO_UART_RX.TARGET" to="U_TARGET.UCA0RXD" />
    <trace from="U_DBG.UART_RXD" to="J_ISO_UART_TX.HOST" />
    <trace from="J_ISO_UART_TX.TARGET" to="U_TARGET.UCA0TXD" />
    <trace from="J_ISO_3V3.HOST" to="net.EZ_3V3" thickness="0.3mm" />
    <trace from="J_ISO_3V3.TARGET" to="net.TARGET_3V3" thickness="0.3mm" />
    <trace from="J_ISO_5V.HOST" to="net.VBUS_USB" thickness="0.3mm" />
    <trace from="J_ISO_5V.TARGET" to="net.TARGET_5V" thickness="0.3mm" />
    <trace from="J_ISO_GND.HOST" to="net.GND" thickness="0.3mm" />
    <trace from="J_ISO_GND.TARGET" to="net.GND" thickness="0.3mm" />

    {/* Target MCU power, programming, UART, clock, buttons, and LEDs */}
    <trace from="U_TARGET.DVCC" to="net.TARGET_3V3" thickness="0.3mm" />
    <trace from="U_TARGET.GND1" to="net.GND" thickness="0.3mm" />
    <trace from="U_TARGET.GND2" to="net.GND" />
    <trace from="U_TARGET.GND_EP" to="net.GND" thickness="0.3mm" />
    <trace from="C_TARGET_DEC.pin1" to="net.TARGET_3V3" />
    <trace from="C_TARGET_DEC.pin2" to="net.GND" />
    <trace from="C_TARGET_BULK.pin1" to="net.TARGET_3V3" thickness="0.3mm" />
    <trace from="C_TARGET_BULK.pin2" to="net.GND" />
    <trace from="U_TARGET.RST" to="net.TARGET_RST" />
    <trace from="R_TARGET_RST.pin1" to="net.TARGET_RST" />
    <trace from="R_TARGET_RST.pin2" to="net.TARGET_3V3" />
    <trace from="C_TARGET_RST.pin1" to="net.TARGET_RST" />
    <trace from="C_TARGET_RST.pin2" to="net.GND" />
    <trace from="SW_RESET.pin1" to="net.TARGET_RST" />
    <trace from="SW_RESET.pin2" to="net.GND" />
    <trace from="U_TARGET.P2_3" to="SW1.pin1" schDisplayLabel="SW1 / GPIO18" />
    <trace from="SW1.pin2" to="net.GND" />
    <trace from="U_TARGET.P2_7" to="SW2.pin1" schDisplayLabel="SW2 / SPI_CS0" />
    <trace from="SW2.pin2" to="net.GND" />
    <trace from="U_TARGET.XIN" to="R_XIN.pin1" />
    <trace from="R_XIN.pin2" to="Y_TARGET.pin1" />
    <trace from="Y_TARGET.pin1" to="C_XIN.pin1" />
    <trace from="C_XIN.pin2" to="net.GND" />
    <trace from="U_TARGET.XOUT" to="R_XOUT.pin1" />
    <trace from="R_XOUT.pin2" to="Y_TARGET.pin2" />
    <trace from="Y_TARGET.pin2" to="C_XOUT.pin1" />
    <trace from="C_XOUT.pin2" to="net.GND" />
    <trace from="U_TARGET.P1_0" to="R_LED1_EN.pin1" schDisplayLabel="A0 / LED1" />
    <trace from="R_LED1_EN.pin2" to="R_LED1.pin1" />
    <trace from="R_LED1.pin2" to="LED1.anode" />
    <trace from="LED1.cathode" to="net.GND" />
    <trace from="U_TARGET.P1_1" to="R_LED2_EN.pin1" schDisplayLabel="A1 / LED2" />
    <trace from="R_LED2_EN.pin2" to="R_LED2.pin1" />
    <trace from="R_LED2.pin2" to="LED2.anode" />
    <trace from="LED2.cathode" to="net.GND" />

    {/* BoosterPack signal mapping */}
    <trace from="J1.pin1" to="net.TARGET_3V3" thickness="0.3mm" />
    <trace from="J1.pin2" to="U_TARGET.P1_0" schDisplayLabel="A0 / LED1" />
    <trace from="J1.pin3" to="U_TARGET.UCA0RXD" />
    <trace from="J1.pin4" to="U_TARGET.UCA0TXD" />
    <trace from="J1.pin5" to="U_TARGET.P1_6" />
    <trace from="J1.pin6" to="U_TARGET.P1_7" />
    <trace from="J1.pin7" to="U_TARGET.P2_4" />
    <trace from="J1.pin8" to="U_TARGET.P3_1" />
    <trace from="J1.pin9" to="U_TARGET.P1_3" />
    <trace from="J1.pin10" to="U_TARGET.P1_2" />
    <trace from="J2.pin1" to="U_TARGET.P3_2" />
    <trace from="J2.pin2" to="U_TARGET.P2_7" schDisplayLabel="SW2 / SPI_CS0" />
    <trace from="J2.pin3" to="U_TARGET.P3_0" />
    <trace from="J2.pin4" to="U_TARGET.P2_5" />
    <trace from="J2.pin5" to="U_TARGET.P2_6" />
    <trace from="J2.pin6" to="net.TARGET_RST" />
    <trace from="J2.pin7" to="U_TARGET.P2_2" />
    <trace from="J2.pin8" to="U_TARGET.P2_3" schDisplayLabel="SW1 / GPIO18" />
    <trace from="J2.pin9" to="U_TARGET.P1_1" schDisplayLabel="A1 / LED2" />
    <trace from="J2.pin10" to="net.GND" thickness="0.3mm" />

    {/* External power and optional supercapacitor */}
    <trace from="J_EXT_PWR.pin1" to="net.TARGET_5V" thickness="0.3mm" />
    <trace from="J_EXT_PWR.pin2" to="net.TARGET_3V3" thickness="0.3mm" />
    <trace from="J_EXT_PWR.pin3" to="net.GND" thickness="0.3mm" />
    <trace from="J_SUPERCAP.pin1" to="net.TARGET_3V3" thickness="0.3mm" />
    <trace from="J_SUPERCAP.pin2" to="C_SUPERCAP.pin1" thickness="0.3mm" />
    <trace from="J_SUPERCAP.pin3" to="R_SUPERCAP.pin1" thickness="0.3mm" />
    <trace from="R_SUPERCAP.pin2" to="net.TARGET_3V3" thickness="0.3mm" />
    <trace from="C_SUPERCAP.pin2" to="net.GND" thickness="0.3mm" />
    <trace from="TP_5V.pin1" to="net.TARGET_5V" />
    <trace from="TP_3V3.pin1" to="net.TARGET_3V3" />
    <trace from="TP_GND.pin1" to="net.GND" />
    <trace from="TP_RST.pin1" to="net.TARGET_RST" />

    {/* Continuous return planes on both copper layers */}
    <copperpour name="GND_INNER1" connectsTo="net.GND" layer="inner1" clearance="0.18mm" boardEdgeMargin="0.25mm" />
    <copperpour name="EZ3V3_INNER2" connectsTo="net.EZ_3V3" layer="inner2" clearance="0.18mm" boardEdgeMargin="0.25mm" />
  </board>
)