aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorclairexen <claire@symbioticeda.com>2020-09-17 18:21:53 +0200
committerGitHub <noreply@github.com>2020-09-17 18:21:53 +0200
commit9e937961dc026751f8961dfff12aa50411750070 (patch)
tree4130d805accae2d2505ae0e626082ce7f2c1c6f0
parent859e52af59e75689f7b0615899bc3356ba5a7ca1 (diff)
parentdaee2d967f5785c83123a1afa5b8bdcddf3da1d8 (diff)
downloadyosys-9e937961dc026751f8961dfff12aa50411750070.tar.gz
yosys-9e937961dc026751f8961dfff12aa50411750070.tar.bz2
yosys-9e937961dc026751f8961dfff12aa50411750070.zip
Merge pull request #2330 from antmicro/arrays-fix-multirange-access
Fix unsupported subarray access detection
-rw-r--r--frontends/ast/simplify.cc2
-rw-r--r--tests/svtypes/multirange_subarray_access.ys12
2 files changed, 13 insertions, 1 deletions
diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc
index 0ba2ab6ac..153a42e19 100644
--- a/frontends/ast/simplify.cc
+++ b/frontends/ast/simplify.cc
@@ -1523,7 +1523,7 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage,
for (int i = 0; 2*i < GetSize(id2ast->multirange_dimensions); i++)
{
- if (GetSize(children[0]->children) < i)
+ if (GetSize(children[0]->children) <= i)
log_file_error(filename, location.first_line, "Insufficient number of array indices for %s.\n", log_id(str));
AstNode *new_index_expr = children[0]->children[i]->children.at(0)->clone();
diff --git a/tests/svtypes/multirange_subarray_access.ys b/tests/svtypes/multirange_subarray_access.ys
new file mode 100644
index 000000000..de57d1423
--- /dev/null
+++ b/tests/svtypes/multirange_subarray_access.ys
@@ -0,0 +1,12 @@
+logger -expect error "Insufficient number of array indices for a." 1
+read_verilog -sv <<EOT
+module foo;
+logic a [6:0][4:0][1:0];
+logic b [1:0];
+
+assign a[0][0][0] = 1'b0;
+assign a[0][0][1] = 1'b1;
+assign b = a[0][0];
+
+endmodule
+EOT