|
|
|
|
Synopsis |
|
| | | | data DesignDB lib = DesignDB {} | | class CellLibrary lib where | | | cellInputs :: CellLibrary lib => CellId -> lib -> [(CellId, InPin)] | | cellOutputs :: CellLibrary lib => CellId -> lib -> [Signal] | | prop_validSignals :: CellLibrary lib => [Declaration lib] -> Bool | | prop_validDecls :: CellLibrary lib => [Declaration lib] -> Bool | | newtype Lava lib a = Lava {} | | runLava :: CellLibrary lib => Lava lib a -> (a, DesignDB lib) | | class (Monad m, CellLibrary lib) => MonadLava lib m | m -> lib where | | | inputSig :: MonadLava lib m => m Signal | | cellList :: MonadLava lib m => lib -> [Signal] -> m [Signal] | | labelSig :: MonadLava lib m => Tag -> Signal -> m Signal | | data Interpretation lib x = Interp {} | | type InterpDesignDB lib x = (DesignDB lib, Map Signal x) | | lookupTag :: Tag -> InterpDesignDB lib x -> [x] | | depthInterp :: CellLibrary lib => Interpretation lib Int | | hasLoopDB :: CellLibrary lib => Bool -> DesignDB lib -> Bool | | hasLoop :: MonadLava lib m => m a -> Bool | | hasCombLoop :: MonadLava lib m => m a -> Bool | | | | class Port p s | p -> s where | | | class Port p s => PortStruct p s t | p -> s t, s t -> p | | mapPort :: (PortStruct pa sa t, PortStruct pb sb t) => (sa -> sb) -> pa -> pb | | mapPortM :: (PortStruct pa sa t, PortStruct pb sb t, Monad m) => (sa -> m sb) -> pa -> m pb | | class Port p s => PortFixed p s | p -> s where | | | askSig :: Interpretation lib x -> Signal -> Knot Signal x x | | tellSigs :: Interpretation lib x -> [Signal] -> [Maybe x] -> Knot Signal x () | | interpretCells :: forall lib x. CellLibrary lib => Interpretation lib x -> [(Signal, x)] -> [(CellId, (lib, [Signal]))] -> Map Signal x | | interpret__ :: CellLibrary lib => Interpretation lib x -> [(Signal, x)] -> (PortTree Signal, DesignDB lib) -> (PortTree x, InterpDesignDB lib x) | | interpret_ :: CellLibrary lib => Interpretation lib x -> [(Signal, x)] -> Lava lib (PortTree Signal) -> (PortTree x, InterpDesignDB lib x) | | interpret :: (CellLibrary lib, PortStruct ps Signal t, PortStruct px x t) => Interpretation lib x -> Lava lib ps -> (px, InterpDesignDB lib x) | | inputToSig :: PortTree x -> PortTree Signal | | interpretFuncP :: CellLibrary lib => Interpretation lib x -> (PortTree Signal -> Lava lib (PortTree Signal)) -> PortTree x -> (PortTree x, InterpDesignDB lib x) | | interpretFunc :: (CellLibrary lib, PortStruct pxi x ti, PortStruct psi Signal ti, PortStruct pso Signal to, PortStruct pxo x to) => Interpretation lib x -> (psi -> Lava lib pso) -> pxi -> (pxo, InterpDesignDB lib x) | | input :: forall lib m p. (MonadLava lib m, PortFixed p Signal) => m p | | inputList :: (MonadLava lib m, PortFixed p Signal) => Int -> m [p] | | cell :: forall m lib pi po. (MonadLava lib m, PortFixed pi Signal, PortFixed po Signal) => lib -> pi -> m po | | sourceCell :: (MonadLava lib m, PortFixed p Signal) => lib -> m p | | sinkCell :: (MonadLava lib m, PortFixed p Signal) => lib -> p -> m () | | physCell :: MonadLava lib m => lib -> a -> m a | | label :: (MonadLava lib m, PortStruct p Signal t) => Tag -> p -> m p | | toLava2000 :: (MonadLava lib m, PortStruct pli (Signal Bool) ti, PortStruct psi Signal ti, PortStruct pso Signal to, PortStruct plo (Signal Bool) to) => (psi -> m pso) -> pli -> plo | | simulateSeq :: (MonadLava lib m, PortStruct pni Int ti, PortStruct psi Signal ti, PortStruct pso Signal to, PortStruct pno Int to) => (psi -> m pso) -> [pni] -> [pno] | | simulate :: (MonadLava lib m, PortStruct pni Int ti, PortStruct psi Signal ti, PortStruct pso Signal to, PortStruct pno Int to) => (psi -> m pso) -> pni -> pno | | encodeBin :: Int -> Int -> [Int] | | decodeBin :: [Int] -> Int | | verify :: forall lib m ps. (MonadLava lib m, PortFixed ps Signal) => (ps -> m Signal) -> IO () | | depth :: (MonadLava lib m, PortStruct ps Signal t, PortStruct pd Int t) => m ps -> (pd, InterpDesignDB lib Int) | | fanout :: MonadLava lib m => m a -> InterpDesignDB lib Int | | size :: MonadLava lib m => m p -> Int |
|
|
Documentation |
|
|
Identifies a driver in the circuit. A driver is either a primary input or
an output pin of a cell.
| Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
class CellLibrary lib where | Source |
|
| Methods | | | Instances | |
|
|
|
|
|
|
|
|
|
|
|
Constructors | | Instances | |
|
|
|
|
|
| Methods | | | Instances | |
|
|
|
|
|
|
|
|
data Interpretation lib x | Source |
|
Constructors | Interp | | defaultVal :: x | | accumulator :: x -> x -> x | | propagator :: lib -> [x] -> [Maybe x] | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Constructors | | Instances | |
|
|
class Port p s | p -> s where | Source |
|
| Methods | | | Instances | Port Bool Bool | Port Int Int | Port () () | Port Time Time | Port Signal Signal | Port p s => Port ([] p) s | Port p s => Port (Maybe p) s | Port (Signal Bool) (Signal Bool) | (Port p1 s, Port p2 s) => Port (Either p1 p2) s | (Port p1 s, Port p2 s) => Port ((,) p1 p2) s | (Port p1 s, Port p2 s, Port p3 s) => Port ((,,) p1 p2 p3) s | (Port p1 s, Port p2 s, Port p3 s, Port p4 s) => Port ((,,,) p1 p2 p3 p4) s |
|
|
|
class Port p s => PortStruct p s t | p -> s t, s t -> p | Source |
|
| Instances | PortStruct Bool Bool () | PortStruct Bool Bool () | PortStruct Int Int () | PortStruct Int Int () | PortStruct () () () | PortStruct Time Time () | PortStruct Time Time () | PortStruct Signal Signal () | PortStruct Signal Signal () | PortStruct p s t => PortStruct ([] p) s ([] t) | PortStruct p s t => PortStruct (Maybe p) s (Maybe t) | PortStruct (Signal Bool) (Signal Bool) () | PortStruct (Signal Bool) (Signal Bool) () | (PortStruct p1 s t1, PortStruct p2 s t2) => PortStruct (Either p1 p2) s (Either t1 t2) | (PortStruct p1 s t1, PortStruct p2 s t2) => PortStruct ((,) p1 p2) s ((,) t1 t2) | (PortStruct p1 s t1, PortStruct p2 s t2, PortStruct p3 s t3) => PortStruct ((,,) p1 p2 p3) s ((,,) t1 t2 t3) | (PortStruct p1 s t1, PortStruct p2 s t2, PortStruct p3 s t3, PortStruct p4 s t4) => PortStruct ((,,,) p1 p2 p3 p4) s ((,,,) t1 t2 t3 t4) |
|
|
|
|
|
|
|
class Port p s => PortFixed p s | p -> s where | Source |
|
| Methods | | | Instances | PortFixed Signal Signal | (PortFixed p1 s, PortFixed p2 s) => PortFixed ((,) p1 p2) s | (PortFixed p1 s, PortFixed p2 s, PortFixed p3 s) => PortFixed ((,,) p1 p2 p3) s | (PortFixed p1 s, PortFixed p2 s, PortFixed p3 s, PortFixed p4 s) => PortFixed ((,,,) p1 p2 p3 p4) s |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
encodeBin n x Encodes the number x as a binary number of length n. The resulting list
contains only zeroes and ones.
|
|
|
|
|
|
|
|
|
|
|
|
Produced by Haddock version 2.4.2 |