In reply to manjutumn:
For what it’s worth - I’ve ended up writing very low level (parameterized) Matrix transpose functions and modules to ease these sorts of operations.
i.e.
bit [ ROWS - 1 : 0 ][ COLS - 1 : 0 ][ WORDSIZE - 1 : 0] matrix_a;
bit [ COLS - 1 : 0 ][ ROWS - 1 : 0 ][ WORDSIZE - 1 : 0 ] matrix_a_transposed;
assign matrix_a_transposed = matrix_transpose( matrix_a );
(Actual contents of “matrix_transpose” left out for brevity - as I said it could be a function or even a module instance.)
I’m wondering if there’s better ways to do these sorts of things in the language…