From 507c63d112658b658cc1f1fbbcbb20edc212294c Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Wed, 4 Dec 2013 09:10:16 +0100 Subject: Added support for local regs in named blocks --- frontends/ast/simplify.cc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'frontends/ast/simplify.cc') diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc index 80cf230e..0a32e950 100644 --- a/frontends/ast/simplify.cc +++ b/frontends/ast/simplify.cc @@ -350,6 +350,8 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage, break; if (type == AST_GENBLOCK) break; + if (type == AST_BLOCK && !str.empty()) + break; if (type == AST_PREFIX && i >= 1) break; while (did_something_here && i < children.size()) { @@ -678,6 +680,25 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage, did_something = true; } + // transform block with name + if (type == AST_BLOCK && !str.empty()) + { + std::map name_map; + expand_genblock(std::string(), str + ".", name_map); + + std::vector new_children; + for (size_t i = 0; i < children.size(); i++) + if (children[i]->type == AST_WIRE) { + children[i]->simplify(false, false, false, stage, -1, false); + current_ast_mod->children.push_back(children[i]); + } else + new_children.push_back(children[i]); + + children.swap(new_children); + did_something = true; + str.clear(); + } + // simplify unconditional generate block if (type == AST_GENBLOCK && children.size() != 0) { -- cgit v1.2.3