aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDag Lem <dag@nimrod.no>2023-02-05 11:01:37 +0100
committerDag Lem <dag@nimrod.no>2023-02-05 17:09:51 +0100
commit777c589e8576b3f8fbe6621efffb1224b1f372b7 (patch)
tree395401a8183c5da3772fe1986970456288a74199 /tests
parent26db5a11d3ab3657adb77f3a7d0cabbd19529033 (diff)
downloadyosys-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.sv20
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.