0hmX/am62l-lpddr4-clean
This code defines the hardware connections and routing logic for a DDR memory interface, specifying physical signal mappings between the system-on-chip (SoC) and DDR memory components, including connections for data, address, clock, reset, and power/ground balls.
- Version
- 1.0.0
- License
- unset
- Stars
- 0
ddr-connections.ts
export type DdrBusName =
| "DDR_BYTE0"
| "DDR_BYTE1"
| "DDR_ADDR_CTRL"
| "DDR_CLOCK"
| "DDR_DQS0"
| "DDR_DQS1"
| "DDR_RESET"
export interface DdrConnection {
bus: DdrBusName
memorySignal: string
socSignal: string
trace: string
}
const byteConnections = Array.from({ length: 16 }, (_, bit) => ({
bus: bit < 8 ? ("DDR_BYTE0" as const) : ("DDR_BYTE1" as const),
memorySignal: `DQ${bit}`,
socSignal: `DDR0_DQ${bit}`,
trace: `DQ${bit}`,
}))
const fixedConnections = [
["DDR_ADDR_CTRL", "CA0", "DDR0_A0"],
["DDR_ADDR_CTRL", "CA1", "DDR0_A1"],
["DDR_ADDR_CTRL", "CA2", "DDR0_A2"],
["DDR_ADDR_CTRL", "CA3", "DDR0_A3"],
["DDR_ADDR_CTRL", "CA4", "DDR0_A4"],
["DDR_ADDR_CTRL", "CA5", "DDR0_A5"],
["DDR_ADDR_CTRL", "CS", "DDR0_CS0_n"],
["DDR_ADDR_CTRL", "CKE", "DDR0_CKE0"],
["DDR_CLOCK", "CK_t", "DDR0_CK0"],
["DDR_CLOCK", "CK_c", "DDR0_CK0_n"],
["DDR_DQS0", "DQS0_t", "DDR0_DQS0"],
["DDR_DQS0", "DQS0_c", "DDR0_DQS0_n"],
["DDR_DQS1", "DQS1_t", "DDR0_DQS1"],
["DDR_DQS1", "DQS1_c", "DDR0_DQS1_n"],
["DDR_RESET", "RESET_n", "DDR0_RESET0_n"],
] as const
export const DDR_CONNECTIONS: readonly DdrConnection[] = [
...byteConnections,
...fixedConnections.map(([bus, memorySignal, socSignal]) => ({
bus,
memorySignal,
socSignal,
trace: memorySignal,
})),
]
export const tracesFor = (bus: DdrBusName) =>
DDR_CONNECTIONS.filter((connection) => connection.bus === bus).map(
(connection) => connection.trace,
)