1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
{-|
Module : VeriFuzz.Verilog
Description : Verilog implementation with random generation and mutations.
Copyright : (c) 2019, Yann Herklotz Grave
License : GPL-3
Maintainer : ymherklotz [at] gmail [dot] com
Stability : experimental
Portability : POSIX
Verilog implementation with random generation and mutations.
-}
module VeriFuzz.Verilog
( Verilog(..)
, parseVerilog
, procedural
, randomMod
, GenVerilog(..)
, genSource
, getVerilog
-- * Primitives
-- ** Identifier
, Identifier(..)
, getIdentifier
-- ** Control
, Delay(..)
, getDelay
, Event(..)
-- ** Operators
, BinaryOperator(..)
, UnaryOperator(..)
-- ** Task
, Task(..)
, taskName
, taskExpr
-- ** Left hand side value
, LVal(..)
, regId
, regExprId
, regExpr
, regSizeId
, regSizeMSB
, regSizeLSB
, regConc
-- ** Ports
, PortDir(..)
, PortType(..)
, Port(..)
, portType
, portSigned
, portSize
, portName
-- * Expression
, Expr(..)
, exprSize
, exprVal
, exprId
, exprConcat
, exprUnOp
, exprPrim
, exprLhs
, exprBinOp
, exprRhs
, exprCond
, exprTrue
, exprFalse
, exprFunc
, exprBody
, exprStr
, ConstExpr(..)
, constNum
, Function(..)
-- * Assignment
, Assign(..)
, assignReg
, assignDelay
, assignExpr
, ContAssign(..)
, contAssignNetLVal
, contAssignExpr
-- * Statment
, Statement(..)
, statDelay
, statDStat
, statEvent
, statEStat
, statements
, stmntBA
, stmntNBA
, stmntTask
, stmntSysTask
, stmntCondExpr
, stmntCondTrue
, stmntCondFalse
-- * Module
, ModDecl(..)
, modId
, modOutPorts
, modInPorts
, modItems
, ModItem(..)
, modContAssign
, modInstId
, modInstName
, modInstConns
, traverseModItem
, declDir
, declPort
, ModConn(..)
, modConn
, modConnName
, modExpr
-- * Useful Lenses and Traversals
, getModule
, getSourceId
-- * Arbitrary
, Arb
, arb
, genPositive
)
where
import VeriFuzz.Verilog.Arbitrary
import VeriFuzz.Verilog.AST
import VeriFuzz.Verilog.CodeGen
import VeriFuzz.Verilog.Gen
import VeriFuzz.Verilog.Parser
|