| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Protocols.Experimental.Avalon.MemMap
Contents
- Configuration types
- Grab members from AvalonMmSharedConfig at the type level
- Grab members from AvalonMmSubordinateConfig at the type level
- Grab members from AvalonMmManagerConfig at the type level
- Remove DfConv-incompatible fields from configs
- Constraints on configs
- Avalon MM signals
- Important parts of signals, used as payload in DfConv
- Helper functions
- Protocols
Description
Types and instance declarations for the Avalon memory mapped protocol
(http:/www1.cs.columbia.edu~sedwardsclasses20094840mnl_avalon_spec.pdf).
Non-required fields can be easily toggled by the user. The data and
outputenable fields are not supported since we would need bidirectional data
ports. The resetrequest field is also not supported since this does not get
transferred around, but rather gets send "outwards" to whoever is controlling
the reset signal of the circuit.
Synopsis
- data AvalonMmSharedConfig = AvalonMmSharedConfig {}
- data AvalonMmSubordinateConfig = AvalonMmSubordinateConfig {}
- data AvalonMmManagerConfig = AvalonMmManagerConfig {}
- type family DataWidth (c :: AvalonMmSharedConfig) :: Nat where ...
- type family KeepReadData (c :: AvalonMmSharedConfig) :: Bool where ...
- type family KeepWriteData (c :: AvalonMmSharedConfig) :: Bool where ...
- type family AddrWidth (c :: AvalonMmSharedConfig) :: Nat where ...
- type family KeepRead (c :: AvalonMmSharedConfig) :: Bool where ...
- type family KeepWrite (c :: AvalonMmSharedConfig) :: Bool where ...
- type family ByteEnableWidth (c :: AvalonMmSharedConfig) :: Nat where ...
- type family KeepByteEnable (c :: AvalonMmSharedConfig) :: Bool where ...
- type family BurstCountWidth (c :: AvalonMmSharedConfig) :: Nat where ...
- type family KeepBurstCount (c :: AvalonMmSharedConfig) :: Bool where ...
- type family KeepReadDataValid (c :: AvalonMmSharedConfig) :: Bool where ...
- type family KeepEndOfPacket (c :: AvalonMmSharedConfig) :: Bool where ...
- type family KeepAddr (c :: AvalonMmSubordinateConfig) :: Bool where ...
- type family KeepWriteByteEnable (c :: AvalonMmSubordinateConfig) :: Bool where ...
- type family KeepChipSelect (c :: AvalonMmSubordinateConfig) :: Bool where ...
- type family KeepBeginTransfer (c :: AvalonMmSubordinateConfig) :: Bool where ...
- type family KeepWaitRequest (c :: AvalonMmSubordinateConfig) :: Bool where ...
- type family KeepBeginBurstTransfer (c :: AvalonMmSubordinateConfig) :: Bool where ...
- type family KeepReadyForData (c :: AvalonMmSubordinateConfig) :: Bool where ...
- type family KeepDataAvailable (c :: AvalonMmSubordinateConfig) :: Bool where ...
- type family KeepIrq (c :: AvalonMmSubordinateConfig) :: Bool where ...
- type family SShared (c :: AvalonMmSubordinateConfig) :: AvalonMmSharedConfig where ...
- type family KeepFlush (c :: AvalonMmManagerConfig) :: Bool where ...
- type family KeepIrqList (c :: AvalonMmManagerConfig) :: Bool where ...
- type family KeepIrqNumber (c :: AvalonMmManagerConfig) :: Bool where ...
- type family MShared (c :: AvalonMmManagerConfig) :: AvalonMmSharedConfig where ...
- type family RemoveNonDfSubordinate (cfg :: AvalonMmSubordinateConfig) :: AvalonMmSubordinateConfig where ...
- type family RemoveNonDfManager (cfg :: AvalonMmManagerConfig) :: AvalonMmManagerConfig where ...
- type KnownSharedConfig (config :: AvalonMmSharedConfig) = (KnownNat (DataWidth config), KeepTypeClass (KeepReadData config), KeepTypeClass (KeepWriteData config), KnownNat (AddrWidth config), KeepTypeClass (KeepRead config), KeepTypeClass (KeepWrite config), KnownNat (ByteEnableWidth config), KeepTypeClass (KeepByteEnable config), KnownNat (BurstCountWidth config), KeepTypeClass (KeepBurstCount config), KeepTypeClass (KeepReadDataValid config), KeepTypeClass (KeepEndOfPacket config), NFDataX (KeepType (KeepReadData config) (Unsigned (DataWidth config))), NFData (KeepType (KeepReadData config) (Unsigned (DataWidth config))), ShowX (KeepType (KeepReadData config) (Unsigned (DataWidth config))), Show (KeepType (KeepReadData config) (Unsigned (DataWidth config))), Eq (KeepType (KeepReadData config) (Unsigned (DataWidth config))), NFDataX (KeepType (KeepWriteData config) (Unsigned (DataWidth config))), NFData (KeepType (KeepWriteData config) (Unsigned (DataWidth config))), ShowX (KeepType (KeepWriteData config) (Unsigned (DataWidth config))), Show (KeepType (KeepWriteData config) (Unsigned (DataWidth config))), Eq (KeepType (KeepWriteData config) (Unsigned (DataWidth config))), NFDataX (KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config))), NFData (KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config))), ShowX (KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config))), Show (KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config))), Eq (KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config))), NFDataX (KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config))), NFData (KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config))), ShowX (KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config))), Show (KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config))), Eq (KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config))))
- type KnownSubordinateConfig (config :: AvalonMmSubordinateConfig) = (KeepTypeClass (KeepAddr config), KeepTypeClass (KeepWriteByteEnable config), KeepTypeClass (KeepChipSelect config), KeepTypeClass (KeepBeginTransfer config), KeepTypeClass (KeepWaitRequest config), KeepTypeClass (KeepBeginBurstTransfer config), KeepTypeClass (KeepReadyForData config), KeepTypeClass (KeepDataAvailable config), KeepTypeClass (KeepIrq config), KnownSharedConfig (SShared config), NFDataX (KeepType (KeepAddr config) (Unsigned (AddrWidth (SShared config)))), NFData (KeepType (KeepAddr config) (Unsigned (AddrWidth (SShared config)))), ShowX (KeepType (KeepAddr config) (Unsigned (AddrWidth (SShared config)))), Show (KeepType (KeepAddr config) (Unsigned (AddrWidth (SShared config)))), Eq (KeepType (KeepAddr config) (Unsigned (AddrWidth (SShared config)))), NFDataX (KeepType (KeepWriteByteEnable config) (Unsigned (ByteEnableWidth (SShared config)))), NFData (KeepType (KeepWriteByteEnable config) (Unsigned (ByteEnableWidth (SShared config)))), ShowX (KeepType (KeepWriteByteEnable config) (Unsigned (ByteEnableWidth (SShared config)))), Show (KeepType (KeepWriteByteEnable config) (Unsigned (ByteEnableWidth (SShared config)))), Eq (KeepType (KeepWriteByteEnable config) (Unsigned (ByteEnableWidth (SShared config)))))
- type KnownManagerConfig (config :: AvalonMmManagerConfig) = (KeepTypeClass (KeepFlush config), KeepTypeClass (KeepIrqList config), KeepTypeClass (KeepIrqNumber config), KnownSharedConfig (MShared config), NFDataX (KeepType (KeepIrqList config) (Unsigned 32)), NFData (KeepType (KeepIrqList config) (Unsigned 32)), ShowX (KeepType (KeepIrqList config) (Unsigned 32)), Show (KeepType (KeepIrqList config) (Unsigned 32)), Eq (KeepType (KeepIrqList config) (Unsigned 32)), NFDataX (KeepType (KeepIrqNumber config) (Maybe (Unsigned 6))), NFData (KeepType (KeepIrqNumber config) (Maybe (Unsigned 6))), ShowX (KeepType (KeepIrqNumber config) (Maybe (Unsigned 6))), Show (KeepType (KeepIrqNumber config) (Maybe (Unsigned 6))), Eq (KeepType (KeepIrqNumber config) (Maybe (Unsigned 6))))
- data AvalonManagerOut (config :: AvalonMmManagerConfig) = AvalonManagerOut {
- mo_writeData :: KeepType (KeepWriteData (MShared config)) (Unsigned (DataWidth (MShared config)))
- mo_addr :: Unsigned (AddrWidth (MShared config))
- mo_read :: KeepType (KeepRead (MShared config)) Bool
- mo_write :: KeepType (KeepWrite (MShared config)) Bool
- mo_byteEnable :: KeepType (KeepByteEnable (MShared config)) (Unsigned (ByteEnableWidth (MShared config)))
- mo_burstCount :: KeepType (KeepBurstCount (MShared config)) (Unsigned (BurstCountWidth (MShared config)))
- mo_flush :: KeepType (KeepFlush config) Bool
- data AvalonManagerIn (config :: AvalonMmManagerConfig) = AvalonManagerIn {
- mi_readData :: KeepType (KeepReadData (MShared config)) (Unsigned (DataWidth (MShared config)))
- mi_waitRequest :: Bool
- mi_readDataValid :: KeepType (KeepReadDataValid (MShared config)) Bool
- mi_endOfPacket :: KeepType (KeepEndOfPacket (MShared config)) Bool
- mi_irqList :: KeepType (KeepIrqList config) (Unsigned 32)
- mi_irqNumber :: KeepType (KeepIrqNumber config) (Maybe (Unsigned 6))
- data AvalonSubordinateOut (config :: AvalonMmSubordinateConfig) = AvalonSubordinateOut {
- so_readData :: KeepType (KeepReadData (SShared config)) (Unsigned (DataWidth (SShared config)))
- so_readDataValid :: KeepType (KeepReadDataValid (SShared config)) Bool
- so_endOfPacket :: KeepType (KeepEndOfPacket (SShared config)) Bool
- so_waitRequest :: KeepType (KeepWaitRequest config) Bool
- so_readyForData :: KeepType (KeepReadyForData config) Bool
- so_dataAvailable :: KeepType (KeepDataAvailable config) Bool
- so_irq :: KeepType (KeepIrq config) Bool
- data AvalonSubordinateIn (config :: AvalonMmSubordinateConfig) = AvalonSubordinateIn {
- si_writeData :: KeepType (KeepWriteData (SShared config)) (Unsigned (DataWidth (SShared config)))
- si_addr :: KeepType (KeepAddr config) (Unsigned (AddrWidth (SShared config)))
- si_read :: KeepType (KeepRead (SShared config)) Bool
- si_write :: KeepType (KeepWrite (SShared config)) Bool
- si_byteEnable :: KeepType (KeepByteEnable (SShared config)) (Unsigned (ByteEnableWidth (SShared config)))
- si_burstCount :: KeepType (KeepBurstCount (SShared config)) (Unsigned (BurstCountWidth (SShared config)))
- si_writeByteEnable :: KeepType (KeepWriteByteEnable config) (Unsigned (ByteEnableWidth (SShared config)))
- si_chipSelect :: KeepType (KeepChipSelect config) Bool
- si_beginTransfer :: KeepType (KeepBeginTransfer config) Bool
- si_beginBurstTransfer :: KeepType (KeepBeginBurstTransfer config) Bool
- data AvalonWriteImpt (keepAddr :: Bool) (config :: AvalonMmSharedConfig) = AvalonWriteImpt {
- wi_writeData :: KeepType (KeepWriteData config) (Unsigned (DataWidth config))
- wi_addr :: KeepType keepAddr (Unsigned (AddrWidth config))
- wi_byteEnable :: KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config))
- wi_burstCount :: KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config))
- data AvalonReadReqImpt (keepAddr :: Bool) (config :: AvalonMmSharedConfig) = AvalonReadReqImpt {
- rri_addr :: KeepType keepAddr (Unsigned (AddrWidth config))
- rri_byteEnable :: KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config))
- rri_burstCount :: KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config))
- data AvalonReadImpt (config :: AvalonMmSharedConfig) = AvalonReadImpt {
- ri_readData :: KeepType (KeepReadData config) (Unsigned (DataWidth config))
- ri_endOfPacket :: KeepType (KeepEndOfPacket config) Bool
- managerOutAddNonDf :: forall (cfg :: AvalonMmManagerConfig). KnownManagerConfig cfg => KeepType (KeepFlush cfg) Bool -> AvalonManagerOut (RemoveNonDfManager cfg) -> AvalonManagerOut cfg
- managerOutRemoveNonDf :: forall (cfg :: AvalonMmManagerConfig). KnownManagerConfig cfg => AvalonManagerOut cfg -> (AvalonManagerOut (RemoveNonDfManager cfg), KeepType (KeepFlush cfg) Bool)
- managerInAddNonDf :: forall (cfg :: AvalonMmManagerConfig). KnownManagerConfig cfg => (KeepType (KeepIrqList cfg) (Unsigned 32), KeepType (KeepIrqNumber cfg) (Maybe (Unsigned 6))) -> AvalonManagerIn (RemoveNonDfManager cfg) -> AvalonManagerIn cfg
- managerInRemoveNonDf :: forall (cfg :: AvalonMmManagerConfig). KnownManagerConfig cfg => AvalonManagerIn cfg -> (AvalonManagerIn (RemoveNonDfManager cfg), (KeepType (KeepIrqList cfg) (Unsigned 32), KeepType (KeepIrqNumber cfg) (Maybe (Unsigned 6))))
- subordinateOutAddNonDf :: forall (cfg :: AvalonMmSubordinateConfig). KnownSubordinateConfig cfg => (KeepType (KeepReadyForData cfg) Bool, KeepType (KeepDataAvailable cfg) Bool, KeepType (KeepIrq cfg) Bool) -> AvalonSubordinateOut (RemoveNonDfSubordinate cfg) -> AvalonSubordinateOut cfg
- subordinateOutRemoveNonDf :: forall (cfg :: AvalonMmSubordinateConfig). KnownSubordinateConfig cfg => AvalonSubordinateOut cfg -> (AvalonSubordinateOut (RemoveNonDfSubordinate cfg), (KeepType (KeepReadyForData cfg) Bool, KeepType (KeepDataAvailable cfg) Bool, KeepType (KeepIrq cfg) Bool))
- subordinateInAddNonDf :: forall (cfg :: AvalonMmSubordinateConfig). KnownSubordinateConfig cfg => (KeepType (KeepBeginBurstTransfer cfg) Bool, KeepType (KeepBeginTransfer cfg) Bool) -> AvalonSubordinateIn (RemoveNonDfSubordinate cfg) -> AvalonSubordinateIn cfg
- subordinateInRemoveNonDf :: forall (cfg :: AvalonMmSubordinateConfig). KnownSubordinateConfig cfg => AvalonSubordinateIn cfg -> (AvalonSubordinateIn (RemoveNonDfSubordinate cfg), (KeepType (KeepBeginBurstTransfer cfg) Bool, KeepType (KeepBeginTransfer cfg) Bool))
- forceResetSanity :: forall (dom :: Domain) (config :: AvalonMmManagerConfig). (KnownDomain dom, HiddenReset dom, KnownManagerConfig config) => Circuit (AvalonMmManager dom config) (AvalonMmManager dom config)
- data AvalonMmManager (dom :: Domain) (config :: AvalonMmManagerConfig) = AvalonMmManager
- data AvalonMmSubordinate (dom :: Domain) (fixedWaitTime :: Nat) (config :: AvalonMmSubordinateConfig) = AvalonMmSubordinate
Configuration types
data AvalonMmSharedConfig Source #
Config needed for both manager and subordinate interfaces.
Bool values represent whether to keep a boolean field or not.
Nat values represent the width of a variable-sized numeric field.
Constructors
| AvalonMmSharedConfig | |
Fields
| |
data AvalonMmSubordinateConfig Source #
Config specific to Avalon MM subordinate interfaces.
Bool values represent whether to keep a boolean field or not.
Nat values represent the width of a variable-sized numeric field.
An AvalonMmSharedConfig is also included for the rest of the fields.
Constructors
| AvalonMmSubordinateConfig | |
Fields | |
data AvalonMmManagerConfig Source #
Config specific to Avalon MM manager interfaces.
Bool values represent whether to keep a boolean field or not.
Nat values represent the width of a variable-sized numeric field.
An AvalonMmSharedConfig is also included for the rest of the fields.
Constructors
| AvalonMmManagerConfig | |
Fields
| |
Grab members from AvalonMmSharedConfig at the type level
type family DataWidth (c :: AvalonMmSharedConfig) :: Nat where ... Source #
Grab dataWidth from AvalonMmSharedConfig at the type level
Equations
| DataWidth ('AvalonMmSharedConfig a _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11) = a |
type family KeepReadData (c :: AvalonMmSharedConfig) :: Bool where ... Source #
Grab keepReadData from AvalonMmSharedConfig at the type level
Equations
| KeepReadData ('AvalonMmSharedConfig _1 a _2 _3 _4 _5 _6 _7 _8 _9 _10 _11) = a |
type family KeepWriteData (c :: AvalonMmSharedConfig) :: Bool where ... Source #
Grab keepWriteData from AvalonMmSharedConfig at the type level
Equations
| KeepWriteData ('AvalonMmSharedConfig _1 _2 a _3 _4 _5 _6 _7 _8 _9 _10 _11) = a |
type family AddrWidth (c :: AvalonMmSharedConfig) :: Nat where ... Source #
Grab addrWidth from AvalonMmSharedConfig at the type level
Equations
| AddrWidth ('AvalonMmSharedConfig _1 _2 _3 a _4 _5 _6 _7 _8 _9 _10 _11) = a |
type family KeepRead (c :: AvalonMmSharedConfig) :: Bool where ... Source #
Grab keepRead from AvalonMmSharedConfig at the type level
Equations
| KeepRead ('AvalonMmSharedConfig _1 _2 _3 _4 a _5 _6 _7 _8 _9 _10 _11) = a |
type family KeepWrite (c :: AvalonMmSharedConfig) :: Bool where ... Source #
Grab keepWrite from AvalonMmSharedConfig at the type level
Equations
| KeepWrite ('AvalonMmSharedConfig _1 _2 _3 _4 _5 a _6 _7 _8 _9 _10 _11) = a |
type family ByteEnableWidth (c :: AvalonMmSharedConfig) :: Nat where ... Source #
Grab byteEnableWidth from AvalonMmSharedConfig at the type level
Equations
| ByteEnableWidth ('AvalonMmSharedConfig _1 _2 _3 _4 _5 _6 a _7 _8 _9 _10 _11) = a |
type family KeepByteEnable (c :: AvalonMmSharedConfig) :: Bool where ... Source #
Grab keepByteEnable from AvalonMmSharedConfig at the type level
Equations
| KeepByteEnable ('AvalonMmSharedConfig _1 _2 _3 _4 _5 _6 _7 a _8 _9 _10 _11) = a |
type family BurstCountWidth (c :: AvalonMmSharedConfig) :: Nat where ... Source #
Grab burstCountWidth from AvalonMmSharedConfig at the type level
Equations
| BurstCountWidth ('AvalonMmSharedConfig _1 _2 _3 _4 _5 _6 _7 _8 a _9 _10 _11) = a |
type family KeepBurstCount (c :: AvalonMmSharedConfig) :: Bool where ... Source #
Grab keepBurstCount from AvalonMmSharedConfig at the type level
Equations
| KeepBurstCount ('AvalonMmSharedConfig _1 _2 _3 _4 _5 _6 _7 _8 _9 a _10 _11) = a |
type family KeepReadDataValid (c :: AvalonMmSharedConfig) :: Bool where ... Source #
Grab keepReadDataValid from AvalonMmSharedConfig at the type level
Equations
| KeepReadDataValid ('AvalonMmSharedConfig _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 a _11) = a |
type family KeepEndOfPacket (c :: AvalonMmSharedConfig) :: Bool where ... Source #
Grab keepEndOfPacket from AvalonMmSharedConfig at the type level
Equations
| KeepEndOfPacket ('AvalonMmSharedConfig _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 a) = a |
Grab members from AvalonMmSubordinateConfig at the type level
type family KeepAddr (c :: AvalonMmSubordinateConfig) :: Bool where ... Source #
Grab keepAddr from AvalonMmSubordinateConfig at the type level
Equations
| KeepAddr ('AvalonMmSubordinateConfig a _1 _2 _3 _4 _5 _6 _7 _8 _9) = a |
type family KeepWriteByteEnable (c :: AvalonMmSubordinateConfig) :: Bool where ... Source #
Grab keepWriteByteEnable from AvalonMmSubordinateConfig at the type level
Equations
| KeepWriteByteEnable ('AvalonMmSubordinateConfig _1 a _2 _3 _4 _5 _6 _7 _8 _9) = a |
type family KeepChipSelect (c :: AvalonMmSubordinateConfig) :: Bool where ... Source #
Grab keepChipSelect from AvalonMmSubordinateConfig at the type level
Equations
| KeepChipSelect ('AvalonMmSubordinateConfig _1 _2 a _3 _4 _5 _6 _7 _8 _9) = a |
type family KeepBeginTransfer (c :: AvalonMmSubordinateConfig) :: Bool where ... Source #
Grab keepBeginTransfer from AvalonMmSubordinateConfig at the type level
Equations
| KeepBeginTransfer ('AvalonMmSubordinateConfig _1 _2 _3 a _4 _5 _6 _7 _8 _9) = a |
type family KeepWaitRequest (c :: AvalonMmSubordinateConfig) :: Bool where ... Source #
Grab keepWaitRequest from AvalonMmSubordinateConfig at the type level
Equations
| KeepWaitRequest ('AvalonMmSubordinateConfig _1 _2 _3 _4 a _5 _6 _7 _8 _9) = a |
type family KeepBeginBurstTransfer (c :: AvalonMmSubordinateConfig) :: Bool where ... Source #
Grab keepBeginBurstTransfer from AvalonMmSubordinateConfig at the type level
Equations
| KeepBeginBurstTransfer ('AvalonMmSubordinateConfig _1 _2 _3 _4 _5 a _6 _7 _8 _9) = a |
type family KeepReadyForData (c :: AvalonMmSubordinateConfig) :: Bool where ... Source #
Grab keepReadyForData from AvalonMmSubordinateConfig at the type level
Equations
| KeepReadyForData ('AvalonMmSubordinateConfig _1 _2 _3 _4 _5 _6 a _7 _8 _9) = a |
type family KeepDataAvailable (c :: AvalonMmSubordinateConfig) :: Bool where ... Source #
Grab keepDataAvailable from AvalonMmSubordinateConfig at the type level
Equations
| KeepDataAvailable ('AvalonMmSubordinateConfig _1 _2 _3 _4 _5 _6 _7 a _8 _9) = a |
type family KeepIrq (c :: AvalonMmSubordinateConfig) :: Bool where ... Source #
Grab keepIrq from AvalonMmSubordinateConfig at the type level
Equations
| KeepIrq ('AvalonMmSubordinateConfig _1 _2 _3 _4 _5 _6 _7 _8 a _9) = a |
type family SShared (c :: AvalonMmSubordinateConfig) :: AvalonMmSharedConfig where ... Source #
Grab sShared from AvalonMmSubordinateConfig at the type level
Equations
| SShared ('AvalonMmSubordinateConfig _1 _2 _3 _4 _5 _6 _7 _8 _9 a) = a |
Grab members from AvalonMmManagerConfig at the type level
type family KeepFlush (c :: AvalonMmManagerConfig) :: Bool where ... Source #
Grab keepFlush from AvalonMmManagerConfig at the type level
Equations
| KeepFlush ('AvalonMmManagerConfig a _1 _2 _3) = a |
type family KeepIrqList (c :: AvalonMmManagerConfig) :: Bool where ... Source #
Grab keepIrqList from AvalonMmManagerConfig at the type level
Equations
| KeepIrqList ('AvalonMmManagerConfig _1 a _2 _3) = a |
type family KeepIrqNumber (c :: AvalonMmManagerConfig) :: Bool where ... Source #
Grab keepIrqNumber from AvalonMmManagerConfig at the type level
Equations
| KeepIrqNumber ('AvalonMmManagerConfig _1 _2 a _3) = a |
type family MShared (c :: AvalonMmManagerConfig) :: AvalonMmSharedConfig where ... Source #
Grab mShared from AvalonMmManagerConfig at the type level
Equations
| MShared ('AvalonMmManagerConfig _1 _2 _3 a) = a |
Remove DfConv-incompatible fields from configs
type family RemoveNonDfSubordinate (cfg :: AvalonMmSubordinateConfig) :: AvalonMmSubordinateConfig where ... Source #
Disable fields of AvalonMmSubordinateConfig that are not allowed in the
DfConv instance
Equations
| RemoveNonDfSubordinate cfg = 'AvalonMmSubordinateConfig (KeepAddr cfg) (KeepWriteByteEnable cfg) (KeepChipSelect cfg) 'False (KeepWaitRequest cfg) 'False 'False 'False 'False (SShared cfg) |
type family RemoveNonDfManager (cfg :: AvalonMmManagerConfig) :: AvalonMmManagerConfig where ... Source #
Disable fields of AvalonMmManagerConfig that are not allowed in the
DfConv instance
Equations
| RemoveNonDfManager cfg = 'AvalonMmManagerConfig 'False 'False 'False (MShared cfg) |
Constraints on configs
type KnownSharedConfig (config :: AvalonMmSharedConfig) = (KnownNat (DataWidth config), KeepTypeClass (KeepReadData config), KeepTypeClass (KeepWriteData config), KnownNat (AddrWidth config), KeepTypeClass (KeepRead config), KeepTypeClass (KeepWrite config), KnownNat (ByteEnableWidth config), KeepTypeClass (KeepByteEnable config), KnownNat (BurstCountWidth config), KeepTypeClass (KeepBurstCount config), KeepTypeClass (KeepReadDataValid config), KeepTypeClass (KeepEndOfPacket config), NFDataX (KeepType (KeepReadData config) (Unsigned (DataWidth config))), NFData (KeepType (KeepReadData config) (Unsigned (DataWidth config))), ShowX (KeepType (KeepReadData config) (Unsigned (DataWidth config))), Show (KeepType (KeepReadData config) (Unsigned (DataWidth config))), Eq (KeepType (KeepReadData config) (Unsigned (DataWidth config))), NFDataX (KeepType (KeepWriteData config) (Unsigned (DataWidth config))), NFData (KeepType (KeepWriteData config) (Unsigned (DataWidth config))), ShowX (KeepType (KeepWriteData config) (Unsigned (DataWidth config))), Show (KeepType (KeepWriteData config) (Unsigned (DataWidth config))), Eq (KeepType (KeepWriteData config) (Unsigned (DataWidth config))), NFDataX (KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config))), NFData (KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config))), ShowX (KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config))), Show (KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config))), Eq (KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config))), NFDataX (KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config))), NFData (KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config))), ShowX (KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config))), Show (KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config))), Eq (KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config)))) Source #
Constraint representing a well-behaved shared config.
This class holds for every possible AvalonMmSharedConfig,
but we need to write out the class anyway so that GHC holds.
type KnownSubordinateConfig (config :: AvalonMmSubordinateConfig) = (KeepTypeClass (KeepAddr config), KeepTypeClass (KeepWriteByteEnable config), KeepTypeClass (KeepChipSelect config), KeepTypeClass (KeepBeginTransfer config), KeepTypeClass (KeepWaitRequest config), KeepTypeClass (KeepBeginBurstTransfer config), KeepTypeClass (KeepReadyForData config), KeepTypeClass (KeepDataAvailable config), KeepTypeClass (KeepIrq config), KnownSharedConfig (SShared config), NFDataX (KeepType (KeepAddr config) (Unsigned (AddrWidth (SShared config)))), NFData (KeepType (KeepAddr config) (Unsigned (AddrWidth (SShared config)))), ShowX (KeepType (KeepAddr config) (Unsigned (AddrWidth (SShared config)))), Show (KeepType (KeepAddr config) (Unsigned (AddrWidth (SShared config)))), Eq (KeepType (KeepAddr config) (Unsigned (AddrWidth (SShared config)))), NFDataX (KeepType (KeepWriteByteEnable config) (Unsigned (ByteEnableWidth (SShared config)))), NFData (KeepType (KeepWriteByteEnable config) (Unsigned (ByteEnableWidth (SShared config)))), ShowX (KeepType (KeepWriteByteEnable config) (Unsigned (ByteEnableWidth (SShared config)))), Show (KeepType (KeepWriteByteEnable config) (Unsigned (ByteEnableWidth (SShared config)))), Eq (KeepType (KeepWriteByteEnable config) (Unsigned (ByteEnableWidth (SShared config))))) Source #
Constraint representing a well-behaved subordinate config.
This class holds for every possible AvalonMmSubordinateConfig,
but we need to write out the class anyway so that GHC holds.
type KnownManagerConfig (config :: AvalonMmManagerConfig) = (KeepTypeClass (KeepFlush config), KeepTypeClass (KeepIrqList config), KeepTypeClass (KeepIrqNumber config), KnownSharedConfig (MShared config), NFDataX (KeepType (KeepIrqList config) (Unsigned 32)), NFData (KeepType (KeepIrqList config) (Unsigned 32)), ShowX (KeepType (KeepIrqList config) (Unsigned 32)), Show (KeepType (KeepIrqList config) (Unsigned 32)), Eq (KeepType (KeepIrqList config) (Unsigned 32)), NFDataX (KeepType (KeepIrqNumber config) (Maybe (Unsigned 6))), NFData (KeepType (KeepIrqNumber config) (Maybe (Unsigned 6))), ShowX (KeepType (KeepIrqNumber config) (Maybe (Unsigned 6))), Show (KeepType (KeepIrqNumber config) (Maybe (Unsigned 6))), Eq (KeepType (KeepIrqNumber config) (Maybe (Unsigned 6)))) Source #
Constraint representing a well-behaved manager config.
This class holds for every possible AvalonMmManagerConfig,
but we need to write out the class anyway so that GHC holds.
Avalon MM signals
data AvalonManagerOut (config :: AvalonMmManagerConfig) Source #
Data coming out of an Avalon MM manager port. All fields are optional and can be toggled using the config.
Constructors
| AvalonManagerOut | |
Fields
| |
Instances
data AvalonManagerIn (config :: AvalonMmManagerConfig) Source #
Data coming into an Avalon MM manager port. Almost all fields are optional and can be toggled using the config. WaitRequest is mandatory.
Constructors
| AvalonManagerIn | |
Fields
| |
Instances
| Bundle (AvalonManagerIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods bundle :: forall (dom :: Domain). Unbundled dom (AvalonManagerIn config) -> Signal dom (AvalonManagerIn config) # unbundle :: forall (dom :: Domain). Signal dom (AvalonManagerIn config) -> Unbundled dom (AvalonManagerIn config) # | |||||
| KnownManagerConfig config => NFDataX (AvalonManagerIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods deepErrorX :: String -> AvalonManagerIn config # hasUndefined :: AvalonManagerIn config -> Bool # ensureSpine :: AvalonManagerIn config -> AvalonManagerIn config # rnfX :: AvalonManagerIn config -> () # | |||||
| KnownManagerConfig config => ShowX (AvalonManagerIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods showsPrecX :: Int -> AvalonManagerIn config -> ShowS # showX :: AvalonManagerIn config -> String # showListX :: [AvalonManagerIn config] -> ShowS # | |||||
| KnownManagerConfig config => NFData (AvalonManagerIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods rnf :: AvalonManagerIn config -> () # | |||||
| Generic (AvalonManagerIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
Methods from :: AvalonManagerIn config -> Rep (AvalonManagerIn config) x # to :: Rep (AvalonManagerIn config) x -> AvalonManagerIn config # | |||||
| KnownManagerConfig config => Show (AvalonManagerIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods showsPrec :: Int -> AvalonManagerIn config -> ShowS # show :: AvalonManagerIn config -> String # showList :: [AvalonManagerIn config] -> ShowS # | |||||
| KnownManagerConfig config => Eq (AvalonManagerIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods (==) :: AvalonManagerIn config -> AvalonManagerIn config -> Bool # (/=) :: AvalonManagerIn config -> AvalonManagerIn config -> Bool # | |||||
| type Unbundled dom (AvalonManagerIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||
| type Rep (AvalonManagerIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap type Rep (AvalonManagerIn config) = D1 ('MetaData "AvalonManagerIn" "Protocols.Experimental.Avalon.MemMap" "clash-protocols-0.1-inplace" 'False) (C1 ('MetaCons "AvalonManagerIn" 'PrefixI 'True) ((S1 ('MetaSel ('Just "mi_readData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepReadData (MShared config)) (Unsigned (DataWidth (MShared config))))) :*: (S1 ('MetaSel ('Just "mi_waitRequest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "mi_readDataValid") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepReadDataValid (MShared config)) Bool)))) :*: (S1 ('MetaSel ('Just "mi_endOfPacket") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepEndOfPacket (MShared config)) Bool)) :*: (S1 ('MetaSel ('Just "mi_irqList") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepIrqList config) (Unsigned 32))) :*: S1 ('MetaSel ('Just "mi_irqNumber") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepIrqNumber config) (Maybe (Unsigned 6)))))))) | |||||
data AvalonSubordinateOut (config :: AvalonMmSubordinateConfig) Source #
Data coming out of an Avalon MM subordinate port. All fields are optional and can be toggled using the config.
Constructors
| AvalonSubordinateOut | |
Fields
| |
Instances
| Bundle (AvalonSubordinateOut config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods bundle :: forall (dom :: Domain). Unbundled dom (AvalonSubordinateOut config) -> Signal dom (AvalonSubordinateOut config) # unbundle :: forall (dom :: Domain). Signal dom (AvalonSubordinateOut config) -> Unbundled dom (AvalonSubordinateOut config) # | |||||
| KnownSubordinateConfig config => NFDataX (AvalonSubordinateOut config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods deepErrorX :: String -> AvalonSubordinateOut config # hasUndefined :: AvalonSubordinateOut config -> Bool # ensureSpine :: AvalonSubordinateOut config -> AvalonSubordinateOut config # rnfX :: AvalonSubordinateOut config -> () # | |||||
| KnownSubordinateConfig config => ShowX (AvalonSubordinateOut config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods showsPrecX :: Int -> AvalonSubordinateOut config -> ShowS # showX :: AvalonSubordinateOut config -> String # showListX :: [AvalonSubordinateOut config] -> ShowS # | |||||
| KnownSubordinateConfig config => NFData (AvalonSubordinateOut config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods rnf :: AvalonSubordinateOut config -> () # | |||||
| Generic (AvalonSubordinateOut config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
Methods from :: AvalonSubordinateOut config -> Rep (AvalonSubordinateOut config) x # to :: Rep (AvalonSubordinateOut config) x -> AvalonSubordinateOut config # | |||||
| KnownSubordinateConfig config => Show (AvalonSubordinateOut config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods showsPrec :: Int -> AvalonSubordinateOut config -> ShowS # show :: AvalonSubordinateOut config -> String # showList :: [AvalonSubordinateOut config] -> ShowS # | |||||
| KnownSubordinateConfig config => Eq (AvalonSubordinateOut config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods (==) :: AvalonSubordinateOut config -> AvalonSubordinateOut config -> Bool # (/=) :: AvalonSubordinateOut config -> AvalonSubordinateOut config -> Bool # | |||||
| type Unbundled dom (AvalonSubordinateOut config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||
| type Rep (AvalonSubordinateOut config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap type Rep (AvalonSubordinateOut config) = D1 ('MetaData "AvalonSubordinateOut" "Protocols.Experimental.Avalon.MemMap" "clash-protocols-0.1-inplace" 'False) (C1 ('MetaCons "AvalonSubordinateOut" 'PrefixI 'True) ((S1 ('MetaSel ('Just "so_readData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepReadData (SShared config)) (Unsigned (DataWidth (SShared config))))) :*: (S1 ('MetaSel ('Just "so_readDataValid") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepReadDataValid (SShared config)) Bool)) :*: S1 ('MetaSel ('Just "so_endOfPacket") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepEndOfPacket (SShared config)) Bool)))) :*: ((S1 ('MetaSel ('Just "so_waitRequest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepWaitRequest config) Bool)) :*: S1 ('MetaSel ('Just "so_readyForData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepReadyForData config) Bool))) :*: (S1 ('MetaSel ('Just "so_dataAvailable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepDataAvailable config) Bool)) :*: S1 ('MetaSel ('Just "so_irq") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepIrq config) Bool)))))) | |||||
data AvalonSubordinateIn (config :: AvalonMmSubordinateConfig) Source #
Data coming into an Avalon MM subordinate port. All fields are optional and can be toggled using the config.
Constructors
| AvalonSubordinateIn | |
Fields
| |
Instances
| Bundle (AvalonSubordinateIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods bundle :: forall (dom :: Domain). Unbundled dom (AvalonSubordinateIn config) -> Signal dom (AvalonSubordinateIn config) # unbundle :: forall (dom :: Domain). Signal dom (AvalonSubordinateIn config) -> Unbundled dom (AvalonSubordinateIn config) # | |||||
| KnownSubordinateConfig config => NFDataX (AvalonSubordinateIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods deepErrorX :: String -> AvalonSubordinateIn config # hasUndefined :: AvalonSubordinateIn config -> Bool # ensureSpine :: AvalonSubordinateIn config -> AvalonSubordinateIn config # rnfX :: AvalonSubordinateIn config -> () # | |||||
| KnownSubordinateConfig config => ShowX (AvalonSubordinateIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods showsPrecX :: Int -> AvalonSubordinateIn config -> ShowS # showX :: AvalonSubordinateIn config -> String # showListX :: [AvalonSubordinateIn config] -> ShowS # | |||||
| KnownSubordinateConfig config => NFData (AvalonSubordinateIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods rnf :: AvalonSubordinateIn config -> () # | |||||
| Generic (AvalonSubordinateIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
Methods from :: AvalonSubordinateIn config -> Rep (AvalonSubordinateIn config) x # to :: Rep (AvalonSubordinateIn config) x -> AvalonSubordinateIn config # | |||||
| KnownSubordinateConfig config => Show (AvalonSubordinateIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods showsPrec :: Int -> AvalonSubordinateIn config -> ShowS # show :: AvalonSubordinateIn config -> String # showList :: [AvalonSubordinateIn config] -> ShowS # | |||||
| KnownSubordinateConfig config => Eq (AvalonSubordinateIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods (==) :: AvalonSubordinateIn config -> AvalonSubordinateIn config -> Bool # (/=) :: AvalonSubordinateIn config -> AvalonSubordinateIn config -> Bool # | |||||
| type Unbundled dom (AvalonSubordinateIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||
| type Rep (AvalonSubordinateIn config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap type Rep (AvalonSubordinateIn config) = D1 ('MetaData "AvalonSubordinateIn" "Protocols.Experimental.Avalon.MemMap" "clash-protocols-0.1-inplace" 'False) (C1 ('MetaCons "AvalonSubordinateIn" 'PrefixI 'True) (((S1 ('MetaSel ('Just "si_writeData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepWriteData (SShared config)) (Unsigned (DataWidth (SShared config))))) :*: S1 ('MetaSel ('Just "si_addr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepAddr config) (Unsigned (AddrWidth (SShared config)))))) :*: (S1 ('MetaSel ('Just "si_read") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepRead (SShared config)) Bool)) :*: (S1 ('MetaSel ('Just "si_write") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepWrite (SShared config)) Bool)) :*: S1 ('MetaSel ('Just "si_byteEnable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepByteEnable (SShared config)) (Unsigned (ByteEnableWidth (SShared config)))))))) :*: ((S1 ('MetaSel ('Just "si_burstCount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepBurstCount (SShared config)) (Unsigned (BurstCountWidth (SShared config))))) :*: S1 ('MetaSel ('Just "si_writeByteEnable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepWriteByteEnable config) (Unsigned (ByteEnableWidth (SShared config)))))) :*: (S1 ('MetaSel ('Just "si_chipSelect") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepChipSelect config) Bool)) :*: (S1 ('MetaSel ('Just "si_beginTransfer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepBeginTransfer config) Bool)) :*: S1 ('MetaSel ('Just "si_beginBurstTransfer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepBeginBurstTransfer config) Bool))))))) | |||||
Important parts of signals, used as payload in DfConv
data AvalonWriteImpt (keepAddr :: Bool) (config :: AvalonMmSharedConfig) Source #
Important data pertaining to write transfers.
Can be grabbed from AvalonManagerOut or AvalonSubordinateIn.
Constructors
| AvalonWriteImpt | |
Fields
| |
Instances
| Bundle (AvalonWriteImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods bundle :: forall (dom :: Domain). Unbundled dom (AvalonWriteImpt keepAddr config) -> Signal dom (AvalonWriteImpt keepAddr config) # unbundle :: forall (dom :: Domain). Signal dom (AvalonWriteImpt keepAddr config) -> Unbundled dom (AvalonWriteImpt keepAddr config) # | |||||
| (KnownSharedConfig config, NFDataX (KeepType keepAddr (Unsigned (AddrWidth config))), KeepTypeClass keepAddr) => NFDataX (AvalonWriteImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods deepErrorX :: String -> AvalonWriteImpt keepAddr config # hasUndefined :: AvalonWriteImpt keepAddr config -> Bool # ensureSpine :: AvalonWriteImpt keepAddr config -> AvalonWriteImpt keepAddr config # rnfX :: AvalonWriteImpt keepAddr config -> () # | |||||
| (KnownSharedConfig config, ShowX (KeepType keepAddr (Unsigned (AddrWidth config))), KeepTypeClass keepAddr) => ShowX (AvalonWriteImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods showsPrecX :: Int -> AvalonWriteImpt keepAddr config -> ShowS # showX :: AvalonWriteImpt keepAddr config -> String # showListX :: [AvalonWriteImpt keepAddr config] -> ShowS # | |||||
| (KnownSharedConfig config, NFData (KeepType keepAddr (Unsigned (AddrWidth config))), KeepTypeClass keepAddr) => NFData (AvalonWriteImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods rnf :: AvalonWriteImpt keepAddr config -> () # | |||||
| Generic (AvalonWriteImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
Methods from :: AvalonWriteImpt keepAddr config -> Rep (AvalonWriteImpt keepAddr config) x # to :: Rep (AvalonWriteImpt keepAddr config) x -> AvalonWriteImpt keepAddr config # | |||||
| (KnownSharedConfig config, Show (KeepType keepAddr (Unsigned (AddrWidth config))), KeepTypeClass keepAddr) => Show (AvalonWriteImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods showsPrec :: Int -> AvalonWriteImpt keepAddr config -> ShowS # show :: AvalonWriteImpt keepAddr config -> String # showList :: [AvalonWriteImpt keepAddr config] -> ShowS # | |||||
| (KnownSharedConfig config, Eq (KeepType keepAddr (Unsigned (AddrWidth config))), KeepTypeClass keepAddr) => Eq (AvalonWriteImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods (==) :: AvalonWriteImpt keepAddr config -> AvalonWriteImpt keepAddr config -> Bool # (/=) :: AvalonWriteImpt keepAddr config -> AvalonWriteImpt keepAddr config -> Bool # | |||||
| type Unbundled dom (AvalonWriteImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||
| type Rep (AvalonWriteImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap type Rep (AvalonWriteImpt keepAddr config) = D1 ('MetaData "AvalonWriteImpt" "Protocols.Experimental.Avalon.MemMap" "clash-protocols-0.1-inplace" 'False) (C1 ('MetaCons "AvalonWriteImpt" 'PrefixI 'True) ((S1 ('MetaSel ('Just "wi_writeData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepWriteData config) (Unsigned (DataWidth config)))) :*: S1 ('MetaSel ('Just "wi_addr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType keepAddr (Unsigned (AddrWidth config))))) :*: (S1 ('MetaSel ('Just "wi_byteEnable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config)))) :*: S1 ('MetaSel ('Just "wi_burstCount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config))))))) | |||||
data AvalonReadReqImpt (keepAddr :: Bool) (config :: AvalonMmSharedConfig) Source #
Important data pertaining to read requests.
Can be grabbed from AvalonManagerOut or AvalonSubordinateIn.
Constructors
| AvalonReadReqImpt | |
Fields
| |
Instances
| Bundle (AvalonReadReqImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods bundle :: forall (dom :: Domain). Unbundled dom (AvalonReadReqImpt keepAddr config) -> Signal dom (AvalonReadReqImpt keepAddr config) # unbundle :: forall (dom :: Domain). Signal dom (AvalonReadReqImpt keepAddr config) -> Unbundled dom (AvalonReadReqImpt keepAddr config) # | |||||
| (KnownSharedConfig config, NFDataX (KeepType keepAddr (Unsigned (AddrWidth config))), KeepTypeClass keepAddr) => NFDataX (AvalonReadReqImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods deepErrorX :: String -> AvalonReadReqImpt keepAddr config # hasUndefined :: AvalonReadReqImpt keepAddr config -> Bool # ensureSpine :: AvalonReadReqImpt keepAddr config -> AvalonReadReqImpt keepAddr config # rnfX :: AvalonReadReqImpt keepAddr config -> () # | |||||
| (KnownSharedConfig config, ShowX (KeepType keepAddr (Unsigned (AddrWidth config))), KeepTypeClass keepAddr) => ShowX (AvalonReadReqImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods showsPrecX :: Int -> AvalonReadReqImpt keepAddr config -> ShowS # showX :: AvalonReadReqImpt keepAddr config -> String # showListX :: [AvalonReadReqImpt keepAddr config] -> ShowS # | |||||
| (KnownSharedConfig config, NFData (KeepType keepAddr (Unsigned (AddrWidth config))), KeepTypeClass keepAddr) => NFData (AvalonReadReqImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods rnf :: AvalonReadReqImpt keepAddr config -> () # | |||||
| Generic (AvalonReadReqImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
Methods from :: AvalonReadReqImpt keepAddr config -> Rep (AvalonReadReqImpt keepAddr config) x # to :: Rep (AvalonReadReqImpt keepAddr config) x -> AvalonReadReqImpt keepAddr config # | |||||
| (KnownSharedConfig config, Show (KeepType keepAddr (Unsigned (AddrWidth config))), KeepTypeClass keepAddr) => Show (AvalonReadReqImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods showsPrec :: Int -> AvalonReadReqImpt keepAddr config -> ShowS # show :: AvalonReadReqImpt keepAddr config -> String # showList :: [AvalonReadReqImpt keepAddr config] -> ShowS # | |||||
| (KnownSharedConfig config, Eq (KeepType keepAddr (Unsigned (AddrWidth config))), KeepTypeClass keepAddr) => Eq (AvalonReadReqImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods (==) :: AvalonReadReqImpt keepAddr config -> AvalonReadReqImpt keepAddr config -> Bool # (/=) :: AvalonReadReqImpt keepAddr config -> AvalonReadReqImpt keepAddr config -> Bool # | |||||
| type Unbundled dom (AvalonReadReqImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap type Unbundled dom (AvalonReadReqImpt keepAddr config) = Signal dom (AvalonReadReqImpt keepAddr config) | |||||
| type Rep (AvalonReadReqImpt keepAddr config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap type Rep (AvalonReadReqImpt keepAddr config) = D1 ('MetaData "AvalonReadReqImpt" "Protocols.Experimental.Avalon.MemMap" "clash-protocols-0.1-inplace" 'False) (C1 ('MetaCons "AvalonReadReqImpt" 'PrefixI 'True) (S1 ('MetaSel ('Just "rri_addr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType keepAddr (Unsigned (AddrWidth config)))) :*: (S1 ('MetaSel ('Just "rri_byteEnable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepByteEnable config) (Unsigned (ByteEnableWidth config)))) :*: S1 ('MetaSel ('Just "rri_burstCount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepBurstCount config) (Unsigned (BurstCountWidth config))))))) | |||||
data AvalonReadImpt (config :: AvalonMmSharedConfig) Source #
Important data pertaining to subordinate-to-master read data.
Can be grabbed from AvalonManagerIn or AvalonSubordinateOut.
Constructors
| AvalonReadImpt | |
Fields
| |
Instances
| Bundle (AvalonReadImpt config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods bundle :: forall (dom :: Domain). Unbundled dom (AvalonReadImpt config) -> Signal dom (AvalonReadImpt config) # unbundle :: forall (dom :: Domain). Signal dom (AvalonReadImpt config) -> Unbundled dom (AvalonReadImpt config) # | |||||
| KnownSharedConfig config => NFDataX (AvalonReadImpt config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods deepErrorX :: String -> AvalonReadImpt config # hasUndefined :: AvalonReadImpt config -> Bool # ensureSpine :: AvalonReadImpt config -> AvalonReadImpt config # rnfX :: AvalonReadImpt config -> () # | |||||
| KnownSharedConfig config => ShowX (AvalonReadImpt config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods showsPrecX :: Int -> AvalonReadImpt config -> ShowS # showX :: AvalonReadImpt config -> String # showListX :: [AvalonReadImpt config] -> ShowS # | |||||
| KnownSharedConfig config => NFData (AvalonReadImpt config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods rnf :: AvalonReadImpt config -> () # | |||||
| Generic (AvalonReadImpt config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
Methods from :: AvalonReadImpt config -> Rep (AvalonReadImpt config) x # to :: Rep (AvalonReadImpt config) x -> AvalonReadImpt config # | |||||
| KnownSharedConfig config => Show (AvalonReadImpt config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods showsPrec :: Int -> AvalonReadImpt config -> ShowS # show :: AvalonReadImpt config -> String # showList :: [AvalonReadImpt config] -> ShowS # | |||||
| KnownSharedConfig config => Eq (AvalonReadImpt config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap Methods (==) :: AvalonReadImpt config -> AvalonReadImpt config -> Bool # (/=) :: AvalonReadImpt config -> AvalonReadImpt config -> Bool # | |||||
| type Unbundled dom (AvalonReadImpt config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||
| type Rep (AvalonReadImpt config) Source # | |||||
Defined in Protocols.Experimental.Avalon.MemMap type Rep (AvalonReadImpt config) = D1 ('MetaData "AvalonReadImpt" "Protocols.Experimental.Avalon.MemMap" "clash-protocols-0.1-inplace" 'False) (C1 ('MetaCons "AvalonReadImpt" 'PrefixI 'True) (S1 ('MetaSel ('Just "ri_readData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepReadData config) (Unsigned (DataWidth config)))) :*: S1 ('MetaSel ('Just "ri_endOfPacket") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (KeepType (KeepEndOfPacket config) Bool)))) | |||||
Helper functions
managerOutAddNonDf :: forall (cfg :: AvalonMmManagerConfig). KnownManagerConfig cfg => KeepType (KeepFlush cfg) Bool -> AvalonManagerOut (RemoveNonDfManager cfg) -> AvalonManagerOut cfg Source #
Given an AvalonManagerOut which is compatible with DfConv, add
back in the parts which are not compatible with DfConv.
managerOutRemoveNonDf :: forall (cfg :: AvalonMmManagerConfig). KnownManagerConfig cfg => AvalonManagerOut cfg -> (AvalonManagerOut (RemoveNonDfManager cfg), KeepType (KeepFlush cfg) Bool) Source #
Given an AvalonManagerOut, separate out the parts which are not
compatible with DfConv.
managerInAddNonDf :: forall (cfg :: AvalonMmManagerConfig). KnownManagerConfig cfg => (KeepType (KeepIrqList cfg) (Unsigned 32), KeepType (KeepIrqNumber cfg) (Maybe (Unsigned 6))) -> AvalonManagerIn (RemoveNonDfManager cfg) -> AvalonManagerIn cfg Source #
Given an AvalonManagerIn which is compatible with DfConv, add
back in the parts which are not compatible with DfConv.
managerInRemoveNonDf :: forall (cfg :: AvalonMmManagerConfig). KnownManagerConfig cfg => AvalonManagerIn cfg -> (AvalonManagerIn (RemoveNonDfManager cfg), (KeepType (KeepIrqList cfg) (Unsigned 32), KeepType (KeepIrqNumber cfg) (Maybe (Unsigned 6)))) Source #
Given an AvalonManagerIn, separate out the parts which are not
compatible with DfConv.
subordinateOutAddNonDf :: forall (cfg :: AvalonMmSubordinateConfig). KnownSubordinateConfig cfg => (KeepType (KeepReadyForData cfg) Bool, KeepType (KeepDataAvailable cfg) Bool, KeepType (KeepIrq cfg) Bool) -> AvalonSubordinateOut (RemoveNonDfSubordinate cfg) -> AvalonSubordinateOut cfg Source #
Given an AvalonSubordinateOut which is compatible with DfConv,
add back in the parts which are not compatible with DfConv.
subordinateOutRemoveNonDf :: forall (cfg :: AvalonMmSubordinateConfig). KnownSubordinateConfig cfg => AvalonSubordinateOut cfg -> (AvalonSubordinateOut (RemoveNonDfSubordinate cfg), (KeepType (KeepReadyForData cfg) Bool, KeepType (KeepDataAvailable cfg) Bool, KeepType (KeepIrq cfg) Bool)) Source #
Given an AvalonSubordinateOut, separate out the parts which are not
compatible with DfConv.
subordinateInAddNonDf :: forall (cfg :: AvalonMmSubordinateConfig). KnownSubordinateConfig cfg => (KeepType (KeepBeginBurstTransfer cfg) Bool, KeepType (KeepBeginTransfer cfg) Bool) -> AvalonSubordinateIn (RemoveNonDfSubordinate cfg) -> AvalonSubordinateIn cfg Source #
Given an AvalonSubordinateIn which is compatible with DfConv,
add back in the parts which are not compatible with DfConv.
subordinateInRemoveNonDf :: forall (cfg :: AvalonMmSubordinateConfig). KnownSubordinateConfig cfg => AvalonSubordinateIn cfg -> (AvalonSubordinateIn (RemoveNonDfSubordinate cfg), (KeepType (KeepBeginBurstTransfer cfg) Bool, KeepType (KeepBeginTransfer cfg) Bool)) Source #
Given an AvalonSubordinateIn, separate out the parts which are not
compatible with DfConv.
forceResetSanity :: forall (dom :: Domain) (config :: AvalonMmManagerConfig). (KnownDomain dom, HiddenReset dom, KnownManagerConfig config) => Circuit (AvalonMmManager dom config) (AvalonMmManager dom config) Source #
Force a nack on the backward channel and no data on the forward channel if reset is asserted.
Protocols
data AvalonMmManager (dom :: Domain) (config :: AvalonMmManagerConfig) Source #
Datatype for the manager end of the Avalon memory-mapped protocol.
Constructors
| AvalonMmManager |
Instances
| (KnownManagerConfig config, config ~ RemoveNonDfManager config) => DfConv (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
Methods toDfCircuit :: Proxy (AvalonMmManager dom config) -> Circuit (Df (Dom (AvalonMmManager dom config)) (FwdPayload (AvalonMmManager dom config)), Reverse (Df (Dom (AvalonMmManager dom config)) (BwdPayload (AvalonMmManager dom config)))) (AvalonMmManager dom config) Source # fromDfCircuit :: Proxy (AvalonMmManager dom config) -> Circuit (AvalonMmManager dom config) (Df (Dom (AvalonMmManager dom config)) (FwdPayload (AvalonMmManager dom config)), Reverse (Df (Dom (AvalonMmManager dom config)) (BwdPayload (AvalonMmManager dom config)))) Source # | |||||||||||||
| KnownManagerConfig config => Backpressure (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap Methods boolsToBwd :: Proxy (AvalonMmManager dom config) -> [Bool] -> Bwd (AvalonMmManager dom config) Source # | |||||||||||||
| (KnownManagerConfig config, KnownDomain dom, config ~ RemoveNonDfManager config) => Simulate (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
Methods simToSigFwd :: Proxy (AvalonMmManager dom config) -> SimulateFwdType (AvalonMmManager dom config) -> Fwd (AvalonMmManager dom config) Source # simToSigBwd :: Proxy (AvalonMmManager dom config) -> SimulateBwdType (AvalonMmManager dom config) -> Bwd (AvalonMmManager dom config) Source # sigToSimFwd :: Proxy (AvalonMmManager dom config) -> Fwd (AvalonMmManager dom config) -> SimulateFwdType (AvalonMmManager dom config) Source # sigToSimBwd :: Proxy (AvalonMmManager dom config) -> Bwd (AvalonMmManager dom config) -> SimulateBwdType (AvalonMmManager dom config) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (AvalonMmManager dom config)) (StallAck, [Int]) -> Circuit (AvalonMmManager dom config) (AvalonMmManager dom config) Source # | |||||||||||||
| KnownManagerConfig config => IdleCircuit (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap Methods idleFwd :: Proxy (AvalonMmManager dom config) -> Fwd (AvalonMmManager dom config) Source # idleBwd :: Proxy (AvalonMmManager dom config) -> Bwd (AvalonMmManager dom config) Source # | |||||||||||||
| Protocol (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
| |||||||||||||
| type BwdPayload (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||
| type Dom (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||
| type FwdPayload (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap type FwdPayload (AvalonMmManager dom config) = Either (AvalonReadReqImpt 'True (MShared config)) (AvalonWriteImpt 'True (MShared config)) | |||||||||||||
| type SimulateBwdType (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||
| type SimulateChannels (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||
| type SimulateFwdType (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||
| type Bwd (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||
| type Fwd (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||
data AvalonMmSubordinate (dom :: Domain) (fixedWaitTime :: Nat) (config :: AvalonMmSubordinateConfig) Source #
Datatype for the subordinate end of the Avalon memory-mapped protocol.
Constructors
| AvalonMmSubordinate |
Instances
| (KnownSubordinateConfig config, config ~ RemoveNonDfSubordinate config) => DfConv (AvalonMmSubordinate dom 0 config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
Methods toDfCircuit :: Proxy (AvalonMmSubordinate dom 0 config) -> Circuit (Df (Dom (AvalonMmSubordinate dom 0 config)) (FwdPayload (AvalonMmSubordinate dom 0 config)), Reverse (Df (Dom (AvalonMmSubordinate dom 0 config)) (BwdPayload (AvalonMmSubordinate dom 0 config)))) (AvalonMmSubordinate dom 0 config) Source # fromDfCircuit :: Proxy (AvalonMmSubordinate dom 0 config) -> Circuit (AvalonMmSubordinate dom 0 config) (Df (Dom (AvalonMmSubordinate dom 0 config)) (FwdPayload (AvalonMmSubordinate dom 0 config)), Reverse (Df (Dom (AvalonMmSubordinate dom 0 config)) (BwdPayload (AvalonMmSubordinate dom 0 config)))) Source # | |||||||||||||
| (KnownSubordinateConfig config, KeepWaitRequest config ~ 'True) => Backpressure (AvalonMmSubordinate dom 0 config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap Methods boolsToBwd :: Proxy (AvalonMmSubordinate dom 0 config) -> [Bool] -> Bwd (AvalonMmSubordinate dom 0 config) Source # | |||||||||||||
| (KnownSubordinateConfig config, KnownDomain dom, config ~ RemoveNonDfSubordinate config) => Simulate (AvalonMmSubordinate dom 0 config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
Methods simToSigFwd :: Proxy (AvalonMmSubordinate dom 0 config) -> SimulateFwdType (AvalonMmSubordinate dom 0 config) -> Fwd (AvalonMmSubordinate dom 0 config) Source # simToSigBwd :: Proxy (AvalonMmSubordinate dom 0 config) -> SimulateBwdType (AvalonMmSubordinate dom 0 config) -> Bwd (AvalonMmSubordinate dom 0 config) Source # sigToSimFwd :: Proxy (AvalonMmSubordinate dom 0 config) -> Fwd (AvalonMmSubordinate dom 0 config) -> SimulateFwdType (AvalonMmSubordinate dom 0 config) Source # sigToSimBwd :: Proxy (AvalonMmSubordinate dom 0 config) -> Bwd (AvalonMmSubordinate dom 0 config) -> SimulateBwdType (AvalonMmSubordinate dom 0 config) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (AvalonMmSubordinate dom 0 config)) (StallAck, [Int]) -> Circuit (AvalonMmSubordinate dom 0 config) (AvalonMmSubordinate dom 0 config) Source # | |||||||||||||
| KnownSubordinateConfig config => IdleCircuit (AvalonMmSubordinate dom fixedWaitTime config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap Methods idleFwd :: Proxy (AvalonMmSubordinate dom fixedWaitTime config) -> Fwd (AvalonMmSubordinate dom fixedWaitTime config) Source # idleBwd :: Proxy (AvalonMmSubordinate dom fixedWaitTime config) -> Bwd (AvalonMmSubordinate dom fixedWaitTime config) Source # | |||||||||||||
| Protocol (AvalonMmSubordinate dom fixedWaitTime config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
| |||||||||||||
| type BwdPayload (AvalonMmSubordinate dom 0 config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||
| type Dom (AvalonMmSubordinate dom 0 config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||
| type FwdPayload (AvalonMmSubordinate dom 0 config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap type FwdPayload (AvalonMmSubordinate dom 0 config) = Either (AvalonReadReqImpt (KeepAddr config) (SShared config)) (AvalonWriteImpt (KeepAddr config) (SShared config)) | |||||||||||||
| type SimulateBwdType (AvalonMmSubordinate dom 0 config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||
| type SimulateChannels (AvalonMmSubordinate dom 0 config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||
| type SimulateFwdType (AvalonMmSubordinate dom 0 config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||
| type Bwd (AvalonMmSubordinate dom fixedWaitTime config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||
| type Fwd (AvalonMmSubordinate dom fixedWaitTime config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap | |||||||||||||