mirror of https://github.com/zachjs/sv2v.git
fix scoping of single-item generate conditionals
This commit is contained in:
parent
5ad8de9ef7
commit
8537a9efda
|
|
@ -361,16 +361,13 @@ evalScoperT declMapper moduleItemMapper genItemMapper stmtMapper topName items =
|
|||
let genItems = map GenModuleItem injected' ++ [genItem'']
|
||||
return $ GenBlock "" genItems
|
||||
scopeGenItemMapper :: GenItem -> ScoperT a m GenItem
|
||||
scopeGenItemMapper (GenFor (index, a) b c (GenBlock name genItems)) = do
|
||||
enterScope name index
|
||||
genItems' <- mapM fullGenItemMapper genItems
|
||||
exitScope name index
|
||||
return $ GenFor (index, a) b c (GenBlock name genItems')
|
||||
scopeGenItemMapper (GenFor (index, a) b c genItem) = do
|
||||
enterScope "" index
|
||||
genItem' <- fullGenItemMapper genItem
|
||||
exitScope "" index
|
||||
genItem' <- scopeGenItemBranchMapper index genItem
|
||||
return $ GenFor (index, a) b c genItem'
|
||||
scopeGenItemMapper (GenIf cond thenItem elseItem) = do
|
||||
thenItem' <- scopeGenItemBranchMapper "" thenItem
|
||||
elseItem' <- scopeGenItemBranchMapper "" elseItem
|
||||
return $ GenIf cond thenItem' elseItem'
|
||||
scopeGenItemMapper (GenBlock name genItems) = do
|
||||
enterScope name ""
|
||||
genItems' <- mapM fullGenItemMapper genItems
|
||||
|
|
@ -381,6 +378,18 @@ evalScoperT declMapper moduleItemMapper genItemMapper stmtMapper topName items =
|
|||
scopeGenItemMapper genItem =
|
||||
traverseSinglyNestedGenItemsM fullGenItemMapper genItem
|
||||
|
||||
scopeGenItemBranchMapper :: Identifier -> GenItem -> ScoperT a m GenItem
|
||||
scopeGenItemBranchMapper index (GenBlock name genItems) = do
|
||||
enterScope name index
|
||||
genItems' <- mapM fullGenItemMapper genItems
|
||||
exitScope name index
|
||||
return $ GenBlock name genItems'
|
||||
scopeGenItemBranchMapper index genItem = do
|
||||
enterScope "" index
|
||||
genItem' <- fullGenItemMapper genItem
|
||||
exitScope "" index
|
||||
return genItem'
|
||||
|
||||
partScoper
|
||||
:: MapperM (Scoper a) Decl
|
||||
-> MapperM (Scoper a) ModuleItem
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
module top;
|
||||
parameter WIDTH = 5;
|
||||
logic [WIDTH-1:0] x, y;
|
||||
if (WIDTH > 0)
|
||||
initial
|
||||
x = WIDTH'(0);
|
||||
initial
|
||||
y = WIDTH'(0);
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
module top;
|
||||
parameter WIDTH = 5;
|
||||
reg [WIDTH-1:0] x, y;
|
||||
if (WIDTH > 0)
|
||||
initial
|
||||
x = 0;
|
||||
initial
|
||||
y = 0;
|
||||
endmodule
|
||||
Loading…
Reference in New Issue