Language.Atom.Code
Description
Atom C code generation.
Synopsis
- data Config = Config {
- cFuncName :: String
- cStateName :: String
- cCode :: [Name] -> [Name] -> [(Name, Type)] -> (String, String)
- cRuleCoverage :: Bool
- cAssert :: Bool
- cAssertName :: String
- cCoverName :: String
- hardwareClock :: Maybe Clock
- data Clock = Clock {}
- writeC :: Name -> Config -> StateHierarchy -> [Rule] -> Schedule -> [Name] -> [Name] -> [(Name, Type)] -> IO RuleCoverage
- defaults :: Config
- defaultClock :: Clock
- cType :: Type -> String
- type RuleCoverage = [(Name, Int, Int)]
Documentation
C code configuration parameters.
Constructors
Fields
- cFuncName :: String
Alternative primary function name. Leave empty to use compile name.
- cStateName :: String
Name of state variable structure. Default: state
- cCode :: [Name] -> [Name] -> [(Name, Type)] -> (String, String)
Custom C code to insert above and below, given assertion names, coverage names, and probe names and types.
- cRuleCoverage :: Bool
Enable rule coverage tracking.
- cAssert :: Bool
Enable assertions and functional coverage.
- cAssertName :: String
Name of assertion function. Type: void assert(int, bool, uint64_t);
- cCoverName :: String
Name of coverage function. Type: void cover(int, bool, uint64_t);
- hardwareClock :: Maybe Clock
Do we use a hardware counter to schedule rules?
Data associated with sampling a hardware clock. For the clock to work
correctly, you MUST assign __global_clock the current time (accoring to
clockName) the first time you enter the main Atom-generated function
calling your rules.
Constructors
Fields
- clockName :: String
C function to sample the clock. The funciton is assumed to have the prototype
clockType clockName(void).- clockType :: Type
Clock type. Assumed to be one of Word8, Word16, Word32, or Word64. It is permissible for the clock to rollover.
- delta :: Integer
Number of ticks in a phase. Must be greater than 0.
- delay :: String
C function to delay/sleep. The function is assumed to have the prototype
void delay(clockType i), whereiis the duration of delay/sleep.- err :: Maybe String
Nothing or a user-defined error-reporting function if the period duration is violated; e.g., the execution time was greater than
delta. Assumed to have prototypevoid err(void).
writeC :: Name -> Config -> StateHierarchy -> [Rule] -> Schedule -> [Name] -> [Name] -> [(Name, Type)] -> IO RuleCoverage Source
Default C code configuration parameters (default function name, no pre/post code, ANSI C types).
type RuleCoverage = [(Name, Int, Int)]Source