{-| Module : VeriFuzz.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. -} {-# LANGUAGE QuasiQuotes #-} module VeriFuzz.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 -- ** Parameters , Parameter(..) , paramIdent , paramValue , LocalParam(..) , localParamIdent , localParamValue -- * 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 VeriFuzz.Verilog.AST import VeriFuzz.Verilog.CodeGen import VeriFuzz.Verilog.Parser import VeriFuzz.Verilog.Quote