Memory Controller - 1.0 English

Versal ACAP Soft RLDRAM 3 Memory Controller LogiCORE IP Product Guide (PG354)

Document ID
PG354
Release Date
2021-11-03
Version
1.0 English

The Memory Controller (MC) enforces the RLDRAM 3 access requirements like the Row Cycle time (tRC) and Write to Read time (tWTR) while keeping the throughput as high as possible. The Memory Controller also interfaces with the PHY.

Commands are reordered in the command queue by the controller based on the Row Cycle time (tRC) of the commands. For example, a command whose tRC is met is scheduled before a command whose tRC is not met thereby improving throughput of the interface. Another command reorder module reorders the position of the write and read commands in a single user cycle. This feature is mostly useful for BL2. With BL2, four commands are issued in a single user clock cycle. For example, if the four commands are Write, Read, Write, and Read with the last command of the previous user clock as Write, then the new arrangement of commands will be Read, Read, Write, and Write.

The MC features a read command bypass mode which is supported when Data Mask (DM) is disabled by setting the top-level parameter DM_EN to 0. This feature improves throughput by bypassing a read command that follows a write command to the same address. In this scenario, the write data associated with the write command can be driven to the user_rd_data port thereby saving tWTR (WL + BL / 2) wait time and the read command execution time. The MC command execution sequence is different from the command request order in the user interface. Therefore, the read response is reordered to match the command request order at the user interface.

Auto-refresh commands are inserted into the command flow by the MC to meet the memory device refresh requirements. CMD_PER_CLK is a top-level parameter used to determine how many memory commands are provided to the MC per Versal ACAP logic clock cycle. The number of memory commands per Versal ACAP logic clock cycle depends on the burst length. For example, the CMD_PER_CLK is set to 1 for burst length = 8, CMD_PER_CLK is set to 2 for burst length = 4, and CMD_PER_CLK is set to 4 for burst length = 2.