litedram_gen: Enable Read-Modify-Write support with ECC.

This commit is contained in:
Florent Kermarrec 2022-02-28 18:52:32 +01:00
parent 095180be6a
commit af94e8497a
1 changed files with 7 additions and 3 deletions

View File

@ -673,9 +673,9 @@ class LiteDRAMCore(SoCCore):
assert port.get("data_width", None) is not None assert port.get("data_width", None) is not None
ecc_port = self.sdram.crossbar.get_port() ecc_port = self.sdram.crossbar.get_port()
user_port = LiteDRAMNativePort( user_port = LiteDRAMNativePort(
mode = ecc_port.mode, mode = ecc_port.mode,
address_width = ecc_port.address_width, address_width = ecc_port.address_width,
data_width = port.get("data_width") data_width = port.get("data_width")
) )
ecc = LiteDRAMNativePortECC(user_port, ecc_port, with_error_injection=False) ecc = LiteDRAMNativePortECC(user_port, ecc_port, with_error_injection=False)
setattr(self.submodules, f"ecc_{name}", ecc) setattr(self.submodules, f"ecc_{name}", ecc)
@ -735,7 +735,11 @@ class LiteDRAMCore(SoCCore):
data_width = user_port.data_width, data_width = user_port.data_width,
address_width = user_port.address_width + log2_int(user_port.data_width//8), address_width = user_port.address_width + log2_int(user_port.data_width//8),
id_width = port["id_width"]) id_width = port["id_width"])
axi2native = LiteDRAMAXI2Native(axi_port, user_port) axi2native = LiteDRAMAXI2Native(
axi = axi_port,
port = user_port,
with_read_modify_write = port.get("ecc", False)
)
self.submodules += axi2native self.submodules += axi2native
platform.add_extension(get_axi_user_port_ios(name, platform.add_extension(get_axi_user_port_ios(name,
axi_port.address_width, axi_port.address_width,