clash-protocols
Safe HaskellNone
LanguageGHC2021

Protocols.Experimental.Avalon.MemMap

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

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.

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.

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.

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 #

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 #

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 RemoveNonDfManager (cfg :: AvalonMmManagerConfig) :: AvalonMmManagerConfig where ... Source #

Disable fields of AvalonMmManagerConfig that are not allowed in the DfConv instance

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.

Instances

Instances details
Bundle (AvalonManagerOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Methods

bundle :: forall (dom :: Domain). Unbundled dom (AvalonManagerOut config) -> Signal dom (AvalonManagerOut config) #

unbundle :: forall (dom :: Domain). Signal dom (AvalonManagerOut config) -> Unbundled dom (AvalonManagerOut config) #

KnownManagerConfig config => NFDataX (AvalonManagerOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

KnownManagerConfig config => ShowX (AvalonManagerOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

KnownManagerConfig config => NFData (AvalonManagerOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Methods

rnf :: AvalonManagerOut config -> () #

Generic (AvalonManagerOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type Rep (AvalonManagerOut config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Methods

from :: AvalonManagerOut config -> Rep (AvalonManagerOut config) x #

to :: Rep (AvalonManagerOut config) x -> AvalonManagerOut config #

KnownManagerConfig config => Show (AvalonManagerOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Methods

showsPrec :: Int -> AvalonManagerOut config -> ShowS #

show :: AvalonManagerOut config -> String #

showList :: [AvalonManagerOut config] -> ShowS #

KnownManagerConfig config => Eq (AvalonManagerOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Methods

(==) :: AvalonManagerOut config -> AvalonManagerOut config -> Bool #

(/=) :: AvalonManagerOut config -> AvalonManagerOut config -> Bool #

type Unbundled dom (AvalonManagerOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Unbundled dom (AvalonManagerOut config) = Signal dom (AvalonManagerOut config)
type Rep (AvalonManagerOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

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.

Instances

Instances details
Bundle (AvalonManagerIn config) Source # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

KnownManagerConfig config => ShowX (AvalonManagerIn config) Source # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Methods

rnf :: AvalonManagerIn config -> () #

Generic (AvalonManagerIn config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type Rep (AvalonManagerIn config) 
Instance details

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))))))))

Methods

from :: AvalonManagerIn config -> Rep (AvalonManagerIn config) x #

to :: Rep (AvalonManagerIn config) x -> AvalonManagerIn config #

KnownManagerConfig config => Show (AvalonManagerIn config) Source # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Methods

(==) :: AvalonManagerIn config -> AvalonManagerIn config -> Bool #

(/=) :: AvalonManagerIn config -> AvalonManagerIn config -> Bool #

type Unbundled dom (AvalonManagerIn config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Unbundled dom (AvalonManagerIn config) = Signal dom (AvalonManagerIn config)
type Rep (AvalonManagerIn config) Source # 
Instance details

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.

Instances

Instances details
Bundle (AvalonSubordinateOut config) Source # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

KnownSubordinateConfig config => ShowX (AvalonSubordinateOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

KnownSubordinateConfig config => NFData (AvalonSubordinateOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Methods

rnf :: AvalonSubordinateOut config -> () #

Generic (AvalonSubordinateOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type Rep (AvalonSubordinateOut config) 
Instance details

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))))))

Methods

from :: AvalonSubordinateOut config -> Rep (AvalonSubordinateOut config) x #

to :: Rep (AvalonSubordinateOut config) x -> AvalonSubordinateOut config #

KnownSubordinateConfig config => Show (AvalonSubordinateOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

KnownSubordinateConfig config => Eq (AvalonSubordinateOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Unbundled dom (AvalonSubordinateOut config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Rep (AvalonSubordinateOut config) Source # 
Instance details

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.

Instances

Instances details
Bundle (AvalonSubordinateIn config) Source # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

KnownSubordinateConfig config => ShowX (AvalonSubordinateIn config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

KnownSubordinateConfig config => NFData (AvalonSubordinateIn config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Methods

rnf :: AvalonSubordinateIn config -> () #

Generic (AvalonSubordinateIn config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type Rep (AvalonSubordinateIn config) 
Instance details

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)))))))

Methods

from :: AvalonSubordinateIn config -> Rep (AvalonSubordinateIn config) x #

to :: Rep (AvalonSubordinateIn config) x -> AvalonSubordinateIn config #

KnownSubordinateConfig config => Show (AvalonSubordinateIn config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

KnownSubordinateConfig config => Eq (AvalonSubordinateIn config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Unbundled dom (AvalonSubordinateIn config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Unbundled dom (AvalonSubordinateIn config) = Signal dom (AvalonSubordinateIn config)
type Rep (AvalonSubordinateIn config) Source # 
Instance details

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.

Instances

Instances details
Bundle (AvalonWriteImpt keepAddr config) Source # 
Instance details

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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Methods

rnf :: AvalonWriteImpt keepAddr config -> () #

Generic (AvalonWriteImpt keepAddr config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type Rep (AvalonWriteImpt keepAddr config) 
Instance details

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)))))))

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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Unbundled dom (AvalonWriteImpt keepAddr config) = Signal dom (AvalonWriteImpt keepAddr config)
type Rep (AvalonWriteImpt keepAddr config) Source # 
Instance details

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.

Instances

Instances details
Bundle (AvalonReadReqImpt keepAddr config) Source # 
Instance details

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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Methods

rnf :: AvalonReadReqImpt keepAddr config -> () #

Generic (AvalonReadReqImpt keepAddr config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type Rep (AvalonReadReqImpt keepAddr config) 
Instance details

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)))))))

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 # 
Instance details

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 # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Unbundled dom (AvalonReadReqImpt keepAddr config) = Signal dom (AvalonReadReqImpt keepAddr config)
type Rep (AvalonReadReqImpt keepAddr config) Source # 
Instance details

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.

Instances

Instances details
Bundle (AvalonReadImpt config) Source # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

KnownSharedConfig config => ShowX (AvalonReadImpt config) Source # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Methods

rnf :: AvalonReadImpt config -> () #

Generic (AvalonReadImpt config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type Rep (AvalonReadImpt config) 
Instance details

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))))

Methods

from :: AvalonReadImpt config -> Rep (AvalonReadImpt config) x #

to :: Rep (AvalonReadImpt config) x -> AvalonReadImpt config #

KnownSharedConfig config => Show (AvalonReadImpt config) Source # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Methods

(==) :: AvalonReadImpt config -> AvalonReadImpt config -> Bool #

(/=) :: AvalonReadImpt config -> AvalonReadImpt config -> Bool #

type Unbundled dom (AvalonReadImpt config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Unbundled dom (AvalonReadImpt config) = Signal dom (AvalonReadImpt config)
type Rep (AvalonReadImpt config) Source # 
Instance details

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.

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.

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

Instances details
(KnownManagerConfig config, config ~ RemoveNonDfManager config) => DfConv (AvalonMmManager dom config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type Dom (AvalonMmManager dom config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Dom (AvalonMmManager dom config) = dom
type BwdPayload (AvalonMmManager dom config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type BwdPayload (AvalonMmManager dom config) = AvalonReadImpt (MShared config)
type FwdPayload (AvalonMmManager dom config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

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 # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type SimulateFwdType (AvalonMmManager dom config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type SimulateFwdType (AvalonMmManager dom config) = [AvalonManagerOut config]
type SimulateBwdType (AvalonMmManager dom config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type SimulateBwdType (AvalonMmManager dom config) = [AvalonManagerIn config]
type SimulateChannels (AvalonMmManager dom config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type SimulateChannels (AvalonMmManager dom config) = 1
KnownManagerConfig config => IdleCircuit (AvalonMmManager dom config) Source # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type Fwd (AvalonMmManager dom config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Fwd (AvalonMmManager dom config) = Signal dom (AvalonManagerOut config)
type Bwd (AvalonMmManager dom config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Bwd (AvalonMmManager dom config) = Signal dom (AvalonManagerIn config)
type BwdPayload (AvalonMmManager dom config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type BwdPayload (AvalonMmManager dom config) = AvalonReadImpt (MShared config)
type Dom (AvalonMmManager dom config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Dom (AvalonMmManager dom config) = dom
type FwdPayload (AvalonMmManager dom config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type SimulateBwdType (AvalonMmManager dom config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type SimulateBwdType (AvalonMmManager dom config) = [AvalonManagerIn config]
type SimulateChannels (AvalonMmManager dom config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type SimulateChannels (AvalonMmManager dom config) = 1
type SimulateFwdType (AvalonMmManager dom config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type SimulateFwdType (AvalonMmManager dom config) = [AvalonManagerOut config]
type Bwd (AvalonMmManager dom config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Bwd (AvalonMmManager dom config) = Signal dom (AvalonManagerIn config)
type Fwd (AvalonMmManager dom config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Fwd (AvalonMmManager dom config) = Signal dom (AvalonManagerOut config)

data AvalonMmSubordinate (dom :: Domain) (fixedWaitTime :: Nat) (config :: AvalonMmSubordinateConfig) Source #

Datatype for the subordinate end of the Avalon memory-mapped protocol.

Constructors

AvalonMmSubordinate 

Instances

Instances details
(KnownSubordinateConfig config, config ~ RemoveNonDfSubordinate config) => DfConv (AvalonMmSubordinate dom 0 config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type Dom (AvalonMmSubordinate dom 0 config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Dom (AvalonMmSubordinate dom 0 config) = dom
type BwdPayload (AvalonMmSubordinate dom 0 config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type BwdPayload (AvalonMmSubordinate dom 0 config) = AvalonReadImpt (SShared config)
type FwdPayload (AvalonMmSubordinate dom 0 config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type FwdPayload (AvalonMmSubordinate dom 0 config) = Either (AvalonReadReqImpt (KeepAddr config) (SShared config)) (AvalonWriteImpt (KeepAddr config) (SShared config))

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 # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type SimulateFwdType (AvalonMmSubordinate dom 0 config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type SimulateBwdType (AvalonMmSubordinate dom 0 config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type SimulateChannels (AvalonMmSubordinate dom 0 config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type SimulateChannels (AvalonMmSubordinate dom 0 config) = 1
KnownSubordinateConfig config => IdleCircuit (AvalonMmSubordinate dom fixedWaitTime config) Source # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type Fwd (AvalonMmSubordinate dom fixedWaitTime config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Fwd (AvalonMmSubordinate dom fixedWaitTime config) = Signal dom (AvalonSubordinateIn config)
type Bwd (AvalonMmSubordinate dom fixedWaitTime config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Bwd (AvalonMmSubordinate dom fixedWaitTime config) = Signal dom (AvalonSubordinateOut config)
type BwdPayload (AvalonMmSubordinate dom 0 config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type BwdPayload (AvalonMmSubordinate dom 0 config) = AvalonReadImpt (SShared config)
type Dom (AvalonMmSubordinate dom 0 config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Dom (AvalonMmSubordinate dom 0 config) = dom
type FwdPayload (AvalonMmSubordinate dom 0 config) Source # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type SimulateChannels (AvalonMmSubordinate dom 0 config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type SimulateChannels (AvalonMmSubordinate dom 0 config) = 1
type SimulateFwdType (AvalonMmSubordinate dom 0 config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Bwd (AvalonMmSubordinate dom fixedWaitTime config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Bwd (AvalonMmSubordinate dom fixedWaitTime config) = Signal dom (AvalonSubordinateOut config)
type Fwd (AvalonMmSubordinate dom fixedWaitTime config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Fwd (AvalonMmSubordinate dom fixedWaitTime config) = Signal dom (AvalonSubordinateIn config)