aboutsummaryrefslogtreecommitdiffstats
path: root/src/Test/VeriFuzz/CodeGen.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Test/VeriFuzz/CodeGen.hs')
-rw-r--r--src/Test/VeriFuzz/CodeGen.hs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/Test/VeriFuzz/CodeGen.hs b/src/Test/VeriFuzz/CodeGen.hs
index 3cc6063..71dff48 100644
--- a/src/Test/VeriFuzz/CodeGen.hs
+++ b/src/Test/VeriFuzz/CodeGen.hs
@@ -20,9 +20,12 @@ genDescription desc =
genModuleDecl :: ModuleDecl -> Text
genModuleDecl mod =
"module " <> mod ^. moduleId . getIdentifier
- <> "(\n" <> ports <> "\n);\nendomodule"
+ <> "(\n" <> ports <> "\n);"
+ <> modItems
+ <> "endomodule\n"
where
ports = sep ",\n" $ genPort <$> mod ^. modPorts
+ modItems = fromList $ genModuleItem <$> mod ^. moduleItems
genPort :: Port -> Text
genPort port =
@@ -49,8 +52,17 @@ genContAssign assign =
genExpr :: Expression -> Text
genExpr (OpExpr exprRhs bin exprLhs) =
genExpr exprRhs <> genBinaryOperator bin <> genExpr exprLhs
+genExpr (PrimExpr prim) =
+ genPrimary prim
genExpr _ = "TODO"
+genPrimary :: Primary -> Text
+genPrimary (PrimNum num) =
+ sh (num ^. numSize) <> "'d" <> sh (num ^. numVal)
+ where
+ sh = T.pack . show
+genPrimary (PrimId ident) = ident ^. getIdentifier
+
genBinaryOperator :: BinaryOperator -> Text
genBinaryOperator BinAnd = " & "
genBinaryOperator BinOr = " | "