| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Protocols.Internal
Description
Internal module to prevent hs-boot files (breaks Haddock)
Synopsis
- (<|) :: Circuit b c -> Circuit a b -> Circuit a c
- applyC :: (Fwd a -> Fwd b) -> (Bwd b -> Bwd a) -> Circuit a b
- circuitMonitor :: forall p (dom :: Domain) fwd bwd. (Protocol p, Fwd p ~ Signal dom fwd, Bwd p ~ Signal dom bwd) => Circuit p (p, CSignal dom (fwd, bwd))
- coerceCircuit :: (Fwd a ~ Fwd a', Bwd a ~ Bwd a', Fwd b ~ Fwd b', Bwd b ~ Bwd b') => Circuit a b -> Circuit a' b'
- convKeepType :: forall (a :: Bool) (b :: Bool) t. (KeepTypeClass a, KeepTypeClass b) => t -> KeepType a t -> KeepType b t
- fromKeepTypeDef :: forall (keep :: Bool) optionalType. KeepTypeClass keep => optionalType -> KeepType keep optionalType -> optionalType
- fromKeepTypeTrue :: KeepType 'True t -> t
- fromSignals :: ((Fwd a, Bwd b) -> (Bwd a, Fwd b)) -> Circuit a b
- idC :: Circuit a a
- keepTypeFalse :: KeepType 'False t
- mapCircuit :: (Fwd a' -> Fwd a) -> (Bwd a -> Bwd a') -> (Fwd b -> Fwd b') -> (Bwd b' -> Bwd b) -> Circuit a b -> Circuit a' b'
- prod2C :: forall a c b d. Circuit a b -> Circuit c d -> Circuit (a, c) (b, d)
- prod3C :: forall a c b d e f. Circuit a b -> Circuit c d -> Circuit e f -> Circuit (a, c, e) (b, d, f)
- prod4C :: forall a c b d e f g h. Circuit a b -> Circuit c d -> Circuit e f -> Circuit g h -> Circuit (a, c, e, g) (b, d, f, h)
- repeatC :: forall (n :: Nat) a b. Circuit a b -> Circuit (Vec n a) (Vec n b)
- reverseCircuit :: Circuit a b -> Circuit (Reverse b) (Reverse a)
- toSignals :: Circuit a b -> (Fwd a, Bwd b) -> (Bwd a, Fwd b)
- tupCircuits :: Circuit a b -> Circuit c d -> Circuit (a, c) (b, d)
- (|>) :: Circuit a b -> Circuit b c -> Circuit a c
- newtype Ack = Ack Bool
- type family KeepType (keep :: Bool) optionalType = (t :: Type) | t -> keep optionalType where ...
- class (Eq (KeepType keep Bool), Show (KeepType keep Bool), ShowX (KeepType keep Bool), NFData (KeepType keep Bool), NFDataX (KeepType keep Bool), Hashable (KeepType keep Bool)) => KeepTypeClass (keep :: Bool) where
- getKeep :: KeepType keep optionalType -> Bool
- fromKeepType :: KeepType keep optionalType -> Maybe optionalType
- toKeepType :: optionalType -> KeepType keep optionalType
- mapKeepType :: (optionalType -> optionalType) -> KeepType keep optionalType -> KeepType keep optionalType
- data Reverse (a :: k)
- class Protocol p => IdleCircuit p where
- plugin :: Plugin
- (-<) :: Any :: Type
- circuit :: Any :: Type
- data ToConst a
- data ToConstBwd a
- type family Bwd a
- data CSignal (dom :: Domain) a
- newtype Circuit a b = Circuit ((Fwd a, Bwd b) -> (Bwd a, Fwd b))
- type family Fwd a
- class Protocol a where
- class Units a where
- units :: a
- pattern TaggedBundle :: TaggedBundle t a => TaggedUnbundled t a -> Tagged t a
- class TaggedBundle (t :: k) a where
- type TaggedUnbundled (t :: k) a = (res :: Type) | res -> k t a
- taggedBundle :: TaggedUnbundled t a -> Tagged t a
- taggedUnbundle :: Tagged t a -> TaggedUnbundled t a
- type family TaggedUnbundled (t :: k) a = (res :: Type) | res -> k t a
Documentation
(<|) :: Circuit b c -> Circuit a b -> Circuit a c infixr 1 Source #
Right-to-left circuit composition.
Circuit a c
+---------------------------------+
Circuit b c <| Circuit a b
+-----------+ +-----------+
Fwd c | | Fwd b | | Fwd a
<--------+ +<--------+ +<-------+
| | | |
| | | |
Bwd c | | Bwd b | | Bwd a
+------->+ +-------->+ +-------->
| | | |
+-----------+ +-----------+
applyC :: (Fwd a -> Fwd b) -> (Bwd b -> Bwd a) -> Circuit a b Source #
Applies the mappings Fwd a -> Fwd b and Bwd b -> Bwd a to the circuit's signals.
The idea here is that you want to treat some a -> b as a Circuit a b, but Circuit a b is
actually the type (Fwd a, Bwd b) -> (Bwd a, Fwd b). To bridge this gap, we say that a -> b can
be our map from Fwd a -> Fwd b, but then we need to fill in the Bwd b -> Bwd a still. In almost
all cases, the former is the function you want to apply, and the latter is the inverse. For
instance, the ++ operator on vectors can be made into a Circuit a b with
applyC (uncurry (++)) splitAtI, since splitAtI is the inverse of
++.
circuitMonitor :: forall p (dom :: Domain) fwd bwd. (Protocol p, Fwd p ~ Signal dom fwd, Bwd p ~ Signal dom bwd) => Circuit p (p, CSignal dom (fwd, bwd)) Source #
Can be inserted between a manager and subordinate to monitor their interaction
coerceCircuit :: (Fwd a ~ Fwd a', Bwd a ~ Bwd a', Fwd b ~ Fwd b', Bwd b ~ Bwd b') => Circuit a b -> Circuit a' b' Source #
convKeepType :: forall (a :: Bool) (b :: Bool) t. (KeepTypeClass a, KeepTypeClass b) => t -> KeepType a t -> KeepType b t Source #
Convert one optional field to another, keeping the value the same if possible. If not possible, a default argument is provided.
fromKeepTypeDef :: forall (keep :: Bool) optionalType. KeepTypeClass keep => optionalType -> KeepType keep optionalType -> optionalType Source #
Grab a value from KeepType, given a default value. Uses fromMaybe
and fromKeepType.
fromKeepTypeTrue :: KeepType 'True t -> t Source #
Grab value in KeepType 'True t. No default is needed.
Circuit equivalent of id. Useful for explicitly assigning a type to
another protocol, or to return a result when using the circuit-notation
plugin.
Examples:
idC @(Df dom a) <| somePolymorphicProtocol
swap :: Circuit (Df dom a, Df dom b) (Df dom b, Df dom a) swap = circuit $ (a, b) -> do idC -< (b, a)
keepTypeFalse :: KeepType 'False t Source #
Omitted value in KeepType 'False t.
mapCircuit :: (Fwd a' -> Fwd a) -> (Bwd a -> Bwd a') -> (Fwd b -> Fwd b') -> (Bwd b' -> Bwd b) -> Circuit a b -> Circuit a' b' Source #
prod2C :: forall a c b d. Circuit a b -> Circuit c d -> Circuit (a, c) (b, d) Source #
Combine two separate circuits into one. If you are looking to combine
multiple streams into a single stream, checkout fanin.
prod3C :: forall a c b d e f. Circuit a b -> Circuit c d -> Circuit e f -> Circuit (a, c, e) (b, d, f) Source #
Combine three separate circuits into one. If you are looking to combine
multiple streams into a single stream, checkout fanin.
prod4C :: forall a c b d e f g h. Circuit a b -> Circuit c d -> Circuit e f -> Circuit g h -> Circuit (a, c, e, g) (b, d, f, h) Source #
Combine four separate circuits into one. If you are looking to combine
multiple streams into a single stream, checkout fanin.
repeatC :: forall (n :: Nat) a b. Circuit a b -> Circuit (Vec n a) (Vec n b) Source #
Copy a circuit n times. Note that this will copy hardware. If you are
looking for a circuit that turns a single channel into multiple, check out
fanout.
reverseCircuit :: Circuit a b -> Circuit (Reverse b) (Reverse a) Source #
Apply Reverse both sides of a circuit, and then switch them.
Input and output of the underlying circuit are the same,
but with the order of the tuple switched in both cases.
toSignals :: Circuit a b -> (Fwd a, Bwd b) -> (Bwd a, Fwd b) Source #
View Circuit as its internal representation.
(|>) :: Circuit a b -> Circuit b c -> Circuit a c infixr 1 Source #
Left-to-right circuit composition.
Circuit a c
+---------------------------------+
Circuit a b |> Circuit b c
+-----------+ +-----------+
Fwd a | | Fwd b | | Fwd c
+------->+ +-------->+ +-------->
| | | |
| | | |
Bwd a | | Bwd b | | Bwd c
<--------+ +<--------+ +<-------+
| | | |
+-----------+ +-----------+
Protocol-agnostic acknowledgement
Instances
| BitPack Ack Source # | |||||
| Bundle Ack Source # | |||||
| NFDataX Ack Source # | |||||
Defined in Protocols.Internal | |||||
| ShowX Ack Source # | |||||
| Default Ack Source # | Acknowledge. Used in circuit-notation plugin to drive ignore components. | ||||
Defined in Protocols.Internal | |||||
| Generic Ack Source # | |||||
Defined in Protocols.Internal Associated Types
| |||||
| Show Ack Source # | |||||
| Eq Ack Source # | |||||
| Ord Ack Source # | |||||
| type BitSize Ack Source # | |||||
Defined in Protocols.Internal | |||||
| type Rep Ack Source # | |||||
Defined in Protocols.Internal | |||||
| type Unbundled dom Ack Source # | |||||
Defined in Protocols.Internal | |||||
type family KeepType (keep :: Bool) optionalType = (t :: Type) | t -> keep optionalType where ... Source #
Allows for optional data.
Depending on the value of keep, the data can either be included or left out.
When left out, the data is represented instead as type ().
class (Eq (KeepType keep Bool), Show (KeepType keep Bool), ShowX (KeepType keep Bool), NFData (KeepType keep Bool), NFDataX (KeepType keep Bool), Hashable (KeepType keep Bool)) => KeepTypeClass (keep :: Bool) where Source #
We want to define operations on KeepType that work for both possibilities
(keep = 'True and keep = 'False), but we can't pattern match directly.
Instead we need to define a class and instantiate
the class for both 'True and 'False.
Methods
getKeep :: KeepType keep optionalType -> Bool Source #
Get the value of keep at the term level.
fromKeepType :: KeepType keep optionalType -> Maybe optionalType Source #
Convert an optional value to a normal value, or Nothing if the field is turned off.
toKeepType :: optionalType -> KeepType keep optionalType Source #
Convert a normal value to an optional value.
Either preserves the value or returns Proxy.
mapKeepType :: (optionalType -> optionalType) -> KeepType keep optionalType -> KeepType keep optionalType Source #
Map a function over an optional value
Instances
| KeepTypeClass 'False Source # | |
Defined in Protocols.Internal Methods getKeep :: KeepType 'False optionalType -> Bool Source # fromKeepType :: KeepType 'False optionalType -> Maybe optionalType Source # toKeepType :: optionalType -> KeepType 'False optionalType Source # mapKeepType :: (optionalType -> optionalType) -> KeepType 'False optionalType -> KeepType 'False optionalType Source # | |
| KeepTypeClass 'True Source # | |
Defined in Protocols.Internal Methods getKeep :: KeepType 'True optionalType -> Bool Source # fromKeepType :: KeepType 'True optionalType -> Maybe optionalType Source # toKeepType :: optionalType -> KeepType 'True optionalType Source # mapKeepType :: (optionalType -> optionalType) -> KeepType 'True optionalType -> KeepType 'True optionalType Source # | |
data Reverse (a :: k) Source #
Instances
class Protocol p => IdleCircuit p where Source #
Idle state of a Circuit. Aims to provide no data for both the forward and backward direction. Transactions are not acknowledged.
Instances
| IdleCircuit () Source # | |
| (IdleCircuit a, KnownNat n) => IdleCircuit (Vec n a) Source # | |
| IdleCircuit (Df dom a) 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 # | |
| (IdleCircuit a, IdleCircuit b) => IdleCircuit (a, b) 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 # | |
| 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 # | |
| IdleCircuit (Axi4ReadAddress dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.ReadAddress Methods idleFwd :: Proxy (Axi4ReadAddress dom conf userType) -> Fwd (Axi4ReadAddress dom conf userType) Source # idleBwd :: Proxy (Axi4ReadAddress dom conf userType) -> Bwd (Axi4ReadAddress dom conf userType) Source # | |
| IdleCircuit (Axi4Stream dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.Stream Methods idleFwd :: Proxy (Axi4Stream dom conf userType) -> Fwd (Axi4Stream dom conf userType) Source # idleBwd :: Proxy (Axi4Stream dom conf userType) -> Bwd (Axi4Stream dom conf userType) Source # | |
| IdleCircuit (Axi4WriteAddress dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.WriteAddress Methods idleFwd :: Proxy (Axi4WriteAddress dom conf userType) -> Fwd (Axi4WriteAddress dom conf userType) Source # idleBwd :: Proxy (Axi4WriteAddress dom conf userType) -> Bwd (Axi4WriteAddress dom conf userType) Source # | |
| IdleCircuit (Axi4WriteData dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.WriteData Methods idleFwd :: Proxy (Axi4WriteData dom conf userType) -> Fwd (Axi4WriteData dom conf userType) Source # idleBwd :: Proxy (Axi4WriteData dom conf userType) -> Bwd (Axi4WriteData dom conf userType) Source # | |
| IdleCircuit (Axi4WriteResponse dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.WriteResponse Methods idleFwd :: Proxy (Axi4WriteResponse dom conf userType) -> Fwd (Axi4WriteResponse dom conf userType) Source # idleBwd :: Proxy (Axi4WriteResponse dom conf userType) -> Bwd (Axi4WriteResponse dom conf userType) Source # | |
| IdleCircuit (PacketStream dom dataWidth meta) Source # | |
Defined in Protocols.PacketStream.Base Methods idleFwd :: Proxy (PacketStream dom dataWidth meta) -> Fwd (PacketStream dom dataWidth meta) Source # idleBwd :: Proxy (PacketStream dom dataWidth meta) -> Bwd (PacketStream dom dataWidth meta) Source # | |
| (IdleCircuit c1, IdleCircuit c2, IdleCircuit c3) => IdleCircuit (c1, c2, c3) Source # | |
| IdleCircuit (Axi4ReadData dom conf userType dataType) Source # | |
Defined in Protocols.Experimental.Axi4.ReadData Methods idleFwd :: Proxy (Axi4ReadData dom conf userType dataType) -> Fwd (Axi4ReadData dom conf userType dataType) Source # idleBwd :: Proxy (Axi4ReadData dom conf userType dataType) -> Bwd (Axi4ReadData dom conf userType dataType) Source # | |
| (KnownNat aw, KnownNat dw) => IdleCircuit (Wishbone dom mode aw dw) Source # | |
| (IdleCircuit c1, IdleCircuit c2, IdleCircuit c3, IdleCircuit c4) => IdleCircuit (c1, c2, c3, c4) Source # | |
| (IdleCircuit c1, IdleCircuit c2, IdleCircuit c3, IdleCircuit c4, IdleCircuit c5) => IdleCircuit (c1, c2, c3, c4, c5) Source # | |
| (IdleCircuit c1, IdleCircuit c2, IdleCircuit c3, IdleCircuit c4, IdleCircuit c5, IdleCircuit c6) => IdleCircuit (c1, c2, c3, c4, c5, c6) Source # | |
| (IdleCircuit c1, IdleCircuit c2, IdleCircuit c3, IdleCircuit c4, IdleCircuit c5, IdleCircuit c6, IdleCircuit c7) => IdleCircuit (c1, c2, c3, c4, c5, c6, c7) Source # | |
| (IdleCircuit c1, IdleCircuit c2, IdleCircuit c3, IdleCircuit c4, IdleCircuit c5, IdleCircuit c6, IdleCircuit c7, IdleCircuit c8) => IdleCircuit (c1, c2, c3, c4, c5, c6, c7, c8) Source # | |
| (IdleCircuit c1, IdleCircuit c2, IdleCircuit c3, IdleCircuit c4, IdleCircuit c5, IdleCircuit c6, IdleCircuit c7, IdleCircuit c8, IdleCircuit c9) => IdleCircuit (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # | |
| (IdleCircuit c1, IdleCircuit c2, IdleCircuit c3, IdleCircuit c4, IdleCircuit c5, IdleCircuit c6, IdleCircuit c7, IdleCircuit c8, IdleCircuit c9, IdleCircuit c10) => IdleCircuit (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # | |
| (IdleCircuit c1, IdleCircuit c2, IdleCircuit c3, IdleCircuit c4, IdleCircuit c5, IdleCircuit c6, IdleCircuit c7, IdleCircuit c8, IdleCircuit c9, IdleCircuit c10, IdleCircuit c11) => IdleCircuit (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # | |
| (IdleCircuit c1, IdleCircuit c2, IdleCircuit c3, IdleCircuit c4, IdleCircuit c5, IdleCircuit c6, IdleCircuit c7, IdleCircuit c8, IdleCircuit c9, IdleCircuit c10, IdleCircuit c11, IdleCircuit c12) => IdleCircuit (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # | |
Defined in Protocols.Idle | |
Instances
| Protocol (ToConst a) # | |||||||||
Defined in Protocols.Plugin Associated Types
| |||||||||
| type Bwd (ToConst a) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| type Fwd (ToConst a) # | |||||||||
Defined in Protocols.Plugin | |||||||||
data ToConstBwd a #
Instances
| Protocol (ToConstBwd a) # | |||||||||
Defined in Protocols.Plugin Associated Types
| |||||||||
| type Bwd (ToConstBwd a) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| type Fwd (ToConstBwd a) # | |||||||||
Defined in Protocols.Plugin | |||||||||
Instances
| type Bwd () # | |
Defined in Protocols.Plugin type Bwd () = () | |
| type Bwd (Clock dom) # | |
Defined in Protocols.Plugin | |
| type Bwd (DiffClock dom) # | |
Defined in Protocols.Plugin | |
| type Bwd (Enable dom) # | |
Defined in Protocols.Plugin | |
| type Bwd (Reset dom) # | |
Defined in Protocols.Plugin | |
| type Bwd (ToConst a) # | |
Defined in Protocols.Plugin | |
| type Bwd (ToConstBwd a) # | |
Defined in Protocols.Plugin | |
| type Bwd (Vec n a) # | |
Defined in Protocols.Plugin | |
| type Bwd (Df dom a) Source # | |
Defined in Protocols.Df | |
| type Bwd (AvalonMmManager dom config) Source # | |
Defined in Protocols.Experimental.Avalon.MemMap | |
| type Bwd (Reverse a) Source # | |
Defined in Protocols.Internal | |
| type Bwd (CSignal dom a) # | |
Defined in Protocols.Plugin | |
| type Bwd (a, b) # | |
Defined in Protocols.Plugin | |
| type Bwd (AvalonMmSubordinate dom fixedWaitTime config) Source # | |
Defined in Protocols.Experimental.Avalon.MemMap | |
| type Bwd (AvalonStream dom conf dataType) Source # | |
Defined in Protocols.Experimental.Avalon.Stream | |
| type Bwd (Axi4ReadAddress dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.ReadAddress | |
| type Bwd (Axi4Stream dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.Stream | |
| type Bwd (Axi4WriteAddress dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.WriteAddress | |
| type Bwd (Axi4WriteData dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.WriteData | |
| type Bwd (Axi4WriteResponse dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.WriteResponse | |
| type Bwd (PacketStream dom dataWidth meta) Source # | |
Defined in Protocols.PacketStream.Base | |
| type Bwd (a1, a2, a3) # | |
Defined in Protocols.Plugin | |
| type Bwd (Axi4ReadData dom conf userType dataType) Source # | |
Defined in Protocols.Experimental.Axi4.ReadData | |
| type Bwd (Wishbone dom mode addressBits dataBytes) Source # | |
Defined in Protocols.Experimental.Wishbone | |
| type Bwd (a1, a2, a3, a4) # | |
| type Bwd (a1, a2, a3, a4, a5) # | |
| type Bwd (a1, a2, a3, a4, a5, a6) # | |
| type Bwd (a1, a2, a3, a4, a5, a6, a7) # | |
| type Bwd (a1, a2, a3, a4, a5, a6, a7, a8) # | |
| type Bwd (a1, a2, a3, a4, a5, a6, a7, a8, a9) # | |
| type Bwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) # | |
| type Bwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) # | |
| type Bwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) # | |
data CSignal (dom :: Domain) a #
Instances
| Backpressure (CSignal dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate | |||||||||||||
| (NFDataX a, ShowX a, Show a, KnownDomain dom) => Drivable (CSignal dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy (CSignal dom a) -> ExpectType (CSignal dom a) -> SimulateFwdType (CSignal dom a) Source # fromSimulateType :: Proxy (CSignal dom a) -> SimulateFwdType (CSignal dom a) -> ExpectType (CSignal dom a) Source # driveC :: SimulationConfig -> SimulateFwdType (CSignal dom a) -> Circuit () (CSignal dom a) Source # sampleC :: SimulationConfig -> Circuit () (CSignal dom a) -> SimulateFwdType (CSignal dom a) Source # | |||||||||||||
| KnownDomain dom => Simulate (CSignal dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods simToSigFwd :: Proxy (CSignal dom a) -> SimulateFwdType (CSignal dom a) -> Fwd (CSignal dom a) Source # simToSigBwd :: Proxy (CSignal dom a) -> SimulateBwdType (CSignal dom a) -> Bwd (CSignal dom a) Source # sigToSimFwd :: Proxy (CSignal dom a) -> Fwd (CSignal dom a) -> SimulateFwdType (CSignal dom a) Source # sigToSimBwd :: Proxy (CSignal dom a) -> Bwd (CSignal dom a) -> SimulateBwdType (CSignal dom a) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (CSignal dom a)) (StallAck, [Int]) -> Circuit (CSignal dom a) (CSignal dom a) Source # | |||||||||||||
| Protocol (CSignal dom a) # | |||||||||||||
Defined in Protocols.Plugin | |||||||||||||
| type ExpectType (CSignal dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate | |||||||||||||
| type SimulateBwdType (CSignal dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate | |||||||||||||
| type SimulateChannels (CSignal dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate | |||||||||||||
| type SimulateFwdType (CSignal dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate | |||||||||||||
| type Bwd (CSignal dom a) # | |||||||||||||
Defined in Protocols.Plugin | |||||||||||||
| type Fwd (CSignal dom a) # | |||||||||||||
Defined in Protocols.Plugin | |||||||||||||
Instances
| type Fwd () # | |
Defined in Protocols.Plugin type Fwd () = () | |
| type Fwd (Clock dom) # | |
Defined in Protocols.Plugin | |
| type Fwd (DiffClock dom) # | |
Defined in Protocols.Plugin | |
| type Fwd (Enable dom) # | |
Defined in Protocols.Plugin | |
| type Fwd (Reset dom) # | |
Defined in Protocols.Plugin | |
| type Fwd (ToConst a) # | |
Defined in Protocols.Plugin | |
| type Fwd (ToConstBwd a) # | |
Defined in Protocols.Plugin | |
| type Fwd (Vec n a) # | |
Defined in Protocols.Plugin | |
| type Fwd (Df dom a) Source # | |
Defined in Protocols.Df | |
| type Fwd (AvalonMmManager dom config) Source # | |
Defined in Protocols.Experimental.Avalon.MemMap | |
| type Fwd (Reverse a) Source # | |
Defined in Protocols.Internal | |
| type Fwd (CSignal dom a) # | |
Defined in Protocols.Plugin | |
| type Fwd (a, b) # | |
Defined in Protocols.Plugin | |
| type Fwd (AvalonMmSubordinate dom fixedWaitTime config) Source # | |
Defined in Protocols.Experimental.Avalon.MemMap | |
| type Fwd (AvalonStream dom conf dataType) Source # | |
Defined in Protocols.Experimental.Avalon.Stream | |
| type Fwd (Axi4ReadAddress dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.ReadAddress | |
| type Fwd (Axi4Stream dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.Stream | |
| type Fwd (Axi4WriteAddress dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.WriteAddress | |
| type Fwd (Axi4WriteData dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.WriteData | |
| type Fwd (Axi4WriteResponse dom conf userType) Source # | |
Defined in Protocols.Experimental.Axi4.WriteResponse | |
| type Fwd (PacketStream dom dataWidth meta) Source # | |
Defined in Protocols.PacketStream.Base | |
| type Fwd (a1, a2, a3) # | |
Defined in Protocols.Plugin | |
| type Fwd (Axi4ReadData dom conf userType dataType) Source # | |
Defined in Protocols.Experimental.Axi4.ReadData type Fwd (Axi4ReadData dom conf userType dataType) = Signal dom (S2M_ReadData conf userType dataType) | |
| type Fwd (Wishbone dom mode addressBits dataBytes) Source # | |
Defined in Protocols.Experimental.Wishbone | |
| type Fwd (a1, a2, a3, a4) # | |
| type Fwd (a1, a2, a3, a4, a5) # | |
| type Fwd (a1, a2, a3, a4, a5, a6) # | |
| type Fwd (a1, a2, a3, a4, a5, a6, a7) # | |
| type Fwd (a1, a2, a3, a4, a5, a6, a7, a8) # | |
| type Fwd (a1, a2, a3, a4, a5, a6, a7, a8, a9) # | |
| type Fwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) # | |
| type Fwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) # | |
| type Fwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) # | |
Instances
| Protocol () # | |||||||||
Defined in Protocols.Plugin Associated Types
| |||||||||
| Protocol (Clock dom) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (DiffClock dom) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (Enable dom) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (Reset dom) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (ToConst a) # | |||||||||
Defined in Protocols.Plugin Associated Types
| |||||||||
| Protocol (ToConstBwd a) # | |||||||||
Defined in Protocols.Plugin Associated Types
| |||||||||
| KnownNat n => Protocol (Vec n a) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (Df dom a) Source # | |||||||||
Defined in Protocols.Df | |||||||||
| Protocol (AvalonMmManager dom config) Source # | |||||||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
| |||||||||
| Protocol a => Protocol (Reverse a) Source # | |||||||||
Defined in Protocols.Internal | |||||||||
| Protocol (CSignal dom a) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (a, b) # | |||||||||
Defined in Protocols.Plugin Associated Types
| |||||||||
| Protocol (AvalonMmSubordinate dom fixedWaitTime config) Source # | |||||||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
| |||||||||
| Protocol (AvalonStream dom conf dataType) Source # | |||||||||
Defined in Protocols.Experimental.Avalon.Stream Associated Types
| |||||||||
| Protocol (Axi4ReadAddress dom conf userType) Source # | |||||||||
Defined in Protocols.Experimental.Axi4.ReadAddress Associated Types
| |||||||||
| Protocol (Axi4Stream dom conf userType) Source # | |||||||||
Defined in Protocols.Experimental.Axi4.Stream Associated Types
| |||||||||
| Protocol (Axi4WriteAddress dom conf userType) Source # | |||||||||
Defined in Protocols.Experimental.Axi4.WriteAddress Associated Types
| |||||||||
| Protocol (Axi4WriteData dom conf userType) Source # | |||||||||
Defined in Protocols.Experimental.Axi4.WriteData Associated Types
| |||||||||
| Protocol (Axi4WriteResponse dom conf userType) Source # | |||||||||
Defined in Protocols.Experimental.Axi4.WriteResponse Associated Types
| |||||||||
| Protocol (PacketStream dom dataWidth meta) Source # | |||||||||
Defined in Protocols.PacketStream.Base Associated Types
| |||||||||
| Protocol (a1, a2, a3) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (Axi4ReadData dom conf userType dataType) Source # | |||||||||
Defined in Protocols.Experimental.Axi4.ReadData Associated Types
| |||||||||
| Protocol (Wishbone dom mode addressBits dataBytes) Source # | |||||||||
Defined in Protocols.Experimental.Wishbone Associated Types
| |||||||||
| Protocol (a1, a2, a3, a4) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (a1, a2, a3, a4, a5) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (a1, a2, a3, a4, a5, a6) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (a1, a2, a3, a4, a5, a6, a7) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (a1, a2, a3, a4, a5, a6, a7, a8) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (a1, a2, a3, a4, a5, a6, a7, a8, a9) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) # | |||||||||
Defined in Protocols.Plugin | |||||||||
| Protocol (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) # | |||||||||
Defined in Protocols.Plugin | |||||||||
Instances
| Units () # | |
Defined in Protocols.Plugin.Units | |
| Units (BitVector 0) # | |
Defined in Protocols.Plugin.Units | |
| Units (Index 0) # | |
Defined in Protocols.Plugin.Units | |
| Units (Index 1) # | |
Defined in Protocols.Plugin.Units | |
| Units (Signed 0) # | |
Defined in Protocols.Plugin.Units | |
| Units (Unsigned 0) # | |
Defined in Protocols.Plugin.Units | |
| Units a => Units (Signal dom a) # | |
Defined in Protocols.Plugin.Units | |
| (Units a, KnownNat n) => Units (Vec n a) # | |
Defined in Protocols.Plugin.Units | |
| (Units a1, Units a2) => Units (a1, a2) # | |
Defined in Protocols.Plugin.Units | |
| (Units a1, Units a2, Units a3) => Units (a1, a2, a3) # | |
Defined in Protocols.Plugin.Units | |
| (Units a1, Units a2, Units a3, Units a4) => Units (a1, a2, a3, a4) # | |
Defined in Protocols.Plugin.Units | |
| (Units a1, Units a2, Units a3, Units a4, Units a5) => Units (a1, a2, a3, a4, a5) # | |
Defined in Protocols.Plugin.Units | |
| (Units a1, Units a2, Units a3, Units a4, Units a5, Units a6) => Units (a1, a2, a3, a4, a5, a6) # | |
Defined in Protocols.Plugin.Units | |
| (Units a1, Units a2, Units a3, Units a4, Units a5, Units a6, Units a7) => Units (a1, a2, a3, a4, a5, a6, a7) # | |
Defined in Protocols.Plugin.Units | |
| (Units a1, Units a2, Units a3, Units a4, Units a5, Units a6, Units a7, Units a8) => Units (a1, a2, a3, a4, a5, a6, a7, a8) # | |
Defined in Protocols.Plugin.Units | |
| (Units a1, Units a2, Units a3, Units a4, Units a5, Units a6, Units a7, Units a8, Units a9) => Units (a1, a2, a3, a4, a5, a6, a7, a8, a9) # | |
Defined in Protocols.Plugin.Units | |
| (Units a1, Units a2, Units a3, Units a4, Units a5, Units a6, Units a7, Units a8, Units a9, Units a10) => Units (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) # | |
Defined in Protocols.Plugin.Units | |
| (Units a1, Units a2, Units a3, Units a4, Units a5, Units a6, Units a7, Units a8, Units a9, Units a10, Units a11) => Units (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) # | |
Defined in Protocols.Plugin.Units | |
| (Units a1, Units a2, Units a3, Units a4, Units a5, Units a6, Units a7, Units a8, Units a9, Units a10, Units a11, Units a12) => Units (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) # | |
Defined in Protocols.Plugin.Units | |
pattern TaggedBundle :: TaggedBundle t a => TaggedUnbundled t a -> Tagged t a #
class TaggedBundle (t :: k) a where #
Associated Types
type TaggedUnbundled (t :: k) a = (res :: Type) | res -> k t a #
Methods
taggedBundle :: TaggedUnbundled t a -> Tagged t a #
taggedUnbundle :: Tagged t a -> TaggedUnbundled t a #
Instances
| TaggedBundle () () # | |||||
Defined in Protocols.Plugin.TaggedBundle Associated Types
Methods taggedBundle :: TaggedUnbundled () () -> Tagged () () # taggedUnbundle :: Tagged () () -> TaggedUnbundled () () # | |||||
| TaggedBundle (Vec n t :: Type) (Vec n a) # | |||||
Defined in Protocols.Plugin.TaggedBundle Associated Types
Methods taggedBundle :: TaggedUnbundled (Vec n t) (Vec n a) -> Tagged (Vec n t) (Vec n a) # taggedUnbundle :: Tagged (Vec n t) (Vec n a) -> TaggedUnbundled (Vec n t) (Vec n a) # | |||||
| TaggedBundle ((t1, t2) :: Type) (a1, a2) # | |||||
Defined in Protocols.Plugin.TaggedBundle Associated Types
Methods taggedBundle :: TaggedUnbundled (t1, t2) (a1, a2) -> Tagged (t1, t2) (a1, a2) # taggedUnbundle :: Tagged (t1, t2) (a1, a2) -> TaggedUnbundled (t1, t2) (a1, a2) # | |||||
| TaggedBundle ((t1, t2, t3) :: Type) (a1, a2, a3) # | |||||
Defined in Protocols.Plugin.TaggedBundle Associated Types
Methods taggedBundle :: TaggedUnbundled (t1, t2, t3) (a1, a2, a3) -> Tagged (t1, t2, t3) (a1, a2, a3) # taggedUnbundle :: Tagged (t1, t2, t3) (a1, a2, a3) -> TaggedUnbundled (t1, t2, t3) (a1, a2, a3) # | |||||
| TaggedBundle ((t1, t2, t3, t4) :: Type) (a1, a2, a3, a4) # | |||||
Defined in Protocols.Plugin.TaggedBundle Associated Types
Methods taggedBundle :: TaggedUnbundled (t1, t2, t3, t4) (a1, a2, a3, a4) -> Tagged (t1, t2, t3, t4) (a1, a2, a3, a4) # taggedUnbundle :: Tagged (t1, t2, t3, t4) (a1, a2, a3, a4) -> TaggedUnbundled (t1, t2, t3, t4) (a1, a2, a3, a4) # | |||||
| TaggedBundle ((t1, t2, t3, t4, t5) :: Type) (a1, a2, a3, a4, a5) # | |||||
Defined in Protocols.Plugin.TaggedBundle Associated Types
Methods taggedBundle :: TaggedUnbundled (t1, t2, t3, t4, t5) (a1, a2, a3, a4, a5) -> Tagged (t1, t2, t3, t4, t5) (a1, a2, a3, a4, a5) # taggedUnbundle :: Tagged (t1, t2, t3, t4, t5) (a1, a2, a3, a4, a5) -> TaggedUnbundled (t1, t2, t3, t4, t5) (a1, a2, a3, a4, a5) # | |||||
| TaggedBundle ((t1, t2, t3, t4, t5, t6) :: Type) (a1, a2, a3, a4, a5, a6) # | |||||
Defined in Protocols.Plugin.TaggedBundle Associated Types
Methods taggedBundle :: TaggedUnbundled (t1, t2, t3, t4, t5, t6) (a1, a2, a3, a4, a5, a6) -> Tagged (t1, t2, t3, t4, t5, t6) (a1, a2, a3, a4, a5, a6) # taggedUnbundle :: Tagged (t1, t2, t3, t4, t5, t6) (a1, a2, a3, a4, a5, a6) -> TaggedUnbundled (t1, t2, t3, t4, t5, t6) (a1, a2, a3, a4, a5, a6) # | |||||
| TaggedBundle ((t1, t2, t3, t4, t5, t6, t7) :: Type) (a1, a2, a3, a4, a5, a6, a7) # | |||||
Defined in Protocols.Plugin.TaggedBundle Associated Types
Methods taggedBundle :: TaggedUnbundled (t1, t2, t3, t4, t5, t6, t7) (a1, a2, a3, a4, a5, a6, a7) -> Tagged (t1, t2, t3, t4, t5, t6, t7) (a1, a2, a3, a4, a5, a6, a7) # taggedUnbundle :: Tagged (t1, t2, t3, t4, t5, t6, t7) (a1, a2, a3, a4, a5, a6, a7) -> TaggedUnbundled (t1, t2, t3, t4, t5, t6, t7) (a1, a2, a3, a4, a5, a6, a7) # | |||||
| TaggedBundle ((t1, t2, t3, t4, t5, t6, t7, t8) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8) # | |||||
Defined in Protocols.Plugin.TaggedBundle Associated Types
Methods taggedBundle :: TaggedUnbundled (t1, t2, t3, t4, t5, t6, t7, t8) (a1, a2, a3, a4, a5, a6, a7, a8) -> Tagged (t1, t2, t3, t4, t5, t6, t7, t8) (a1, a2, a3, a4, a5, a6, a7, a8) # taggedUnbundle :: Tagged (t1, t2, t3, t4, t5, t6, t7, t8) (a1, a2, a3, a4, a5, a6, a7, a8) -> TaggedUnbundled (t1, t2, t3, t4, t5, t6, t7, t8) (a1, a2, a3, a4, a5, a6, a7, a8) # | |||||
| TaggedBundle ((t1, t2, t3, t4, t5, t6, t7, t8, t9) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9) # | |||||
Defined in Protocols.Plugin.TaggedBundle Associated Types
Methods taggedBundle :: TaggedUnbundled (t1, t2, t3, t4, t5, t6, t7, t8, t9) (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> Tagged (t1, t2, t3, t4, t5, t6, t7, t8, t9) (a1, a2, a3, a4, a5, a6, a7, a8, a9) # taggedUnbundle :: Tagged (t1, t2, t3, t4, t5, t6, t7, t8, t9) (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> TaggedUnbundled (t1, t2, t3, t4, t5, t6, t7, t8, t9) (a1, a2, a3, a4, a5, a6, a7, a8, a9) # | |||||
| TaggedBundle ((t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) # | |||||
Defined in Protocols.Plugin.TaggedBundle Associated Types
Methods taggedBundle :: TaggedUnbundled (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) -> Tagged (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) # taggedUnbundle :: Tagged (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) -> TaggedUnbundled (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) # | |||||
| TaggedBundle ((t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) # | |||||
Defined in Protocols.Plugin.TaggedBundle Associated Types
Methods taggedBundle :: TaggedUnbundled (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) -> Tagged (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) # taggedUnbundle :: Tagged (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) -> TaggedUnbundled (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) # | |||||
| TaggedBundle ((t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) # | |||||
Defined in Protocols.Plugin.TaggedBundle Associated Types
Methods taggedBundle :: TaggedUnbundled (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) -> Tagged (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) # taggedUnbundle :: Tagged (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) -> TaggedUnbundled (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) # | |||||
type family TaggedUnbundled (t :: k) a = (res :: Type) | res -> k t a #
Instances
| type TaggedUnbundled () () # | |
Defined in Protocols.Plugin.TaggedBundle type TaggedUnbundled () () = () | |
| type TaggedUnbundled (Vec n t :: Type) (Vec n a) # | |
Defined in Protocols.Plugin.TaggedBundle | |
| type TaggedUnbundled ((t1, t2) :: Type) (a1, a2) # | |
Defined in Protocols.Plugin.TaggedBundle | |
| type TaggedUnbundled ((t1, t2, t3) :: Type) (a1, a2, a3) # | |
Defined in Protocols.Plugin.TaggedBundle type TaggedUnbundled ((t1, t2, t3) :: Type) (a1, a2, a3) = (Tagged t1 a1, Tagged t2 a2, Tagged t3 a3) | |
| type TaggedUnbundled ((t1, t2, t3, t4) :: Type) (a1, a2, a3, a4) # | |
Defined in Protocols.Plugin.TaggedBundle | |
| type TaggedUnbundled ((t1, t2, t3, t4, t5) :: Type) (a1, a2, a3, a4, a5) # | |
Defined in Protocols.Plugin.TaggedBundle | |
| type TaggedUnbundled ((t1, t2, t3, t4, t5, t6) :: Type) (a1, a2, a3, a4, a5, a6) # | |
Defined in Protocols.Plugin.TaggedBundle | |
| type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7) :: Type) (a1, a2, a3, a4, a5, a6, a7) # | |
Defined in Protocols.Plugin.TaggedBundle | |
| type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8) # | |
| type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8, t9) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9) # | |
| type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) # | |
Defined in Protocols.Plugin.TaggedBundle | |
| type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) # | |
Defined in Protocols.Plugin.TaggedBundle | |
| type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) # | |
Defined in Protocols.Plugin.TaggedBundle type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) = (Tagged t1 a1, Tagged t2 a2, Tagged t3 a3, Tagged t4 a4, Tagged t5 a5, Tagged t6 a6, Tagged t7 a7, Tagged t8 a8, Tagged t9 a9, Tagged t10 a10, Tagged t11 a11, Tagged t12 a12) | |