diff options
author | Dag Lem <dag@nimrod.no> | 2023-02-05 11:01:37 +0100 |
---|---|---|
committer | Dag Lem <dag@nimrod.no> | 2023-02-05 17:09:51 +0100 |
commit | 777c589e8576b3f8fbe6621efffb1224b1f372b7 (patch) | |
tree | 395401a8183c5da3772fe1986970456288a74199 /tests | |
parent | 26db5a11d3ab3657adb77f3a7d0cabbd19529033 (diff) | |
download | yosys-777c589e8576b3f8fbe6621efffb1224b1f372b7.tar.gz yosys-777c589e8576b3f8fbe6621efffb1224b1f372b7.tar.bz2 yosys-777c589e8576b3f8fbe6621efffb1224b1f372b7.zip |
Handle range offsets in packed arrays within packed structs
This brings the metadata for packed arrays in packed structs
in line with the metadata for unpacked arrays, and correctly
handles the case when both lsb and msb in an address range are
non-zero.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/svtypes/struct_array.sv | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/svtypes/struct_array.sv b/tests/svtypes/struct_array.sv index 739f202ab..a0b84640d 100644 --- a/tests/svtypes/struct_array.sv +++ b/tests/svtypes/struct_array.sv @@ -141,6 +141,26 @@ module top; always_comb assert(s3_llb==80'hFC00_4200_0012_3400_FFFC); + struct packed { + bit [-10:-3] [-2:-1] [5:2] a; + bit [0:15] b; // filler for non-zero offset + } s3_off; + + initial begin + s3_off = '0; + + s3_off.a[-5:-4] = 16'h1234; + s3_off.a[-8] = 8'h42; + + s3_off.a[-10] = '1; + s3_off.a[-10][-1][3:0] = '0; + + s3_off.b = '1; + s3_off.b[14:15] = '0; + end + + always_comb assert(s3_off==80'hFC00_4200_0012_3400_FFFC); + `ifndef VERIFIC // Note that the tests below for unpacked arrays in structs rely on the // fact that they are actually packed in Yosys. |