aboutsummaryrefslogtreecommitdiffstats
path: root/tests/various/struct_access.sv
diff options
context:
space:
mode:
authorKamil Rakoczy <krakoczy@antmicro.com>2022-02-14 14:34:20 +0100
committerGitHub <noreply@github.com>2022-02-14 14:34:20 +0100
commit68c67c40ec75b192f4f1be9711afe0df8973e797 (patch)
treef67834903e40ae61b39a04555ff1b96763c59cd0 /tests/various/struct_access.sv
parent59738c09beb3ba43a693b77eb4545122a99df7d2 (diff)
downloadyosys-68c67c40ec75b192f4f1be9711afe0df8973e797.tar.gz
yosys-68c67c40ec75b192f4f1be9711afe0df8973e797.tar.bz2
yosys-68c67c40ec75b192f4f1be9711afe0df8973e797.zip
Fix access to whole sub-structs (#3086)
* Add support for accessing whole struct * Update tests Signed-off-by: Kamil Rakoczy <krakoczy@antmicro.com>
Diffstat (limited to 'tests/various/struct_access.sv')
-rw-r--r--tests/various/struct_access.sv43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/various/struct_access.sv b/tests/various/struct_access.sv
new file mode 100644
index 000000000..d41a7114f
--- /dev/null
+++ b/tests/various/struct_access.sv
@@ -0,0 +1,43 @@
+module dut();
+typedef struct packed {
+ logic a;
+ logic b;
+} sub_sub_struct_t;
+
+typedef struct packed {
+ sub_sub_struct_t c;
+} sub_struct_t;
+
+typedef struct packed {
+ sub_struct_t d;
+ sub_struct_t e;
+} struct_t;
+
+parameter struct_t P = 4'b1100;
+
+localparam sub_struct_t f = P.d;
+localparam sub_struct_t g = P.e;
+localparam sub_sub_struct_t h = f.c;
+localparam logic i = P.d.c.a;
+localparam logic j = P.d.c.b;
+localparam x = P.e;
+localparam y = x.c;
+localparam z = y.a;
+localparam q = P.d;
+localparam n = q.c.a;
+
+always_comb begin
+ assert(P == 4'b1100);
+ assert(f == 2'b11);
+ assert(g == 2'b00);
+ assert(h == 2'b11);
+ assert(i == 1'b1);
+ assert(j == 1'b1);
+ assert(x == 2'b00);
+ assert(y == 2'b00);
+ assert(x.c == 2'b00);
+ assert(y.b == 1'b0);
+ assert(n == 1'b1);
+ assert(z == 1'b0);
+end
+endmodule