From 0d0e6d7845a916648d0639cf9fff6b7db8e1bace Mon Sep 17 00:00:00 2001 From: Martin Whitaker Date: Mon, 11 Jun 2012 19:48:37 +0100 Subject: [PATCH] Fix elaboration order in generate blocks. Currently, localparam declarations inside generate blocks are elaborated after any nested generate constructs are elaborated. This prevents the localparams being used by the nested constructs. Reversing the elaboration order fixes this bug. --- elab_scope.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/elab_scope.cc b/elab_scope.cc index 617e8bac8..23666eb40 100644 --- a/elab_scope.cc +++ b/elab_scope.cc @@ -1091,6 +1091,12 @@ void PGenerate::elaborate_subscope_(Design*des, NetScope*scope) scope->add_genvar((*cur).first, (*cur).second); } + // Scan the localparams in this scope, and store the information + // needed to evaluate the parameter expressions. The expressions + // will be evaluated later, once all parameter overrides for this + // module have been done. + collect_scope_localparams_(des, scope, localparams); + // Scan the generated scope for nested generate schemes, // and *generate* new scopes, which is slightly different // from simple elaboration. @@ -1101,12 +1107,6 @@ void PGenerate::elaborate_subscope_(Design*des, NetScope*scope) (*cur) -> generate_scope(des, scope); } - // Scan the localparams in this scope, and store the information - // needed to evaluate the parameter expressions. The expressions - // will be evaluated later, once all parameter overrides for this - // module have been done. - collect_scope_localparams_(des, scope, localparams); - // Scan through all the task and function declarations in this // scope. elaborate_scope_tasks(des, scope, tasks);