| Copyright | (c) 2019 Yann Herklotz |
|---|---|
| License | GPL-3 |
| Maintainer | yann [at] yannherklotz [dot] com |
| Stability | experimental |
| Portability | POSIX |
| Safe Haskell | None |
| Language | Haskell2010 |
Verismith.Config
Contents
Description
TOML Configuration file format and parser.
Synopsis
- data Config = Config {}
- defaultConfig :: Config
- data Probability = Probability {}
- data ProbExpr = ProbExpr {
- _probExprNum :: !Int
- _probExprId :: !Int
- _probExprRangeSelect :: !Int
- _probExprUnOp :: !Int
- _probExprBinOp :: !Int
- _probExprCond :: !Int
- _probExprConcat :: !Int
- _probExprStr :: !Int
- _probExprSigned :: !Int
- _probExprUnsigned :: !Int
- data ProbModItem = ProbModItem {}
- data ProbStatement = ProbStatement {
- _probStmntBlock :: !Int
- _probStmntNonBlock :: !Int
- _probStmntCond :: !Int
- _probStmntFor :: !Int
- data ConfProperty = ConfProperty {
- _propSize :: !Int
- _propSeed :: !(Maybe Seed)
- _propStmntDepth :: !Int
- _propModDepth :: !Int
- _propMaxModules :: !Int
- _propSampleMethod :: !Text
- _propSampleSize :: !Int
- _propCombine :: !Bool
- _propNonDeterminism :: !Int
- _propDeterminism :: !Int
- data SimDescription = SimDescription {}
- data SynthDescription = SynthDescription {}
- fromXST :: XST -> SynthDescription
- fromYosys :: Yosys -> SynthDescription
- fromVivado :: Vivado -> SynthDescription
- fromQuartus :: Quartus -> SynthDescription
- fromQuartusLight :: QuartusLight -> SynthDescription
- configProbability :: Lens' Config Probability
- configProperty :: Lens' Config ConfProperty
- configSimulators :: Lens' Config [SimDescription]
- configSynthesisers :: Lens' Config [SynthDescription]
- probModItem :: Lens' Probability ProbModItem
- probStmnt :: Lens' Probability ProbStatement
- probExpr :: Lens' Probability ProbExpr
- probExprNum :: Lens' ProbExpr Int
- probExprId :: Lens' ProbExpr Int
- probExprRangeSelect :: Lens' ProbExpr Int
- probExprUnOp :: Lens' ProbExpr Int
- probExprBinOp :: Lens' ProbExpr Int
- probExprCond :: Lens' ProbExpr Int
- probExprConcat :: Lens' ProbExpr Int
- probExprStr :: Lens' ProbExpr Int
- probExprSigned :: Lens' ProbExpr Int
- probExprUnsigned :: Lens' ProbExpr Int
- probModItemAssign :: Lens' ProbModItem Int
- probModItemSeqAlways :: Lens' ProbModItem Int
- probModItemCombAlways :: Lens' ProbModItem Int
- probModItemInst :: Lens' ProbModItem Int
- probStmntBlock :: Lens' ProbStatement Int
- probStmntNonBlock :: Lens' ProbStatement Int
- probStmntCond :: Lens' ProbStatement Int
- probStmntFor :: Lens' ProbStatement Int
- propSampleSize :: Lens' ConfProperty Int
- propSampleMethod :: Lens' ConfProperty Text
- propSize :: Lens' ConfProperty Int
- propSeed :: Lens' ConfProperty (Maybe Seed)
- propStmntDepth :: Lens' ConfProperty Int
- propModDepth :: Lens' ConfProperty Int
- propMaxModules :: Lens' ConfProperty Int
- propCombine :: Lens' ConfProperty Bool
- propDeterminism :: Lens' ConfProperty Int
- propNonDeterminism :: Lens' ConfProperty Int
- parseConfigFile :: FilePath -> IO Config
- parseConfig :: Text -> Config
- encodeConfig :: Config -> Text
- encodeConfigFile :: FilePath -> Config -> IO ()
- versionInfo :: String
TOML Configuration
Verismith supports a TOML configuration file that can be passed using the -c
flag or using the parseConfig and encodeConfig functions. The
configuration can then be manipulated using the lenses that are also provided
in this module.
The configuration file can be used to tweak the random Verilog generation by
passing different probabilities to each of the syntax nodes in the AST. It
can also be used to specify which simulators to fuzz with which options. A
seed for the run can also be set, to replay a previous run using the same
exact generation. A default value is associated with each key in the
configuration file, which means that only the options that need overriding
can be added to the configuration. The defaults can be observed in
defaultConfig or when running verismith config.
Configuration Sections
There are four main configuration sections in the TOML file:
probability- The
probabilitysection defines the probabilities at every node in the AST. property- Controls different properties of the generation, such as adding a seed or the depth of the statements.
simulator- This is an array of tables containing descriptions of the different simulators that should be used. It currently only supports Icarus Verilog.
synthesiser- This is also an array of tables containing descriptions of the different synthesisers that should be used. The synthesisers that are currently supported are:
Constructors
| Config | |
Fields
| |
Probabilities
data Probability Source #
Constructors
| Probability | |
Fields
| |
Instances
| Eq Probability Source # | |
Defined in Verismith.Config | |
| Show Probability Source # | |
Defined in Verismith.Config Methods showsPrec :: Int -> Probability -> ShowS # show :: Probability -> String # showList :: [Probability] -> ShowS # | |
Expression
Probability of different expressions nodes.
Constructors
| ProbExpr | |
Fields
| |
Module Item
data ProbModItem Source #
Probability of generating different nodes inside a module declaration.
Constructors
| ProbModItem | |
Fields
| |
Instances
| Eq ProbModItem Source # | |
Defined in Verismith.Config | |
| Show ProbModItem Source # | |
Defined in Verismith.Config Methods showsPrec :: Int -> ProbModItem -> ShowS # show :: ProbModItem -> String # showList :: [ProbModItem] -> ShowS # | |
Statement
data ProbStatement Source #
Constructors
| ProbStatement | |
Fields
| |
Instances
| Eq ProbStatement Source # | |
Defined in Verismith.Config Methods (==) :: ProbStatement -> ProbStatement -> Bool # (/=) :: ProbStatement -> ProbStatement -> Bool # | |
| Show ProbStatement Source # | |
Defined in Verismith.Config Methods showsPrec :: Int -> ProbStatement -> ShowS # show :: ProbStatement -> String # showList :: [ProbStatement] -> ShowS # | |
ConfProperty
data ConfProperty Source #
Constructors
| ConfProperty | |
Fields
| |
Instances
| Eq ConfProperty Source # | |
Defined in Verismith.Config | |
| Show ConfProperty Source # | |
Defined in Verismith.Config Methods showsPrec :: Int -> ConfProperty -> ShowS # show :: ConfProperty -> String # showList :: [ConfProperty] -> ShowS # | |
Simulator Description
data SimDescription Source #
Constructors
| SimDescription | |
Instances
| Eq SimDescription Source # | |
Defined in Verismith.Config Methods (==) :: SimDescription -> SimDescription -> Bool # (/=) :: SimDescription -> SimDescription -> Bool # | |
| Show SimDescription Source # | |
Defined in Verismith.Config Methods showsPrec :: Int -> SimDescription -> ShowS # show :: SimDescription -> String # showList :: [SimDescription] -> ShowS # | |
Synthesiser Description
data SynthDescription Source #
Constructors
| SynthDescription | |
Instances
| Eq SynthDescription Source # | |
Defined in Verismith.Config Methods (==) :: SynthDescription -> SynthDescription -> Bool # (/=) :: SynthDescription -> SynthDescription -> Bool # | |
| Show SynthDescription Source # | |
Defined in Verismith.Config Methods showsPrec :: Int -> SynthDescription -> ShowS # show :: SynthDescription -> String # showList :: [SynthDescription] -> ShowS # | |
Useful Lenses
fromXST :: XST -> SynthDescription Source #
fromYosys :: Yosys -> SynthDescription Source #
fromVivado :: Vivado -> SynthDescription Source #
parseConfig :: Text -> Config Source #
encodeConfig :: Config -> Text Source #
versionInfo :: String Source #