- data Atom a
- data AtomDB = AtomDB {
- atomId :: Int
- atomName :: Name
- atomNames :: [Name]
- atomEnable :: UE
- atomSubs :: [AtomDB]
- atomPeriod :: Int
- atomPhase :: Int
- atomAssigns :: [(UV, UE)]
- atomActions :: [([String] -> String, [UE])]
- atomAsserts :: [(Name, UE)]
- atomCovers :: [(Name, UE)]
- data Global = Global {}
- data Rule
- = Rule {
- ruleId :: Int
- ruleName :: Name
- ruleEnable :: UE
- ruleAssigns :: [(UV, UE)]
- ruleActions :: [([String] -> String, [UE])]
- rulePeriod :: Int
- rulePhase :: Int
- | Assert {
- ruleName :: Name
- ruleEnable :: UE
- ruleAssert :: UE
- | Cover { }
- = Rule {
- data StateHierarchy
- buildAtom :: Global -> Name -> Atom a -> IO (a, (Global, AtomDB))
- type UID = Int
- type Name = String
- type Path = [Name]
- elaborate :: Name -> Atom () -> IO (Maybe (StateHierarchy, [Rule], [Name], [Name], [(Name, Type)]))
- var :: Expr a => Name -> a -> Atom (V a)
- var' :: Name -> Type -> V a
- array :: Expr a => Name -> [a] -> Atom (A a)
- array' :: Expr a => Name -> Type -> A a
- addName :: Name -> Atom Name
- get :: Atom (Global, AtomDB)
- put :: (Global, AtomDB) -> Atom ()
- allUVs :: [Rule] -> UE -> [UV]
- allUEs :: Rule -> [UE]
Atom monad and container.
AtomDB | |
|
Rule | |
| |
Assert | |
| |
Cover | |
data StateHierarchy Source
Type Aliases and Utilities
elaborate :: Name -> Atom () -> IO (Maybe (StateHierarchy, [Rule], [Name], [Name], [(Name, Type)]))Source
A Relation is used for relative performance constraints between Action
s.
data Relation = Higher UID | Lower UID deriving (Show, Eq)
Given a top level name and design, elaborates design and returns a design database.