From: Clifford Wolf Date: Wed, 4 Jan 2017 15:03:04 +0000 (+0100) Subject: Added handling of local memories and error for local decls in unnamed blocks X-Git-Tag: yosys-0.8~541 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=81a9ee2360740dd05e6fc8215abd0e30837f2cda;p=yosys.git Added handling of local memories and error for local decls in unnamed blocks --- diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc index dd24ce988..0e77df611 100644 --- a/frontends/ast/simplify.cc +++ b/frontends/ast/simplify.cc @@ -1083,6 +1083,15 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage, did_something = true; } + // check for local objects in unnamed block + if (type == AST_BLOCK && str.empty()) + { + for (size_t i = 0; i < children.size(); i++) + if (children[i]->type == AST_WIRE || children[i]->type == AST_MEMORY || children[i]->type == AST_PARAMETER || children[i]->type == AST_LOCALPARAM) + log_error("Local declaration in unnamed block at %s:%d is an unsupported SystemVerilog feature!\n", + children[i]->filename.c_str(), children[i]->linenum); + } + // transform block with name if (type == AST_BLOCK && !str.empty()) { @@ -1091,7 +1100,7 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage, std::vector new_children; for (size_t i = 0; i < children.size(); i++) - if (children[i]->type == AST_WIRE || children[i]->type == AST_PARAMETER || children[i]->type == AST_LOCALPARAM) { + if (children[i]->type == AST_WIRE || children[i]->type == AST_MEMORY || 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];