From 3834b9f109e54fe156356e2d6cefd796f3717770 Mon Sep 17 00:00:00 2001 From: Zachary Snow Date: Sat, 1 Aug 2020 20:14:40 -0600 Subject: [PATCH] support type lookup of genvars --- src/Convert/TypeOf.hs | 6 +++++- test/basic/typeof.sv | 8 ++++++++ test/basic/typeof.v | 10 ++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/Convert/TypeOf.hs b/src/Convert/TypeOf.hs index 16b021d..a60ae05 100644 --- a/src/Convert/TypeOf.hs +++ b/src/Convert/TypeOf.hs @@ -38,7 +38,11 @@ traverseDeclM decl = do CommentDecl{} -> return decl' traverseModuleItemM :: ModuleItem -> Scoper Type ModuleItem -traverseModuleItemM = traverseTypesM $ traverseNestedTypesM traverseTypeM +traverseModuleItemM (Genvar x) = do + insertElem x $ IntegerAtom TInteger Unspecified + return $ Genvar x +traverseModuleItemM item = + traverseTypesM (traverseNestedTypesM traverseTypeM) item traverseGenItemM :: GenItem -> Scoper Type GenItem traverseGenItemM = traverseGenItemExprsM traverseExprM diff --git a/test/basic/typeof.sv b/test/basic/typeof.sv index 288cb03..4f08359 100644 --- a/test/basic/typeof.sv +++ b/test/basic/typeof.sv @@ -62,4 +62,12 @@ module top; $display("%b %d %d %d", y, y, $left(y), $right(y)); $display("%b %d %d %d", z, z, $left(z), $right(z)); end + + for (genvar i = 0; i < 2; ++i) + initial begin + type(i) a; + a = ~i; + $display("%b %d %d %d", i, i, $left(i), $right(i)); + $display("%b %d %d %d", a, a, $left(a), $right(a)); + end endmodule diff --git a/test/basic/typeof.v b/test/basic/typeof.v index 4780475..af83a81 100644 --- a/test/basic/typeof.v +++ b/test/basic/typeof.v @@ -75,4 +75,14 @@ module top; $display("%b %d %d %d", y, y, 31, 0); $display("%b %d %d %d", z, z, 31, 0); end + + generate + genvar i; + for (i = 0; i < 2; i = i + 1) + initial begin : block5 + localparam a = ~i; + $display("%b %d %d %d", i, i, 31, 0); + $display("%b %d %d %d", a, a, 31, 0); + end + endgenerate endmodule