| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Protocols.Experimental.Simulate
Contents
Description
Experimental protocol-agnostic simulation support.
This module contains the generic simulation classes and helpers that used to be part of the default Protocols import surface. New tests should prefer protocol-specific drivers and checkers over adding more assumptions here.
Synopsis
- class Protocol a => Backpressure a where
- boolsToBwd :: Proxy a -> [Bool] -> Bwd a
- class (KnownNat (SimulateChannels a), Backpressure a, Simulate a) => Drivable a where
- type ExpectType a
- toSimulateType :: Proxy a -> ExpectType a -> SimulateFwdType a
- fromSimulateType :: Proxy a -> SimulateFwdType a -> ExpectType a
- driveC :: SimulationConfig -> SimulateFwdType a -> Circuit () a
- sampleC :: SimulationConfig -> Circuit () a -> SimulateFwdType a
- type family ExpectType a
- class (KnownNat (SimulateChannels a), Protocol a) => Simulate a where
- type SimulateFwdType a
- type SimulateBwdType a
- type SimulateChannels a :: Nat
- simToSigFwd :: Proxy a -> SimulateFwdType a -> Fwd a
- simToSigBwd :: Proxy a -> SimulateBwdType a -> Bwd a
- sigToSimFwd :: Proxy a -> Fwd a -> SimulateFwdType a
- sigToSimBwd :: Proxy a -> Bwd a -> SimulateBwdType a
- stallC :: SimulationConfig -> Vec (SimulateChannels a) (StallAck, [Int]) -> Circuit a a
- type family SimulateBwdType a
- type family SimulateChannels a :: Nat
- type family SimulateFwdType a
- data SimulationConfig = SimulationConfig {
- resetCycles :: Int
- timeoutAfter :: Int
- ignoreReset :: Bool
- data StallAck
- simulateC :: (Drivable a, Drivable b) => Circuit a b -> SimulationConfig -> SimulateFwdType a -> SimulateFwdType b
- simulateCS :: (Drivable a, Drivable b) => Circuit a b -> ExpectType a -> ExpectType b
- simulateCSE :: forall (dom :: Domain) a b. (Drivable a, Drivable b, KnownDomain dom) => (Clock dom -> Reset dom -> Enable dom -> Circuit a b) -> ExpectType a -> ExpectType b
- simulateCircuit :: (Simulate a, Simulate b) => SimulateFwdType a -> SimulateBwdType b -> Circuit a b -> (SimulateBwdType a, SimulateFwdType b)
- def :: Default a => a
Documentation
class Protocol a => Backpressure a where Source #
Conversion from booleans to protocol specific acknowledgement values.
Methods
boolsToBwd :: Proxy a -> [Bool] -> Bwd a Source #
Interpret list of booleans as a list of acknowledgements at every cycle. Implementations don't have to account for finite lists.
Instances
class (KnownNat (SimulateChannels a), Backpressure a, Simulate a) => Drivable a where Source #
Class that defines how to drive, sample, and stall a Circuit of some shape. The Backpressure instance requires that the backward type of the circuit can be generated from a list of Booleans.
Associated Types
type ExpectType a Source #
Similar to SimulateFwdType, but without backpressure information. For
example:
>>>:kind! (forall dom a. ExpectType (Df dom a))... = [a]
Useful in situations where you only care about the "pure functionality" of
a circuit, not its timing information. Leveraged by various functions
in Protocols.Experimental.Hedgehog and simulateCS.
Methods
Arguments
| :: Proxy a | Type witness |
| -> ExpectType a | Expect type: input for a protocol without stall information |
| -> SimulateFwdType a | Expect type: input for a protocol with stall information |
Convert a ExpectType a, a type representing data without backpressure, into a type that does, SimulateFwdType a.
Arguments
| :: Proxy a | Type witness |
| -> SimulateFwdType a | Expect type: input for a protocol with stall information |
| -> ExpectType a | Expect type: input for a protocol without stall information |
Convert a ExpectType a, a type representing data without backpressure, into a type that does, SimulateFwdType a.
driveC :: SimulationConfig -> SimulateFwdType a -> Circuit () a Source #
Create a driving circuit. Can be used in combination with sampleC
to simulate a circuit. Related: simulateC.
sampleC :: SimulationConfig -> Circuit () a -> SimulateFwdType a Source #
Instances
| Drivable () Source # | |||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy () -> ExpectType () -> SimulateFwdType () Source # fromSimulateType :: Proxy () -> SimulateFwdType () -> ExpectType () Source # driveC :: SimulationConfig -> SimulateFwdType () -> Circuit () () Source # sampleC :: SimulationConfig -> Circuit () () -> SimulateFwdType () Source # | |||||
| (KnownNat n, Drivable a) => Drivable (Vec n a) Source # | |||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy (Vec n a) -> ExpectType (Vec n a) -> SimulateFwdType (Vec n a) Source # fromSimulateType :: Proxy (Vec n a) -> SimulateFwdType (Vec n a) -> ExpectType (Vec n a) Source # driveC :: SimulationConfig -> SimulateFwdType (Vec n a) -> Circuit () (Vec n a) Source # sampleC :: SimulationConfig -> Circuit () (Vec n a) -> SimulateFwdType (Vec n a) Source # | |||||
| (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 # | |||||
| (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 # | |||||
| (Drivable a, Drivable b) => Drivable (a, b) Source # | |||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy (a, b) -> ExpectType (a, b) -> SimulateFwdType (a, b) Source # fromSimulateType :: Proxy (a, b) -> SimulateFwdType (a, b) -> ExpectType (a, b) Source # driveC :: SimulationConfig -> SimulateFwdType (a, b) -> Circuit () (a, b) Source # sampleC :: SimulationConfig -> Circuit () (a, b) -> SimulateFwdType (a, b) 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 # | |||||
| (KnownAxi4StreamConfig conf, NFDataX userType, KnownDomain dom) => Drivable (Axi4Stream dom conf userType) Source # | |||||
Defined in Protocols.Experimental.Axi4.Stream Associated Types
Methods toSimulateType :: Proxy (Axi4Stream dom conf userType) -> ExpectType (Axi4Stream dom conf userType) -> SimulateFwdType (Axi4Stream dom conf userType) Source # fromSimulateType :: Proxy (Axi4Stream dom conf userType) -> SimulateFwdType (Axi4Stream dom conf userType) -> ExpectType (Axi4Stream dom conf userType) Source # driveC :: SimulationConfig -> SimulateFwdType (Axi4Stream dom conf userType) -> Circuit () (Axi4Stream dom conf userType) Source # sampleC :: SimulationConfig -> Circuit () (Axi4Stream dom conf userType) -> SimulateFwdType (Axi4Stream dom conf userType) Source # | |||||
| KnownDomain dom => Drivable (PacketStream dom dataWidth meta) Source # | |||||
Defined in Protocols.Experimental.PacketStream Associated Types
Methods toSimulateType :: Proxy (PacketStream dom dataWidth meta) -> ExpectType (PacketStream dom dataWidth meta) -> SimulateFwdType (PacketStream dom dataWidth meta) Source # fromSimulateType :: Proxy (PacketStream dom dataWidth meta) -> SimulateFwdType (PacketStream dom dataWidth meta) -> ExpectType (PacketStream dom dataWidth meta) Source # driveC :: SimulationConfig -> SimulateFwdType (PacketStream dom dataWidth meta) -> Circuit () (PacketStream dom dataWidth meta) Source # sampleC :: SimulationConfig -> Circuit () (PacketStream dom dataWidth meta) -> SimulateFwdType (PacketStream dom dataWidth meta) Source # | |||||
| (Drivable c1, Drivable c2, Drivable c3) => Drivable (c1, c2, c3) Source # | |||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3) -> ExpectType (c1, c2, c3) -> SimulateFwdType (c1, c2, c3) Source # fromSimulateType :: Proxy (c1, c2, c3) -> SimulateFwdType (c1, c2, c3) -> ExpectType (c1, c2, c3) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3) -> Circuit () (c1, c2, c3) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3) -> SimulateFwdType (c1, c2, c3) Source # | |||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4) => Drivable (c1, c2, c3, c4) Source # | |||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4) -> ExpectType (c1, c2, c3, c4) -> SimulateFwdType (c1, c2, c3, c4) Source # fromSimulateType :: Proxy (c1, c2, c3, c4) -> SimulateFwdType (c1, c2, c3, c4) -> ExpectType (c1, c2, c3, c4) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4) -> Circuit () (c1, c2, c3, c4) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4) -> SimulateFwdType (c1, c2, c3, c4) Source # | |||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5) => Drivable (c1, c2, c3, c4, c5) Source # | |||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5) -> ExpectType (c1, c2, c3, c4, c5) -> SimulateFwdType (c1, c2, c3, c4, c5) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5) -> SimulateFwdType (c1, c2, c3, c4, c5) -> ExpectType (c1, c2, c3, c4, c5) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5) -> Circuit () (c1, c2, c3, c4, c5) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5) -> SimulateFwdType (c1, c2, c3, c4, c5) Source # | |||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6) => Drivable (c1, c2, c3, c4, c5, c6) Source # | |||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6) -> ExpectType (c1, c2, c3, c4, c5, c6) -> SimulateFwdType (c1, c2, c3, c4, c5, c6) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6) -> SimulateFwdType (c1, c2, c3, c4, c5, c6) -> ExpectType (c1, c2, c3, c4, c5, c6) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6) -> Circuit () (c1, c2, c3, c4, c5, c6) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6) -> SimulateFwdType (c1, c2, c3, c4, c5, c6) Source # | |||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6, Drivable c7) => Drivable (c1, c2, c3, c4, c5, c6, c7) Source # | |||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7) -> ExpectType (c1, c2, c3, c4, c5, c6, c7) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7) -> ExpectType (c1, c2, c3, c4, c5, c6, c7) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7) -> Circuit () (c1, c2, c3, c4, c5, c6, c7) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6, c7) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7) Source # | |||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6, Drivable c7, Drivable c8) => Drivable (c1, c2, c3, c4, c5, c6, c7, c8) Source # | |||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8) -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8) Source # | |||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6, Drivable c7, Drivable c8, Drivable c9) => Drivable (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # | |||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # | |||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6, Drivable c7, Drivable c8, Drivable c9, Drivable c10) => Drivable (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # | |||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # | |||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6, Drivable c7, Drivable c8, Drivable c9, Drivable c10, Drivable c11) => Drivable (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # | |||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # | |||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6, Drivable c7, Drivable c8, Drivable c9, Drivable c10, Drivable c11, Drivable c12) => Drivable (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # | |||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # | |||||
type family ExpectType a Source #
Similar to SimulateFwdType, but without backpressure information. For
example:
>>>:kind! (forall dom a. ExpectType (Df dom a))... = [a]
Useful in situations where you only care about the "pure functionality" of
a circuit, not its timing information. Leveraged by various functions
in Protocols.Experimental.Hedgehog and simulateCS.
Instances
class (KnownNat (SimulateChannels a), Protocol a) => Simulate a where Source #
Defines functions necessary for implementation of the
simulateCircuit function. This kind of
simulation requires a lists for both the forward and the backward direction.
This class requires the definition of the types that the test supplies and
returns. Its functions are converters from these simulation types to types on
the Signal level. The
simulateCircuit function can thus receive the
necessary simulation types, convert them to types on the Signal
level, pass those signals to the circuit, and convert the result of the circuit
back to the simulation types giving the final result.
Associated Types
type SimulateFwdType a Source #
The type that a test must provide to the
simulateCircuit function in the forward
direction. Usually this is some sort of list.
type SimulateBwdType a Source #
The type that a test must provide to the
simulateCircuit function in the backward
direction. Usually this is some sort of list
type SimulateChannels a :: Nat Source #
The number of simulation channels this channel has after flattening it.
For example, (Df dom a, Df dom a) has 2, while
Vec 4 (Df dom a, Df dom a) has 8.
Methods
simToSigFwd :: Proxy a -> SimulateFwdType a -> Fwd a Source #
Convert the forward simulation type to the Fwd of a.
simToSigBwd :: Proxy a -> SimulateBwdType a -> Bwd a Source #
Convert the backward simulation type to the Bwd of a.
sigToSimFwd :: Proxy a -> Fwd a -> SimulateFwdType a Source #
Convert a signal of type Bwd a to the backward simulation type.
sigToSimBwd :: Proxy a -> Bwd a -> SimulateBwdType a Source #
Convert a signal of type Fwd a to the forward simulation type.
stallC :: SimulationConfig -> Vec (SimulateChannels a) (StallAck, [Int]) -> Circuit a a Source #
Create a stalling circuit. For each simulation channel (see
SimulateChannels) a tuple determines how the component stalls:
StallAck: determines how the backward (acknowledgement) channel should behave whenever the component does not receive data from the left hand side or when it's intentionally stalling.- A list of
Ints that determine how many stall cycles to insert on every cycle the left hand side component produces data. I.e., stalls are not inserted whenever the left hand side does not produce data.
Instances
| Simulate () Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods simToSigFwd :: Proxy () -> SimulateFwdType () -> Fwd () Source # simToSigBwd :: Proxy () -> SimulateBwdType () -> Bwd () Source # sigToSimFwd :: Proxy () -> Fwd () -> SimulateFwdType () Source # sigToSimBwd :: Proxy () -> Bwd () -> SimulateBwdType () Source # stallC :: SimulationConfig -> Vec (SimulateChannels ()) (StallAck, [Int]) -> Circuit () () Source # | |||||||||||||
| (KnownNat n, Simulate a) => Simulate (Vec n a) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods simToSigFwd :: Proxy (Vec n a) -> SimulateFwdType (Vec n a) -> Fwd (Vec n a) Source # simToSigBwd :: Proxy (Vec n a) -> SimulateBwdType (Vec n a) -> Bwd (Vec n a) Source # sigToSimFwd :: Proxy (Vec n a) -> Fwd (Vec n a) -> SimulateFwdType (Vec n a) Source # sigToSimBwd :: Proxy (Vec n a) -> Bwd (Vec n a) -> SimulateBwdType (Vec n a) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (Vec n a)) (StallAck, [Int]) -> Circuit (Vec n a) (Vec n 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 # | |||||||||||||
| (KnownManagerConfig config, KnownDomain dom, config ~ RemoveNonDfManager config) => Simulate (AvalonMmManager dom config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
Methods simToSigFwd :: Proxy (AvalonMmManager dom config) -> SimulateFwdType (AvalonMmManager dom config) -> Fwd (AvalonMmManager dom config) Source # simToSigBwd :: Proxy (AvalonMmManager dom config) -> SimulateBwdType (AvalonMmManager dom config) -> Bwd (AvalonMmManager dom config) Source # sigToSimFwd :: Proxy (AvalonMmManager dom config) -> Fwd (AvalonMmManager dom config) -> SimulateFwdType (AvalonMmManager dom config) Source # sigToSimBwd :: Proxy (AvalonMmManager dom config) -> Bwd (AvalonMmManager dom config) -> SimulateBwdType (AvalonMmManager dom config) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (AvalonMmManager dom config)) (StallAck, [Int]) -> Circuit (AvalonMmManager dom config) (AvalonMmManager dom config) Source # | |||||||||||||
| 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 # | |||||||||||||
| 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 # | |||||||||||||
| (Simulate a, Simulate b) => Simulate (a, b) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods simToSigFwd :: Proxy (a, b) -> SimulateFwdType (a, b) -> Fwd (a, b) Source # simToSigBwd :: Proxy (a, b) -> SimulateBwdType (a, b) -> Bwd (a, b) Source # sigToSimFwd :: Proxy (a, b) -> Fwd (a, b) -> SimulateFwdType (a, b) Source # sigToSimBwd :: Proxy (a, b) -> Bwd (a, b) -> SimulateBwdType (a, b) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (a, b)) (StallAck, [Int]) -> Circuit (a, b) (a, b) Source # | |||||||||||||
| (KnownSubordinateConfig config, KnownDomain dom, config ~ RemoveNonDfSubordinate config) => Simulate (AvalonMmSubordinate dom 0 config) Source # | |||||||||||||
Defined in Protocols.Experimental.Avalon.MemMap Associated Types
Methods simToSigFwd :: Proxy (AvalonMmSubordinate dom 0 config) -> SimulateFwdType (AvalonMmSubordinate dom 0 config) -> Fwd (AvalonMmSubordinate dom 0 config) Source # simToSigBwd :: Proxy (AvalonMmSubordinate dom 0 config) -> SimulateBwdType (AvalonMmSubordinate dom 0 config) -> Bwd (AvalonMmSubordinate dom 0 config) Source # sigToSimFwd :: Proxy (AvalonMmSubordinate dom 0 config) -> Fwd (AvalonMmSubordinate dom 0 config) -> SimulateFwdType (AvalonMmSubordinate dom 0 config) Source # sigToSimBwd :: Proxy (AvalonMmSubordinate dom 0 config) -> Bwd (AvalonMmSubordinate dom 0 config) -> SimulateBwdType (AvalonMmSubordinate dom 0 config) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (AvalonMmSubordinate dom 0 config)) (StallAck, [Int]) -> Circuit (AvalonMmSubordinate dom 0 config) (AvalonMmSubordinate dom 0 config) Source # | |||||||||||||
| (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 # | |||||||||||||
| (KnownAxi4StreamConfig conf, NFDataX userType, KnownDomain dom) => Simulate (Axi4Stream dom conf userType) Source # | |||||||||||||
Defined in Protocols.Experimental.Axi4.Stream Associated Types
Methods simToSigFwd :: Proxy (Axi4Stream dom conf userType) -> SimulateFwdType (Axi4Stream dom conf userType) -> Fwd (Axi4Stream dom conf userType) Source # simToSigBwd :: Proxy (Axi4Stream dom conf userType) -> SimulateBwdType (Axi4Stream dom conf userType) -> Bwd (Axi4Stream dom conf userType) Source # sigToSimFwd :: Proxy (Axi4Stream dom conf userType) -> Fwd (Axi4Stream dom conf userType) -> SimulateFwdType (Axi4Stream dom conf userType) Source # sigToSimBwd :: Proxy (Axi4Stream dom conf userType) -> Bwd (Axi4Stream dom conf userType) -> SimulateBwdType (Axi4Stream dom conf userType) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (Axi4Stream dom conf userType)) (StallAck, [Int]) -> Circuit (Axi4Stream dom conf userType) (Axi4Stream dom conf userType) Source # | |||||||||||||
| KnownDomain dom => Simulate (PacketStream dom dataWidth meta) Source # | |||||||||||||
Defined in Protocols.Experimental.PacketStream Associated Types
Methods simToSigFwd :: Proxy (PacketStream dom dataWidth meta) -> SimulateFwdType (PacketStream dom dataWidth meta) -> Fwd (PacketStream dom dataWidth meta) Source # simToSigBwd :: Proxy (PacketStream dom dataWidth meta) -> SimulateBwdType (PacketStream dom dataWidth meta) -> Bwd (PacketStream dom dataWidth meta) Source # sigToSimFwd :: Proxy (PacketStream dom dataWidth meta) -> Fwd (PacketStream dom dataWidth meta) -> SimulateFwdType (PacketStream dom dataWidth meta) Source # sigToSimBwd :: Proxy (PacketStream dom dataWidth meta) -> Bwd (PacketStream dom dataWidth meta) -> SimulateBwdType (PacketStream dom dataWidth meta) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (PacketStream dom dataWidth meta)) (StallAck, [Int]) -> Circuit (PacketStream dom dataWidth meta) (PacketStream dom dataWidth meta) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3) => Simulate (c1, c2, c3) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods simToSigFwd :: Proxy (c1, c2, c3) -> SimulateFwdType (c1, c2, c3) -> Fwd (c1, c2, c3) Source # simToSigBwd :: Proxy (c1, c2, c3) -> SimulateBwdType (c1, c2, c3) -> Bwd (c1, c2, c3) Source # sigToSimFwd :: Proxy (c1, c2, c3) -> Fwd (c1, c2, c3) -> SimulateFwdType (c1, c2, c3) Source # sigToSimBwd :: Proxy (c1, c2, c3) -> Bwd (c1, c2, c3) -> SimulateBwdType (c1, c2, c3) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3)) (StallAck, [Int]) -> Circuit (c1, c2, c3) (c1, c2, c3) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4) => Simulate (c1, c2, c3, c4) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods simToSigFwd :: Proxy (c1, c2, c3, c4) -> SimulateFwdType (c1, c2, c3, c4) -> Fwd (c1, c2, c3, c4) Source # simToSigBwd :: Proxy (c1, c2, c3, c4) -> SimulateBwdType (c1, c2, c3, c4) -> Bwd (c1, c2, c3, c4) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4) -> Fwd (c1, c2, c3, c4) -> SimulateFwdType (c1, c2, c3, c4) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4) -> Bwd (c1, c2, c3, c4) -> SimulateBwdType (c1, c2, c3, c4) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4) (c1, c2, c3, c4) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5) => Simulate (c1, c2, c3, c4, c5) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5) -> SimulateFwdType (c1, c2, c3, c4, c5) -> Fwd (c1, c2, c3, c4, c5) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5) -> SimulateBwdType (c1, c2, c3, c4, c5) -> Bwd (c1, c2, c3, c4, c5) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5) -> Fwd (c1, c2, c3, c4, c5) -> SimulateFwdType (c1, c2, c3, c4, c5) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5) -> Bwd (c1, c2, c3, c4, c5) -> SimulateBwdType (c1, c2, c3, c4, c5) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5) (c1, c2, c3, c4, c5) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6) => Simulate (c1, c2, c3, c4, c5, c6) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6) -> SimulateFwdType (c1, c2, c3, c4, c5, c6) -> Fwd (c1, c2, c3, c4, c5, c6) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6) -> SimulateBwdType (c1, c2, c3, c4, c5, c6) -> Bwd (c1, c2, c3, c4, c5, c6) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6) -> Fwd (c1, c2, c3, c4, c5, c6) -> SimulateFwdType (c1, c2, c3, c4, c5, c6) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6) -> Bwd (c1, c2, c3, c4, c5, c6) -> SimulateBwdType (c1, c2, c3, c4, c5, c6) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6) (c1, c2, c3, c4, c5, c6) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6, Simulate c7) => Simulate (c1, c2, c3, c4, c5, c6, c7) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7) -> Fwd (c1, c2, c3, c4, c5, c6, c7) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7) -> Bwd (c1, c2, c3, c4, c5, c6, c7) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7) -> Fwd (c1, c2, c3, c4, c5, c6, c7) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7) -> Bwd (c1, c2, c3, c4, c5, c6, c7) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6, c7)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6, c7) (c1, c2, c3, c4, c5, c6, c7) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6, Simulate c7, Simulate c8) => Simulate (c1, c2, c3, c4, c5, c6, c7, c8) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types
Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6, c7, c8)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6, c7, c8) (c1, c2, c3, c4, c5, c6, c7, c8) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6, Simulate c7, Simulate c8, Simulate c9) => Simulate (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6, c7, c8, c9)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6, c7, c8, c9) (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6, Simulate c7, Simulate c8, Simulate c9, Simulate c10) => Simulate (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6, Simulate c7, Simulate c8, Simulate c9, Simulate c10, Simulate c11) => Simulate (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6, Simulate c7, Simulate c8, Simulate c9, Simulate c10, Simulate c11, Simulate c12) => Simulate (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # | |||||||||||||
Defined in Protocols.Experimental.Simulate Associated Types Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # | |||||||||||||
type family SimulateBwdType a Source #
The type that a test must provide to the
simulateCircuit function in the backward
direction. Usually this is some sort of list
Instances
type family SimulateChannels a :: Nat Source #
The number of simulation channels this channel has after flattening it.
For example, (Df dom a, Df dom a) has 2, while
Vec 4 (Df dom a, Df dom a) has 8.
Instances
type family SimulateFwdType a Source #
The type that a test must provide to the
simulateCircuit function in the forward
direction. Usually this is some sort of list.
Instances
data SimulationConfig Source #
Specifies option for simulation functions. Don't use this constructor
directly, as it may be extend with other options in the future. Use def
instead.
Constructors
| SimulationConfig | |
Fields
| |
Instances
| Default SimulationConfig Source # | |
Defined in Protocols.Experimental.Simulate.Types Methods def :: SimulationConfig # | |
| Show SimulationConfig Source # | |
Defined in Protocols.Experimental.Simulate.Types Methods showsPrec :: Int -> SimulationConfig -> ShowS # show :: SimulationConfig -> String # showList :: [SimulationConfig] -> ShowS # | |
Determines what kind of acknowledgement signal stallC will send when its
input component is not sending any data. Note that, in the Df protocol,
protocols may send arbitrary acknowledgement signals when this happens.
Constructors
| StallWithNack | Send Nack |
| StallWithAck | Send Ack |
| StallWithErrorX | Send |
| StallTransparently | Passthrough acknowledgement of RHS component |
| StallCycle | Cycle through all modes |
Instances
| Bounded StallAck Source # | |
| Enum StallAck Source # | |
Defined in Protocols.Experimental.Simulate.Types | |
| Show StallAck Source # | |
| Eq StallAck Source # | |
Arguments
| :: (Drivable a, Drivable b) | |
| => Circuit a b | Circuit to simulate |
| -> SimulationConfig | Simulation configuration. Note that some options only apply to |
| -> SimulateFwdType a | Circuit input |
| -> SimulateFwdType b | Circuit output |
Simulate a circuit. Includes samples while reset is asserted. Not synthesizable.
To figure out what input you need to supply, either solve the type SimulateFwdType manually, or let the repl do the work for you! Example:
>>>:kind! (forall dom a. SimulateFwdType (Df dom a))... = [Maybe a]
This would mean a Circuit (Df dom a) (Df dom b) would need
[Maybe a] as the last argument of simulateC and would result in
[Maybe b]. Note that for this particular type you can neither supply
stalls nor introduce backpressure. If you want to do this use
stall.
Arguments
| :: (Drivable a, Drivable b) | |
| => Circuit a b | Circuit to simulate |
| -> ExpectType a | Circuit input |
| -> ExpectType b | Circuit output |
Like simulateC, but does not allow caller to control and observe
backpressure. Furthermore, it ignores all data produced while the reset is
asserted.
Example:
>>>import qualified Protocols.Df as Df>>>take 2 (simulateCS (Df.catMaybes @C.System @Int) [Nothing, Just 1, Nothing, Just 3])[1,3]
Arguments
| :: forall (dom :: Domain) a b. (Drivable a, Drivable b, KnownDomain dom) | |
| => (Clock dom -> Reset dom -> Enable dom -> Circuit a b) | Circuit to simulate |
| -> ExpectType a | Circuit input |
| -> ExpectType b | Circuit output |
Like simulateCS, but takes a circuit expecting a clock, reset, and enable.
simulateCircuit :: (Simulate a, Simulate b) => SimulateFwdType a -> SimulateBwdType b -> Circuit a b -> (SimulateBwdType a, SimulateFwdType b) Source #
Orphan instances
| Backpressure () Source # | |||||||||||||
| Drivable () Source # | |||||||||||||
Associated Types
Methods toSimulateType :: Proxy () -> ExpectType () -> SimulateFwdType () Source # fromSimulateType :: Proxy () -> SimulateFwdType () -> ExpectType () Source # driveC :: SimulationConfig -> SimulateFwdType () -> Circuit () () Source # sampleC :: SimulationConfig -> Circuit () () -> SimulateFwdType () Source # | |||||||||||||
| Simulate () Source # | |||||||||||||
Associated Types
Methods simToSigFwd :: Proxy () -> SimulateFwdType () -> Fwd () Source # simToSigBwd :: Proxy () -> SimulateBwdType () -> Bwd () Source # sigToSimFwd :: Proxy () -> Fwd () -> SimulateFwdType () Source # sigToSimBwd :: Proxy () -> Bwd () -> SimulateBwdType () Source # stallC :: SimulationConfig -> Vec (SimulateChannels ()) (StallAck, [Int]) -> Circuit () () Source # | |||||||||||||
| (KnownNat n, Backpressure a) => Backpressure (Vec n a) Source # | |||||||||||||
| Backpressure (CSignal dom a) Source # | |||||||||||||
| (Backpressure a, Backpressure b) => Backpressure (a, b) Source # | |||||||||||||
| (KnownNat n, Drivable a) => Drivable (Vec n a) Source # | |||||||||||||
Associated Types
Methods toSimulateType :: Proxy (Vec n a) -> ExpectType (Vec n a) -> SimulateFwdType (Vec n a) Source # fromSimulateType :: Proxy (Vec n a) -> SimulateFwdType (Vec n a) -> ExpectType (Vec n a) Source # driveC :: SimulationConfig -> SimulateFwdType (Vec n a) -> Circuit () (Vec n a) Source # sampleC :: SimulationConfig -> Circuit () (Vec n a) -> SimulateFwdType (Vec n a) Source # | |||||||||||||
| (NFDataX a, ShowX a, Show a, KnownDomain dom) => Drivable (CSignal dom a) Source # | |||||||||||||
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 # | |||||||||||||
| (Drivable a, Drivable b) => Drivable (a, b) Source # | |||||||||||||
Associated Types
Methods toSimulateType :: Proxy (a, b) -> ExpectType (a, b) -> SimulateFwdType (a, b) Source # fromSimulateType :: Proxy (a, b) -> SimulateFwdType (a, b) -> ExpectType (a, b) Source # driveC :: SimulationConfig -> SimulateFwdType (a, b) -> Circuit () (a, b) Source # sampleC :: SimulationConfig -> Circuit () (a, b) -> SimulateFwdType (a, b) Source # | |||||||||||||
| (KnownNat n, Simulate a) => Simulate (Vec n a) Source # | |||||||||||||
Associated Types
Methods simToSigFwd :: Proxy (Vec n a) -> SimulateFwdType (Vec n a) -> Fwd (Vec n a) Source # simToSigBwd :: Proxy (Vec n a) -> SimulateBwdType (Vec n a) -> Bwd (Vec n a) Source # sigToSimFwd :: Proxy (Vec n a) -> Fwd (Vec n a) -> SimulateFwdType (Vec n a) Source # sigToSimBwd :: Proxy (Vec n a) -> Bwd (Vec n a) -> SimulateBwdType (Vec n a) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (Vec n a)) (StallAck, [Int]) -> Circuit (Vec n a) (Vec n a) Source # | |||||||||||||
| Simulate a => Simulate (Reverse a) Source # | |||||||||||||
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 # | |||||||||||||
| KnownDomain dom => Simulate (CSignal dom a) Source # | |||||||||||||
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 # | |||||||||||||
| (Simulate a, Simulate b) => Simulate (a, b) Source # | |||||||||||||
Associated Types
Methods simToSigFwd :: Proxy (a, b) -> SimulateFwdType (a, b) -> Fwd (a, b) Source # simToSigBwd :: Proxy (a, b) -> SimulateBwdType (a, b) -> Bwd (a, b) Source # sigToSimFwd :: Proxy (a, b) -> Fwd (a, b) -> SimulateFwdType (a, b) Source # sigToSimBwd :: Proxy (a, b) -> Bwd (a, b) -> SimulateBwdType (a, b) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (a, b)) (StallAck, [Int]) -> Circuit (a, b) (a, b) Source # | |||||||||||||
| (Backpressure c1, Backpressure c2, Backpressure c3) => Backpressure (c1, c2, c3) Source # | |||||||||||||
| (Drivable c1, Drivable c2, Drivable c3) => Drivable (c1, c2, c3) Source # | |||||||||||||
Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3) -> ExpectType (c1, c2, c3) -> SimulateFwdType (c1, c2, c3) Source # fromSimulateType :: Proxy (c1, c2, c3) -> SimulateFwdType (c1, c2, c3) -> ExpectType (c1, c2, c3) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3) -> Circuit () (c1, c2, c3) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3) -> SimulateFwdType (c1, c2, c3) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3) => Simulate (c1, c2, c3) Source # | |||||||||||||
Associated Types
Methods simToSigFwd :: Proxy (c1, c2, c3) -> SimulateFwdType (c1, c2, c3) -> Fwd (c1, c2, c3) Source # simToSigBwd :: Proxy (c1, c2, c3) -> SimulateBwdType (c1, c2, c3) -> Bwd (c1, c2, c3) Source # sigToSimFwd :: Proxy (c1, c2, c3) -> Fwd (c1, c2, c3) -> SimulateFwdType (c1, c2, c3) Source # sigToSimBwd :: Proxy (c1, c2, c3) -> Bwd (c1, c2, c3) -> SimulateBwdType (c1, c2, c3) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3)) (StallAck, [Int]) -> Circuit (c1, c2, c3) (c1, c2, c3) Source # | |||||||||||||
| (Backpressure c1, Backpressure c2, Backpressure c3, Backpressure c4) => Backpressure (c1, c2, c3, c4) Source # | |||||||||||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4) => Drivable (c1, c2, c3, c4) Source # | |||||||||||||
Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4) -> ExpectType (c1, c2, c3, c4) -> SimulateFwdType (c1, c2, c3, c4) Source # fromSimulateType :: Proxy (c1, c2, c3, c4) -> SimulateFwdType (c1, c2, c3, c4) -> ExpectType (c1, c2, c3, c4) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4) -> Circuit () (c1, c2, c3, c4) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4) -> SimulateFwdType (c1, c2, c3, c4) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4) => Simulate (c1, c2, c3, c4) Source # | |||||||||||||
Associated Types
Methods simToSigFwd :: Proxy (c1, c2, c3, c4) -> SimulateFwdType (c1, c2, c3, c4) -> Fwd (c1, c2, c3, c4) Source # simToSigBwd :: Proxy (c1, c2, c3, c4) -> SimulateBwdType (c1, c2, c3, c4) -> Bwd (c1, c2, c3, c4) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4) -> Fwd (c1, c2, c3, c4) -> SimulateFwdType (c1, c2, c3, c4) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4) -> Bwd (c1, c2, c3, c4) -> SimulateBwdType (c1, c2, c3, c4) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4) (c1, c2, c3, c4) Source # | |||||||||||||
| (Backpressure c1, Backpressure c2, Backpressure c3, Backpressure c4, Backpressure c5) => Backpressure (c1, c2, c3, c4, c5) Source # | |||||||||||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5) => Drivable (c1, c2, c3, c4, c5) Source # | |||||||||||||
Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5) -> ExpectType (c1, c2, c3, c4, c5) -> SimulateFwdType (c1, c2, c3, c4, c5) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5) -> SimulateFwdType (c1, c2, c3, c4, c5) -> ExpectType (c1, c2, c3, c4, c5) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5) -> Circuit () (c1, c2, c3, c4, c5) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5) -> SimulateFwdType (c1, c2, c3, c4, c5) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5) => Simulate (c1, c2, c3, c4, c5) Source # | |||||||||||||
Associated Types
Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5) -> SimulateFwdType (c1, c2, c3, c4, c5) -> Fwd (c1, c2, c3, c4, c5) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5) -> SimulateBwdType (c1, c2, c3, c4, c5) -> Bwd (c1, c2, c3, c4, c5) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5) -> Fwd (c1, c2, c3, c4, c5) -> SimulateFwdType (c1, c2, c3, c4, c5) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5) -> Bwd (c1, c2, c3, c4, c5) -> SimulateBwdType (c1, c2, c3, c4, c5) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5) (c1, c2, c3, c4, c5) Source # | |||||||||||||
| (Backpressure c1, Backpressure c2, Backpressure c3, Backpressure c4, Backpressure c5, Backpressure c6) => Backpressure (c1, c2, c3, c4, c5, c6) Source # | |||||||||||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6) => Drivable (c1, c2, c3, c4, c5, c6) Source # | |||||||||||||
Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6) -> ExpectType (c1, c2, c3, c4, c5, c6) -> SimulateFwdType (c1, c2, c3, c4, c5, c6) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6) -> SimulateFwdType (c1, c2, c3, c4, c5, c6) -> ExpectType (c1, c2, c3, c4, c5, c6) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6) -> Circuit () (c1, c2, c3, c4, c5, c6) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6) -> SimulateFwdType (c1, c2, c3, c4, c5, c6) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6) => Simulate (c1, c2, c3, c4, c5, c6) Source # | |||||||||||||
Associated Types
Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6) -> SimulateFwdType (c1, c2, c3, c4, c5, c6) -> Fwd (c1, c2, c3, c4, c5, c6) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6) -> SimulateBwdType (c1, c2, c3, c4, c5, c6) -> Bwd (c1, c2, c3, c4, c5, c6) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6) -> Fwd (c1, c2, c3, c4, c5, c6) -> SimulateFwdType (c1, c2, c3, c4, c5, c6) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6) -> Bwd (c1, c2, c3, c4, c5, c6) -> SimulateBwdType (c1, c2, c3, c4, c5, c6) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6) (c1, c2, c3, c4, c5, c6) Source # | |||||||||||||
| (Backpressure c1, Backpressure c2, Backpressure c3, Backpressure c4, Backpressure c5, Backpressure c6, Backpressure c7) => Backpressure (c1, c2, c3, c4, c5, c6, c7) Source # | |||||||||||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6, Drivable c7) => Drivable (c1, c2, c3, c4, c5, c6, c7) Source # | |||||||||||||
Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7) -> ExpectType (c1, c2, c3, c4, c5, c6, c7) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7) -> ExpectType (c1, c2, c3, c4, c5, c6, c7) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7) -> Circuit () (c1, c2, c3, c4, c5, c6, c7) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6, c7) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6, Simulate c7) => Simulate (c1, c2, c3, c4, c5, c6, c7) Source # | |||||||||||||
Associated Types
Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7) -> Fwd (c1, c2, c3, c4, c5, c6, c7) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7) -> Bwd (c1, c2, c3, c4, c5, c6, c7) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7) -> Fwd (c1, c2, c3, c4, c5, c6, c7) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7) -> Bwd (c1, c2, c3, c4, c5, c6, c7) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6, c7)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6, c7) (c1, c2, c3, c4, c5, c6, c7) Source # | |||||||||||||
| (Backpressure c1, Backpressure c2, Backpressure c3, Backpressure c4, Backpressure c5, Backpressure c6, Backpressure c7, Backpressure c8) => Backpressure (c1, c2, c3, c4, c5, c6, c7, c8) Source # | |||||||||||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6, Drivable c7, Drivable c8) => Drivable (c1, c2, c3, c4, c5, c6, c7, c8) Source # | |||||||||||||
Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8) -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6, Simulate c7, Simulate c8) => Simulate (c1, c2, c3, c4, c5, c6, c7, c8) Source # | |||||||||||||
Associated Types
Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6, c7, c8)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6, c7, c8) (c1, c2, c3, c4, c5, c6, c7, c8) Source # | |||||||||||||
| (Backpressure c1, Backpressure c2, Backpressure c3, Backpressure c4, Backpressure c5, Backpressure c6, Backpressure c7, Backpressure c8, Backpressure c9) => Backpressure (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # | |||||||||||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6, Drivable c7, Drivable c8, Drivable c9) => Drivable (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # | |||||||||||||
Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6, Simulate c7, Simulate c8, Simulate c9) => Simulate (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # | |||||||||||||
Associated Types Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6, c7, c8, c9)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6, c7, c8, c9) (c1, c2, c3, c4, c5, c6, c7, c8, c9) Source # | |||||||||||||
| (Backpressure c1, Backpressure c2, Backpressure c3, Backpressure c4, Backpressure c5, Backpressure c6, Backpressure c7, Backpressure c8, Backpressure c9, Backpressure c10) => Backpressure (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # | |||||||||||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6, Drivable c7, Drivable c8, Drivable c9, Drivable c10) => Drivable (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # | |||||||||||||
Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6, Simulate c7, Simulate c8, Simulate c9, Simulate c10) => Simulate (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # | |||||||||||||
Associated Types Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10) Source # | |||||||||||||
| (Backpressure c1, Backpressure c2, Backpressure c3, Backpressure c4, Backpressure c5, Backpressure c6, Backpressure c7, Backpressure c8, Backpressure c9, Backpressure c10, Backpressure c11) => Backpressure (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # | |||||||||||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6, Drivable c7, Drivable c8, Drivable c9, Drivable c10, Drivable c11) => Drivable (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # | |||||||||||||
Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6, Simulate c7, Simulate c8, Simulate c9, Simulate c10, Simulate c11) => Simulate (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # | |||||||||||||
Associated Types Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11) Source # | |||||||||||||
| (Backpressure c1, Backpressure c2, Backpressure c3, Backpressure c4, Backpressure c5, Backpressure c6, Backpressure c7, Backpressure c8, Backpressure c9, Backpressure c10, Backpressure c11, Backpressure c12) => Backpressure (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # | |||||||||||||
| (Drivable c1, Drivable c2, Drivable c3, Drivable c4, Drivable c5, Drivable c6, Drivable c7, Drivable c8, Drivable c9, Drivable c10, Drivable c11, Drivable c12) => Drivable (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # | |||||||||||||
Associated Types
Methods toSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # fromSimulateType :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> ExpectType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # driveC :: SimulationConfig -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # sampleC :: SimulationConfig -> Circuit () (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # | |||||||||||||
| (Simulate c1, Simulate c2, Simulate c3, Simulate c4, Simulate c5, Simulate c6, Simulate c7, Simulate c8, Simulate c9, Simulate c10, Simulate c11, Simulate c12) => Simulate (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # | |||||||||||||
Associated Types Methods simToSigFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # simToSigBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # sigToSimFwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> Fwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateFwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # sigToSimBwd :: Proxy (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> Bwd (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) -> SimulateBwdType (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # stallC :: SimulationConfig -> Vec (SimulateChannels (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)) (StallAck, [Int]) -> Circuit (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12) Source # | |||||||||||||