Skip to content

fix( fix index for multi-dim register arrays

Lukasz Butkowski requested to merge fix_3d_idx into main

The code was wrong.

I also double-checked the order of indexes. Assume the definition a 2D register array in SystemRDL like this:

reg {
} multi_array[2][3] ;

Then systemrdl-compiler interprets the second range [3] as the one that iterates the most frequently [1]. desyrdl/ makes correct use of this. The VHDL signal also uses the order multi_array(idx_n,idx_m):

type t_addrmap_test_hectare_in is record
  multi_array : t_reg_multi_array_3d_in(0 to 2-1, 0 to 3-1);
end record;

This change fixes the VHDL generate block that instantiates the 2D register array. It was in accordance with this definition already, but had a bug.


Merge request reports