diff options
author | Dag Lem <dag@nimrod.no> | 2022-11-23 16:31:08 +0100 |
---|---|---|
committer | Dag Lem <dag@nimrod.no> | 2022-11-23 16:31:08 +0100 |
commit | ddb12148e74ba898dcb3bc729db691090e1524a2 (patch) | |
tree | 2fb0db7359437dabfb9a5d2040f3458f04d613aa /tests | |
parent | bab88630c28b43851162772c2ce35666357d8933 (diff) | |
download | yosys-ddb12148e74ba898dcb3bc729db691090e1524a2.tar.gz yosys-ddb12148e74ba898dcb3bc729db691090e1524a2.tar.bz2 yosys-ddb12148e74ba898dcb3bc729db691090e1524a2.zip |
Support for swapped ranges in second array dimension
Diffstat (limited to 'tests')
-rw-r--r-- | tests/svtypes/struct_array.sv | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/svtypes/struct_array.sv b/tests/svtypes/struct_array.sv index d33d18da2..e7d09b7c3 100644 --- a/tests/svtypes/struct_array.sv +++ b/tests/svtypes/struct_array.sv @@ -59,6 +59,27 @@ module top; always_comb assert(s3==80'hFC00_4200_0012_3400_FFFC); + // Same as s3, but with little endian bit addressing + struct packed { + bit [0:7] [0:7] a; // 8 element packed array of bytes + bit [0:15] b; // filler for non-zero offset + } s3_b; + + initial begin + s3_b = '0; + + s3_b.a[5:6] = 16'h1234; + s3_b.a[2] = 8'h42; + + s3_b.a[0] = '1; + s3_b.a[0][6:7] = '0; + + s3_b.b = '1; + s3_b.b[14:15] = '0; + end + + always_comb assert(s3_b==80'hFC00_4200_0012_3400_FFFC); + // Note that the tests below for unpacked arrays in structs rely on the // fact that they are actually packed in Yosys. @@ -104,6 +125,27 @@ module top; always_comb assert(s5==80'hFC00_4200_0012_3400_FFFC); + // Same as s5, but with little endian bit addressing + struct packed { + bit [0:7] a [0:7]; // 8 element unpacked array of bytes + bit [0:15] b; // filler for non-zero offset + } s5_b; + + initial begin + s5_b = '0; + + s5_b.a[5:6] = 16'h1234; + s5_b.a[2] = 8'h42; + + s5_b.a[0] = '1; + s5_b.a[0][6:7] = '0; + + s5_b.b = '1; + s5_b.b[14:15] = '0; + end + + always_comb assert(s5_b==80'hFC00_4200_0012_3400_FFFC); + // Same as s5, but using C-type unpacked array syntax struct packed { bit [7:0] a [8]; // 8 element unpacked array of bytes |