| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Protocols.Experimental.DfConv
Description
Synopsis
- module Protocols.DfConv
- drive :: (DfConv dfA, HiddenClockResetEnable (Dom dfA)) => Proxy dfA -> SimulationConfig -> [Maybe (FwdPayload dfA)] -> Circuit () dfA
- sample :: (DfConv dfB, HiddenClockResetEnable (Dom dfB)) => Proxy dfB -> SimulationConfig -> Circuit () dfB -> [Maybe (FwdPayload dfB)]
- stall :: (DfConv dfA, DfConv dfB, Dom dfA ~ Dom dfB, HiddenClockResetEnable (Dom dfA), FwdPayload dfA ~ FwdPayload dfB, HasCallStack) => Proxy dfA -> Proxy dfB -> SimulationConfig -> StallAck -> [Int] -> Circuit dfA dfB
- simulate :: (DfConv dfA, DfConv dfB, Dom dfA ~ Dom dfB, KnownDomain (Dom dfA), HasCallStack) => Proxy dfA -> Proxy dfB -> SimulationConfig -> (Clock (Dom dfA) -> Reset (Dom dfA) -> Enable (Dom dfA) -> Circuit dfA dfB) -> [Maybe (FwdPayload dfA)] -> [Maybe (FwdPayload dfB)]
- dfConvTestBench :: (DfConv dfA, DfConv dfB, NFDataX (BwdPayload dfB), ShowX (BwdPayload dfB), Show (BwdPayload dfB), Dom dfA ~ Dom dfB, HiddenClockResetEnable (Dom dfA)) => Proxy dfA -> Proxy dfB -> [Bool] -> [Maybe (BwdPayload dfB)] -> Circuit dfA dfB -> Circuit (Df (Dom dfA) (FwdPayload dfA)) (Df (Dom dfB) (FwdPayload dfB))
- dfConvTestBenchRev :: (DfConv dfA, DfConv dfB, NFDataX (FwdPayload dfA), ShowX (FwdPayload dfA), Show (FwdPayload dfA), Dom dfA ~ Dom dfB, HiddenClockResetEnable (Dom dfA)) => Proxy dfA -> Proxy dfB -> [Maybe (FwdPayload dfA)] -> [Bool] -> Circuit dfA dfB -> Circuit (Df (Dom dfB) (BwdPayload dfB)) (Df (Dom dfA) (BwdPayload dfA))
Documentation
module Protocols.DfConv
Simulation functions
drive :: (DfConv dfA, HiddenClockResetEnable (Dom dfA)) => Proxy dfA -> SimulationConfig -> [Maybe (FwdPayload dfA)] -> Circuit () dfA Source #
Emit values given in list. Emits no data while reset is asserted. Not synthesizable.
sample :: (DfConv dfB, HiddenClockResetEnable (Dom dfB)) => Proxy dfB -> SimulationConfig -> Circuit () dfB -> [Maybe (FwdPayload dfB)] Source #
Arguments
| :: (DfConv dfA, DfConv dfB, Dom dfA ~ Dom dfB, HiddenClockResetEnable (Dom dfA), FwdPayload dfA ~ FwdPayload dfB, HasCallStack) | |
| => Proxy dfA | |
| -> Proxy dfB | |
| -> SimulationConfig | |
| -> StallAck | Acknowledgement to send when LHS does not send data. Stall will act transparently when reset is asserted. |
| -> [Int] | |
| -> Circuit dfA dfB |
Arguments
| :: (DfConv dfA, DfConv dfB, Dom dfA ~ Dom dfB, KnownDomain (Dom dfA), HasCallStack) | |
| => Proxy dfA | |
| -> Proxy dfB | |
| -> SimulationConfig | Simulation configuration. Use |
| -> (Clock (Dom dfA) -> Reset (Dom dfA) -> Enable (Dom dfA) -> Circuit dfA dfB) | Circuit to simulate. |
| -> [Maybe (FwdPayload dfA)] | Inputs |
| -> [Maybe (FwdPayload dfB)] | Outputs |
Simulate a single domain protocol. Not synthesizable.
For a generalized version of simulate, check out
simulateC.
You may notice that things seem to be "switched around" in this function
compared to others (the Circuit has Reverse applied to its right side,
rather than its left, and we take the FwdPayload of dfA rather than
dfB). This is because we are taking a Circuit as a parameter, rather
than returning a Circuit like most other functions do.
dfConvTestBench :: (DfConv dfA, DfConv dfB, NFDataX (BwdPayload dfB), ShowX (BwdPayload dfB), Show (BwdPayload dfB), Dom dfA ~ Dom dfB, HiddenClockResetEnable (Dom dfA)) => Proxy dfA -> Proxy dfB -> [Bool] -> [Maybe (BwdPayload dfB)] -> Circuit dfA dfB -> Circuit (Df (Dom dfA) (FwdPayload dfA)) (Df (Dom dfB) (FwdPayload dfB)) Source #
Given behavior along the backward channel, turn an arbitrary DfConv
circuit into an easily-testable Df circuit representing the forward
channel. Behavior along the backward channel is specified by a [Bool]
(a list of acknowledges to provide), and a [Maybe (BwdPayload dfB)] (a list
of data values to feed in).
dfConvTestBenchRev :: (DfConv dfA, DfConv dfB, NFDataX (FwdPayload dfA), ShowX (FwdPayload dfA), Show (FwdPayload dfA), Dom dfA ~ Dom dfB, HiddenClockResetEnable (Dom dfA)) => Proxy dfA -> Proxy dfB -> [Maybe (FwdPayload dfA)] -> [Bool] -> Circuit dfA dfB -> Circuit (Df (Dom dfB) (BwdPayload dfB)) (Df (Dom dfA) (BwdPayload dfA)) Source #
Given behavior along the forward channel, turn an arbitrary DfConv
circuit into an easily-testable Df circuit representing the backward
channel. Behavior along the forward channel is specified by a
[Maybe (FwdPayload dfA)] (a list of data values to feed in), and a [Bool]
(a list of acknowledges to provide).