aboutsummaryrefslogtreecommitdiffstats
path: root/src/VeriFuzz/Verilog/CodeGen.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/VeriFuzz/Verilog/CodeGen.hs')
-rw-r--r--src/VeriFuzz/Verilog/CodeGen.hs17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/VeriFuzz/Verilog/CodeGen.hs b/src/VeriFuzz/Verilog/CodeGen.hs
index 3b9c7ad..361d27e 100644
--- a/src/VeriFuzz/Verilog/CodeGen.hs
+++ b/src/VeriFuzz/Verilog/CodeGen.hs
@@ -204,13 +204,18 @@ unaryOp UnXor = "^"
unaryOp UnNxor = "~^"
unaryOp UnNxorInv = "^~"
--- | Generate verilog code for an 'Event'.
event :: Event -> Text
-event (EId i) = "@(" <> getIdentifier i <> ")"
-event (EExpr e) = "@(" <> expr e <> ")"
-event EAll = "@*"
-event (EPosEdge i) = "@(posedge " <> getIdentifier i <> ")"
-event (ENegEdge i) = "@(negedge " <> getIdentifier i <> ")"
+event a = "@(" <> eventRec a <> ")"
+
+-- | Generate verilog code for an 'Event'.
+eventRec :: Event -> Text
+eventRec (EId i) = getIdentifier i
+eventRec (EExpr e) = expr e
+eventRec EAll = "@*"
+eventRec (EPosEdge i) = "posedge " <> getIdentifier i
+eventRec (ENegEdge i) = "negedge " <> getIdentifier i
+eventRec (EOr a b) = "(" <> eventRec a <> " or " <> eventRec b <> ")"
+eventRec (EComb a b) = "(" <> eventRec a <> ", " <> eventRec b <> ")"
-- | Generates verilog code for a 'Delay'.
delay :: Delay -> Text