| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Protocols.Experimental.Avalon.Stream
Contents
Description
Types and instance declarations for the Avalon Stream protocol.
Synopsis
- data AvalonStreamConfig = AvalonStreamConfig {}
- type family ChannelWidth (conf :: AvalonStreamConfig) :: Nat where ...
- type family ErrorWidth (conf :: AvalonStreamConfig) :: Nat where ...
- type family KeepStartOfPacket (conf :: AvalonStreamConfig) :: Bool where ...
- type family KeepEndOfPacket (conf :: AvalonStreamConfig) :: Bool where ...
- type family EmptyWidth (conf :: AvalonStreamConfig) :: Nat where ...
- type family ReadyLatency (conf :: AvalonStreamConfig) :: Nat where ...
- type KnownAvalonStreamConfig (conf :: AvalonStreamConfig) = (KnownNat (ChannelWidth conf), KnownNat (ErrorWidth conf), KeepTypeClass (KeepStartOfPacket conf), KeepTypeClass (KeepEndOfPacket conf), KnownNat (EmptyWidth conf), KnownNat (ReadyLatency conf))
- data AvalonStreamM2S (conf :: AvalonStreamConfig) dataType = AvalonStreamM2S {
- _data :: dataType
- _channel :: Unsigned (ChannelWidth conf)
- _error :: Unsigned (ErrorWidth conf)
- _startofpacket :: KeepType (KeepStartOfPacket conf) Bool
- _endofpacket :: KeepType (KeepEndOfPacket conf) Bool
- _empty :: Unsigned (EmptyWidth conf)
- newtype AvalonStreamS2M (readyLatency :: Nat) = AvalonStreamS2M {}
- data AvalonStream (dom :: Domain) (conf :: AvalonStreamConfig) dataType
- forceResetSanity :: forall (dom :: Domain) (conf :: AvalonStreamConfig) dataType. (KnownDomain dom, HiddenReset dom) => Circuit (AvalonStream dom conf dataType) (AvalonStream dom conf dataType)
Documentation
data AvalonStreamConfig Source #
Configuration for the Avalon Stream protocol. Determines the width of some
fields in AvalonStreamM2S, and toggles some others. Also sets the ready
latency (see specs for more info on this).
Constructors
| AvalonStreamConfig | |
Fields
| |
type family ChannelWidth (conf :: AvalonStreamConfig) :: Nat where ... Source #
Grab _channelWidth at the type level.
Equations
| ChannelWidth ('AvalonStreamConfig a _1 _2 _3 _4 _5) = a |
type family ErrorWidth (conf :: AvalonStreamConfig) :: Nat where ... Source #
Grab _errorWidth at the type level.
Equations
| ErrorWidth ('AvalonStreamConfig _1 a _2 _3 _4 _5) = a |
type family KeepStartOfPacket (conf :: AvalonStreamConfig) :: Bool where ... Source #
Grab _keepStartOfPacket at the type level.
Equations
| KeepStartOfPacket ('AvalonStreamConfig _1 _2 a _3 _4 _5) = a |
type family KeepEndOfPacket (conf :: AvalonStreamConfig) :: Bool where ... Source #
Grab _keepEndOfPacket at the type level.
Equations
| KeepEndOfPacket ('AvalonStreamConfig _1 _2 _3 a _4 _5) = a |
type family EmptyWidth (conf :: AvalonStreamConfig) :: Nat where ... Source #
Grab _emptyWidth at the type level.
Equations
| EmptyWidth ('AvalonStreamConfig _1 _2 _3 _4 a _5) = a |
type family ReadyLatency (conf :: AvalonStreamConfig) :: Nat where ... Source #
Grab _readyLatency at the type level.
Equations
| ReadyLatency ('AvalonStreamConfig _1 _2 _3 _4 _5 a) = a |
type KnownAvalonStreamConfig (conf :: AvalonStreamConfig) = (KnownNat (ChannelWidth conf), KnownNat (ErrorWidth conf), KeepTypeClass (KeepStartOfPacket conf), KeepTypeClass (KeepEndOfPacket conf), KnownNat (EmptyWidth conf), KnownNat (ReadyLatency conf)) Source #
Shorthand for a "well-behaved" config, so that we don't need to write out a bunch of type constraints later. Holds for every configuration; don't worry about implementing this class.
data AvalonStreamM2S (conf :: AvalonStreamConfig) dataType Source #
Data sent from manager to subordinate.
The tvalid field is left out: messages with
tvalid = False should be sent as a Nothing.
Constructors
| AvalonStreamM2S | |
Fields
| |
Instances
newtype AvalonStreamS2M (readyLatency :: Nat) Source #
Data sent from subordinate to manager. A simple acknowledge message.
Manager can only send AvalonStreamM2S when _ready was true
readyLatency clock cycles ago.
Constructors
| AvalonStreamS2M | |
Instances
| Bundle (AvalonStreamS2M readyLatency) Source # | |||||
Defined in Protocols.Experimental.Avalon.Stream Methods bundle :: forall (dom :: Domain). Unbundled dom (AvalonStreamS2M readyLatency) -> Signal dom (AvalonStreamS2M readyLatency) # unbundle :: forall (dom :: Domain). Signal dom (AvalonStreamS2M readyLatency) -> Unbundled dom (AvalonStreamS2M readyLatency) # | |||||
| NFDataX (AvalonStreamS2M readyLatency) Source # | |||||
Defined in Protocols.Experimental.Avalon.Stream Methods deepErrorX :: String -> AvalonStreamS2M readyLatency # hasUndefined :: AvalonStreamS2M readyLatency -> Bool # ensureSpine :: AvalonStreamS2M readyLatency -> AvalonStreamS2M readyLatency # rnfX :: AvalonStreamS2M readyLatency -> () # | |||||
| ShowX (AvalonStreamS2M readyLatency) Source # | |||||
Defined in Protocols.Experimental.Avalon.Stream Methods showsPrecX :: Int -> AvalonStreamS2M readyLatency -> ShowS # showX :: AvalonStreamS2M readyLatency -> String # showListX :: [AvalonStreamS2M readyLatency] -> ShowS # | |||||
| NFData (AvalonStreamS2M readyLatency) Source # | |||||
Defined in Protocols.Experimental.Avalon.Stream Methods rnf :: AvalonStreamS2M readyLatency -> () # | |||||
| Generic (AvalonStreamS2M readyLatency) Source # | |||||
Defined in Protocols.Experimental.Avalon.Stream Associated Types
Methods from :: AvalonStreamS2M readyLatency -> Rep (AvalonStreamS2M readyLatency) x # to :: Rep (AvalonStreamS2M readyLatency) x -> AvalonStreamS2M readyLatency # | |||||
| Show (AvalonStreamS2M readyLatency) Source # | |||||
Defined in Protocols.Experimental.Avalon.Stream Methods showsPrec :: Int -> AvalonStreamS2M readyLatency -> ShowS # show :: AvalonStreamS2M readyLatency -> String # showList :: [AvalonStreamS2M readyLatency] -> ShowS # | |||||
| Eq (AvalonStreamS2M readyLatency) Source # | |||||
Defined in Protocols.Experimental.Avalon.Stream Methods (==) :: AvalonStreamS2M readyLatency -> AvalonStreamS2M readyLatency -> Bool # (/=) :: AvalonStreamS2M readyLatency -> AvalonStreamS2M readyLatency -> Bool # | |||||
| type Unbundled dom (AvalonStreamS2M readyLatency) Source # | |||||
Defined in Protocols.Experimental.Avalon.Stream | |||||
| type Rep (AvalonStreamS2M readyLatency) Source # | |||||
Defined in Protocols.Experimental.Avalon.Stream type Rep (AvalonStreamS2M readyLatency) = D1 ('MetaData "AvalonStreamS2M" "Protocols.Experimental.Avalon.Stream" "clash-protocols-0.1-inplace" 'True) (C1 ('MetaCons "AvalonStreamS2M" 'PrefixI 'True) (S1 ('MetaSel ('Just "_ready") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))) | |||||
data AvalonStream (dom :: Domain) (conf :: AvalonStreamConfig) dataType Source #
Type for Avalon Stream protocol.
Instances
| (KnownAvalonStreamConfig conf, NFDataX dataType) => DfConv (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream Associated Types
Methods toDfCircuit :: Proxy (AvalonStream dom conf dataType) -> Circuit (Df (Dom (AvalonStream dom conf dataType)) (FwdPayload (AvalonStream dom conf dataType)), Reverse (Df (Dom (AvalonStream dom conf dataType)) (BwdPayload (AvalonStream dom conf dataType)))) (AvalonStream dom conf dataType) Source # fromDfCircuit :: Proxy (AvalonStream dom conf dataType) -> Circuit (AvalonStream dom conf dataType) (Df (Dom (AvalonStream dom conf dataType)) (FwdPayload (AvalonStream dom conf dataType)), Reverse (Df (Dom (AvalonStream dom conf dataType)) (BwdPayload (AvalonStream dom conf dataType)))) Source # | |||||||||||||
| (ReadyLatency conf ~ 0, KnownAvalonStreamConfig conf, NFDataX dataType, NFData dataType, ShowX dataType, Show dataType, Eq dataType, KnownDomain dom) => Test (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream Methods expectN :: (HasCallStack, MonadTest m) => Proxy (AvalonStream dom conf dataType) -> ExpectOptions -> SimulateFwdType (AvalonStream dom conf dataType) -> m (ExpectType (AvalonStream dom conf dataType)) Source # | |||||||||||||
| ReadyLatency conf ~ 0 => Backpressure (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream Methods boolsToBwd :: Proxy (AvalonStream dom conf dataType) -> [Bool] -> Bwd (AvalonStream dom conf dataType) Source # | |||||||||||||
| (ReadyLatency conf ~ 0, KnownAvalonStreamConfig conf, NFDataX dataType, KnownDomain dom) => Drivable (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream Associated Types
Methods toSimulateType :: Proxy (AvalonStream dom conf dataType) -> ExpectType (AvalonStream dom conf dataType) -> SimulateFwdType (AvalonStream dom conf dataType) Source # fromSimulateType :: Proxy (AvalonStream dom conf dataType) -> SimulateFwdType (AvalonStream dom conf dataType) -> ExpectType (AvalonStream dom conf dataType) Source # driveC :: SimulationConfig -> SimulateFwdType (AvalonStream dom conf dataType) -> Circuit () (AvalonStream dom conf dataType) Source # sampleC :: SimulationConfig -> Circuit () (AvalonStream dom conf dataType) -> SimulateFwdType (AvalonStream dom conf dataType) Source # | |||||||||||||
| (ReadyLatency conf ~ 0, KnownAvalonStreamConfig conf, NFDataX dataType, KnownDomain dom) => Simulate (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream Associated Types
Methods simToSigFwd :: Proxy (AvalonStream dom conf dataType) -> SimulateFwdType (AvalonStream dom conf dataType) -> Fwd (AvalonStream dom conf dataType) Source # simToSigBwd :: Proxy (AvalonStream dom conf dataType) -> SimulateBwdType (AvalonStream dom conf dataType) -> Bwd (AvalonStream dom conf dataType) Source # sigToSimFwd :: Proxy (AvalonStream dom conf dataType) -> Fwd (AvalonStream dom conf dataType) -> SimulateFwdType (AvalonStream dom conf dataType) Source # sigToSimBwd :: Proxy (AvalonStream dom conf dataType) -> Bwd (AvalonStream dom conf dataType) -> SimulateBwdType (AvalonStream dom conf dataType) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (AvalonStream dom conf dataType)) (StallAck, [Int]) -> Circuit (AvalonStream dom conf dataType) (AvalonStream dom conf dataType) Source # | |||||||||||||
| IdleCircuit (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream Methods idleFwd :: Proxy (AvalonStream dom conf dataType) -> Fwd (AvalonStream dom conf dataType) Source # idleBwd :: Proxy (AvalonStream dom conf dataType) -> Bwd (AvalonStream dom conf dataType) Source # | |||||||||||||
| Protocol (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream Associated Types
| |||||||||||||
| type BwdPayload (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream | |||||||||||||
| type Dom (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream | |||||||||||||
| type FwdPayload (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream | |||||||||||||
| type ExpectType (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream | |||||||||||||
| type SimulateBwdType (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream | |||||||||||||
| type SimulateChannels (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream | |||||||||||||
| type SimulateFwdType (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream | |||||||||||||
| type Bwd (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream | |||||||||||||
| type Fwd (AvalonStream dom conf dataType) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.Stream | |||||||||||||
forceResetSanity :: forall (dom :: Domain) (conf :: AvalonStreamConfig) dataType. (KnownDomain dom, HiddenReset dom) => Circuit (AvalonStream dom conf dataType) (AvalonStream dom conf dataType) Source #
Force a nack on the backward channel and no data on the forward channel if reset is asserted.