3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-27 02:45:52 +00:00

More bugfixes in handling of parameters in tasks and functions

This commit is contained in:
Clifford Wolf 2015-11-12 13:02:36 +01:00
parent 34f2b84fb6
commit 7ae3d1b5a9
2 changed files with 23 additions and 2 deletions

View file

@ -1773,6 +1773,7 @@ skip_dynamic_range_lvalue_expansion:;
size_t arg_count = 0;
std::map<std::string, std::string> replace_rules;
vector<AstNode*> added_mod_children;
if (current_block == NULL)
{
@ -1873,9 +1874,13 @@ skip_dynamic_range_lvalue_expansion:;
wire->is_input = false;
wire->is_output = false;
current_ast_mod->children.push_back(wire);
while (wire->simplify(true, false, false, 1, -1, false, false)) { }
added_mod_children.push_back(wire);
if (child->type == AST_WIRE)
while (wire->simplify(true, false, false, 1, -1, false, false)) { }
replace_rules[child->str] = wire->str;
current_scope[wire->str] = wire;
if ((child->is_input || child->is_output) && arg_count < children.size())
{
@ -1895,6 +1900,11 @@ skip_dynamic_range_lvalue_expansion:;
}
}
for (auto child : added_mod_children) {
child->replace_ids(prefix, replace_rules);
while (child->simplify(true, false, false, 1, -1, false, false)) { }
}
for (auto child : decl->children)
if (child->type != AST_WIRE && child->type != AST_PARAMETER && child->type != AST_LOCALPARAM)
{