Skip to content

fix(addr): always generate 32 bit wide SystemRDL memories

Lukasz Butkowski requested to merge ibus_mem into main

When fwk generates the equivalent of an IBUS address map definition in SystemRDL, a VII_AREA entry becomes an "external mem" instance.

When the size per element is 16 or less then too little memory range is reserved for it, and another node in the address tree can overlap with it. This is because the VHDL implementation addresses each element as 32 bits, so the address increments by 4 for each element. The SystemRDL definition should declare a memory with 32 bits per entry, while still having 16 bit data.

The problem is that the memwidth property cannot be changed to always be 32 without breaking the generated mapfiles, which rely on that property.

With this change, a virtual register is added to the memory. It has a single field with the correct data width. This shows up as a new line in the mapfile as e.g.:

PILEUP.1.AREA_COEF_TABLE.DATA

Issue: #10814

Merge request reports

Loading