aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2018-12-20 21:59:38 +0000
committerYann Herklotz <ymherklotz@gmail.com>2018-12-20 21:59:38 +0000
commit73514c6500c6431406313ee7db665dd5e64286ee (patch)
tree5b938a3b905d0a1b965711ea255c18c8362f7d9a /src
parentbf52d2c2db6ee07df73b99524eb02a2da99a936b (diff)
downloadverismith-73514c6500c6431406313ee7db665dd5e64286ee.tar.gz
verismith-73514c6500c6431406313ee7db665dd5e64286ee.zip
Add more AST generation
Diffstat (limited to 'src')
-rw-r--r--src/Test/VeriFuzz/Graph/ASTGen.hs20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/Test/VeriFuzz/Graph/ASTGen.hs b/src/Test/VeriFuzz/Graph/ASTGen.hs
index f481c24..781bbb9 100644
--- a/src/Test/VeriFuzz/Graph/ASTGen.hs
+++ b/src/Test/VeriFuzz/Graph/ASTGen.hs
@@ -22,6 +22,11 @@ import Test.VeriFuzz.VerilogAST
fromNode :: G.Node -> Identifier
fromNode node = Identifier . T.pack $ "w" <> show node
+fromGate :: Gate -> BinaryOperator
+fromGate And = BinAnd
+fromGate Or = BinOr
+fromGate Xor = BinXor
+
filterGr :: (G.Graph gr) => gr n e -> (G.Node -> Bool) -> [G.Node]
filterGr graph f =
filter f $ G.nodes graph
@@ -34,13 +39,26 @@ genPortsAST c = ((Port Input . fromNode) <$> inp) ++ ((Port Output) . fromNode <
out = filterGr graph $ zero G.outdeg G.indeg
graph = getCircuit c
+genContAssignAST :: Circuit -> G.LNode Gate -> ContAssign
+genContAssignAST c g =
+ where
+ gr = getCircuit c
+ nodes = pre gr $ fst g
+
+genAssignAST :: Circuit -> [ContAssign]
+genAssignAST c =
+ nodes
+ where
+ gr = getCircuit c
+ nodes = G.labNodes gr
+
genModuleDeclAST :: Circuit -> ModuleDecl
genModuleDeclAST c =
ModuleDecl id ports items
where
id = Identifier "gen_module"
ports = genPortsAST c
- items = []
+ items = Assign <$> genAssignAST c
generateAST :: Circuit -> SourceText
generateAST c =