aboutsummaryrefslogtreecommitdiffstats
path: root/src/VeriFuzz/Verilog/AST.hs
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2019-01-10 18:46:35 +0000
committerYann Herklotz <ymherklotz@gmail.com>2019-01-10 18:46:35 +0000
commit23800af41dc2b6c4e430c143024d9ec5804f2c08 (patch)
treed5ed443a57f59aa2f113d7b0417dc2201a8d34bb /src/VeriFuzz/Verilog/AST.hs
parentfed2fb42f5cca17d38ff1ccd948d598dd0616cdc (diff)
downloadverismith-23800af41dc2b6c4e430c143024d9ec5804f2c08.tar.gz
verismith-23800af41dc2b6c4e430c143024d9ec5804f2c08.zip
Add documentation in AST
Diffstat (limited to 'src/VeriFuzz/Verilog/AST.hs')
-rw-r--r--src/VeriFuzz/Verilog/AST.hs43
1 files changed, 28 insertions, 15 deletions
diff --git a/src/VeriFuzz/Verilog/AST.hs b/src/VeriFuzz/Verilog/AST.hs
index ae94761..bbc2243 100644
--- a/src/VeriFuzz/Verilog/AST.hs
+++ b/src/VeriFuzz/Verilog/AST.hs
@@ -14,30 +14,43 @@ Defines the types to build a Verilog AST.
{-# LANGUAGE TemplateHaskell #-}
module VeriFuzz.Verilog.AST
- ( Identifier(..), getIdentifier
+ ( -- * Top level types
+ Description(..), getDescription
+ , VerilogSrc(..), getVerilogSrc
+ -- * Primitives
+ -- ** Identifier
+ , Identifier(..), getIdentifier
+ -- ** Control
, Delay(..), getDelay
, Event(..)
+ -- ** Operators
, BinaryOperator(..)
, UnaryOperator(..)
- , Expr(..), exprSize, exprVal, exprId, exprConcat
- , exprUnOp, exprPrim, exprLhs, exprBinOp, exprRhs
- , exprCond, exprTrue, exprFalse, exprStr, traverseExpr
- , ConstExpr(..), constNum
+ -- ** Task
, Task(..), taskName, taskExpr
+ -- ** Left hand side value
, LVal(..), regId, regExprId, regExpr, regSizeId, regSizeMSB
, regSizeLSB, regConc
+ -- ** Ports
, PortDir(..)
, PortType(..), regSigned
, Port(..), portType, portSize, portName
- , ModConn(..), modConn
+ -- * Expression
+ , Expr(..), exprSize, exprVal, exprId, exprConcat
+ , exprUnOp, exprPrim, exprLhs, exprBinOp, exprRhs
+ , exprCond, exprTrue, exprFalse, exprStr, traverseExpr
+ , ConstExpr(..), constNum
+ -- * Assignment
, Assign(..), assignReg, assignDelay, assignExpr
, ContAssign(..), contAssignNetLVal, contAssignExpr
+ -- * Statment
, Stmnt(..), statDelay, statDStat, statEvent, statEStat, statements
, stmntBA, stmntNBA, stmntCA, stmntTask, stmntSysTask
- , ModItem(..), _ModCA, modInstId, modInstName, modInstConns, declDir, declPort
+ -- * Module
, ModDecl(..), moduleId, modOutPorts, modInPorts, modItems
- , Description(..), getDescription
- , VerilogSrc(..), getVerilogSrc) where
+ , ModItem(..), _ModCA, modInstId, modInstName, modInstConns, declDir, declPort
+ , ModConn(..), modConn
+ ) where
import Control.Lens (makeLenses, makePrisms)
import Control.Monad (replicateM)
@@ -348,17 +361,17 @@ makeLenses ''ContAssign
instance QC.Arbitrary ContAssign where
arbitrary = ContAssign <$> QC.arbitrary <*> QC.arbitrary
--- | Stmnts in Verilog.
+-- | Statements in Verilog.
data Stmnt = TimeCtrl { _statDelay :: Delay
, _statDStat :: Maybe Stmnt
- } -- ^ Time control (@#NUM@)
+ } -- ^ Time control (@#NUM@)
| EventCtrl { _statEvent :: Event
, _statEStat :: Maybe Stmnt
}
- | SeqBlock { _statements :: [Stmnt] } -- ^ Sequential block (@begin ... end@)
- | BlockAssign { _stmntBA :: Assign } -- ^ blocking assignment (@=@)
- | NonBlockAssign { _stmntNBA :: Assign } -- ^ Non blocking assignment (@<=@)
- | StatCA { _stmntCA :: ContAssign } -- ^ Stmnt continuous assignment. May not be correct.
+ | SeqBlock { _statements :: [Stmnt] } -- ^ Sequential block (@begin ... end@)
+ | BlockAssign { _stmntBA :: Assign } -- ^ blocking assignment (@=@)
+ | NonBlockAssign { _stmntNBA :: Assign } -- ^ Non blocking assignment (@<=@)
+ | StatCA { _stmntCA :: ContAssign } -- ^ Stmnt continuous assignment. May not be correct.
| TaskEnable { _stmntTask :: Task}
| SysTaskEnable { _stmntSysTask :: Task}
deriving (Eq, Show)