0hmX/am3352-ddr-track-a-local-dfm-wip-20261007

Experimental RJ45-corrected board with isolated PG indication. 1005/1005 source joins pass; 15 expanded-guard physical errors, sourcing and qualification gates remain. Not fabrication-ready.

Version
0.0.14
License
unset
Stars
0

hdmi/HDMIInterface.tsx

import { savedRefdesStyle } from "../layout/SavedSilkscreen"
import parts from "./data/interface-components"
import selectedPlacement from "./data/placement-selected"
import { Hdmifootprint } from "./components/Hdmifootprint"
import { SeriesDampingArray } from "./components/SeriesDampingArray"
import { HdmiPowerRail } from "./power/PowerRail"
import { cadModelForFootprint } from "../models"

/** Selected V8 source bank and ESD pair order; full-board routing is in progress. */
export function HDMIInterface({ placement = selectedPlacement, components = parts }: {
  placement?: Record<string, any>
  components?: typeof parts
} = {}) {
  return <>
    {components.map((p: any) => {
      if (!placement[p.name]) throw new Error(`Missing HDMI placement: ${p.name}`)
      if (p.kind === "resistor_array") return <SeriesDampingArray key={p.name}
        name={p.name} connections={p.connections} footprintKey={p.footprintKey}
        manufacturerPartNumber={p.mpn} {...placement[p.name]} />
      const props = {
        name: p.name, manufacturerPartNumber: p.mpn, ...placement[p.name], pcbStyle: savedRefdesStyle(p.name),
        cadModel: cadModelForFootprint(p.footprintKey),
        connections: Object.fromEntries(Object.entries(p.connections).map(([pin, net]) => [`pin${pin}`, `net.${net}`])),
      }
      const footprint = p.footprintKey ? <Hdmifootprint footprintKey={p.footprintKey} /> : p.footprint
      if (p.kind === "resistor") return <resistor key={p.name} {...props} resistance={p.value} footprint={footprint} />
      if (p.kind === "capacitor") return <capacitor key={p.name} {...props} capacitance={p.value} footprint={footprint} />
      return <chip key={p.name} {...props} footprint={footprint}
        pinLabels={Object.fromEntries(Object.entries(p.pinLabels).map(([pin, label]) => [`pin${pin}`, [pin, label]]))}
        noConnect={p.noConnect.map((pin: string) => `pin${pin}`)} />
    })}
    <HdmiPowerRail placement={placement} />
  </>
}

export default HDMIInterface