Source code for jitxexamples.jumpstart_kits.js4_fpga_lpddr4x.bundles

"""Port bundles for the Versal side of an LPDDR4X x32 interface.

The memory side is :py:class:`~jitxexamples.protocols.memory.lpddr4.LPDDR4`.
The Versal DDRMC drives one CKE per channel, where a dual-rank memory has one
per rank (see "Inferred from the boards" in :py:mod:`.pinout`), so the
controller side is
:py:class:`~jitxexamples.protocols.memory.lpddr4.LPDDR4SharedCKE` and the
design nets its one CKE to both memory CKE balls.
"""

from jitx.net import Port

from jitxexamples.protocols.memory.lpddr4 import LPDDR4SharedCKE


[docs] class VersalLPDDR4X(LPDDR4SharedCKE): """An x32 LPDDR4X interface of a Versal DDRMC: channels A (DQ0 to DQ15) and B (DQ16 to DQ31), and the memory reset.""" reset_n = Port() "Memory reset, active low"
[docs] class Slot0Bit(Port): """One DQ pin of byte slot 0. See :py:class:`.fpga.VP1002LPDDR4X`.""" p = Port()
[docs] class Slot1Bit(Port): """One DQ pin of byte slot 1.""" p = Port()
[docs] class Slot2Bit(Port): """One DQ pin of byte slot 2.""" p = Port()
[docs] class Slot3Bit(Port): """One DQ pin of byte slot 3.""" p = Port()
SLOT_BITS: tuple[type[Slot0Bit | Slot1Bit | Slot2Bit | Slot3Bit], ...] = ( Slot0Bit, Slot1Bit, Slot2Bit, Slot3Bit, ) "The DQ pin type of each byte slot, in :py:data:`.pinout.OPTIMUM_X32_FLIPPED` order."