| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Protocols
Description
Synopsis
- newtype Circuit a b = Circuit ((Fwd a, Bwd b) -> (Bwd a, Fwd b))
- class Protocol a where
- newtype Ack = Ack Bool
- data Reverse (a :: k)
- (|>) :: Circuit a b -> Circuit b c -> Circuit a c
- (<|) :: Circuit b c -> Circuit a b -> Circuit a c
- fromSignals :: ((Fwd a, Bwd b) -> (Bwd a, Fwd b)) -> Circuit a b
- toSignals :: Circuit a b -> (Fwd a, Bwd b) -> (Bwd a, Fwd b)
- data CSignal (dom :: Domain) a
- data Df (dom :: Domain) a
- data ToConst a
- data ToConstBwd a
- idC :: Circuit a a
- repeatC :: forall (n :: Nat) a b. Circuit a b -> Circuit (Vec n a) (Vec n b)
- applyC :: (Fwd a -> Fwd b) -> (Bwd b -> Bwd a) -> Circuit a b
- prod2C :: forall a c b d. Circuit a b -> Circuit c d -> Circuit (a, c) (b, d)
- circuit :: Any :: Type
- (-<) :: Any :: Type
- class Units a where
- units :: 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
Circuit definition
Instances
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 | |||||
data Reverse (a :: k) Source #
Instances
| DfConv a => DfConv (Reverse a) Source # | |||||||||||||
Defined in Protocols.DfConv Associated Types
Methods toDfCircuit :: Proxy (Reverse a) -> Circuit (Df (Dom (Reverse a)) (FwdPayload (Reverse a)), Reverse (Df (Dom (Reverse a)) (BwdPayload (Reverse a)))) (Reverse a) Source # fromDfCircuit :: Proxy (Reverse a) -> Circuit (Reverse a) (Df (Dom (Reverse a)) (FwdPayload (Reverse a)), Reverse (Df (Dom (Reverse a)) (BwdPayload (Reverse a)))) Source # | |||||||||||||
| DfConv (Df dom a, Reverse (Df dom b)) Source # | |||||||||||||
Defined in Protocols.DfConv Associated Types
Methods toDfCircuit :: Proxy (Df dom a, Reverse (Df dom b)) -> Circuit (Df (Dom (Df dom a, Reverse (Df dom b))) (FwdPayload (Df dom a, Reverse (Df dom b))), Reverse (Df (Dom (Df dom a, Reverse (Df dom b))) (BwdPayload (Df dom a, Reverse (Df dom b))))) (Df dom a, Reverse (Df dom b)) Source # fromDfCircuit :: Proxy (Df dom a, Reverse (Df dom b)) -> Circuit (Df dom a, Reverse (Df dom b)) (Df (Dom (Df dom a, Reverse (Df dom b))) (FwdPayload (Df dom a, Reverse (Df dom b))), Reverse (Df (Dom (Df dom a, Reverse (Df dom b))) (BwdPayload (Df dom a, Reverse (Df dom b))))) Source # | |||||||||||||
| (KnownAxi4ReadAddressConfig confAR, KnownAxi4ReadDataConfig confR, NFDataX userR, NFDataX dat, ARIdWidth confAR ~ RIdWidth confR) => DfConv (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) Source # | |||||||||||||
Defined in Protocols.Experimental.DfConv Associated Types
Methods toDfCircuit :: Proxy (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) -> Circuit (Df (Dom (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat))) (FwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat))), Reverse (Df (Dom (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat))) (BwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat))))) (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) Source # fromDfCircuit :: Proxy (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) -> Circuit (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) (Df (Dom (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat))) (FwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat))), Reverse (Df (Dom (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat))) (BwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat))))) Source # | |||||||||||||
| Simulate a => Simulate (Reverse a) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods simToSigFwd :: Proxy (Reverse a) -> SimulateFwdType (Reverse a) -> Fwd (Reverse a) Source # simToSigBwd :: Proxy (Reverse a) -> SimulateBwdType (Reverse a) -> Bwd (Reverse a) Source # sigToSimFwd :: Proxy (Reverse a) -> Fwd (Reverse a) -> SimulateFwdType (Reverse a) Source # sigToSimBwd :: Proxy (Reverse a) -> Bwd (Reverse a) -> SimulateBwdType (Reverse a) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (Reverse a)) (StallAck, [Int]) -> Circuit (Reverse a) (Reverse a) Source # | |||||||||||||
| Protocol a => Protocol (Reverse a) Source # | |||||||||||||
Defined in Protocols.Internal | |||||||||||||
| (KnownAxi4WriteAddressConfig confAW, KnownAxi4WriteDataConfig confW, KnownAxi4WriteResponseConfig confB, NFDataX userAW, NFDataX userB, AWIdWidth confAW ~ BIdWidth confB) => DfConv (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) Source # | |||||||||||||
Defined in Protocols.Experimental.DfConv Associated Types
Methods toDfCircuit :: Proxy (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) -> Circuit (Df (Dom (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB))) (FwdPayload (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB))), Reverse (Df (Dom (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB))) (BwdPayload (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB))))) (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) Source # fromDfCircuit :: Proxy (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) -> Circuit (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) (Df (Dom (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB))) (FwdPayload (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB))), Reverse (Df (Dom (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB))) (BwdPayload (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB))))) Source # | |||||||||||||
| type BwdPayload (Reverse a) Source # | |||||||||||||
Defined in Protocols.DfConv | |||||||||||||
| type BwdPayload (Df dom a, Reverse (Df dom b)) Source # | |||||||||||||
Defined in Protocols.DfConv | |||||||||||||
| type BwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) Source # | |||||||||||||
Defined in Protocols.Experimental.DfConv type BwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) = (dat, userR, ResponseType (RKeepResponse confR)) | |||||||||||||
| type Dom (Reverse a) Source # | |||||||||||||
Defined in Protocols.DfConv | |||||||||||||
| type Dom (Df dom a, Reverse (Df dom b)) Source # | |||||||||||||
Defined in Protocols.DfConv | |||||||||||||
| type Dom (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) Source # | |||||||||||||
Defined in Protocols.Experimental.DfConv | |||||||||||||
| type FwdPayload (Reverse a) Source # | |||||||||||||
Defined in Protocols.DfConv | |||||||||||||
| type FwdPayload (Df dom a, Reverse (Df dom b)) Source # | |||||||||||||
Defined in Protocols.DfConv | |||||||||||||
| type FwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) Source # | |||||||||||||
Defined in Protocols.Experimental.DfConv type FwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) = Axi4ReadAddressInfo confAR dataAR | |||||||||||||
| type SimulateBwdType (Reverse a) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate | |||||||||||||
| type SimulateChannels (Reverse a) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate | |||||||||||||
| type SimulateFwdType (Reverse a) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate | |||||||||||||
| type Bwd (Reverse a) Source # | |||||||||||||
Defined in Protocols.Internal | |||||||||||||
| type Fwd (Reverse a) Source # | |||||||||||||
Defined in Protocols.Internal | |||||||||||||
| type BwdPayload (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) Source # | |||||||||||||
Defined in Protocols.Experimental.DfConv type BwdPayload (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) = (ResponseType (BKeepResponse confB), userB) | |||||||||||||
| type Dom (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) Source # | |||||||||||||
Defined in Protocols.Experimental.DfConv type Dom (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) = dom | |||||||||||||
| type FwdPayload (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) Source # | |||||||||||||
Defined in Protocols.Experimental.DfConv type FwdPayload (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) = (Axi4WriteAddressInfo confAW userAW, BurstLengthType (AWKeepBurstLength confAW), BurstType (AWKeepBurst confAW), StrictStrobeType (WNBytes confW) (WKeepStrobe confW), userW) | |||||||||||||
Combinators & functions
(|>) :: 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
<--------+ +<--------+ +<-------+
| | | |
+-----------+ +-----------+
(<|) :: 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
+------->+ +-------->+ +-------->
| | | |
+-----------+ +-----------+
toSignals :: Circuit a b -> (Fwd a, Bwd b) -> (Bwd a, Fwd b) Source #
View Circuit as its internal representation.
Protocol types
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 | |||||||||||||
data Df (dom :: Domain) a Source #
Simple unidirectional valid-ready protocol.
Instances
| NFDataX dat => DfConv (Df dom dat) Source # | |||||||||||||
Defined in Protocols.DfConv Associated Types
Methods toDfCircuit :: Proxy (Df dom dat) -> Circuit (Df (Dom (Df dom dat)) (FwdPayload (Df dom dat)), Reverse (Df (Dom (Df dom dat)) (BwdPayload (Df dom dat)))) (Df dom dat) Source # fromDfCircuit :: Proxy (Df dom dat) -> Circuit (Df dom dat) (Df (Dom (Df dom dat)) (FwdPayload (Df dom dat)), Reverse (Df (Dom (Df dom dat)) (BwdPayload (Df dom dat)))) Source # | |||||||||||||
| DfConv (Df dom a, Reverse (Df dom b)) Source # | |||||||||||||
Defined in Protocols.DfConv Associated Types
Methods toDfCircuit :: Proxy (Df dom a, Reverse (Df dom b)) -> Circuit (Df (Dom (Df dom a, Reverse (Df dom b))) (FwdPayload (Df dom a, Reverse (Df dom b))), Reverse (Df (Dom (Df dom a, Reverse (Df dom b))) (BwdPayload (Df dom a, Reverse (Df dom b))))) (Df dom a, Reverse (Df dom b)) Source # fromDfCircuit :: Proxy (Df dom a, Reverse (Df dom b)) -> Circuit (Df dom a, Reverse (Df dom b)) (Df (Dom (Df dom a, Reverse (Df dom b))) (FwdPayload (Df dom a, Reverse (Df dom b))), Reverse (Df (Dom (Df dom a, Reverse (Df dom b))) (BwdPayload (Df dom a, Reverse (Df dom b))))) Source # | |||||||||||||
| (TestType a, KnownDomain dom) => Test (Df dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Hedgehog.Internal Methods expectN :: (HasCallStack, MonadTest m) => Proxy (Df dom a) -> ExpectOptions -> SimulateFwdType (Df dom a) -> m (ExpectType (Df dom a)) Source # | |||||||||||||
| Backpressure (Df dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Df | |||||||||||||
| (KnownDomain dom, NFDataX a, ShowX a, Show a) => Drivable (Df dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Df Associated Types
Methods toSimulateType :: Proxy (Df dom a) -> ExpectType (Df dom a) -> SimulateFwdType (Df dom a) Source # fromSimulateType :: Proxy (Df dom a) -> SimulateFwdType (Df dom a) -> ExpectType (Df dom a) Source # driveC :: SimulationConfig -> SimulateFwdType (Df dom a) -> Circuit () (Df dom a) Source # sampleC :: SimulationConfig -> Circuit () (Df dom a) -> SimulateFwdType (Df dom a) Source # | |||||||||||||
| (KnownDomain dom, NFDataX a, ShowX a, Show a) => Simulate (Df dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Df Associated Types
Methods simToSigFwd :: Proxy (Df dom a) -> SimulateFwdType (Df dom a) -> Fwd (Df dom a) Source # simToSigBwd :: Proxy (Df dom a) -> SimulateBwdType (Df dom a) -> Bwd (Df dom a) Source # sigToSimFwd :: Proxy (Df dom a) -> Fwd (Df dom a) -> SimulateFwdType (Df dom a) Source # sigToSimBwd :: Proxy (Df dom a) -> Bwd (Df dom a) -> SimulateBwdType (Df dom a) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (Df dom a)) (StallAck, [Int]) -> Circuit (Df dom a) (Df dom a) Source # | |||||||||||||
| IdleCircuit (Df dom a) Source # | |||||||||||||
| Protocol (Df dom a) Source # | |||||||||||||
Defined in Protocols.Df | |||||||||||||
| type BwdPayload (Df dom dat) Source # | |||||||||||||
Defined in Protocols.DfConv | |||||||||||||
| type BwdPayload (Df dom a, Reverse (Df dom b)) Source # | |||||||||||||
Defined in Protocols.DfConv | |||||||||||||
| type Dom (Df dom dat) Source # | |||||||||||||
Defined in Protocols.DfConv | |||||||||||||
| type Dom (Df dom a, Reverse (Df dom b)) Source # | |||||||||||||
Defined in Protocols.DfConv | |||||||||||||
| type FwdPayload (Df dom dat) Source # | |||||||||||||
Defined in Protocols.DfConv | |||||||||||||
| type FwdPayload (Df dom a, Reverse (Df dom b)) Source # | |||||||||||||
Defined in Protocols.DfConv | |||||||||||||
| type ExpectType (Df dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Df | |||||||||||||
| type SimulateBwdType (Df dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Df | |||||||||||||
| type SimulateChannels (Df dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Df | |||||||||||||
| type SimulateFwdType (Df dom a) Source # | |||||||||||||
Defined in Protocols.Experimental.Df | |||||||||||||
| type Bwd (Df dom a) Source # | |||||||||||||
Defined in Protocols.Df | |||||||||||||
| type Fwd (Df dom a) Source # | |||||||||||||
Defined in Protocols.Df | |||||||||||||
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 | |||||||||
Basic circuits
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)
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.
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
++.
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.
Circuit notation 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 | |
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) # | |||||