aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2014-08-05 08:35:51 +0200
committerClifford Wolf <clifford@clifford.at>2014-08-05 08:35:51 +0200
commit0129d41efad623ee95878a673c1c1190261ba3ef (patch)
tree42037ffccc4158a8753db177ee3041c51c136601
parent0bb694221832f250977437f29365bc5e17c4cd09 (diff)
downloadyosys-0129d41efad623ee95878a673c1c1190261ba3ef.tar.gz
yosys-0129d41efad623ee95878a673c1c1190261ba3ef.tar.bz2
yosys-0129d41efad623ee95878a673c1c1190261ba3ef.zip
Fixed AST handling of variables declared inside a functions main block
-rw-r--r--frontends/ast/simplify.cc6
-rw-r--r--tests/simple/task_func.v13
2 files changed, 16 insertions, 3 deletions
diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc
index 694f1d4d8..20edc1739 100644
--- a/frontends/ast/simplify.cc
+++ b/frontends/ast/simplify.cc
@@ -1460,7 +1460,6 @@ skip_dynamic_range_lvalue_expansion:;
}
for (auto child : decl->children)
- {
if (child->type == AST_WIRE)
{
AstNode *wire = child->clone();
@@ -1488,7 +1487,9 @@ skip_dynamic_range_lvalue_expansion:;
}
}
}
- else
+
+ for (auto child : decl->children)
+ if (child->type != AST_WIRE)
{
AstNode *stmt = child->clone();
stmt->replace_ids(replace_rules);
@@ -1500,7 +1501,6 @@ skip_dynamic_range_lvalue_expansion:;
break;
}
}
- }
replace_fcall_with_id:
if (type == AST_FCALL) {
diff --git a/tests/simple/task_func.v b/tests/simple/task_func.v
index 8dbc90c56..51e31015f 100644
--- a/tests/simple/task_func.v
+++ b/tests/simple/task_func.v
@@ -33,3 +33,16 @@ end
endmodule
+
+module task_func_test02( input [7:0] din_a, input [7:0] din_b, output [7:0] dout_a);
+ assign dout_a = test(din_a,din_b);
+ function [7:0] test;
+ input [7:0] a;
+ input [7:0] b;
+ begin : TEST
+ integer i;
+ for (i = 0; i <= 7; i = i + 1)
+ test[i] = a[i] & b[i];
+ end
+ endfunction
+endmodule