Something I find strange I found when using the bitvis_vip_spi:
When handling multi-words (slv_arrays) the spi_bfm_pkg uses a for loop that cycles 0 to [data]'length.
When handling multi-words with the vvc the input gets normalized against the shared_vvc_cmd.data (or data_exp) that is defined in vvc_cmd_pkg as t_slv_array ([…] downto 0)([…] downto 0);
In other words, when using the vvc you need to order your array in a Most Significant Word downto Least Significant Word, and each word MSB downto LSB. The data that is sent is (chronological) LSW to MSW with each word MSB downto LSB.
So if you send (“1100”,“1010”,“0010”) you chronological receive (“0010”,“1010”,“1100”).
Is this a bug, oversight or feature? I found it unintuitive, but that could be my lack the experience and/or me being weird.