diff options
author | Clifford Wolf <clifford@clifford.at> | 2015-11-11 10:54:35 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2015-11-11 10:54:35 +0100 |
commit | 34f2b84fb60445210ff9ffdf33b90ef6f50b91ed (patch) | |
tree | d9df1a940c0c2e72e0514939e691e09f0147c710 /frontends/ast | |
parent | d98d99aec6049d981abb2480cf942947f3f23989 (diff) | |
download | yosys-34f2b84fb60445210ff9ffdf33b90ef6f50b91ed.tar.gz yosys-34f2b84fb60445210ff9ffdf33b90ef6f50b91ed.tar.bz2 yosys-34f2b84fb60445210ff9ffdf33b90ef6f50b91ed.zip |
Fixed handling of parameters and localparams in functions
Diffstat (limited to 'frontends/ast')
-rw-r--r-- | frontends/ast/genrtlil.cc | 5 | ||||
-rw-r--r-- | frontends/ast/simplify.cc | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/frontends/ast/genrtlil.cc b/frontends/ast/genrtlil.cc index fd242fe2e..87e8379e9 100644 --- a/frontends/ast/genrtlil.cc +++ b/frontends/ast/genrtlil.cc @@ -520,6 +520,11 @@ struct AST_INTERNAL::ProcessGenerator log_error("Found wire declaration in block without label at at %s:%d!\n", ast->filename.c_str(), ast->linenum); break; + case AST_PARAMETER: + case AST_LOCALPARAM: + log_error("Found parameter declaration in block without label at at %s:%d!\n", ast->filename.c_str(), ast->linenum); + break; + case AST_TCALL: case AST_FOR: break; diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc index 6cda7235e..24e96f074 100644 --- a/frontends/ast/simplify.cc +++ b/frontends/ast/simplify.cc @@ -1013,7 +1013,7 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage, std::vector<AstNode*> new_children; for (size_t i = 0; i < children.size(); i++) - if (children[i]->type == AST_WIRE) { + if (children[i]->type == AST_WIRE || children[i]->type == AST_PARAMETER || children[i]->type == AST_LOCALPARAM) { children[i]->simplify(false, false, false, stage, -1, false, false); current_ast_mod->children.push_back(children[i]); current_scope[children[i]->str] = children[i]; @@ -1865,7 +1865,7 @@ skip_dynamic_range_lvalue_expansion:; } for (auto child : decl->children) - if (child->type == AST_WIRE) + if (child->type == AST_WIRE || child->type == AST_PARAMETER || child->type == AST_LOCALPARAM) { AstNode *wire = child->clone(); wire->str = prefix + wire->str; @@ -1896,7 +1896,7 @@ skip_dynamic_range_lvalue_expansion:; } for (auto child : decl->children) - if (child->type != AST_WIRE) + if (child->type != AST_WIRE && child->type != AST_PARAMETER && child->type != AST_LOCALPARAM) { AstNode *stmt = child->clone(); stmt->replace_ids(prefix, replace_rules); |