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
|
{-# LANGUAGE QuasiQuotes #-}
-- |
-- Module : Verismith.Verilog
-- Description : Verilog implementation with random generation and mutations.
-- Copyright : (c) 2019, Yann Herklotz Grave
-- License : GPL-3
-- Maintainer : yann [at] yannherklotz [dot] com
-- Stability : experimental
-- Portability : POSIX
--
-- Verilog implementation with random generation and mutations.
module Verismith.Verilog
( SourceInfo (..),
Verilog (..),
parseVerilog,
GenVerilog (..),
genSource,
-- * Primitives
-- ** Identifier
Identifier (..),
-- ** Control
Delay (..),
Event (..),
-- ** Operators
BinaryOperator (..),
UnaryOperator (..),
-- ** Task
Task (..),
taskName,
taskExpr,
-- ** Left hand side value
LVal (..),
regId,
regExprId,
regExpr,
regSizeId,
regSizeRange,
regConc,
-- ** Ports
PortDir (..),
PortType (..),
Port (..),
portType,
portSigned,
portSize,
portName,
-- * Expression
Expr (..),
ConstExpr (..),
constToExpr,
exprToConst,
constNum,
-- * 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 (..),
modConnName,
modExpr,
-- * Useful Lenses and Traversals
getModule,
getSourceId,
-- * Quote
verilog,
)
where
import Verismith.Verilog.AST
import Verismith.Verilog.CodeGen
import Verismith.Verilog.Parser
import Verismith.Verilog.Quote
|