prism_u280_top¶
prism_u280_top places prism_collective_core on an Alveo U280 with one 100G port and no host interface. It reuses two modules of the OpenNIC shell as they are, the CMAC subsystem and the packet adapter, and supplies what the shell otherwise takes from its PCIe side: clocks, reset and the register writes that enable the MAC.
QSFP28 port 0 <-> cmac_subsystem <-> packet_adapter <-> prism_collective_core
(MAC clock) (clock crossing) (250 MHz)
Contracts¶
- Clocks:
prism_u280_clocksderives the 250 MHz core clock and the 125 MHz register clock from the 100 MHz board oscillator with one MMCM, so the two are phase aligned, and releases the power-on reset after the MMCM locks. - MAC bring-up:
prism_cmac_bringupresets the CMAC subsystem and writes its registers in the order of the OpenNIC driver: RS-FEC (when built withRS_FEC=1), receiver, and the transmitter once the receiver reports alignment. It keeps polling the receiver and falls back to remote fault indication when alignment is lost. - Frames: the adapter drops frames not addressed to its port and gives the core whole frames at 250 MHz; the core's frames leave with their length in bytes.
- Addresses: port 0 answers at
LOCAL_MAC_BASE(02:50:52:49:53:00) and accepts only operations whose context namesMANAGER_MAC(02:50:52:49:53:ff) as their manager.
Contract behavior¶
- The core is built with one port, Kulisch accumulation at 280 bits, at most two original terms per element and four exact banks; FP32 arrival accumulation is not included.
- A frame that arrives before the link is up is lost; nothing in the design waits for the link.
hbm_cattripis driven low, as every U280 design must.- Without
__synthesis__the CMAC subsystem has no transceivers: its frames enter and leave through stream ports in the MAC clock, which the board simulation drives.