From 0129d41efad623ee95878a673c1c1190261ba3ef Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Tue, 5 Aug 2014 08:35:51 +0200 Subject: [PATCH] Fixed AST handling of variables declared inside a functions main block --- frontends/ast/simplify.cc | 6 +++--- tests/simple/task_func.v | 13 +++++++++++++ 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 -- 2.30.2