verismith-0.5.0.0: Random verilog generation and simulator testing.

Copyright(c) 2019 Yann Herklotz Grave
LicenseGPL-3
Maintaineryann [at] yannherklotz [dot] com
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
LanguageHaskell2010

Verismith.Verilog

Contents

Description

Verilog implementation with random generation and mutations.

Synopsis

Documentation

data SourceInfo Source #

Constructors

SourceInfo 

Fields

Instances
Eq SourceInfo Source # 
Instance details

Defined in Verismith.Verilog.AST

Data SourceInfo Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SourceInfo -> c SourceInfo #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SourceInfo #

toConstr :: SourceInfo -> Constr #

dataTypeOf :: SourceInfo -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SourceInfo) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SourceInfo) #

gmapT :: (forall b. Data b => b -> b) -> SourceInfo -> SourceInfo #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SourceInfo -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SourceInfo -> r #

gmapQ :: (forall d. Data d => d -> u) -> SourceInfo -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SourceInfo -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SourceInfo -> m SourceInfo #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SourceInfo -> m SourceInfo #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SourceInfo -> m SourceInfo #

Ord SourceInfo Source # 
Instance details

Defined in Verismith.Verilog.AST

Show SourceInfo Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic SourceInfo Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep SourceInfo :: Type -> Type #

Semigroup SourceInfo Source # 
Instance details

Defined in Verismith.Verilog.AST

Monoid SourceInfo Source # 
Instance details

Defined in Verismith.Verilog.AST

NFData SourceInfo Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: SourceInfo -> () #

Source SourceInfo Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Mutate SourceInfo Source # 
Instance details

Defined in Verismith.Verilog.Mutate

type Rep SourceInfo Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep SourceInfo = D1 (MetaData "SourceInfo" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" False) (C1 (MetaCons "SourceInfo" PrefixI True) (S1 (MetaSel (Just "_infoTop") SourceUnpack SourceStrict DecidedStrict) (Rec0 Text) :*: S1 (MetaSel (Just "_infoSrc") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Verilog)))

newtype Verilog Source #

The complete sourcetext for the Verilog module.

Constructors

Verilog 

Fields

Instances
Eq Verilog Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(==) :: Verilog -> Verilog -> Bool #

(/=) :: Verilog -> Verilog -> Bool #

Data Verilog Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Verilog -> c Verilog #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Verilog #

toConstr :: Verilog -> Constr #

dataTypeOf :: Verilog -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Verilog) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Verilog) #

gmapT :: (forall b. Data b => b -> b) -> Verilog -> Verilog #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Verilog -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Verilog -> r #

gmapQ :: (forall d. Data d => d -> u) -> Verilog -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Verilog -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Verilog -> m Verilog #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Verilog -> m Verilog #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Verilog -> m Verilog #

Ord Verilog Source # 
Instance details

Defined in Verismith.Verilog.AST

Show Verilog Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic Verilog Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep Verilog :: Type -> Type #

Methods

from :: Verilog -> Rep Verilog x #

to :: Rep Verilog x -> Verilog #

Semigroup Verilog Source # 
Instance details

Defined in Verismith.Verilog.AST

Monoid Verilog Source # 
Instance details

Defined in Verismith.Verilog.AST

NFData Verilog Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: Verilog -> () #

Wrapped Verilog Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Unwrapped Verilog :: Type #

Source Verilog Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Mutate Verilog Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> Verilog -> Verilog Source #

Verilog ~ t => Rewrapped Verilog t Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep Verilog Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep Verilog = D1 (MetaData "Verilog" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" True) (C1 (MetaCons "Verilog" PrefixI True) (S1 (MetaSel (Just "getVerilog") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [ModDecl])))
type Unwrapped Verilog Source # 
Instance details

Defined in Verismith.Verilog.AST

parseVerilog Source #

Arguments

:: Text

Name of parsed object.

-> Text

Content to be parsed.

-> Either Text Verilog

Returns String with error message if parse fails.

Parse a String containing verilog code. The parser currently only supports the subset of Verilog that is being generated randomly.

newtype GenVerilog a Source #

Constructors

GenVerilog 

Fields

Instances
Eq a => Eq (GenVerilog a) Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Methods

(==) :: GenVerilog a -> GenVerilog a -> Bool #

(/=) :: GenVerilog a -> GenVerilog a -> Bool #

Data a => Data (GenVerilog a) Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GenVerilog a -> c (GenVerilog a) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (GenVerilog a) #

toConstr :: GenVerilog a -> Constr #

dataTypeOf :: GenVerilog a -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (GenVerilog a)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (GenVerilog a)) #

gmapT :: (forall b. Data b => b -> b) -> GenVerilog a -> GenVerilog a #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GenVerilog a -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GenVerilog a -> r #

gmapQ :: (forall d. Data d => d -> u) -> GenVerilog a -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> GenVerilog a -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> GenVerilog a -> m (GenVerilog a) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GenVerilog a -> m (GenVerilog a) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GenVerilog a -> m (GenVerilog a) #

Ord a => Ord (GenVerilog a) Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Source a => Show (GenVerilog a) Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Mutate a => Mutate (GenVerilog a) Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> GenVerilog a -> GenVerilog a Source #

Primitives

Identifier

newtype Identifier Source #

Identifier in Verilog. This is just a string of characters that can either be lowercase and uppercase for now. This might change in the future though, as Verilog supports many more characters in Identifiers.

Constructors

Identifier 

Fields

Instances
Eq Identifier Source # 
Instance details

Defined in Verismith.Verilog.AST

Data Identifier Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Identifier -> c Identifier #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Identifier #

toConstr :: Identifier -> Constr #

dataTypeOf :: Identifier -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Identifier) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Identifier) #

gmapT :: (forall b. Data b => b -> b) -> Identifier -> Identifier #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Identifier -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Identifier -> r #

gmapQ :: (forall d. Data d => d -> u) -> Identifier -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Identifier -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Identifier -> m Identifier #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Identifier -> m Identifier #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Identifier -> m Identifier #

Ord Identifier Source # 
Instance details

Defined in Verismith.Verilog.AST

Show Identifier Source # 
Instance details

Defined in Verismith.Verilog.AST

IsString Identifier Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic Identifier Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep Identifier :: Type -> Type #

Semigroup Identifier Source # 
Instance details

Defined in Verismith.Verilog.AST

Monoid Identifier Source # 
Instance details

Defined in Verismith.Verilog.AST

NFData Identifier Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: Identifier -> () #

Wrapped Identifier Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Unwrapped Identifier :: Type #

Source Identifier Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Mutate Identifier Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Identifier ~ t => Rewrapped Identifier t Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep Identifier Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep Identifier = D1 (MetaData "Identifier" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" True) (C1 (MetaCons "Identifier" PrefixI True) (S1 (MetaSel (Just "getIdentifier") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)))
type Unwrapped Identifier Source # 
Instance details

Defined in Verismith.Verilog.AST

Control

newtype Delay Source #

Verilog syntax for adding a delay, which is represented as #num.

Constructors

Delay 

Fields

Instances
Eq Delay Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(==) :: Delay -> Delay -> Bool #

(/=) :: Delay -> Delay -> Bool #

Data Delay Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Delay -> c Delay #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Delay #

toConstr :: Delay -> Constr #

dataTypeOf :: Delay -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Delay) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Delay) #

gmapT :: (forall b. Data b => b -> b) -> Delay -> Delay #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Delay -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Delay -> r #

gmapQ :: (forall d. Data d => d -> u) -> Delay -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Delay -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Delay -> m Delay #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Delay -> m Delay #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Delay -> m Delay #

Num Delay Source # 
Instance details

Defined in Verismith.Verilog.AST

Ord Delay Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

compare :: Delay -> Delay -> Ordering #

(<) :: Delay -> Delay -> Bool #

(<=) :: Delay -> Delay -> Bool #

(>) :: Delay -> Delay -> Bool #

(>=) :: Delay -> Delay -> Bool #

max :: Delay -> Delay -> Delay #

min :: Delay -> Delay -> Delay #

Show Delay Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

showsPrec :: Int -> Delay -> ShowS #

show :: Delay -> String #

showList :: [Delay] -> ShowS #

Generic Delay Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep Delay :: Type -> Type #

Methods

from :: Delay -> Rep Delay x #

to :: Rep Delay x -> Delay #

NFData Delay Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: Delay -> () #

Wrapped Delay Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Unwrapped Delay :: Type #

Source Delay Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Methods

genSource :: Delay -> Text Source #

Mutate Delay Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> Delay -> Delay Source #

Delay ~ t => Rewrapped Delay t Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep Delay Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep Delay = D1 (MetaData "Delay" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" True) (C1 (MetaCons "Delay" PrefixI True) (S1 (MetaSel (Just "_getDelay") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)))
type Unwrapped Delay Source # 
Instance details

Defined in Verismith.Verilog.AST

data Event Source #

Verilog syntax for an event, such as @x, which is used for always blocks

Instances
Eq Event Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(==) :: Event -> Event -> Bool #

(/=) :: Event -> Event -> Bool #

Data Event Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Event -> c Event #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Event #

toConstr :: Event -> Constr #

dataTypeOf :: Event -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Event) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Event) #

gmapT :: (forall b. Data b => b -> b) -> Event -> Event #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Event -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Event -> r #

gmapQ :: (forall d. Data d => d -> u) -> Event -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Event -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Event -> m Event #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Event -> m Event #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Event -> m Event #

Ord Event Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

compare :: Event -> Event -> Ordering #

(<) :: Event -> Event -> Bool #

(<=) :: Event -> Event -> Bool #

(>) :: Event -> Event -> Bool #

(>=) :: Event -> Event -> Bool #

max :: Event -> Event -> Event #

min :: Event -> Event -> Event #

Show Event Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

showsPrec :: Int -> Event -> ShowS #

show :: Event -> String #

showList :: [Event] -> ShowS #

Generic Event Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep Event :: Type -> Type #

Methods

from :: Event -> Rep Event x #

to :: Rep Event x -> Event #

NFData Event Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: Event -> () #

Plated Event Source # 
Instance details

Defined in Verismith.Verilog.AST

Recursive Event Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

project :: Event -> Base Event Event #

cata :: (Base Event a -> a) -> Event -> a #

para :: (Base Event (Event, a) -> a) -> Event -> a #

gpara :: (Corecursive Event, Comonad w) => (forall b. Base Event (w b) -> w (Base Event b)) -> (Base Event (EnvT Event w a) -> a) -> Event -> a #

prepro :: Corecursive Event => (forall b. Base Event b -> Base Event b) -> (Base Event a -> a) -> Event -> a #

gprepro :: (Corecursive Event, Comonad w) => (forall b. Base Event (w b) -> w (Base Event b)) -> (forall c. Base Event c -> Base Event c) -> (Base Event (w a) -> a) -> Event -> a #

Corecursive Event Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

embed :: Base Event Event -> Event #

ana :: (a -> Base Event a) -> a -> Event #

apo :: (a -> Base Event (Either Event a)) -> a -> Event #

postpro :: Recursive Event => (forall b. Base Event b -> Base Event b) -> (a -> Base Event a) -> a -> Event #

gpostpro :: (Recursive Event, Monad m) => (forall b. m (Base Event b) -> Base Event (m b)) -> (forall c. Base Event c -> Base Event c) -> (a -> Base Event (m a)) -> a -> Event #

Source Event Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Methods

genSource :: Event -> Text Source #

Mutate Event Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> Event -> Event Source #

type Rep Event Source # 
Instance details

Defined in Verismith.Verilog.AST

type Base Event Source # 
Instance details

Defined in Verismith.Verilog.AST

type Base Event

Operators

data BinaryOperator Source #

Binary operators that are currently supported in the verilog generation.

Instances
Eq BinaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

Data BinaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BinaryOperator -> c BinaryOperator #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BinaryOperator #

toConstr :: BinaryOperator -> Constr #

dataTypeOf :: BinaryOperator -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c BinaryOperator) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BinaryOperator) #

gmapT :: (forall b. Data b => b -> b) -> BinaryOperator -> BinaryOperator #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BinaryOperator -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BinaryOperator -> r #

gmapQ :: (forall d. Data d => d -> u) -> BinaryOperator -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> BinaryOperator -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> BinaryOperator -> m BinaryOperator #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BinaryOperator -> m BinaryOperator #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BinaryOperator -> m BinaryOperator #

Ord BinaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

Show BinaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic BinaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep BinaryOperator :: Type -> Type #

NFData BinaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: BinaryOperator -> () #

Mutate BinaryOperator Source # 
Instance details

Defined in Verismith.Verilog.Mutate

type Rep BinaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep BinaryOperator = D1 (MetaData "BinaryOperator" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" False) ((((C1 (MetaCons "BinPlus" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "BinMinus" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "BinTimes" PrefixI False) (U1 :: Type -> Type))) :+: (C1 (MetaCons "BinDiv" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "BinMod" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "BinEq" PrefixI False) (U1 :: Type -> Type)))) :+: ((C1 (MetaCons "BinNEq" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "BinCEq" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "BinCNEq" PrefixI False) (U1 :: Type -> Type))) :+: (C1 (MetaCons "BinLAnd" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "BinLOr" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "BinLT" PrefixI False) (U1 :: Type -> Type))))) :+: (((C1 (MetaCons "BinLEq" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "BinGT" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "BinGEq" PrefixI False) (U1 :: Type -> Type))) :+: (C1 (MetaCons "BinAnd" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "BinOr" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "BinXor" PrefixI False) (U1 :: Type -> Type)))) :+: ((C1 (MetaCons "BinXNor" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "BinXNorInv" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "BinPower" PrefixI False) (U1 :: Type -> Type))) :+: ((C1 (MetaCons "BinLSL" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "BinLSR" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "BinASL" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "BinASR" PrefixI False) (U1 :: Type -> Type))))))

data UnaryOperator Source #

Unary operators that are currently supported by the generator.

Instances
Eq UnaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

Data UnaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> UnaryOperator -> c UnaryOperator #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c UnaryOperator #

toConstr :: UnaryOperator -> Constr #

dataTypeOf :: UnaryOperator -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c UnaryOperator) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c UnaryOperator) #

gmapT :: (forall b. Data b => b -> b) -> UnaryOperator -> UnaryOperator #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> UnaryOperator -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> UnaryOperator -> r #

gmapQ :: (forall d. Data d => d -> u) -> UnaryOperator -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> UnaryOperator -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> UnaryOperator -> m UnaryOperator #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> UnaryOperator -> m UnaryOperator #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> UnaryOperator -> m UnaryOperator #

Ord UnaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

Show UnaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic UnaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep UnaryOperator :: Type -> Type #

NFData UnaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: UnaryOperator -> () #

Source UnaryOperator Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Mutate UnaryOperator Source # 
Instance details

Defined in Verismith.Verilog.Mutate

type Rep UnaryOperator Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep UnaryOperator = D1 (MetaData "UnaryOperator" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" False) (((C1 (MetaCons "UnPlus" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "UnMinus" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "UnLNot" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "UnNot" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "UnAnd" PrefixI False) (U1 :: Type -> Type)))) :+: ((C1 (MetaCons "UnNand" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "UnOr" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "UnNor" PrefixI False) (U1 :: Type -> Type))) :+: (C1 (MetaCons "UnXor" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "UnNxor" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "UnNxorInv" PrefixI False) (U1 :: Type -> Type)))))

Task

data Task Source #

Constructors

Task 
Instances
Eq Task Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(==) :: Task -> Task -> Bool #

(/=) :: Task -> Task -> Bool #

Data Task Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Task -> c Task #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Task #

toConstr :: Task -> Constr #

dataTypeOf :: Task -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Task) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Task) #

gmapT :: (forall b. Data b => b -> b) -> Task -> Task #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Task -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Task -> r #

gmapQ :: (forall d. Data d => d -> u) -> Task -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Task -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Task -> m Task #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Task -> m Task #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Task -> m Task #

Ord Task Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

compare :: Task -> Task -> Ordering #

(<) :: Task -> Task -> Bool #

(<=) :: Task -> Task -> Bool #

(>) :: Task -> Task -> Bool #

(>=) :: Task -> Task -> Bool #

max :: Task -> Task -> Task #

min :: Task -> Task -> Task #

Show Task Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

showsPrec :: Int -> Task -> ShowS #

show :: Task -> String #

showList :: [Task] -> ShowS #

Generic Task Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep Task :: Type -> Type #

Methods

from :: Task -> Rep Task x #

to :: Rep Task x -> Task #

NFData Task Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: Task -> () #

Source Task Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Methods

genSource :: Task -> Text Source #

Mutate Task Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> Task -> Task Source #

type Rep Task Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep Task = D1 (MetaData "Task" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" False) (C1 (MetaCons "Task" PrefixI True) (S1 (MetaSel (Just "_taskName") SourceUnpack SourceStrict DecidedStrict) (Rec0 Identifier) :*: S1 (MetaSel (Just "_taskExpr") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Expr])))

Left hand side value

data LVal Source #

Type that represents the left hand side of an assignment, which can be a concatenation such as in:

{a, b, c} = 32'h94238;

Constructors

RegId 

Fields

RegExpr 
RegSize 
RegConcat 

Fields

Instances
Eq LVal Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(==) :: LVal -> LVal -> Bool #

(/=) :: LVal -> LVal -> Bool #

Data LVal Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LVal -> c LVal #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LVal #

toConstr :: LVal -> Constr #

dataTypeOf :: LVal -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LVal) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LVal) #

gmapT :: (forall b. Data b => b -> b) -> LVal -> LVal #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LVal -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LVal -> r #

gmapQ :: (forall d. Data d => d -> u) -> LVal -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> LVal -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> LVal -> m LVal #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LVal -> m LVal #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LVal -> m LVal #

Ord LVal Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

compare :: LVal -> LVal -> Ordering #

(<) :: LVal -> LVal -> Bool #

(<=) :: LVal -> LVal -> Bool #

(>) :: LVal -> LVal -> Bool #

(>=) :: LVal -> LVal -> Bool #

max :: LVal -> LVal -> LVal #

min :: LVal -> LVal -> LVal #

Show LVal Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

showsPrec :: Int -> LVal -> ShowS #

show :: LVal -> String #

showList :: [LVal] -> ShowS #

IsString LVal Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

fromString :: String -> LVal #

Generic LVal Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep LVal :: Type -> Type #

Methods

from :: LVal -> Rep LVal x #

to :: Rep LVal x -> LVal #

NFData LVal Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: LVal -> () #

Source LVal Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Methods

genSource :: LVal -> Text Source #

Mutate LVal Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> LVal -> LVal Source #

type Rep LVal Source # 
Instance details

Defined in Verismith.Verilog.AST

Ports

data PortDir Source #

Different port direction that are supported in Verilog.

Constructors

PortIn

Input direction for port (input).

PortOut

Output direction for port (output).

PortInOut

Inout direction for port (inout).

Instances
Eq PortDir Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(==) :: PortDir -> PortDir -> Bool #

(/=) :: PortDir -> PortDir -> Bool #

Data PortDir Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PortDir -> c PortDir #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PortDir #

toConstr :: PortDir -> Constr #

dataTypeOf :: PortDir -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PortDir) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PortDir) #

gmapT :: (forall b. Data b => b -> b) -> PortDir -> PortDir #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PortDir -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PortDir -> r #

gmapQ :: (forall d. Data d => d -> u) -> PortDir -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> PortDir -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> PortDir -> m PortDir #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PortDir -> m PortDir #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PortDir -> m PortDir #

Ord PortDir Source # 
Instance details

Defined in Verismith.Verilog.AST

Show PortDir Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic PortDir Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep PortDir :: Type -> Type #

Methods

from :: PortDir -> Rep PortDir x #

to :: Rep PortDir x -> PortDir #

NFData PortDir Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: PortDir -> () #

Source PortDir Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Mutate PortDir Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> PortDir -> PortDir Source #

type Rep PortDir Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep PortDir = D1 (MetaData "PortDir" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" False) (C1 (MetaCons "PortIn" PrefixI False) (U1 :: Type -> Type) :+: (C1 (MetaCons "PortOut" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "PortInOut" PrefixI False) (U1 :: Type -> Type)))

data PortType Source #

Currently, only wire and reg are supported, as the other net types are not that common and not a priority.

Constructors

Wire 
Reg 
Instances
Eq PortType Source # 
Instance details

Defined in Verismith.Verilog.AST

Data PortType Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PortType -> c PortType #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PortType #

toConstr :: PortType -> Constr #

dataTypeOf :: PortType -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PortType) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PortType) #

gmapT :: (forall b. Data b => b -> b) -> PortType -> PortType #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PortType -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PortType -> r #

gmapQ :: (forall d. Data d => d -> u) -> PortType -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> PortType -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> PortType -> m PortType #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PortType -> m PortType #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PortType -> m PortType #

Ord PortType Source # 
Instance details

Defined in Verismith.Verilog.AST

Show PortType Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic PortType Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep PortType :: Type -> Type #

Methods

from :: PortType -> Rep PortType x #

to :: Rep PortType x -> PortType #

NFData PortType Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: PortType -> () #

Source PortType Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Mutate PortType Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> PortType -> PortType Source #

type Rep PortType Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep PortType = D1 (MetaData "PortType" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" False) (C1 (MetaCons "Wire" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "Reg" PrefixI False) (U1 :: Type -> Type))

data Port Source #

Port declaration. It contains information about the type of the port, the size, and the port name. It used to also contain information about if it was an input or output port. However, this is not always necessary and was more cumbersome than useful, as a lot of ports can be declared without input and output port.

This is now implemented inside ModDecl itself, which uses a list of output and input ports.

Constructors

Port 
Instances
Eq Port Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(==) :: Port -> Port -> Bool #

(/=) :: Port -> Port -> Bool #

Data Port Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Port -> c Port #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Port #

toConstr :: Port -> Constr #

dataTypeOf :: Port -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Port) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Port) #

gmapT :: (forall b. Data b => b -> b) -> Port -> Port #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Port -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Port -> r #

gmapQ :: (forall d. Data d => d -> u) -> Port -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Port -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Port -> m Port #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Port -> m Port #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Port -> m Port #

Ord Port Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

compare :: Port -> Port -> Ordering #

(<) :: Port -> Port -> Bool #

(<=) :: Port -> Port -> Bool #

(>) :: Port -> Port -> Bool #

(>=) :: Port -> Port -> Bool #

max :: Port -> Port -> Port #

min :: Port -> Port -> Port #

Show Port Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

showsPrec :: Int -> Port -> ShowS #

show :: Port -> String #

showList :: [Port] -> ShowS #

Generic Port Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep Port :: Type -> Type #

Methods

from :: Port -> Rep Port x #

to :: Rep Port x -> Port #

NFData Port Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: Port -> () #

Source Port Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Methods

genSource :: Port -> Text Source #

Mutate Port Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> Port -> Port Source #

type Rep Port Source # 
Instance details

Defined in Verismith.Verilog.AST

Expression

data Expr Source #

Verilog expression, which can either be a primary expression, unary expression, binary operator expression or a conditional expression.

Constructors

Number !BitVec

Number implementation containing the size and the value itself

Id !Identifier 
VecSelect !Identifier !Expr 
RangeSelect !Identifier !Range

Symbols

Concat !(NonEmpty Expr)

Bit-wise concatenation of expressions represented by braces.

UnOp !UnaryOperator !Expr 
BinOp !Expr !BinaryOperator !Expr 
Cond !Expr !Expr !Expr 
Appl !Identifier !Expr 
Str !Text 
Instances
Eq Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(==) :: Expr -> Expr -> Bool #

(/=) :: Expr -> Expr -> Bool #

Data Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Expr -> c Expr #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Expr #

toConstr :: Expr -> Constr #

dataTypeOf :: Expr -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Expr) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Expr) #

gmapT :: (forall b. Data b => b -> b) -> Expr -> Expr #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Expr -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Expr -> r #

gmapQ :: (forall d. Data d => d -> u) -> Expr -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Expr -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Expr -> m Expr #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Expr -> m Expr #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Expr -> m Expr #

Num Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(+) :: Expr -> Expr -> Expr #

(-) :: Expr -> Expr -> Expr #

(*) :: Expr -> Expr -> Expr #

negate :: Expr -> Expr #

abs :: Expr -> Expr #

signum :: Expr -> Expr #

fromInteger :: Integer -> Expr #

Ord Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

compare :: Expr -> Expr -> Ordering #

(<) :: Expr -> Expr -> Bool #

(<=) :: Expr -> Expr -> Bool #

(>) :: Expr -> Expr -> Bool #

(>=) :: Expr -> Expr -> Bool #

max :: Expr -> Expr -> Expr #

min :: Expr -> Expr -> Expr #

Show Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

showsPrec :: Int -> Expr -> ShowS #

show :: Expr -> String #

showList :: [Expr] -> ShowS #

IsString Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

fromString :: String -> Expr #

Generic Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep Expr :: Type -> Type #

Methods

from :: Expr -> Rep Expr x #

to :: Rep Expr x -> Expr #

Semigroup Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(<>) :: Expr -> Expr -> Expr #

sconcat :: NonEmpty Expr -> Expr #

stimes :: Integral b => b -> Expr -> Expr #

Monoid Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

mempty :: Expr #

mappend :: Expr -> Expr -> Expr #

mconcat :: [Expr] -> Expr #

NFData Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: Expr -> () #

Plated Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

Recursive Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

project :: Expr -> Base Expr Expr #

cata :: (Base Expr a -> a) -> Expr -> a #

para :: (Base Expr (Expr, a) -> a) -> Expr -> a #

gpara :: (Corecursive Expr, Comonad w) => (forall b. Base Expr (w b) -> w (Base Expr b)) -> (Base Expr (EnvT Expr w a) -> a) -> Expr -> a #

prepro :: Corecursive Expr => (forall b. Base Expr b -> Base Expr b) -> (Base Expr a -> a) -> Expr -> a #

gprepro :: (Corecursive Expr, Comonad w) => (forall b. Base Expr (w b) -> w (Base Expr b)) -> (forall c. Base Expr c -> Base Expr c) -> (Base Expr (w a) -> a) -> Expr -> a #

Corecursive Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

embed :: Base Expr Expr -> Expr #

ana :: (a -> Base Expr a) -> a -> Expr #

apo :: (a -> Base Expr (Either Expr a)) -> a -> Expr #

postpro :: Recursive Expr => (forall b. Base Expr b -> Base Expr b) -> (a -> Base Expr a) -> a -> Expr #

gpostpro :: (Recursive Expr, Monad m) => (forall b. m (Base Expr b) -> Base Expr (m b)) -> (forall c. Base Expr c -> Base Expr c) -> (a -> Base Expr (m a)) -> a -> Expr #

Source Expr Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Methods

genSource :: Expr -> Text Source #

Mutate Expr Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> Expr -> Expr Source #

type Rep Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep Expr = D1 (MetaData "Expr" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" False) (((C1 (MetaCons "Number" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) SourceUnpack SourceStrict DecidedStrict) (Rec0 BitVec)) :+: C1 (MetaCons "Id" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) SourceUnpack SourceStrict DecidedStrict) (Rec0 Identifier))) :+: (C1 (MetaCons "VecSelect" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) SourceUnpack SourceStrict DecidedStrict) (Rec0 Identifier) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Expr)) :+: (C1 (MetaCons "RangeSelect" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) SourceUnpack SourceStrict DecidedStrict) (Rec0 Identifier) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Range)) :+: C1 (MetaCons "Concat" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (NonEmpty Expr)))))) :+: ((C1 (MetaCons "UnOp" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 UnaryOperator) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Expr)) :+: C1 (MetaCons "BinOp" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Expr) :*: (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 BinaryOperator) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Expr)))) :+: (C1 (MetaCons "Cond" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Expr) :*: (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Expr) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Expr))) :+: (C1 (MetaCons "Appl" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Identifier) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Expr)) :+: C1 (MetaCons "Str" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) SourceUnpack SourceStrict DecidedStrict) (Rec0 Text))))))
type Base Expr Source # 
Instance details

Defined in Verismith.Verilog.AST

type Base Expr

data ConstExpr Source #

Constant expression, which are known before simulation at compile time.

Instances
Eq ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

Data ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ConstExpr -> c ConstExpr #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ConstExpr #

toConstr :: ConstExpr -> Constr #

dataTypeOf :: ConstExpr -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ConstExpr) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ConstExpr) #

gmapT :: (forall b. Data b => b -> b) -> ConstExpr -> ConstExpr #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ConstExpr -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ConstExpr -> r #

gmapQ :: (forall d. Data d => d -> u) -> ConstExpr -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ConstExpr -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ConstExpr -> m ConstExpr #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ConstExpr -> m ConstExpr #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ConstExpr -> m ConstExpr #

Num ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

Ord ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

Show ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

IsString ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep ConstExpr :: Type -> Type #

Semigroup ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

Monoid ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

NFData ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: ConstExpr -> () #

Plated ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

Recursive ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

project :: ConstExpr -> Base ConstExpr ConstExpr #

cata :: (Base ConstExpr a -> a) -> ConstExpr -> a #

para :: (Base ConstExpr (ConstExpr, a) -> a) -> ConstExpr -> a #

gpara :: (Corecursive ConstExpr, Comonad w) => (forall b. Base ConstExpr (w b) -> w (Base ConstExpr b)) -> (Base ConstExpr (EnvT ConstExpr w a) -> a) -> ConstExpr -> a #

prepro :: Corecursive ConstExpr => (forall b. Base ConstExpr b -> Base ConstExpr b) -> (Base ConstExpr a -> a) -> ConstExpr -> a #

gprepro :: (Corecursive ConstExpr, Comonad w) => (forall b. Base ConstExpr (w b) -> w (Base ConstExpr b)) -> (forall c. Base ConstExpr c -> Base ConstExpr c) -> (Base ConstExpr (w a) -> a) -> ConstExpr -> a #

Corecursive ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

embed :: Base ConstExpr ConstExpr -> ConstExpr #

ana :: (a -> Base ConstExpr a) -> a -> ConstExpr #

apo :: (a -> Base ConstExpr (Either ConstExpr a)) -> a -> ConstExpr #

postpro :: Recursive ConstExpr => (forall b. Base ConstExpr b -> Base ConstExpr b) -> (a -> Base ConstExpr a) -> a -> ConstExpr #

gpostpro :: (Recursive ConstExpr, Monad m) => (forall b. m (Base ConstExpr b) -> Base ConstExpr (m b)) -> (forall c. Base ConstExpr c -> Base ConstExpr c) -> (a -> Base ConstExpr (m a)) -> a -> ConstExpr #

Source ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Mutate ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> ConstExpr -> ConstExpr Source #

type Rep ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep ConstExpr = D1 (MetaData "ConstExpr" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" False) ((C1 (MetaCons "ConstNum" PrefixI True) (S1 (MetaSel (Just "_constNum") SourceUnpack SourceStrict DecidedStrict) (Rec0 BitVec)) :+: (C1 (MetaCons "ParamId" PrefixI True) (S1 (MetaSel (Just "_constParamId") SourceUnpack SourceStrict DecidedStrict) (Rec0 Identifier)) :+: C1 (MetaCons "ConstConcat" PrefixI True) (S1 (MetaSel (Just "_constConcat") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (NonEmpty ConstExpr))))) :+: ((C1 (MetaCons "ConstUnOp" PrefixI True) (S1 (MetaSel (Just "_constUnOp") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 UnaryOperator) :*: S1 (MetaSel (Just "_constPrim") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 ConstExpr)) :+: C1 (MetaCons "ConstBinOp" PrefixI True) (S1 (MetaSel (Just "_constLhs") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 ConstExpr) :*: (S1 (MetaSel (Just "_constBinOp") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 BinaryOperator) :*: S1 (MetaSel (Just "_constRhs") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 ConstExpr)))) :+: (C1 (MetaCons "ConstCond" PrefixI True) (S1 (MetaSel (Just "_constCond") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 ConstExpr) :*: (S1 (MetaSel (Just "_constTrue") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 ConstExpr) :*: S1 (MetaSel (Just "_constFalse") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 ConstExpr))) :+: C1 (MetaCons "ConstStr" PrefixI True) (S1 (MetaSel (Just "_constStr") SourceUnpack SourceStrict DecidedStrict) (Rec0 Text)))))
type Base ConstExpr Source # 
Instance details

Defined in Verismith.Verilog.AST

Assignment

data Assign Source #

Constructors

Assign 
Instances
Eq Assign Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(==) :: Assign -> Assign -> Bool #

(/=) :: Assign -> Assign -> Bool #

Data Assign Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Assign -> c Assign #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Assign #

toConstr :: Assign -> Constr #

dataTypeOf :: Assign -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Assign) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Assign) #

gmapT :: (forall b. Data b => b -> b) -> Assign -> Assign #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Assign -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Assign -> r #

gmapQ :: (forall d. Data d => d -> u) -> Assign -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Assign -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Assign -> m Assign #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Assign -> m Assign #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Assign -> m Assign #

Ord Assign Source # 
Instance details

Defined in Verismith.Verilog.AST

Show Assign Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic Assign Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep Assign :: Type -> Type #

Methods

from :: Assign -> Rep Assign x #

to :: Rep Assign x -> Assign #

NFData Assign Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: Assign -> () #

Mutate Assign Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> Assign -> Assign Source #

type Rep Assign Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep Assign = D1 (MetaData "Assign" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" False) (C1 (MetaCons "Assign" PrefixI True) (S1 (MetaSel (Just "_assignReg") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 LVal) :*: (S1 (MetaSel (Just "_assignDelay") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Maybe Delay)) :*: S1 (MetaSel (Just "_assignExpr") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Expr))))

data ContAssign Source #

Instances
Eq ContAssign Source # 
Instance details

Defined in Verismith.Verilog.AST

Data ContAssign Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ContAssign -> c ContAssign #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ContAssign #

toConstr :: ContAssign -> Constr #

dataTypeOf :: ContAssign -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ContAssign) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ContAssign) #

gmapT :: (forall b. Data b => b -> b) -> ContAssign -> ContAssign #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ContAssign -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ContAssign -> r #

gmapQ :: (forall d. Data d => d -> u) -> ContAssign -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ContAssign -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ContAssign -> m ContAssign #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ContAssign -> m ContAssign #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ContAssign -> m ContAssign #

Ord ContAssign Source # 
Instance details

Defined in Verismith.Verilog.AST

Show ContAssign Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic ContAssign Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep ContAssign :: Type -> Type #

NFData ContAssign Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: ContAssign -> () #

Source ContAssign Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Mutate ContAssign Source # 
Instance details

Defined in Verismith.Verilog.Mutate

type Rep ContAssign Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep ContAssign = D1 (MetaData "ContAssign" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" False) (C1 (MetaCons "ContAssign" PrefixI True) (S1 (MetaSel (Just "_contAssignNetLVal") SourceUnpack SourceStrict DecidedStrict) (Rec0 Identifier) :*: S1 (MetaSel (Just "_contAssignExpr") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Expr)))

Statment

data Statement Source #

Statements in Verilog.

Constructors

TimeCtrl

Time control (#NUM)

EventCtrl 
SeqBlock

Sequential block (begin ... end)

Fields

BlockAssign

blocking assignment (=)

Fields

NonBlockAssign

Non blocking assignment (<=)

Fields

TaskEnable 

Fields

SysTaskEnable 

Fields

CondStmnt 
ForLoop

Loop bounds shall be statically computable for a for loop.

Instances
Eq Statement Source # 
Instance details

Defined in Verismith.Verilog.AST

Data Statement Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Statement -> c Statement #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Statement #

toConstr :: Statement -> Constr #

dataTypeOf :: Statement -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Statement) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Statement) #

gmapT :: (forall b. Data b => b -> b) -> Statement -> Statement #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Statement -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Statement -> r #

gmapQ :: (forall d. Data d => d -> u) -> Statement -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Statement -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Statement -> m Statement #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Statement -> m Statement #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Statement -> m Statement #

Ord Statement Source # 
Instance details

Defined in Verismith.Verilog.AST

Show Statement Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic Statement Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep Statement :: Type -> Type #

Semigroup Statement Source # 
Instance details

Defined in Verismith.Verilog.AST

Monoid Statement Source # 
Instance details

Defined in Verismith.Verilog.AST

NFData Statement Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: Statement -> () #

Plated Statement Source # 
Instance details

Defined in Verismith.Verilog.AST

Source Statement Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Mutate Statement Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> Statement -> Statement Source #

type Rep Statement Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep Statement = D1 (MetaData "Statement" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" False) (((C1 (MetaCons "TimeCtrl" PrefixI True) (S1 (MetaSel (Just "_statDelay") SourceUnpack SourceStrict DecidedStrict) (Rec0 Delay) :*: S1 (MetaSel (Just "_statDStat") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Statement))) :+: C1 (MetaCons "EventCtrl" PrefixI True) (S1 (MetaSel (Just "_statEvent") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Event) :*: S1 (MetaSel (Just "_statEStat") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Statement)))) :+: (C1 (MetaCons "SeqBlock" PrefixI True) (S1 (MetaSel (Just "_statements") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Statement])) :+: C1 (MetaCons "BlockAssign" PrefixI True) (S1 (MetaSel (Just "_stmntBA") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Assign)))) :+: ((C1 (MetaCons "NonBlockAssign" PrefixI True) (S1 (MetaSel (Just "_stmntNBA") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Assign)) :+: C1 (MetaCons "TaskEnable" PrefixI True) (S1 (MetaSel (Just "_stmntTask") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Task))) :+: (C1 (MetaCons "SysTaskEnable" PrefixI True) (S1 (MetaSel (Just "_stmntSysTask") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Task)) :+: (C1 (MetaCons "CondStmnt" PrefixI True) (S1 (MetaSel (Just "_stmntCondExpr") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Expr) :*: (S1 (MetaSel (Just "_stmntCondTrue") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Statement)) :*: S1 (MetaSel (Just "_stmntCondFalse") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Statement)))) :+: C1 (MetaCons "ForLoop" PrefixI True) ((S1 (MetaSel (Just "_forAssign") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Assign) :*: S1 (MetaSel (Just "_forExpr") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Expr)) :*: (S1 (MetaSel (Just "_forIncr") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Assign) :*: S1 (MetaSel (Just "_forStmnt") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Statement)))))))

Module

data ModDecl Source #

'module' module_identifier [list_of_ports] ';' { module_item } end_module

Constructors

ModDecl 
Instances
Eq ModDecl Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(==) :: ModDecl -> ModDecl -> Bool #

(/=) :: ModDecl -> ModDecl -> Bool #

Data ModDecl Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ModDecl -> c ModDecl #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ModDecl #

toConstr :: ModDecl -> Constr #

dataTypeOf :: ModDecl -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ModDecl) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ModDecl) #

gmapT :: (forall b. Data b => b -> b) -> ModDecl -> ModDecl #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ModDecl -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ModDecl -> r #

gmapQ :: (forall d. Data d => d -> u) -> ModDecl -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ModDecl -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ModDecl -> m ModDecl #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ModDecl -> m ModDecl #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ModDecl -> m ModDecl #

Ord ModDecl Source # 
Instance details

Defined in Verismith.Verilog.AST

Show ModDecl Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic ModDecl Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep ModDecl :: Type -> Type #

Methods

from :: ModDecl -> Rep ModDecl x #

to :: Rep ModDecl x -> ModDecl #

NFData ModDecl Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: ModDecl -> () #

Source ModDecl Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Mutate ModDecl Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> ModDecl -> ModDecl Source #

type Rep ModDecl Source # 
Instance details

Defined in Verismith.Verilog.AST

data ModItem Source #

Module item which is the body of the module expression.

Instances
Eq ModItem Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(==) :: ModItem -> ModItem -> Bool #

(/=) :: ModItem -> ModItem -> Bool #

Data ModItem Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ModItem -> c ModItem #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ModItem #

toConstr :: ModItem -> Constr #

dataTypeOf :: ModItem -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ModItem) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ModItem) #

gmapT :: (forall b. Data b => b -> b) -> ModItem -> ModItem #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ModItem -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ModItem -> r #

gmapQ :: (forall d. Data d => d -> u) -> ModItem -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ModItem -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ModItem -> m ModItem #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ModItem -> m ModItem #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ModItem -> m ModItem #

Ord ModItem Source # 
Instance details

Defined in Verismith.Verilog.AST

Show ModItem Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic ModItem Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep ModItem :: Type -> Type #

Methods

from :: ModItem -> Rep ModItem x #

to :: Rep ModItem x -> ModItem #

NFData ModItem Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: ModItem -> () #

Source ModItem Source # 
Instance details

Defined in Verismith.Verilog.CodeGen

Mutate ModItem Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> ModItem -> ModItem Source #

type Rep ModItem Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep ModItem = D1 (MetaData "ModItem" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" False) ((C1 (MetaCons "ModCA" PrefixI True) (S1 (MetaSel (Just "_modContAssign") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 ContAssign)) :+: (C1 (MetaCons "ModInst" PrefixI True) (S1 (MetaSel (Just "_modInstId") SourceUnpack SourceStrict DecidedStrict) (Rec0 Identifier) :*: (S1 (MetaSel (Just "_modInstName") SourceUnpack SourceStrict DecidedStrict) (Rec0 Identifier) :*: S1 (MetaSel (Just "_modInstConns") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [ModConn]))) :+: C1 (MetaCons "Initial" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Statement)))) :+: ((C1 (MetaCons "Always" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Statement)) :+: C1 (MetaCons "Decl" PrefixI True) (S1 (MetaSel (Just "_declDir") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Maybe PortDir)) :*: (S1 (MetaSel (Just "_declPort") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Port) :*: S1 (MetaSel (Just "_declVal") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe ConstExpr))))) :+: (C1 (MetaCons "ParamDecl" PrefixI True) (S1 (MetaSel (Just "_paramDecl") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (NonEmpty Parameter))) :+: C1 (MetaCons "LocalParamDecl" PrefixI True) (S1 (MetaSel (Just "_localParamDecl") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (NonEmpty LocalParam))))))

data ModConn Source #

This is currently a type because direct module declaration should also be added:

mod a(.y(y1), .x1(x11), .x2(x22));

Constructors

ModConn 

Fields

ModConnNamed 
Instances
Eq ModConn Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

(==) :: ModConn -> ModConn -> Bool #

(/=) :: ModConn -> ModConn -> Bool #

Data ModConn Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ModConn -> c ModConn #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ModConn #

toConstr :: ModConn -> Constr #

dataTypeOf :: ModConn -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ModConn) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ModConn) #

gmapT :: (forall b. Data b => b -> b) -> ModConn -> ModConn #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ModConn -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ModConn -> r #

gmapQ :: (forall d. Data d => d -> u) -> ModConn -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ModConn -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ModConn -> m ModConn #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ModConn -> m ModConn #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ModConn -> m ModConn #

Ord ModConn Source # 
Instance details

Defined in Verismith.Verilog.AST

Show ModConn Source # 
Instance details

Defined in Verismith.Verilog.AST

Generic ModConn Source # 
Instance details

Defined in Verismith.Verilog.AST

Associated Types

type Rep ModConn :: Type -> Type #

Methods

from :: ModConn -> Rep ModConn x #

to :: Rep ModConn x -> ModConn #

NFData ModConn Source # 
Instance details

Defined in Verismith.Verilog.AST

Methods

rnf :: ModConn -> () #

Mutate ModConn Source # 
Instance details

Defined in Verismith.Verilog.Mutate

Methods

mutExpr :: (Expr -> Expr) -> ModConn -> ModConn Source #

type Rep ModConn Source # 
Instance details

Defined in Verismith.Verilog.AST

type Rep ModConn = D1 (MetaData "ModConn" "Verismith.Verilog.AST" "verismith-0.5.0.0-inplace" False) (C1 (MetaCons "ModConn" PrefixI True) (S1 (MetaSel (Just "_modExpr") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Expr)) :+: C1 (MetaCons "ModConnNamed" PrefixI True) (S1 (MetaSel (Just "_modConnName") SourceUnpack SourceStrict DecidedStrict) (Rec0 Identifier) :*: S1 (MetaSel (Just "_modExpr") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Expr)))

Useful Lenses and Traversals

Quote

verilog :: QuasiQuoter Source #

Quasiquoter for verilog, so that verilog can be written inline and be parsed to an AST at compile time.