shibosoftwaredev/f1c100s-linux-nema8-stepper-controller

Restores component part numbers and CAD models, removes test-point 3D bodies, and validates that solder paste exists only on top-side SMT pads without altering copper or DRC.

Version
0.3.5
License
unset
Stars
0

electrical-corrections.tsx

import { footprints } from "./footprints"

const wire = (name: string, from: string, to: string, thickness = 0.15) =>
  <trace name={name} from={from} to={to} thickness={thickness} />

const r0402 = (name: string, value: string, lcsc: string, x: number, y: number, schX = x, schY = y, schSheetName?: string) =>
  <resistor name={name} resistance={value} footprint="0402"
    supplierPartNumbers={{jlcpcb:[lcsc]}} pcbX={x} pcbY={y}
    schX={schX} schY={schY} schSheetName={schSheetName} />

const c0402 = (name: string, value: string, lcsc: string, x: number, y: number, schX = x, schY = y, schSheetName?: string) =>
  <capacitor name={name} capacitance={value} maxVoltageRating={50} footprint="0402"
    supplierPartNumbers={{jlcpcb:[lcsc]}} pcbX={x} pcbY={y}
    schX={schX} schY={schY} schSheetName={schSheetName} />

/**
 * Corrections deliberately render after the frozen carrier. This keeps all
 * established source/PCB identifiers stable while adding the protection and
 * Ethernet networks found during the electrical sign-off review.
 */
export function ElectricalCorrections() {
  return <group name="ELECTRICAL_CORRECTIONS" pcbX={0} pcbY={0} schX={0} schY={0}>
    {/* HUSB238A-controlled 30 V high-side switch. AO4407A pins 1-3 are Source,
        pin 4 Gate and pins 5-8 Drain. The internal leadframe connections are
        declared so all package pins participate in the high-current net. */}
    <chip name="Q_VBUS" manufacturerPartNumber="AO4407A"
      supplierPartNumbers={{jlcpcb:["C3011194"]}} footprint={footprints.so8}
      pinLabels={{pin1:"S",pin2:"S2",pin3:"S3",pin4:"G",pin5:"D",pin6:"D2",pin7:"D3",pin8:"D4"}}
      internallyConnectedPins={[["pin1","pin2","pin3"],["pin5","pin6","pin7","pin8"]]}
      pcbX={15} pcbY={22.5} schX={10} schY={9} schSheetName="pd_power" />
    {wire("VBUS_SWITCH_GATE", ".Q_VBUS > .pin4", ".U_PD > .GATE")}
    {wire("VBUS_SWITCH_OUT", ".Q_VBUS > .pin5", "net.VBUS_PD", 0.8)}
    {wire("VBUS_SOURCE_BRIDGE_12", ".Q_VBUS > .pin1", ".Q_VBUS > .pin2", 0.8)}
    {wire("VBUS_SOURCE_BRIDGE_23", ".Q_VBUS > .pin2", ".Q_VBUS > .pin3", 0.8)}
    {wire("VBUS_DRAIN_BRIDGE_56", ".Q_VBUS > .pin5", ".Q_VBUS > .pin6", 0.8)}
    {wire("VBUS_DRAIN_BRIDGE_67", ".Q_VBUS > .pin6", ".Q_VBUS > .pin7", 0.8)}
    {wire("VBUS_DRAIN_BRIDGE_78", ".Q_VBUS > .pin7", ".Q_VBUS > .pin8", 0.8)}

    {/* W5500 / integrated-magnetics termination from the official WIZnet
        reference: 49.9 ohm TX pullups, AC-coupled RX and filtered center taps. */}
    <net name="ETH_RX_BIAS" nominalTraceWidth={0.2} />
    {c0402("C_ETH_RXN_AC", "6.8nF", "C1590", -16.7, -23, 17, -5, "ethernet")}
    {c0402("C_ETH_RXP_AC", "6.8nF", "C1590", -16.7, -25, 17, -2, "ethernet")}
    {r0402("R_ETH_TCT", "10", "C25077", -17, -15, 17, 1, "ethernet")}
    {c0402("C_ETH_TCT", "22nF", "C1532", -17, -17, 17, 4, "ethernet")}
    {c0402("C_ETH_RCT", "10nF", "C15195", -10, -14, 17, 7, "ethernet")}

    {wire("ETH_TXN_TERM", ".R_ETH_TXN > .pin2", ".U_ETH > .pin4")}
    {wire("ETH_TXP_TERM", ".R_ETH_TXP > .pin2", ".U_ETH > .pin4")}
    {wire("ETH_RXN_TERM_IN", ".U_ETH > .RXN", ".R_ETH_RXN > .pin1", 0.2)}
    {wire("ETH_RXN_TERM_BIAS", ".R_ETH_RXN > .pin2", ".J_ETH > .pin5", 0.2)}
    {wire("ETH_RXP_TERM_IN", ".U_ETH > .RXP", ".R_ETH_RXP > .pin1", 0.2)}
    {wire("ETH_RXP_TERM_BIAS", ".R_ETH_RXP > .pin2", ".J_ETH > .pin5", 0.2)}
    {wire("ETH_TCT_FEED", ".R_ETH_TCT > .pin2", ".U_ETH > .pin4", 0.3)}
    {wire("ETH_TCT_DECOUPLE", ".C_ETH_TCT > .pin1", ".J_ETH > .pin4", 0.2)}
    {wire("ETH_TCT_DECOUPLE_GND", ".C_ETH_TCT > .pin2", ".U_ETH > .pin3", 0.2)}
    {wire("ETH_RCT_DECOUPLE", ".C_ETH_RCT > .pin1", ".J_ETH > .pin5", 0.2)}
    {wire("ETH_RCT_DECOUPLE_GND", ".C_ETH_RCT > .pin2", ".U_ETH > .pin3", 0.2)}
  </group>
}