I have a question about signed property with multiple packed dimensions which is defined in stages with typedef.
Basically,
logic signed [1:0][2:0] foo;
* foo[0] is not signed (signed is meaningless if you expect signed element) because all entire packed array is signed but each element is not signed.
But,
typedef logic signed [1:0] foo_t;
foo_t [2:0] foo;
* foo[0] is signed. What a strange..
Q1> What happens? Why is it signed??
Q2> Is it same declaration with logic signed [1:0][2:0] foo; // ??
Q3> LRM says that [1:0] index varies most rapidly, which is not my expectation. logic signed [2:0][1:0] foo; //??