ShiboSoftwareDev/am625sip-linux-board

This code defines the physical footprint and pin layout for an AM625 System-in-Package (SIP) component, detailing pad positions, pin labels, and package outline for hardware integration.

Version
1.0.24
License
unset
Stars
0

subcircuits/usb-c-device.tsx

import { Fragment } from "react"
import { TYPE_C_31_M_12 } from "../imports/TYPE_C_31_M_12"

const SIGNAL_LAYERS = ["top", "inner1", "inner2", "bottom"] as const

const BoundaryPad = ({
  name,
  pcbY,
  plated = false,
}: {
  name: string
  pcbY: number
  plated?: boolean
}) => (
  <chip
    name={name}
    pcbX={-8}
    pcbY={pcbY}
    noSchematicRepresentation
    footprint={
      <footprint>
        {plated ? (
          <platedhole
            portHints={["pin1"]}
            shape="circle"
            holeDiameter="0.3mm"
            outerDiameter="0.8mm"
          />
        ) : (
          <smtpad
            portHints={["pin1"]}
            shape="rect"
            width="0.3mm"
            height="0.3mm"
          />
        )}
      </footprint>
    }
  />
)

export const UsbCDeviceSubcircuit = () => (
  <subcircuit
    name="USB_C_DEVICE"
    autorouter="default"
    exposedNets={["GND"]}
    defaultTraceWidth="0.08128mm"
    minTraceWidth="0.08128mm"
    minTraceToPadEdgeClearance="0.05mm"
    minPadEdgeToPadEdgeClearance="0.08128mm"
    minViaEdgeToPadEdgeClearance="0.08128mm"
    minViaHoleEdgeToViaHoleEdgeClearance="0.1016mm"
    minViaHoleDiameter="0.1mm"
    minViaPadDiameter="0.24mm"
  >
    <autoroutingphase
      name="USB_C_FLIP_TIES"
      phaseIndex={0}
      autorouter="default"
    />
    <autoroutingphase
      name="USB_C_DATA_ENTRY"
      phaseIndex={0.1}
      autorouter="default"
    />
    <autoroutingphase name="USB_C_CC" phaseIndex={1} autorouter="default" />
    <autoroutingphase
      name="USB_C_VBUS_ROUTE"
      phaseIndex={2}
      autorouter="default"
    />
    <autoroutingphase
      name="USB_C_GROUND_DROPS"
      phaseIndex={3}
      autorouter="fanout"
      fanoutRoutingLayers={[...SIGNAL_LAYERS]}
      fanoutPourNetMap={{ inner1: ["GND"] }}
    />

    <net name="GND" routingPhaseIndex={3} />

    <TYPE_C_31_M_12 name="J5" pcbX={2} pcbY={0} pcbRotation={90} />
    <resistor
      name="R24"
      resistance="5.1k"
      footprint="0402"
      supplierPartNumbers={{ jlcpcb: ["C25905"] }}
      pcbX={-3}
      pcbY={3.1}
      pcbRotation={90}
    />
    <resistor
      name="R25"
      resistance="5.1k"
      footprint="0402"
      supplierPartNumbers={{ jlcpcb: ["C25905"] }}
      pcbX={-3}
      pcbY={-3.1}
      pcbRotation={90}
    />

    <BoundaryPad name="X_DP" pcbY={0.75} />
    <BoundaryPad name="X_DM" pcbY={-0.75} />
    <BoundaryPad name="X_VBUS" pcbY={3.5} plated />
    <BoundaryPad name="X_GND" pcbY={-4.5} plated />

    <bus
      name="USB_C_DP_FLIP_TIE_BUS"
      connections={["USB_C_DP_FLIP_TIE"]}
      routingPhaseIndex={0}
      preferredLayer="bottom"
      pcbAllowedLayers={["bottom"]}
    />
    <bus
      name="USB_C_DM_FLIP_TIE_BUS"
      connections={["USB_C_DM_FLIP_TIE"]}
      routingPhaseIndex={0}
      preferredLayer="inner1"
      pcbAllowedLayers={["inner1"]}
    />
    <trace
      name="USB_C_DP_FLIP_TIE"
      from=".J5 > .A6"
      to=".J5 > .B6"
      width="0.15mm"
      routingPhaseIndex={0}
    />
    <trace
      name="USB_C_DM_FLIP_TIE"
      from=".J5 > .A7"
      to=".J5 > .B7"
      width="0.15mm"
      routingPhaseIndex={0}
    />
    <trace
      name="USB_C_DP_ENTRY"
      from=".X_DP > .pin1"
      to=".J5 > .B6"
      width="0.15mm"
      routingPhaseIndex={0.1}
    />
    <trace
      name="USB_C_DM_ENTRY"
      from=".X_DM > .pin1"
      to=".J5 > .B7"
      width="0.15mm"
      routingPhaseIndex={0.1}
    />
    <bus
      name="USB_C_DATA_PAIR"
      connections={["USB_C_DP_ENTRY", "USB_C_DM_ENTRY"]}
      routingPhaseIndex={0.1}
      maxLengthSkew="0.2mm"
      targetImpedance="45ohm"
      pcbTraceWidth="0.15mm"
      preferredLayers={["inner2"]}
    />

    <trace
      name="USB_C_CC1"
      from=".J5 > .A5"
      to=".R24 > .pin1"
      routingPhaseIndex={1}
    />
    <trace
      name="USB_C_CC2"
      from=".J5 > .B5"
      to=".R25 > .pin1"
      routingPhaseIndex={1}
    />
    <trace
      name="USB_C_VBUS"
      path={[".X_VBUS > .pin1", ".J5 > .A4B9", ".J5 > .B4A9"]}
      width="0.3mm"
      routingPhaseIndex={2}
    />

    {[
      ".X_GND > .pin1",
      ".R24 > .pin2",
      ".R25 > .pin2",
      ".J5 > .A1B12",
      ".J5 > .B1A12",
      ".J5 > .EH1",
      ".J5 > .EH2",
      ".J5 > .EH3",
      ".J5 > .EH4",
    ].map((from, index) => (
      <Fragment key={from}>
        <trace
          name={`USB_C_GROUND_${index}`}
          from={from}
          to="net.GND"
          width="0.3mm"
          routingPhaseIndex={3}
        />
      </Fragment>
    ))}
  </subcircuit>
)