clash-protocols
Safe HaskellNone
LanguageGHC2021

Protocols

Description

See Circuit for documentation. This module is designed to import unqualified, i.e. using:

  import Protocols

Definitions of Circuit, Fwd, Bwd, and Df, inspired by definitions in circuit-notation at https://github.com/cchalmers/circuit-notation.

Synopsis

Circuit definition

newtype Circuit a b #

Constructors

Circuit ((Fwd a, Bwd b) -> (Bwd a, Fwd b)) 

class Protocol a #

Associated Types

type Fwd a #

type Fwd a = a

type Bwd a #

type Bwd a = ()

Instances

Instances details
Protocol () # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd () 
Instance details

Defined in Protocols.Plugin

type Fwd () = ()
type Bwd () 
Instance details

Defined in Protocols.Plugin

type Bwd () = ()
Protocol (Clock dom) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (Clock dom) 
Instance details

Defined in Protocols.Plugin

type Fwd (Clock dom) = Clock dom
type Bwd (Clock dom) 
Instance details

Defined in Protocols.Plugin

type Bwd (Clock dom) = ()
Protocol (DiffClock dom) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (DiffClock dom) 
Instance details

Defined in Protocols.Plugin

type Fwd (DiffClock dom) = DiffClock dom
type Bwd (DiffClock dom) 
Instance details

Defined in Protocols.Plugin

type Bwd (DiffClock dom) = ()
Protocol (Enable dom) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (Enable dom) 
Instance details

Defined in Protocols.Plugin

type Fwd (Enable dom) = Enable dom
type Bwd (Enable dom) 
Instance details

Defined in Protocols.Plugin

type Bwd (Enable dom) = ()
Protocol (Reset dom) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (Reset dom) 
Instance details

Defined in Protocols.Plugin

type Fwd (Reset dom) = Reset dom
type Bwd (Reset dom) 
Instance details

Defined in Protocols.Plugin

type Bwd (Reset dom) = ()
Protocol (ToConst a) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (ToConst a) 
Instance details

Defined in Protocols.Plugin

type Fwd (ToConst a) = a
type Bwd (ToConst a) 
Instance details

Defined in Protocols.Plugin

type Bwd (ToConst a) = ()
Protocol (ToConstBwd a) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (ToConstBwd a) 
Instance details

Defined in Protocols.Plugin

type Fwd (ToConstBwd a) = ()
type Bwd (ToConstBwd a) 
Instance details

Defined in Protocols.Plugin

type Bwd (ToConstBwd a) = a
KnownNat n => Protocol (Vec n a) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (Vec n a) 
Instance details

Defined in Protocols.Plugin

type Fwd (Vec n a) = Vec n (Fwd a)
type Bwd (Vec n a) 
Instance details

Defined in Protocols.Plugin

type Bwd (Vec n a) = Vec n (Bwd a)
Protocol (Df dom a) Source # 
Instance details

Defined in Protocols.Df

Associated Types

type Fwd (Df dom a) 
Instance details

Defined in Protocols.Df

type Fwd (Df dom a) = Signal dom (Maybe a)
type Bwd (Df dom a) 
Instance details

Defined in Protocols.Df

type Bwd (Df dom a) = Signal dom Ack
Protocol (AvalonMmManager dom config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type Fwd (AvalonMmManager dom config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Fwd (AvalonMmManager dom config) = Signal dom (AvalonManagerOut config)
type Bwd (AvalonMmManager dom config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Bwd (AvalonMmManager dom config) = Signal dom (AvalonManagerIn config)
Protocol a => Protocol (Reverse a) Source # 
Instance details

Defined in Protocols.Internal

Associated Types

type Fwd (Reverse a) 
Instance details

Defined in Protocols.Internal

type Fwd (Reverse a) = Bwd a
type Bwd (Reverse a) 
Instance details

Defined in Protocols.Internal

type Bwd (Reverse a) = Fwd a
Protocol (CSignal dom a) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (CSignal dom a) 
Instance details

Defined in Protocols.Plugin

type Fwd (CSignal dom a) = Signal dom a
type Bwd (CSignal dom a) 
Instance details

Defined in Protocols.Plugin

type Bwd (CSignal dom a) = ()
Protocol (a, b) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (a, b) 
Instance details

Defined in Protocols.Plugin

type Fwd (a, b) = (Fwd a, Fwd b)
type Bwd (a, b) 
Instance details

Defined in Protocols.Plugin

type Bwd (a, b) = (Bwd a, Bwd b)
Protocol (AvalonMmSubordinate dom fixedWaitTime config) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

Associated Types

type Fwd (AvalonMmSubordinate dom fixedWaitTime config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Fwd (AvalonMmSubordinate dom fixedWaitTime config) = Signal dom (AvalonSubordinateIn config)
type Bwd (AvalonMmSubordinate dom fixedWaitTime config) 
Instance details

Defined in Protocols.Experimental.Avalon.MemMap

type Bwd (AvalonMmSubordinate dom fixedWaitTime config) = Signal dom (AvalonSubordinateOut config)
Protocol (AvalonStream dom conf dataType) Source # 
Instance details

Defined in Protocols.Experimental.Avalon.Stream

Associated Types

type Fwd (AvalonStream dom conf dataType) 
Instance details

Defined in Protocols.Experimental.Avalon.Stream

type Fwd (AvalonStream dom conf dataType) = Signal dom (Maybe (AvalonStreamM2S conf dataType))
type Bwd (AvalonStream dom conf dataType) 
Instance details

Defined in Protocols.Experimental.Avalon.Stream

type Bwd (AvalonStream dom conf dataType) = Signal dom (AvalonStreamS2M (ReadyLatency conf))
Protocol (Axi4ReadAddress dom conf userType) Source # 
Instance details

Defined in Protocols.Experimental.Axi4.ReadAddress

Associated Types

type Fwd (Axi4ReadAddress dom conf userType) 
Instance details

Defined in Protocols.Experimental.Axi4.ReadAddress

type Fwd (Axi4ReadAddress dom conf userType) = Signal dom (M2S_ReadAddress conf userType)
type Bwd (Axi4ReadAddress dom conf userType) 
Instance details

Defined in Protocols.Experimental.Axi4.ReadAddress

type Bwd (Axi4ReadAddress dom conf userType) = Signal dom S2M_ReadAddress
Protocol (Axi4Stream dom conf userType) Source # 
Instance details

Defined in Protocols.Experimental.Axi4.Stream

Associated Types

type Fwd (Axi4Stream dom conf userType) 
Instance details

Defined in Protocols.Experimental.Axi4.Stream

type Fwd (Axi4Stream dom conf userType) = Signal dom (Maybe (Axi4StreamM2S conf userType))
type Bwd (Axi4Stream dom conf userType) 
Instance details

Defined in Protocols.Experimental.Axi4.Stream

type Bwd (Axi4Stream dom conf userType) = Signal dom Axi4StreamS2M
Protocol (Axi4WriteAddress dom conf userType) Source # 
Instance details

Defined in Protocols.Experimental.Axi4.WriteAddress

Associated Types

type Fwd (Axi4WriteAddress dom conf userType) 
Instance details

Defined in Protocols.Experimental.Axi4.WriteAddress

type Fwd (Axi4WriteAddress dom conf userType) = Signal dom (M2S_WriteAddress conf userType)
type Bwd (Axi4WriteAddress dom conf userType) 
Instance details

Defined in Protocols.Experimental.Axi4.WriteAddress

type Bwd (Axi4WriteAddress dom conf userType) = Signal dom S2M_WriteAddress
Protocol (Axi4WriteData dom conf userType) Source # 
Instance details

Defined in Protocols.Experimental.Axi4.WriteData

Associated Types

type Fwd (Axi4WriteData dom conf userType) 
Instance details

Defined in Protocols.Experimental.Axi4.WriteData

type Fwd (Axi4WriteData dom conf userType) = Signal dom (M2S_WriteData conf userType)
type Bwd (Axi4WriteData dom conf userType) 
Instance details

Defined in Protocols.Experimental.Axi4.WriteData

type Bwd (Axi4WriteData dom conf userType) = Signal dom S2M_WriteData
Protocol (Axi4WriteResponse dom conf userType) Source # 
Instance details

Defined in Protocols.Experimental.Axi4.WriteResponse

Associated Types

type Fwd (Axi4WriteResponse dom conf userType) 
Instance details

Defined in Protocols.Experimental.Axi4.WriteResponse

type Fwd (Axi4WriteResponse dom conf userType) = Signal dom (S2M_WriteResponse conf userType)
type Bwd (Axi4WriteResponse dom conf userType) 
Instance details

Defined in Protocols.Experimental.Axi4.WriteResponse

type Bwd (Axi4WriteResponse dom conf userType) = Signal dom M2S_WriteResponse
Protocol (PacketStream dom dataWidth meta) Source # 
Instance details

Defined in Protocols.PacketStream.Base

Associated Types

type Fwd (PacketStream dom dataWidth meta) 
Instance details

Defined in Protocols.PacketStream.Base

type Fwd (PacketStream dom dataWidth meta) = Signal dom (Maybe (PacketStreamM2S dataWidth meta))
type Bwd (PacketStream dom dataWidth meta) 
Instance details

Defined in Protocols.PacketStream.Base

type Bwd (PacketStream dom dataWidth meta) = Signal dom PacketStreamS2M
Protocol (a1, a2, a3) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (a1, a2, a3) 
Instance details

Defined in Protocols.Plugin

type Fwd (a1, a2, a3) = (Fwd a1, Fwd a2, Fwd a3)
type Bwd (a1, a2, a3) 
Instance details

Defined in Protocols.Plugin

type Bwd (a1, a2, a3) = (Bwd a1, Bwd a2, Bwd a3)
Protocol (Axi4ReadData dom conf userType dataType) Source # 
Instance details

Defined in Protocols.Experimental.Axi4.ReadData

Associated Types

type Fwd (Axi4ReadData dom conf userType dataType) 
Instance details

Defined in Protocols.Experimental.Axi4.ReadData

type Fwd (Axi4ReadData dom conf userType dataType) = Signal dom (S2M_ReadData conf userType dataType)
type Bwd (Axi4ReadData dom conf userType dataType) 
Instance details

Defined in Protocols.Experimental.Axi4.ReadData

type Bwd (Axi4ReadData dom conf userType dataType) = Signal dom M2S_ReadData
Protocol (Wishbone dom mode addressBits dataBytes) Source # 
Instance details

Defined in Protocols.Experimental.Wishbone

Associated Types

type Fwd (Wishbone dom mode addressBits dataBytes) 
Instance details

Defined in Protocols.Experimental.Wishbone

type Fwd (Wishbone dom mode addressBits dataBytes) = Signal dom (WishboneM2S addressBits dataBytes)
type Bwd (Wishbone dom mode addressBits dataBytes) 
Instance details

Defined in Protocols.Experimental.Wishbone

type Bwd (Wishbone dom mode addressBits dataBytes) = Signal dom (WishboneS2M dataBytes)
Protocol (a1, a2, a3, a4) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (a1, a2, a3, a4) 
Instance details

Defined in Protocols.Plugin

type Fwd (a1, a2, a3, a4) = (Fwd a1, Fwd a2, Fwd a3, Fwd a4)
type Bwd (a1, a2, a3, a4) 
Instance details

Defined in Protocols.Plugin

type Bwd (a1, a2, a3, a4) = (Bwd a1, Bwd a2, Bwd a3, Bwd a4)
Protocol (a1, a2, a3, a4, a5) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (a1, a2, a3, a4, a5) 
Instance details

Defined in Protocols.Plugin

type Fwd (a1, a2, a3, a4, a5) = (Fwd a1, Fwd a2, Fwd a3, Fwd a4, Fwd a5)
type Bwd (a1, a2, a3, a4, a5) 
Instance details

Defined in Protocols.Plugin

type Bwd (a1, a2, a3, a4, a5) = (Bwd a1, Bwd a2, Bwd a3, Bwd a4, Bwd a5)
Protocol (a1, a2, a3, a4, a5, a6) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (a1, a2, a3, a4, a5, a6) 
Instance details

Defined in Protocols.Plugin

type Fwd (a1, a2, a3, a4, a5, a6) = (Fwd a1, Fwd a2, Fwd a3, Fwd a4, Fwd a5, Fwd a6)
type Bwd (a1, a2, a3, a4, a5, a6) 
Instance details

Defined in Protocols.Plugin

type Bwd (a1, a2, a3, a4, a5, a6) = (Bwd a1, Bwd a2, Bwd a3, Bwd a4, Bwd a5, Bwd a6)
Protocol (a1, a2, a3, a4, a5, a6, a7) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (a1, a2, a3, a4, a5, a6, a7) 
Instance details

Defined in Protocols.Plugin

type Fwd (a1, a2, a3, a4, a5, a6, a7) = (Fwd a1, Fwd a2, Fwd a3, Fwd a4, Fwd a5, Fwd a6, Fwd a7)
type Bwd (a1, a2, a3, a4, a5, a6, a7) 
Instance details

Defined in Protocols.Plugin

type Bwd (a1, a2, a3, a4, a5, a6, a7) = (Bwd a1, Bwd a2, Bwd a3, Bwd a4, Bwd a5, Bwd a6, Bwd a7)
Protocol (a1, a2, a3, a4, a5, a6, a7, a8) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (a1, a2, a3, a4, a5, a6, a7, a8) 
Instance details

Defined in Protocols.Plugin

type Fwd (a1, a2, a3, a4, a5, a6, a7, a8) = (Fwd a1, Fwd a2, Fwd a3, Fwd a4, Fwd a5, Fwd a6, Fwd a7, Fwd a8)
type Bwd (a1, a2, a3, a4, a5, a6, a7, a8) 
Instance details

Defined in Protocols.Plugin

type Bwd (a1, a2, a3, a4, a5, a6, a7, a8) = (Bwd a1, Bwd a2, Bwd a3, Bwd a4, Bwd a5, Bwd a6, Bwd a7, Bwd a8)
Protocol (a1, a2, a3, a4, a5, a6, a7, a8, a9) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (a1, a2, a3, a4, a5, a6, a7, a8, a9) 
Instance details

Defined in Protocols.Plugin

type Fwd (a1, a2, a3, a4, a5, a6, a7, a8, a9) = (Fwd a1, Fwd a2, Fwd a3, Fwd a4, Fwd a5, Fwd a6, Fwd a7, Fwd a8, Fwd a9)
type Bwd (a1, a2, a3, a4, a5, a6, a7, a8, a9) 
Instance details

Defined in Protocols.Plugin

type Bwd (a1, a2, a3, a4, a5, a6, a7, a8, a9) = (Bwd a1, Bwd a2, Bwd a3, Bwd a4, Bwd a5, Bwd a6, Bwd a7, Bwd a8, Bwd a9)
Protocol (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) 
Instance details

Defined in Protocols.Plugin

type Fwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) = (Fwd a1, Fwd a2, Fwd a3, Fwd a4, Fwd a5, Fwd a6, Fwd a7, Fwd a8, Fwd a9, Fwd a10)
type Bwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) 
Instance details

Defined in Protocols.Plugin

type Bwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) = (Bwd a1, Bwd a2, Bwd a3, Bwd a4, Bwd a5, Bwd a6, Bwd a7, Bwd a8, Bwd a9, Bwd a10)
Protocol (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) 
Instance details

Defined in Protocols.Plugin

type Fwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) = (Fwd a1, Fwd a2, Fwd a3, Fwd a4, Fwd a5, Fwd a6, Fwd a7, Fwd a8, Fwd a9, Fwd a10, Fwd a11)
type Bwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) 
Instance details

Defined in Protocols.Plugin

type Bwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) = (Bwd a1, Bwd a2, Bwd a3, Bwd a4, Bwd a5, Bwd a6, Bwd a7, Bwd a8, Bwd a9, Bwd a10, Bwd a11)
Protocol (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) 
Instance details

Defined in Protocols.Plugin

type Fwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) = (Fwd a1, Fwd a2, Fwd a3, Fwd a4, Fwd a5, Fwd a6, Fwd a7, Fwd a8, Fwd a9, Fwd a10, Fwd a11, Fwd a12)
type Bwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) 
Instance details

Defined in Protocols.Plugin

type Bwd (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) = (Bwd a1, Bwd a2, Bwd a3, Bwd a4, Bwd a5, Bwd a6, Bwd a7, Bwd a8, Bwd a9, Bwd a10, Bwd a11, Bwd a12)

newtype Ack Source #

Protocol-agnostic acknowledgement

Constructors

Ack Bool 

Instances

Instances details
BitPack Ack Source # 
Instance details

Defined in Protocols.Internal

Associated Types

type BitSize Ack 
Instance details

Defined in Protocols.Internal

Bundle Ack Source # 
Instance details

Defined in Protocols.Internal

Associated Types

type Unbundled dom Ack 
Instance details

Defined in Protocols.Internal

type Unbundled dom Ack = Signal dom Ack

Methods

bundle :: forall (dom :: Domain). Unbundled dom Ack -> Signal dom Ack #

unbundle :: forall (dom :: Domain). Signal dom Ack -> Unbundled dom Ack #

NFDataX Ack Source # 
Instance details

Defined in Protocols.Internal

Methods

deepErrorX :: String -> Ack #

hasUndefined :: Ack -> Bool #

ensureSpine :: Ack -> Ack #

rnfX :: Ack -> () #

ShowX Ack Source # 
Instance details

Defined in Protocols.Internal

Methods

showsPrecX :: Int -> Ack -> ShowS #

showX :: Ack -> String #

showListX :: [Ack] -> ShowS #

Default Ack Source #

Acknowledge. Used in circuit-notation plugin to drive ignore components.

Instance details

Defined in Protocols.Internal

Methods

def :: Ack #

Generic Ack Source # 
Instance details

Defined in Protocols.Internal

Associated Types

type Rep Ack 
Instance details

Defined in Protocols.Internal

type Rep Ack = D1 ('MetaData "Ack" "Protocols.Internal" "clash-protocols-0.1-inplace" 'True) (C1 ('MetaCons "Ack" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))

Methods

from :: Ack -> Rep Ack x #

to :: Rep Ack x -> Ack #

Show Ack Source # 
Instance details

Defined in Protocols.Internal

Methods

showsPrec :: Int -> Ack -> ShowS #

show :: Ack -> String #

showList :: [Ack] -> ShowS #

Eq Ack Source # 
Instance details

Defined in Protocols.Internal

Methods

(==) :: Ack -> Ack -> Bool #

(/=) :: Ack -> Ack -> Bool #

Ord Ack Source # 
Instance details

Defined in Protocols.Internal

Methods

compare :: Ack -> Ack -> Ordering #

(<) :: Ack -> Ack -> Bool #

(<=) :: Ack -> Ack -> Bool #

(>) :: Ack -> Ack -> Bool #

(>=) :: Ack -> Ack -> Bool #

max :: Ack -> Ack -> Ack #

min :: Ack -> Ack -> Ack #

type BitSize Ack Source # 
Instance details

Defined in Protocols.Internal

type Rep Ack Source # 
Instance details

Defined in Protocols.Internal

type Rep Ack = D1 ('MetaData "Ack" "Protocols.Internal" "clash-protocols-0.1-inplace" 'True) (C1 ('MetaCons "Ack" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))
type Unbundled dom Ack Source # 
Instance details

Defined in Protocols.Internal

type Unbundled dom Ack = Signal dom Ack

data Reverse (a :: k) Source #

Protocol to reverse a circuit. Fwd becomes Bwd and vice versa. No changes are made otherwise.

Instances

Instances details
DfConv a => DfConv (Reverse a) Source # 
Instance details

Defined in Protocols.DfConv

Associated Types

type Dom (Reverse a) 
Instance details

Defined in Protocols.DfConv

type Dom (Reverse a) = Dom a
type BwdPayload (Reverse a) 
Instance details

Defined in Protocols.DfConv

type FwdPayload (Reverse a) 
Instance details

Defined in Protocols.DfConv

DfConv (Df dom a, Reverse (Df dom b)) Source # 
Instance details

Defined in Protocols.DfConv

Associated Types

type Dom (Df dom a, Reverse (Df dom b)) 
Instance details

Defined in Protocols.DfConv

type Dom (Df dom a, Reverse (Df dom b)) = dom
type BwdPayload (Df dom a, Reverse (Df dom b)) 
Instance details

Defined in Protocols.DfConv

type BwdPayload (Df dom a, Reverse (Df dom b)) = b
type FwdPayload (Df dom a, Reverse (Df dom b)) 
Instance details

Defined in Protocols.DfConv

type FwdPayload (Df dom a, Reverse (Df dom b)) = a

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 # 
Instance details

Defined in Protocols.Experimental.DfConv

Associated Types

type Dom (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) 
Instance details

Defined in Protocols.Experimental.DfConv

type Dom (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) = dom
type BwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) 
Instance details

Defined in Protocols.Experimental.DfConv

type BwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) = (dat, userR, ResponseType (RKeepResponse confR))
type FwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) 
Instance details

Defined in Protocols.Experimental.DfConv

type FwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) = Axi4ReadAddressInfo confAR dataAR

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 # 
Instance details

Defined in Protocols.Experimental.Simulate

Associated Types

type SimulateFwdType (Reverse a) 
Instance details

Defined in Protocols.Experimental.Simulate

type SimulateBwdType (Reverse a) 
Instance details

Defined in Protocols.Experimental.Simulate

type SimulateChannels (Reverse a) 
Instance details

Defined in Protocols.Experimental.Simulate

Protocol a => Protocol (Reverse a) Source # 
Instance details

Defined in Protocols.Internal

Associated Types

type Fwd (Reverse a) 
Instance details

Defined in Protocols.Internal

type Fwd (Reverse a) = Bwd a
type Bwd (Reverse a) 
Instance details

Defined in Protocols.Internal

type Bwd (Reverse a) = Fwd a
(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 # 
Instance details

Defined in Protocols.Experimental.DfConv

Associated Types

type Dom (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) 
Instance details

Defined in Protocols.Experimental.DfConv

type Dom (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) = dom
type BwdPayload (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) 
Instance details

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 FwdPayload (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) 
Instance details

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)

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 # 
Instance details

Defined in Protocols.DfConv

type BwdPayload (Df dom a, Reverse (Df dom b)) Source # 
Instance details

Defined in Protocols.DfConv

type BwdPayload (Df dom a, Reverse (Df dom b)) = b
type BwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) Source # 
Instance details

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 # 
Instance details

Defined in Protocols.DfConv

type Dom (Reverse a) = Dom a
type Dom (Df dom a, Reverse (Df dom b)) Source # 
Instance details

Defined in Protocols.DfConv

type Dom (Df dom a, Reverse (Df dom b)) = dom
type Dom (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) Source # 
Instance details

Defined in Protocols.Experimental.DfConv

type Dom (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) = dom
type FwdPayload (Reverse a) Source # 
Instance details

Defined in Protocols.DfConv

type FwdPayload (Df dom a, Reverse (Df dom b)) Source # 
Instance details

Defined in Protocols.DfConv

type FwdPayload (Df dom a, Reverse (Df dom b)) = a
type FwdPayload (Axi4ReadAddress dom confAR dataAR, Reverse (Axi4ReadData dom confR userR dat)) Source # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Simulate

type SimulateChannels (Reverse a) Source # 
Instance details

Defined in Protocols.Experimental.Simulate

type SimulateFwdType (Reverse a) Source # 
Instance details

Defined in Protocols.Experimental.Simulate

type Bwd (Reverse a) Source # 
Instance details

Defined in Protocols.Internal

type Bwd (Reverse a) = Fwd a
type Fwd (Reverse a) Source # 
Instance details

Defined in Protocols.Internal

type Fwd (Reverse a) = Bwd a
type BwdPayload (Axi4WriteAddress dom confAW userAW, Axi4WriteData dom confW userW, Reverse (Axi4WriteResponse dom confB userB)) Source # 
Instance details

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 # 
Instance details

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 # 
Instance details

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
  +------->+           +-------->+           +-------->
           |           |         |           |
           +-----------+         +-----------+

fromSignals :: ((Fwd a, Bwd b) -> (Bwd a, Fwd b)) -> Circuit a b Source #

View signals as a Circuit

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

Instances details
Backpressure (CSignal dom a) Source # 
Instance details

Defined in Protocols.Experimental.Simulate

Methods

boolsToBwd :: Proxy (CSignal dom a) -> [Bool] -> Bwd (CSignal dom a) Source #

(NFDataX a, ShowX a, Show a, KnownDomain dom) => Drivable (CSignal dom a) Source # 
Instance details

Defined in Protocols.Experimental.Simulate

Associated Types

type ExpectType (CSignal dom a) 
Instance details

Defined in Protocols.Experimental.Simulate

type ExpectType (CSignal dom a) = [a]
KnownDomain dom => Simulate (CSignal dom a) Source # 
Instance details

Defined in Protocols.Experimental.Simulate

Associated Types

type SimulateFwdType (CSignal dom a) 
Instance details

Defined in Protocols.Experimental.Simulate

type SimulateFwdType (CSignal dom a) = [a]
type SimulateBwdType (CSignal dom a) 
Instance details

Defined in Protocols.Experimental.Simulate

type SimulateBwdType (CSignal dom a) = ()
type SimulateChannels (CSignal dom a) 
Instance details

Defined in Protocols.Experimental.Simulate

type SimulateChannels (CSignal dom a) = 1
Protocol (CSignal dom a) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (CSignal dom a) 
Instance details

Defined in Protocols.Plugin

type Fwd (CSignal dom a) = Signal dom a
type Bwd (CSignal dom a) 
Instance details

Defined in Protocols.Plugin

type Bwd (CSignal dom a) = ()
type ExpectType (CSignal dom a) Source # 
Instance details

Defined in Protocols.Experimental.Simulate

type ExpectType (CSignal dom a) = [a]
type SimulateBwdType (CSignal dom a) Source # 
Instance details

Defined in Protocols.Experimental.Simulate

type SimulateBwdType (CSignal dom a) = ()
type SimulateChannels (CSignal dom a) Source # 
Instance details

Defined in Protocols.Experimental.Simulate

type SimulateChannels (CSignal dom a) = 1
type SimulateFwdType (CSignal dom a) Source # 
Instance details

Defined in Protocols.Experimental.Simulate

type SimulateFwdType (CSignal dom a) = [a]
type Bwd (CSignal dom a) # 
Instance details

Defined in Protocols.Plugin

type Bwd (CSignal dom a) = ()
type Fwd (CSignal dom a) # 
Instance details

Defined in Protocols.Plugin

type Fwd (CSignal dom a) = Signal dom a

data Df (dom :: Domain) a Source #

Simple unidirectional valid-ready protocol.

Instances

Instances details
NFDataX dat => DfConv (Df dom dat) Source # 
Instance details

Defined in Protocols.DfConv

Associated Types

type Dom (Df dom dat) 
Instance details

Defined in Protocols.DfConv

type Dom (Df dom dat) = dom
type BwdPayload (Df dom dat) 
Instance details

Defined in Protocols.DfConv

type BwdPayload (Df dom dat) = ()
type FwdPayload (Df dom dat) 
Instance details

Defined in Protocols.DfConv

type FwdPayload (Df dom dat) = dat

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 # 
Instance details

Defined in Protocols.DfConv

Associated Types

type Dom (Df dom a, Reverse (Df dom b)) 
Instance details

Defined in Protocols.DfConv

type Dom (Df dom a, Reverse (Df dom b)) = dom
type BwdPayload (Df dom a, Reverse (Df dom b)) 
Instance details

Defined in Protocols.DfConv

type BwdPayload (Df dom a, Reverse (Df dom b)) = b
type FwdPayload (Df dom a, Reverse (Df dom b)) 
Instance details

Defined in Protocols.DfConv

type FwdPayload (Df dom a, Reverse (Df dom b)) = a

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 # 
Instance details

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 # 
Instance details

Defined in Protocols.Experimental.Df

Methods

boolsToBwd :: Proxy (Df dom a) -> [Bool] -> Bwd (Df dom a) Source #

(KnownDomain dom, NFDataX a, ShowX a, Show a) => Drivable (Df dom a) Source # 
Instance details

Defined in Protocols.Experimental.Df

Associated Types

type ExpectType (Df dom a) 
Instance details

Defined in Protocols.Experimental.Df

type ExpectType (Df dom a) = [a]

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 # 
Instance details

Defined in Protocols.Experimental.Df

Associated Types

type SimulateFwdType (Df dom a) 
Instance details

Defined in Protocols.Experimental.Df

type SimulateFwdType (Df dom a) = [Maybe a]
type SimulateBwdType (Df dom a) 
Instance details

Defined in Protocols.Experimental.Df

type SimulateBwdType (Df dom a) = [Ack]
type SimulateChannels (Df dom a) 
Instance details

Defined in Protocols.Experimental.Df

type SimulateChannels (Df dom a) = 1

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 # 
Instance details

Defined in Protocols.Df

Methods

idleFwd :: Proxy (Df dom a) -> Fwd (Df dom a) Source #

idleBwd :: Proxy (Df dom a) -> Bwd (Df dom a) Source #

Protocol (Df dom a) Source # 
Instance details

Defined in Protocols.Df

Associated Types

type Fwd (Df dom a) 
Instance details

Defined in Protocols.Df

type Fwd (Df dom a) = Signal dom (Maybe a)
type Bwd (Df dom a) 
Instance details

Defined in Protocols.Df

type Bwd (Df dom a) = Signal dom Ack
type BwdPayload (Df dom dat) Source # 
Instance details

Defined in Protocols.DfConv

type BwdPayload (Df dom dat) = ()
type BwdPayload (Df dom a, Reverse (Df dom b)) Source # 
Instance details

Defined in Protocols.DfConv

type BwdPayload (Df dom a, Reverse (Df dom b)) = b
type Dom (Df dom dat) Source # 
Instance details

Defined in Protocols.DfConv

type Dom (Df dom dat) = dom
type Dom (Df dom a, Reverse (Df dom b)) Source # 
Instance details

Defined in Protocols.DfConv

type Dom (Df dom a, Reverse (Df dom b)) = dom
type FwdPayload (Df dom dat) Source # 
Instance details

Defined in Protocols.DfConv

type FwdPayload (Df dom dat) = dat
type FwdPayload (Df dom a, Reverse (Df dom b)) Source # 
Instance details

Defined in Protocols.DfConv

type FwdPayload (Df dom a, Reverse (Df dom b)) = a
type ExpectType (Df dom a) Source # 
Instance details

Defined in Protocols.Experimental.Df

type ExpectType (Df dom a) = [a]
type SimulateBwdType (Df dom a) Source # 
Instance details

Defined in Protocols.Experimental.Df

type SimulateBwdType (Df dom a) = [Ack]
type SimulateChannels (Df dom a) Source # 
Instance details

Defined in Protocols.Experimental.Df

type SimulateChannels (Df dom a) = 1
type SimulateFwdType (Df dom a) Source # 
Instance details

Defined in Protocols.Experimental.Df

type SimulateFwdType (Df dom a) = [Maybe a]
type Bwd (Df dom a) Source # 
Instance details

Defined in Protocols.Df

type Bwd (Df dom a) = Signal dom Ack
type Fwd (Df dom a) Source # 
Instance details

Defined in Protocols.Df

type Fwd (Df dom a) = Signal dom (Maybe a)

data ToConst a #

Instances

Instances details
Protocol (ToConst a) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (ToConst a) 
Instance details

Defined in Protocols.Plugin

type Fwd (ToConst a) = a
type Bwd (ToConst a) 
Instance details

Defined in Protocols.Plugin

type Bwd (ToConst a) = ()
type Bwd (ToConst a) # 
Instance details

Defined in Protocols.Plugin

type Bwd (ToConst a) = ()
type Fwd (ToConst a) # 
Instance details

Defined in Protocols.Plugin

type Fwd (ToConst a) = a

data ToConstBwd a #

Instances

Instances details
Protocol (ToConstBwd a) # 
Instance details

Defined in Protocols.Plugin

Associated Types

type Fwd (ToConstBwd a) 
Instance details

Defined in Protocols.Plugin

type Fwd (ToConstBwd a) = ()
type Bwd (ToConstBwd a) 
Instance details

Defined in Protocols.Plugin

type Bwd (ToConstBwd a) = a
type Bwd (ToConstBwd a) # 
Instance details

Defined in Protocols.Plugin

type Bwd (ToConstBwd a) = a
type Fwd (ToConstBwd a) # 
Instance details

Defined in Protocols.Plugin

type Fwd (ToConstBwd a) = ()

Basic circuits

idC :: Circuit a a Source #

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

(-<) :: Any :: Type #

class Units a where #

Methods

units :: a #

Instances

Instances details
Units () # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: () #

Units (BitVector 0) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: BitVector 0 #

Units (Index 0) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: Index 0 #

Units (Index 1) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: Index 1 #

Units (Signed 0) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: Signed 0 #

Units (Unsigned 0) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: Unsigned 0 #

Units a => Units (Signal dom a) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: Signal dom a #

(Units a, KnownNat n) => Units (Vec n a) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: Vec n a #

(Units a1, Units a2) => Units (a1, a2) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: (a1, a2) #

(Units a1, Units a2, Units a3) => Units (a1, a2, a3) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: (a1, a2, a3) #

(Units a1, Units a2, Units a3, Units a4) => Units (a1, a2, a3, a4) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: (a1, a2, a3, a4) #

(Units a1, Units a2, Units a3, Units a4, Units a5) => Units (a1, a2, a3, a4, a5) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: (a1, a2, a3, a4, a5) #

(Units a1, Units a2, Units a3, Units a4, Units a5, Units a6) => Units (a1, a2, a3, a4, a5, a6) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: (a1, a2, a3, a4, a5, a6) #

(Units a1, Units a2, Units a3, Units a4, Units a5, Units a6, Units a7) => Units (a1, a2, a3, a4, a5, a6, a7) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: (a1, a2, a3, a4, a5, a6, a7) #

(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) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: (a1, a2, a3, a4, a5, a6, a7, a8) #

(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) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: (a1, a2, a3, a4, a5, a6, a7, a8, a9) #

(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) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) #

(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) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) #

(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) # 
Instance details

Defined in Protocols.Plugin.Units

Methods

units :: (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) #

class TaggedBundle (t :: k) a where #

Associated Types

type TaggedUnbundled (t :: k) a = (res :: Type) | res -> k t a #

Instances

Instances details
TaggedBundle () () # 
Instance details

Defined in Protocols.Plugin.TaggedBundle

Associated Types

type TaggedUnbundled () () 
Instance details

Defined in Protocols.Plugin.TaggedBundle

type TaggedUnbundled () () = ()

Methods

taggedBundle :: TaggedUnbundled () () -> Tagged () () #

taggedUnbundle :: Tagged () () -> TaggedUnbundled () () #

TaggedBundle (Vec n t :: Type) (Vec n a) # 
Instance details

Defined in Protocols.Plugin.TaggedBundle

Associated Types

type TaggedUnbundled (Vec n t :: Type) (Vec n a) 
Instance details

Defined in Protocols.Plugin.TaggedBundle

type TaggedUnbundled (Vec n t :: Type) (Vec n a) = Vec n (Tagged t a)

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) # 
Instance details

Defined in Protocols.Plugin.TaggedBundle

Associated Types

type TaggedUnbundled ((t1, t2) :: Type) (a1, a2) 
Instance details

Defined in Protocols.Plugin.TaggedBundle

type TaggedUnbundled ((t1, t2) :: Type) (a1, a2) = (Tagged t1 a1, Tagged t2 a2)

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) # 
Instance details

Defined in Protocols.Plugin.TaggedBundle

Associated Types

type TaggedUnbundled ((t1, t2, t3) :: Type) (a1, a2, a3) 
Instance details

Defined in Protocols.Plugin.TaggedBundle

type TaggedUnbundled ((t1, t2, t3) :: Type) (a1, a2, a3) = (Tagged t1 a1, Tagged t2 a2, Tagged t3 a3)

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) # 
Instance details

Defined in Protocols.Plugin.TaggedBundle

Associated Types

type TaggedUnbundled ((t1, t2, t3, t4) :: Type) (a1, a2, a3, a4) 
Instance details

Defined in Protocols.Plugin.TaggedBundle

type TaggedUnbundled ((t1, t2, t3, t4) :: Type) (a1, a2, a3, a4) = (Tagged t1 a1, Tagged t2 a2, Tagged t3 a3, Tagged t4 a4)

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) # 
Instance details

Defined in Protocols.Plugin.TaggedBundle

Associated Types

type TaggedUnbundled ((t1, t2, t3, t4, t5) :: Type) (a1, a2, a3, a4, a5) 
Instance details

Defined in Protocols.Plugin.TaggedBundle

type TaggedUnbundled ((t1, t2, t3, t4, t5) :: Type) (a1, a2, a3, a4, a5) = (Tagged t1 a1, Tagged t2 a2, Tagged t3 a3, Tagged t4 a4, Tagged t5 a5)

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) # 
Instance details

Defined in Protocols.Plugin.TaggedBundle

Associated Types

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6) :: Type) (a1, a2, a3, a4, a5, a6) 
Instance details

Defined in Protocols.Plugin.TaggedBundle

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6) :: Type) (a1, a2, a3, a4, a5, a6) = (Tagged t1 a1, Tagged t2 a2, Tagged t3 a3, Tagged t4 a4, Tagged t5 a5, Tagged t6 a6)

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) # 
Instance details

Defined in Protocols.Plugin.TaggedBundle

Associated Types

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7) :: Type) (a1, a2, a3, a4, a5, a6, a7) 
Instance details

Defined in Protocols.Plugin.TaggedBundle

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7) :: Type) (a1, a2, a3, a4, a5, a6, a7) = (Tagged t1 a1, Tagged t2 a2, Tagged t3 a3, Tagged t4 a4, Tagged t5 a5, Tagged t6 a6, Tagged t7 a7)

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) # 
Instance details

Defined in Protocols.Plugin.TaggedBundle

Associated Types

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8) 
Instance details

Defined in Protocols.Plugin.TaggedBundle

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8) = (Tagged t1 a1, Tagged t2 a2, Tagged t3 a3, Tagged t4 a4, Tagged t5 a5, Tagged t6 a6, Tagged t7 a7, Tagged t8 a8)

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) # 
Instance details

Defined in Protocols.Plugin.TaggedBundle

Associated Types

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8, t9) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9) 
Instance details

Defined in Protocols.Plugin.TaggedBundle

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8, t9) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9) = (Tagged t1 a1, Tagged t2 a2, Tagged t3 a3, Tagged t4 a4, Tagged t5 a5, Tagged t6 a6, Tagged t7 a7, Tagged t8 a8, Tagged t9 a9)

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) # 
Instance details

Defined in Protocols.Plugin.TaggedBundle

Associated Types

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) 
Instance details

Defined in Protocols.Plugin.TaggedBundle

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) = (Tagged t1 a1, Tagged t2 a2, Tagged t3 a3, Tagged t4 a4, Tagged t5 a5, Tagged t6 a6, Tagged t7 a7, Tagged t8 a8, Tagged t9 a9, Tagged t10 a10)

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) # 
Instance details

Defined in Protocols.Plugin.TaggedBundle

Associated Types

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) 
Instance details

Defined in Protocols.Plugin.TaggedBundle

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) = (Tagged t1 a1, Tagged t2 a2, Tagged t3 a3, Tagged t4 a4, Tagged t5 a5, Tagged t6 a6, Tagged t7 a7, Tagged t8 a8, Tagged t9 a9, Tagged t10 a10, Tagged t11 a11)

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) # 
Instance details

Defined in Protocols.Plugin.TaggedBundle

Associated Types

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) 
Instance details

Defined in Protocols.Plugin.TaggedBundle

type TaggedUnbundled ((t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) :: Type) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) = (Tagged t1 a1, Tagged t2 a2, Tagged t3 a3, Tagged t4 a4, Tagged t5 a5, Tagged t6 a6, Tagged t7 a7, Tagged t8 a8, Tagged t9 a9, Tagged t10 a10, Tagged t11 a11, Tagged t12 a12)

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) #