clash-prelude
Copyright(C) 2013-2016 University of Twente
2017-2019 Myrtle Software Ltd
2017 Google Inc.
2021-2025 QBayLogic B.V.
LicenseBSD2 (see the file LICENSE)
MaintainerQBayLogic B.V. <devops@qbaylogic.com>
Safe HaskellUnsafe
LanguageHaskell2010
Extensions
  • Cpp
  • MonoLocalBinds
  • ScopedTypeVariables
  • BangPatterns
  • ViewPatterns
  • DataKinds
  • InstanceSigs
  • StandaloneDeriving
  • DeriveDataTypeable
  • DeriveFunctor
  • DeriveTraversable
  • DeriveFoldable
  • DeriveGeneric
  • DefaultSignatures
  • DeriveLift
  • DerivingStrategies
  • FlexibleContexts
  • MagicHash
  • KindSignatures
  • PostfixOperators
  • TupleSections
  • TypeOperators
  • ExplicitNamespaces
  • ExplicitForAll
  • BinaryLiterals
  • TypeApplications

Clash.Prelude

Description

Clash is a functional hardware description language that borrows both its syntax and semantics from the functional programming language Haskell. The merits of using a functional language to describe hardware comes from the fact that combinational circuits can be directly modeled as mathematical functions and that functional languages lend themselves very well at describing and (de-)composing mathematical functions.

This package provides:

  • Prelude library containing datatypes and functions for circuit design

To use the library:

  • Import Clash.Prelude; by default clock and reset lines are implicitly routed for all the components found in Clash.Prelude. You can read more about implicit clock and reset lines in Clash.Signal
  • Alternatively, if you want to explicitly route clock and reset ports, for more straightforward multi-clock designs, you can import the Clash.Explicit.Prelude module. Note that you should not import Clash.Prelude and Clash.Explicit.Prelude at the same time as they have overlapping definitions.

For now, Clash.Prelude is also the best starting point for exploring the library. A preliminary version of a tutorial can be found in Clash.Tutorial. Some circuit examples can be found in Clash.Examples.

Synopsis

Creating synchronous sequential circuits

mealy Source #

Arguments

:: (HiddenClockResetEnable dom, NFDataX s) 
=> (s -> i -> (s, o))

Transfer function in mealy machine form: state -> input -> (newstate,output)

-> s

Initial state

-> Signal dom i -> Signal dom o

Synchronous sequential function with input and output matching that of the mealy machine

Create a synchronous function from a combinational function describing a mealy machine

macT
  :: Int        -- Current state
  -> (Int,Int)  -- Input
  -> (Int,Int)  -- (Updated state, output)
macT s (x,y) = (s',s)
  where
    s' = x * y + s

mac :: HiddenClockResetEnable dom  => Signal dom (Int, Int) -> Signal dom Int
mac = mealy macT 0
>>> simulate @System mac [(0,0),(1,1),(2,2),(3,3),(4,4)]
[0,0,1,5,14...
...

Synchronous sequential functions can be composed just like their combinational counterpart:

dualMac
  :: HiddenClockResetEnable dom
  => (Signal dom Int, Signal dom Int)
  -> (Signal dom Int, Signal dom Int)
  -> Signal dom Int
dualMac (a,b) (x,y) = s1 + s2
  where
    s1 = mealy macT 0 (bundle (a,x))
    s2 = mealy macT 0 (bundle (b,y))

mealyS Source #

Arguments

:: (HiddenClockResetEnable dom, NFDataX s) 
=> (i -> State s o) 
-> s

Initial state

-> Signal dom i -> Signal dom o

Synchronous sequential function with input and output matching that of the mealy machine

Create a synchronous function from a combinational function describing a mealy machine using the state monad. This can be particularly useful when combined with lenses or optics to replicate imperative algorithms.

data DelayState = DelayState
  { _history    :: Vec 4 Int
  , _untilValid :: Index 4
  }
  deriving (Generic, NFDataX)
makeLenses ''DelayState

initialDelayState = DelayState (repeat 0) maxBound

delayS :: Int -> State DelayState (Maybe Int)
delayS n = do
  history   %= (n +>>)
  remaining <- use untilValid
  if remaining > 0
  then do
     untilValid -= 1
     return Nothing
   else do
     out <- uses history last
     return (Just out)

delayTop :: HiddenClockResetEnable dom  => Signal dom Int -> Signal dom (Maybe Int)
delayTop = mealyS delayS initialDelayState
>>> L.take 7 $ simulate @System delayTop [1,2,3,4,5,6,7,8]
[Nothing,Nothing,Nothing,Just 1,Just 2,Just 3,Just 4]
...

mealyB Source #

Arguments

:: (HiddenClockResetEnable dom, NFDataX s, Bundle i, Bundle o) 
=> (s -> i -> (s, o))

Transfer function in mealy machine form: state -> input -> (newstate,output)

-> s

Initial state

-> Unbundled dom i -> Unbundled dom o

Synchronous sequential function with input and output matching that of the mealy machine

A version of mealy that does automatic Bundleing

Given a function f of type:

f :: Int -> (Bool, Int) -> (Int, (Int, Bool))

When we want to make compositions of f in g using mealy, we have to write:

g a b c = (b1,b2,i2)
  where
    (i1,b1) = unbundle (mealy f 0 (bundle (a,b)))
    (i2,b2) = unbundle (mealy f 3 (bundle (c,i1)))

Using mealyB however we can write:

g a b c = (b1,b2,i2)
  where
    (i1,b1) = mealyB f 0 (a,b)
    (i2,b2) = mealyB f 3 (c,i1)

mealySB Source #

Arguments

:: (HiddenClockResetEnable dom, NFDataX s, Bundle i, Bundle o) 
=> (i -> State s o) 
-> s

Initial state

-> Unbundled dom i -> Unbundled dom o

Synchronous sequential function with input and output matching that of the mealy machine

A version of mealyS that does automatic Bundleing, see mealyB for details.

(<^>) Source #

Arguments

:: (HiddenClockResetEnable dom, NFDataX s, Bundle i, Bundle o) 
=> (s -> i -> (s, o))

Transfer function in mealy machine form: state -> input -> (newstate,output)

-> s

Initial state

-> Unbundled dom i -> Unbundled dom o

Synchronous sequential function with input and output matching that of the mealy machine

Infix version of mealyB

moore Source #

Arguments

:: (HiddenClockResetEnable dom, NFDataX s) 
=> (s -> i -> s)

Transfer function in moore machine form: state -> input -> newstate

-> (s -> o)

Output function in moore machine form: state -> output

-> s

Initial state

-> Signal dom i -> Signal dom o

Synchronous sequential function with input and output matching that of the moore machine

Create a synchronous function from a combinational function describing a moore machine

macT
  :: Int        -- Current state
  -> (Int,Int)  -- Input
  -> Int        -- Updated state
macT s (x,y) = x * y + s

mac
  :: HiddenClockResetEnable dom
  => Signal dom (Int, Int)
  -> Signal dom Int
mac = moore mac id 0
>>> simulate @System mac [(0,0),(1,1),(2,2),(3,3),(4,4)]
[0,0,1,5,14,30,...
...

Synchronous sequential functions can be composed just like their combinational counterpart:

dualMac
  :: HiddenClockResetEnable dom
  => (Signal dom Int, Signal dom Int)
  -> (Signal dom Int, Signal dom Int)
  -> Signal dom Int
dualMac (a,b) (x,y) = s1 + s2
  where
    s1 = moore macT id 0 (bundle (a,x))
    s2 = moore macT id 0 (bundle (b,y))

mooreB Source #

Arguments

:: (HiddenClockResetEnable dom, NFDataX s, Bundle i, Bundle o) 
=> (s -> i -> s)

Transfer function in moore machine form: state -> input -> newstate

-> (s -> o)

Output function in moore machine form: state -> output

-> s

Initial state

-> Unbundled dom i -> Unbundled dom o

Synchronous sequential function with input and output matching that of the moore machine

A version of moore that does automatic Bundleing

Given a functions t and o of types:

t :: Int -> (Bool, Int) -> Int
o :: Int -> (Int, Bool)

When we want to make compositions of t and o in g using moore, we have to write:

g a b c = (b1,b2,i2)
  where
    (i1,b1) = unbundle (moore t o 0 (bundle (a,b)))
    (i2,b2) = unbundle (moore t o 3 (bundle (c,i1)))

Using mooreB however we can write:

g a b c = (b1,b2,i2)
  where
    (i1,b1) = mooreB t o 0 (a,b)
    (i2,b2) = mooreB t o 3 (c,i1)

registerB :: (HiddenClockResetEnable dom, NFDataX a, Bundle a) => a -> Unbundled dom a -> Unbundled dom a infixr 3 Source #

Create a register function for product-type like signals (e.g. '(Signal a, Signal b)')

rP :: HiddenClockResetEnable dom
   => (Signal dom Int, Signal dom Int)
   -> (Signal dom Int, Signal dom Int)
rP = registerB (8,8)
>>> simulateB @System rP [(1,1),(2,2),(3,3)] :: [(Int,Int)]
[(8,8),(1,1),(2,2),(3,3)...
...

ROMs

asyncRom Source #

Arguments

:: (KnownNat n, Enum addr, NFDataX a) 
=> Vec n a

ROM content, also determines the size, n, of the ROM

NB: MUST be a constant

-> addr

Read address r

-> a

The value of the ROM at address r

An asynchronous/combinational ROM with space for n elements

See also:

asyncRomPow2 Source #

Arguments

:: (KnownNat n, NFDataX a) 
=> Vec (2 ^ n) a

ROM content

NB: MUST be a constant

-> Unsigned n

Read address r

-> a

The value of the ROM at address r

An asynchronous/combinational ROM with space for 2^n elements

See also:

rom Source #

Arguments

:: forall dom n m a. (NFDataX a, KnownNat n, KnownNat m, HiddenClock dom, HiddenEnable dom) 
=> Vec n a

ROM content, also determines the size, n, of the ROM

NB: MUST be a constant

-> Signal dom (Unsigned m)

Read address r

-> Signal dom a

The value of the ROM at address r from the previous clock cycle

A ROM with a synchronous read port, with space for n elements

  • NB: Read value is delayed by 1 cycle
  • NB: Initial output value is undefined, reading it will throw an XException

See also:

romPow2 Source #

Arguments

:: forall dom n a. (KnownNat n, NFDataX a, HiddenClock dom, HiddenEnable dom) 
=> Vec (2 ^ n) a

ROM content

NB: MUST be a constant

-> Signal dom (Unsigned n)

Read address r

-> Signal dom a

The value of the ROM at address r from the previous clock cycle

A ROM with a synchronous read port, with space for 2^n elements

  • NB: Read value is delayed by 1 cycle
  • NB: Initial output value is undefined, reading it will throw an XException

See also:

ROMs defined by a MemBlob

asyncRomBlob Source #

Arguments

:: Enum addr 
=> MemBlob n m

ROM content, also determines the size, n, of the ROM

NB: MUST be a constant

-> addr

Read address r

-> BitVector m

The value of the ROM at address r

An asynchronous/combinational ROM with space for n elements

See also:

asyncRomBlobPow2 Source #

Arguments

:: KnownNat n 
=> MemBlob (2 ^ n) m

ROM content, also determines the size, 2^n, of the ROM

NB: MUST be a constant

-> Unsigned n

Read address r

-> BitVector m

The value of the ROM at address r

An asynchronous/combinational ROM with space for 2^n elements

See also:

romBlob Source #

Arguments

:: forall dom addr m n. (HiddenClock dom, HiddenEnable dom, Enum addr) 
=> MemBlob n m

ROM content, also determines the size, n, of the ROM

NB: MUST be a constant

-> Signal dom addr

Read address r

-> Signal dom (BitVector m)

The value of the ROM at address r from the previous clock cycle

A ROM with a synchronous read port, with space for n elements

  • NB: Read value is delayed by 1 cycle
  • NB: Initial output value is undefined, reading it will throw an XException

See also:

romBlobPow2 Source #

Arguments

:: forall dom m n. (HiddenClock dom, HiddenEnable dom, KnownNat n) 
=> MemBlob (2 ^ n) m

ROM content, also determines the size, 2^n, of the ROM

NB: MUST be a constant

-> Signal dom (Unsigned n)

Read address r

-> Signal dom (BitVector m)

The value of the ROM at address r from the previous clock cycle

A ROM with a synchronous read port, with space for 2^n elements

  • NB: Read value is delayed by 1 cycle
  • NB: Initial output value is undefined, reading it will throw an XException

See also:

ROMs defined by a data file

asyncRomFile Source #

Arguments

:: (KnownNat m, Enum addr) 
=> SNat n

Size of the ROM

-> FilePath

File describing the content of the ROM

-> addr

Read address r

-> BitVector m

The value of the ROM at address r

An asynchronous/combinational ROM with space for n elements

  • NB: This function might not work for specific combinations of code-generation backends and hardware targets. Please check the support table below:
VHDLVerilogSystemVerilog
Altera/QuartusBrokenWorksWorks
Xilinx/ISEWorksWorksWorks
ASICUntestedUntestedUntested

See also:

  • See Clash.Prelude.ROM.File for more information on how to instantiate a ROM with the contents of a data file.
  • See Clash.Sized.Fixed for ideas on how to create your own data files.
  • When you notice that asyncRomFile is significantly slowing down your simulation, give it a monomorphic type signature. So instead of leaving the type to be inferred:

    myRomData = asyncRomFile d512 "memory.bin"
    

    or giving it a polymorphic type signature:

    myRomData :: Enum addr => addr -> BitVector 16
    myRomData = asyncRomFile d512 "memory.bin"
    

    you should give it a monomorphic type signature:

    myRomData :: Unsigned 9 -> BitVector 16
    myRomData = asyncRomFile d512 "memory.bin"
    

asyncRomFilePow2 Source #

Arguments

:: forall n m. (KnownNat m, KnownNat n) 
=> FilePath

File describing the content of the ROM

-> Unsigned n

Read address r

-> BitVector m

The value of the ROM at address r

An asynchronous/combinational ROM with space for 2^n elements

  • NB: This function might not work for specific combinations of code-generation backends and hardware targets. Please check the support table below:
VHDLVerilogSystemVerilog
Altera/QuartusBrokenWorksWorks
Xilinx/ISEWorksWorksWorks
ASICUntestedUntestedUntested

See also:

  • See Clash.Prelude.ROM.File for more information on how to instantiate a ROM with the contents of a data file.
  • See Clash.Sized.Fixed for ideas on how to create your own data files.
  • When you notice that asyncRomFilePow2 is significantly slowing down your simulation, give it a monomorphic type signature. So instead of leaving the type to be inferred:

    myRomData = asyncRomFilePow2 "memory.bin"
    

    you should give it a monomorphic type signature:

    myRomData :: Unsigned 9 -> BitVector 16
    myRomData = asyncRomFilePow2 "memory.bin"
    

romFile Source #

Arguments

:: (KnownNat m, KnownNat n, HiddenClock dom, HiddenEnable dom, Enum addr) 
=> SNat n

Size of the ROM

-> FilePath

File describing the content of the ROM

-> Signal dom addr

Read address r

-> Signal dom (BitVector m)

The value of the ROM at address r from the previous clock cycle

A ROM with a synchronous read port, with space for n elements

  • NB: Read value is delayed by 1 cycle
  • NB: Initial output value is undefined, reading it will throw an XException
  • NB: This function might not work for specific combinations of code-generation backends and hardware targets. Please check the support table below:
VHDLVerilogSystemVerilog
Altera/QuartusBrokenWorksWorks
Xilinx/ISEWorksWorksWorks
ASICUntestedUntestedUntested

See also:

romFilePow2 Source #

Arguments

:: forall n m dom. (KnownNat m, KnownNat n, HiddenClock dom, HiddenEnable dom) 
=> FilePath

File describing the content of the ROM

-> Signal dom (Unsigned n)

Read address r

-> Signal dom (BitVector m)

The value of the ROM at address r from the previous clock cycle

A ROM with a synchronous read port, with space for 2^n elements

  • NB: Read value is delayed by 1 cycle
  • NB: Initial output value is undefined, reading it will throw an XException
  • NB: This function might not work for specific combinations of code-generation backends and hardware targets. Please check the support table below:
VHDLVerilogSystemVerilog
Altera/QuartusBrokenWorksWorks
Xilinx/ISEWorksWorksWorks
ASICUntestedUntestedUntested

See also:

RAM primitives with a combinational read port

asyncRam Source #

Arguments

:: (Enum addr, NFDataX addr, HiddenClock dom, HiddenEnable dom, HasCallStack, NFDataX a) 
=> SNat n

Size n of the RAM

-> Signal dom addr

Read address r

-> Signal dom (Maybe (addr, a))

(write address w, value to write)

-> Signal dom a

Value of the RAM at address r

Create a RAM with space for n elements

  • NB: Initial content of the RAM is undefined, reading it will throw an XException

See also:

asyncRamPow2 Source #

Arguments

:: (KnownNat n, HiddenClock dom, HiddenEnable dom, HasCallStack, NFDataX a) 
=> Signal dom (Unsigned n)

Read address r

-> Signal dom (Maybe (Unsigned n, a))

(write address w, value to write)

-> Signal dom a

Value of the RAM at address r

Create a RAM with space for 2^n elements

  • NB: Initial content of the RAM is undefined, reading it will throw an XException

See also:

Block RAM primitives

blockRam Source #

Arguments

:: (HasCallStack, HiddenClock dom, HiddenEnable dom, NFDataX a, Enum addr, NFDataX addr) 
=> Vec n a

Initial content of the BRAM, also determines the size, n, of the BRAM

NB: MUST be a constant

-> Signal dom addr

Read address r

-> Signal dom (Maybe (addr, a))

(write address w, value to write)

-> Signal dom a

Value of the BRAM at address r from the previous clock cycle

Create a block RAM with space for n elements

  • NB: Read value is delayed by 1 cycle
  • NB: Initial output value is undefined, reading it will throw an XException

See also:

Example

Expand
bram40
  :: HiddenClock dom
  => Signal dom (Unsigned 6)
  -> Signal dom (Maybe (Unsigned 6, Bit))
  -> Signal dom Bit
bram40 = blockRam (replicate d40 1)

blockRamPow2 Source #

Arguments

:: (HasCallStack, HiddenClock dom, HiddenEnable dom, NFDataX a, KnownNat n) 
=> Vec (2 ^ n) a

Initial content of the BRAM

NB: MUST be a constant.

-> Signal dom (Unsigned n)

Read address r

-> Signal dom (Maybe (Unsigned n, a))

(write address w, value to write)

-> Signal dom a

Value of the blockRAM at address r from the previous clock cycle

Create a block RAM with space for 2^n elements

  • NB: Read value is delayed by 1 cycle
  • NB: Initial output value is undefined, reading it will throw an XException

See also:

Example

Expand
bram32
  :: HiddenClock dom
  => Signal dom (Unsigned 5)
  -> Signal dom (Maybe (Unsigned 5, Bit))
  -> Signal dom Bit
bram32 = blockRamPow2 (replicate d32 1)

blockRamU Source #

Arguments

:: forall n dom a r addr. (HasCallStack, HiddenClockResetEnable dom, NFDataX a, Enum addr, NFDataX addr, 1 <= n) 
=> ResetStrategy r (Index n -> a)

Whether to clear BRAM on asserted reset (ClearOnReset) or not (NoClearOnReset). The reset needs to be asserted for at least n cycles to clear the BRAM.

-> SNat n

Number of elements in BRAM

-> Signal dom addr

Read address r

-> Signal dom (Maybe (addr, a))

(write address w, value to write)

-> Signal dom a

Value of the BRAM at address r from the previous clock cycle

A version of blockRam that has no default values set. May be cleared to an arbitrary state using a reset function.

blockRam1 Source #

Arguments

:: forall n dom a r addr. (HasCallStack, HiddenClockResetEnable dom, NFDataX a, Enum addr, NFDataX addr, 1 <= n) 
=> ResetStrategy r ()

Whether to clear BRAM on asserted reset (ClearOnReset) or not (NoClearOnReset). The reset needs to be asserted for at least n cycles to clear the BRAM.

-> SNat n

Number of elements in BRAM

-> a

Initial content of the BRAM (replicated n times)

-> Signal dom addr

Read address r

-> Signal dom (Maybe (addr, a))

(write address w, value to write)

-> Signal dom a

Value of the BRAM at address r from the previous clock cycle

A version of blockRam that is initialized with the same value on all memory positions

data ResetStrategy (r :: Bool) a where Source #

Block RAM primitives initialized with a MemBlob

blockRamBlob Source #

Arguments

:: forall dom addr m n. (HiddenClock dom, HiddenEnable dom, Enum addr, NFDataX addr) 
=> MemBlob n m

Initial content of the BRAM, also determines the size, n, of the BRAM

NB: MUST be a constant

-> Signal dom addr

Read address r

-> Signal dom (Maybe (addr, BitVector m))

(write address w, value to write)

-> Signal dom (BitVector m)

Value of the BRAM at address r from the previous clock cycle

Create a block RAM with space for n elements

  • NB: Read value is delayed by 1 cycle
  • NB: Initial output value is undefined, reading it will throw an XException

See also:

blockRamBlobPow2 Source #

Arguments

:: forall dom m n. (HiddenClock dom, HiddenEnable dom, KnownNat n) 
=> MemBlob (2 ^ n) m

Initial content of the BRAM, also determines the size, 2^n, of the BRAM

NB: MUST be a constant

-> Signal dom (Unsigned n)

Read address r

-> Signal dom (Maybe (Unsigned n, BitVector m))

(write address w, value to write)

-> Signal dom (BitVector m)

Value of the BRAM at address r from the previous clock cycle

Create a block RAM with space for 2^n elements

  • NB: Read value is delayed by 1 cycle
  • NB: Initial output value is undefined, reading it will throw an XException

See also:

Creating and inspecting MemBlob

data MemBlob (n :: Nat) (m :: Nat) Source #

Efficient storage of memory content

It holds n words of BitVector m.

Instances

Instances details
Show (MemBlob n m) Source # 
Instance details

Defined in Clash.Explicit.BlockRam.Internal

Methods

showsPrec :: Int -> MemBlob n m -> ShowS #

show :: MemBlob n m -> String #

showList :: [MemBlob n m] -> ShowS #

createMemBlob Source #

Arguments

:: forall a f. (Foldable f, BitPack a) 
=> String

Name of the binding to generate

-> Maybe Bit

Value to map don't care bits to. Nothing means throwing an error on don't care bits.

-> f a

The content for the MemBlob

-> DecsQ 

Create a MemBlob binding from a list of values

Since this uses Template Haskell, nothing in the arguments given to createMemBlob can refer to something defined in the same module.

Example

Expand
createMemBlob "content" Nothing [15 :: Unsigned 8 .. 17]

ram clk en = blockRamBlob clk en content

The Maybe datatype has don't care bits, where the actual value does not matter. But the bits need a defined value in the memory. Either 0 or 1 can be used, and both are valid representations of the data.

>>> import qualified Prelude as P
>>> let es = [ Nothing, Just (7 :: Unsigned 8), Just 8 ]
>>> :{
createMemBlob "content0" (Just 0) es
createMemBlob "content1" (Just 1) es
x = 1
:}
>>> let pr = mapM_ (putStrLn . show)
>>> pr $ P.map pack es
0b0_...._....
0b1_0000_0111
0b1_0000_1000
>>> pr $ unpackMemBlob content0
0b0_0000_0000
0b1_0000_0111
0b1_0000_1000
>>> pr $ unpackMemBlob content1
0b0_1111_1111
0b1_0000_0111
0b1_0000_1000

# 288 "srcClashExplicitBlockRamBlob.hs" >>> :{ createMemBlob "contentN" Nothing es x = 1 :} BLANKLINE interactive:...: error:... packBVs: cannot convert don't care values. Please specify a mapping to a definite value.

Note how we hinted to clashi that our multi-line command was a list of declarations by including a dummy declaration x = 1. Without this trick, clashi would expect an expression and the Template Haskell would not work.

memBlobTH Source #

Arguments

:: forall a f. (Foldable f, BitPack a) 
=> Maybe Bit

Value to map don't care bits to. Nothing means throwing an error on don't care bits.

-> f a

The content for the MemBlob

-> ExpQ 

Create a MemBlob from a list of values

Since this uses Template Haskell, nothing in the arguments given to memBlobTH can refer to something defined in the same module.

Example

Expand
ram clk en = blockRamBlob clk en $(memBlobTH Nothing [15 :: Unsigned 8 .. 17])

The Maybe datatype has don't care bits, where the actual value does not matter. But the bits need a defined value in the memory. Either 0 or 1 can be used, and both are valid representations of the data.

>>> import qualified Prelude as P
>>> let es = [ Nothing, Just (7 :: Unsigned 8), Just 8 ]
>>> content0 = $(memBlobTH (Just 0) es)
>>> content1 = $(memBlobTH (Just 1) es)
>>> let pr = mapM_ (putStrLn . show)
>>> pr $ P.map pack es
0b0_...._....
0b1_0000_0111
0b1_0000_1000
>>> pr $ unpackMemBlob content0
0b0_0000_0000
0b1_0000_0111
0b1_0000_1000
>>> pr $ unpackMemBlob content1
0b0_1111_1111
0b1_0000_0111
0b1_0000_1000

# 377 "srcClashExplicitBlockRamBlob.hs" >>> $(memBlobTH Nothing es) BLANKLINE interactive:...: error:... • packBVs: cannot convert don't care values. Please specify a mapping to a definite value. • In the untyped splice: $(memBlobTH Nothing es)

unpackMemBlob :: forall n m. MemBlob n m -> [BitVector m] Source #

Convert a MemBlob back to a list

NB: Not synthesizable

Block RAM primitives initialized with a data file

blockRamFile Source #

Arguments

:: (KnownNat m, Enum addr, NFDataX addr, HiddenClock dom, HiddenEnable dom, HasCallStack) 
=> SNat n

Size of the BRAM

-> FilePath

File describing the initial content of the BRAM

-> Signal dom addr

Read address r

-> Signal dom (Maybe (addr, BitVector m))

(write address w, value to write)

-> Signal dom (BitVector m)

Value of the BRAM at address r from the previous clock cycle

Create a block RAM with space for n elements

  • NB: Read value is delayed by 1 cycle
  • NB: Initial output value is undefined, reading it will throw an XException
  • NB: This function might not work for specific combinations of code-generation backends and hardware targets. Please check the support table below:
VHDLVerilogSystemVerilog
Altera/QuartusBrokenWorksWorks
Xilinx/ISEWorksWorksWorks
ASICUntestedUntestedUntested

See also:

blockRamFilePow2 Source #

Arguments

:: forall dom n m. (KnownNat m, KnownNat n, HiddenClock dom, HiddenEnable dom, HasCallStack) 
=> FilePath

File describing the initial content of the BRAM

-> Signal dom (Unsigned n)

Read address r

-> Signal dom (Maybe (Unsigned n, BitVector m))

(write address w, value to write)

-> Signal dom (BitVector m)

Value of the BRAM at address r from the previous clock cycle

Create a block RAM with space for 2^n elements

  • NB: Read value is delayed by 1 cycle
  • NB: Initial output value is undefined, reading it will throw an XException
  • NB: This function might not work for specific combinations of code-generation backends and hardware targets. Please check the support table below:
VHDLVerilogSystemVerilog
Altera/QuartusBrokenWorksWorks
Xilinx/ISEWorksWorksWorks
ASICUntestedUntestedUntested

See also:

Block RAM read/write conflict resolution

readNew Source #

Arguments

:: (HiddenClockResetEnable dom, NFDataX a, Eq addr) 
=> (Signal dom addr -> Signal dom (Maybe (addr, a)) -> Signal dom a)

The BRAM component

-> Signal dom addr

Read address r

-> Signal dom (Maybe (addr, a))

(Write address w, value to write)

-> Signal dom a

Value of the BRAM at address r from the previous clock cycle

Create a read-after-write block RAM from a read-before-write one

# 848 "srcClashPrelude/BlockRam.hs" >>> :t readNew (blockRam (0 :> 1 :> Nil)) readNew (blockRam (0 :> 1 :> Nil)) :: ... ... => Signal dom addr -> Signal dom (Maybe (addr, a)) -> Signal dom a

# 865 "srcClashPrelude/BlockRam.hs"

True dual-port block RAM

trueDualPortBlockRam Source #

Arguments

:: forall nAddrs dom a. (HasCallStack, KnownNat nAddrs, HiddenClock dom, NFDataX a) 
=> Signal dom (RamOp nAddrs a)

RAM operation for port A

-> Signal dom (RamOp nAddrs a)

RAM operation for port B

-> (Signal dom a, Signal dom a)

Outputs data on next cycle. When writing, the data written will be echoed. When reading, the read data is returned.

Produces vendor-agnostic HDL that will be inferred as a true dual-port block RAM

Any value that is being written on a particular port is also the value that will be read on that port, i.e. the same-port read/write behavior is: WriteFirst. For mixed-port read/write, when port A writes to the address port B reads from, the output of port B is undefined, and vice versa.

data RamOp n a Source #

Port operation

Constructors

RamRead (Index n)

Read from address

RamWrite (Index n) a

Write data to address

RamNoOp

No operation

Instances

Instances details
Generic (RamOp n a) Source # 
Instance details

Defined in Clash.Explicit.BlockRam

Associated Types

type Rep (RamOp n a) :: Type -> Type #

Methods

from :: RamOp n a -> Rep (RamOp n a) x #

to :: Rep (RamOp n a) x -> RamOp n a #

Show a => Show (RamOp n a) Source # 
Instance details

Defined in Clash.Explicit.BlockRam

Methods

showsPrec :: Int -> RamOp n a -> ShowS #

show :: RamOp n a -> String #

showList :: [RamOp n a] -> ShowS #

(AutoReg a, KnownNat n) => AutoReg (RamOp n a) Source # 
Instance details

Defined in Clash.Explicit.BlockRam

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> RamOp n a -> Signal dom (RamOp n a) -> Signal dom (RamOp n a) Source #

NFDataX a => NFDataX (RamOp n a) Source # 
Instance details

Defined in Clash.Explicit.BlockRam

Methods

deepErrorX :: String -> RamOp n a Source #

hasUndefined :: RamOp n a -> Bool Source #

ensureSpine :: RamOp n a -> RamOp n a Source #

rnfX :: RamOp n a -> () Source #

type Rep (RamOp n a) Source # 
Instance details

Defined in Clash.Explicit.BlockRam

type Rep (RamOp n a) = D1 ('MetaData "RamOp" "Clash.Explicit.BlockRam" "clash-prelude-1.9.0-inplace" 'False) (C1 ('MetaCons "RamRead" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Index n))) :+: (C1 ('MetaCons "RamWrite" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Index n)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "RamNoOp" 'PrefixI 'False) (U1 :: Type -> Type)))

Utility functions

window Source #

Arguments

:: (HiddenClockResetEnable dom, KnownNat n, Default a, NFDataX a) 
=> Signal dom a

Signal to create a window over

-> Vec (n + 1) (Signal dom a)

Window of at least size 1

Give a window over a Signal

window4 :: HiddenClockResetEnable dom
        => Signal dom Int -> Vec 4 (Signal dom Int)
window4 = window
>>> simulateB @System window4 [1::Int,2,3,4,5] :: [Vec 4 Int]
[1 :> 0 :> 0 :> 0 :> Nil,2 :> 1 :> 0 :> 0 :> Nil,3 :> 2 :> 1 :> 0 :> Nil,4 :> 3 :> 2 :> 1 :> Nil,5 :> 4 :> 3 :> 2 :> Nil,...
...

windowD Source #

Arguments

:: (HiddenClockResetEnable dom, KnownNat n, Default a, NFDataX a) 
=> Signal dom a

Signal to create a window over

-> Vec (n + 1) (Signal dom a)

Window of at least size 1

Give a delayed window over a Signal

windowD3
  :: HiddenClockResetEnable dom
  => Signal dom Int
  -> Vec 3 (Signal dom Int)
windowD3 = windowD
>>> simulateB @System windowD3 [1::Int,2,3,4] :: [Vec 3 Int]
[0 :> 0 :> 0 :> Nil,1 :> 0 :> 0 :> Nil,2 :> 1 :> 0 :> Nil,3 :> 2 :> 1 :> Nil,4 :> 3 :> 2 :> Nil,...
...

isRising Source #

Arguments

:: (HiddenClockResetEnable dom, NFDataX a, Bounded a, Eq a) 
=> a

Starting value

-> Signal dom a 
-> Signal dom Bool 

Give a pulse when the Signal goes from minBound to maxBound

isFalling Source #

Arguments

:: (HiddenClockResetEnable dom, NFDataX a, Bounded a, Eq a) 
=> a

Starting value

-> Signal dom a 
-> Signal dom Bool 

Give a pulse when the Signal goes from maxBound to minBound

riseEvery :: HiddenClockResetEnable dom => SNat n -> Signal dom Bool Source #

Give a pulse every n clock cycles. This is a useful helper function when combined with functions like regEn or mux, in order to delay a register by a known amount.

To be precise: the given signal will be False for the next n-1 cycles, followed by a single True value:

>>> Prelude.last (sampleN @System 1025 (riseEvery d1024)) == True
True
>>> Prelude.or (sampleN @System 1024 (riseEvery d1024)) == False
True

For example, to update a counter once every 10 million cycles:

counter = regEn 0 (riseEvery (SNat :: SNat 10000000)) (counter + 1)

oscillate :: HiddenClockResetEnable dom => Bool -> SNat n -> Signal dom Bool Source #

Oscillate a Bool for a given number of cycles. This is a convenient function when combined with something like regEn, as it allows you to easily hold a register value for a given number of cycles. The input Bool determines what the initial value is.

To oscillate on an interval of 5 cycles:

>>> sampleN @System 11 (oscillate False d5)
[False,False,False,False,False,False,True,True,True,True,True]

To oscillate between True and False:

>>> sampleN @System 11 (oscillate False d1)
[False,False,True,False,True,False,True,False,True,False,True]

An alternative definition for the above could be:

>>> let osc' = register False (not <$> osc')
>>> sampleN @System 200 (oscillate False d1) == sampleN @System 200 osc'
True

Tracing

Simple

traceSignal1 Source #

Arguments

:: (BitPack a, NFDataX a, Typeable a) 
=> String

Name of signal in the VCD output

-> Signal dom a

Signal to trace

-> Signal dom a 

Trace a single signal. Will emit an error if a signal with the same name was previously registered.

NB: Associates the traced signal with a clock period of 1, which results in incorrect VCD files when working with circuits that have multiple clocks. Use traceSignal when working with circuits that have multiple clocks.

traceVecSignal1 Source #

Arguments

:: (KnownNat n, BitPack a, NFDataX a, Typeable a) 
=> String

Name of signal in debugging output. Will be appended by _0, _1, ..., _n.

-> Signal dom (Vec (n + 1) a)

Signal to trace

-> Signal dom (Vec (n + 1) a) 

Trace a single vector signal: each element in the vector will show up as a different trace. If the trace name already exists, this function will emit an error.

NB: Associates the traced signal with a clock period of 1, which results in incorrect VCD files when working with circuits that have multiple clocks. Use traceSignal when working with circuits that have multiple clocks.

Tracing in a multi-clock environment

traceSignal Source #

Arguments

:: forall dom a. (KnownDomain dom, BitPack a, NFDataX a, Typeable a) 
=> String

Name of signal in the VCD output

-> Signal dom a

Signal to trace

-> Signal dom a 

Trace a single signal. Will emit an error if a signal with the same name was previously registered.

NB: Works correctly when creating VCD files from traced signal in multi-clock circuits. However traceSignal1 might be more convenient to use when the domain of your circuit is polymorphic.

traceVecSignal Source #

Arguments

:: forall dom a n. (KnownDomain dom, KnownNat n, BitPack a, NFDataX a, Typeable a) 
=> String

Name of signal in debugging output. Will be appended by _0, _1, ..., _n.

-> Signal dom (Vec (n + 1) a)

Signal to trace

-> Signal dom (Vec (n + 1) a) 

Trace a single vector signal: each element in the vector will show up as a different trace. If the trace name already exists, this function will emit an error.

NB: Works correctly when creating VCD files from traced signal in multi-clock circuits. However traceSignal1 might be more convenient to use when the domain of your circuit is polymorphic.

VCD dump functions

dumpVCD Source #

Arguments

:: NFDataX a 
=> (Int, Int)

(offset, number of samples)

-> Signal dom a

(One of) the outputs of the circuit containing the traces

-> [String]

The names of the traces you definitely want to be dumped in the VCD file

-> IO (Either String Text) 

Produce a four-state VCD (Value Change Dump) according to IEEE 1364-{1995,2001}. This function fails if a trace name contains either non-printable or non-VCD characters.

Due to lazy evaluation, the created VCD files might not contain all the traces you were expecting. You therefore have to provide a list of names you definately want to be dumped in the VCD file.

For example:

vcd <- dumpVCD (0, 100) cntrOut ["main", "sub"]

Evaluates cntrOut long enough in order for to guarantee that the main, and sub traces end up in the generated VCD file.

Exported modules

Synchronous signals

data Signal (dom :: Domain) a Source #

Clash has synchronous Signals in the form of:

Signal (dom :: Domain) a

Where a is the type of the value of the Signal, for example Int or Bool, and dom is the clock- (and reset-) domain to which the memory elements manipulating these Signals belong.

The type-parameter, dom, is of the kind Domain - a simple string. That string refers to a single synthesis domain. A synthesis domain describes the behavior of certain aspects of memory elements in it.

  • NB: "Bad things"™ happen when you actually use a clock period of 0, so do not do that!
  • NB: You should be judicious using a clock with period of 1 as you can never create a clock that goes any faster!
  • NB: For the best compatibility make sure your period is divisible by 2, because some VHDL simulators don't support fractions of picoseconds.
  • NB: Whether System has good defaults depends on your target platform. Check out IntelSystem and XilinxSystem too!

Signals have the type role

>>> :i Signal
type role Signal nominal representational
...

as it is safe to coerce the underlying value of a signal, but not safe to coerce a signal between different synthesis domains.

See the module documentation of Clash.Signal for more information about domains.

Instances

Instances details
HasField x r a => HasField (x :: k) (Signal dom r) (Signal dom a) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

getField :: Signal dom r -> Signal dom a #

AssertionValue dom (Signal dom Bool) Source #

Stream of booleans, originating from a circuit

Instance details

Defined in Clash.Verification.Internal

Lift a => Lift (Signal dom a :: Type) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

lift :: Quote m => Signal dom a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Signal dom a -> Code m (Signal dom a) #

Foldable (Signal dom) Source #

NB: Not synthesizable

NB: In "foldr f z s":

  • The function f should be lazy in its second argument.
  • The z element will never be used.
Instance details

Defined in Clash.Signal.Internal

Methods

fold :: Monoid m => Signal dom m -> m #

foldMap :: Monoid m => (a -> m) -> Signal dom a -> m #

foldMap' :: Monoid m => (a -> m) -> Signal dom a -> m #

foldr :: (a -> b -> b) -> b -> Signal dom a -> b #

foldr' :: (a -> b -> b) -> b -> Signal dom a -> b #

foldl :: (b -> a -> b) -> b -> Signal dom a -> b #

foldl' :: (b -> a -> b) -> b -> Signal dom a -> b #

foldr1 :: (a -> a -> a) -> Signal dom a -> a #

foldl1 :: (a -> a -> a) -> Signal dom a -> a #

toList :: Signal dom a -> [a] #

null :: Signal dom a -> Bool #

length :: Signal dom a -> Int #

elem :: Eq a => a -> Signal dom a -> Bool #

maximum :: Ord a => Signal dom a -> a #

minimum :: Ord a => Signal dom a -> a #

sum :: Num a => Signal dom a -> a #

product :: Num a => Signal dom a -> a #

Traversable (Signal dom) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

traverse :: Applicative f => (a -> f b) -> Signal dom a -> f (Signal dom b) #

sequenceA :: Applicative f => Signal dom (f a) -> f (Signal dom a) #

mapM :: Monad m => (a -> m b) -> Signal dom a -> m (Signal dom b) #

sequence :: Monad m => Signal dom (m a) -> m (Signal dom a) #

Applicative (Signal dom) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

pure :: a -> Signal dom a #

(<*>) :: Signal dom (a -> b) -> Signal dom a -> Signal dom b #

liftA2 :: (a -> b -> c) -> Signal dom a -> Signal dom b -> Signal dom c #

(*>) :: Signal dom a -> Signal dom b -> Signal dom b #

(<*) :: Signal dom a -> Signal dom b -> Signal dom a #

Functor (Signal dom) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

fmap :: (a -> b) -> Signal dom a -> Signal dom b #

(<$) :: a -> Signal dom b -> Signal dom a #

Arbitrary a => Arbitrary (Signal dom a) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

arbitrary :: Gen (Signal dom a) #

shrink :: Signal dom a -> [Signal dom a] #

CoArbitrary a => CoArbitrary (Signal dom a) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

coarbitrary :: Signal dom a -> Gen b -> Gen b #

Num a => Num (Signal dom a) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

(+) :: Signal dom a -> Signal dom a -> Signal dom a #

(-) :: Signal dom a -> Signal dom a -> Signal dom a #

(*) :: Signal dom a -> Signal dom a -> Signal dom a #

negate :: Signal dom a -> Signal dom a #

abs :: Signal dom a -> Signal dom a #

signum :: Signal dom a -> Signal dom a #

fromInteger :: Integer -> Signal dom a #

Fractional a => Fractional (Signal dom a) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

(/) :: Signal dom a -> Signal dom a -> Signal dom a #

recip :: Signal dom a -> Signal dom a #

fromRational :: Rational -> Signal dom a #

Show a => Show (Signal dom a) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

showsPrec :: Int -> Signal dom a -> ShowS #

show :: Signal dom a -> String #

showList :: [Signal dom a] -> ShowS #

Clocks (Clock c1, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Signal pllLock Bool) Source #

NFDataX a => NFDataX (Signal domain a) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

deepErrorX :: String -> Signal domain a Source #

hasUndefined :: Signal domain a -> Bool Source #

ensureSpine :: Signal domain a -> Signal domain a Source #

rnfX :: Signal domain a -> () Source #

Default a => Default (Signal dom a) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

def :: Signal dom a #

Clocks (Clock c1, Clock c2, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) Source #

type TryDomain t (Signal dom a) Source # 
Instance details

Defined in Clash.Class.HasDomain.HasSingleDomain

type TryDomain t (Signal dom a) = 'Found dom
type HasDomain dom1 (Signal dom2 a) Source # 
Instance details

Defined in Clash.Class.HasDomain.HasSpecificDomain

type HasDomain dom1 (Signal dom2 a) = DomEq dom1 dom2
type ClocksCxt (Clock c1, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Signal pllLock Bool) = (KnownDomain c1, KnownDomain pllLock)
type NumOutClocks (Clock c1, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Signal pllLock Bool) = 1
type ClocksCxt (Clock c1, Clock c2, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Signal pllLock Bool) = 2
type ClocksCxt (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) = 3
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) = 4
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) = 5
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) = 6
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) = 7
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) = 8
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) = 9
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) = 10
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) = 11
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) = 12
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) = 13
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) = 14
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) = 15
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain c16, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) = 16
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain c16, KnownDomain c17, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) = 17
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain c16, KnownDomain c17, KnownDomain c18, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) = 18

data Clock (dom :: Domain) Source #

A clock signal belonging to a domain named dom.

Instances

Instances details
Show (Clock dom) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

showsPrec :: Int -> Clock dom -> ShowS #

show :: Clock dom -> String #

showList :: [Clock dom] -> ShowS #

Clocks (Clock c1, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Signal pllLock Bool) Source #

ClocksSync (Clock c1, Reset c1) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1)) => ClocksSyncClocksInst (Clock c1, Reset c1) domIn -> Clock domIn -> (Clock c1, Reset c1) Source #

Clocks (Clock c1, Clock c2, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) Source #

Clocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) Source #

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) :: Nat Source #

Methods

clocks :: forall (domIn :: Domain). (KnownDomain domIn, ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool)) => Clock domIn -> Reset domIn -> (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) Source #

type TryDomain t (Clock dom) Source # 
Instance details

Defined in Clash.Class.HasDomain.HasSingleDomain

type TryDomain t (Clock dom) = 'Found dom
type HasDomain dom1 (Clock dom2) Source # 
Instance details

Defined in Clash.Class.HasDomain.HasSpecificDomain

type HasDomain dom1 (Clock dom2) = DomEq dom1 dom2
type ClocksCxt (Clock c1, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Signal pllLock Bool) = (KnownDomain c1, KnownDomain pllLock)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Signal pllLock Bool) = 1
type ClocksSyncClocksInst (Clock c1, Reset c1) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1) domIn = (Clock c1, Signal domIn Bool)
type ClocksCxt (Clock c1, Clock c2, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Signal pllLock Bool) = 2
type ClocksCxt (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain pllLock)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Signal pllLock Bool) = 3
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2) domIn = (Clock c1, Clock c2, Signal domIn Bool)
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Signal pllLock Bool) = 4
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain pllLock)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal pllLock Bool) = 5
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) domIn = (Clock c1, Clock c2, Clock c3, Signal domIn Bool)
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal pllLock Bool) = 6
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain pllLock)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal pllLock Bool) = 7
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Signal domIn Bool)
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal pllLock Bool) = 8
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain pllLock)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal pllLock Bool) = 9
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal domIn Bool)
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal pllLock Bool) = 10
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain pllLock)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal pllLock Bool) = 11
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal domIn Bool)
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal pllLock Bool) = 12
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain pllLock)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal pllLock Bool) = 13
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal domIn Bool)
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal pllLock Bool) = 14
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain pllLock)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal pllLock Bool) = 15
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal domIn Bool)
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain c16, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal pllLock Bool) = 16
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain c16, KnownDomain c17, KnownDomain pllLock)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal pllLock Bool) = 17
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal domIn Bool)
type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type ClocksCxt (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain c16, KnownDomain c17, KnownDomain c18, KnownDomain pllLock)
type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) Source # 
Instance details

Defined in Clash.Clocks

type NumOutClocks (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal pllLock Bool) = 18
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain c16)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain c16, KnownDomain c17)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain c16, KnownDomain c17, KnownDomain c18)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal domIn Bool)

type Seconds (s :: Nat) = Milliseconds (1000 * s) Source #

Gets time in Picoseconds from time in Seconds

class Bundle a where Source #

Isomorphism between a Signal of a product type (e.g. a tuple) and a product type of Signals.

Instances of Bundle must satisfy the following laws:

bundle . unbundle = id
unbundle . bundle = id

By default, bundle and unbundle, are defined as the identity, that is, writing:

data D = A | B

instance Bundle D

is the same as:

data D = A | B

instance Bundle D where
  type Unbundled clk D = Signal clk D
  bundle   s = s
  unbundle s = s

For custom product types you'll have to write the instance manually:

data Pair a b = MkPair { getA :: a, getB :: b }

instance Bundle (Pair a b) where
  type Unbundled dom (Pair a b) = Pair (Signal dom a) (Signal dom b)

  -- bundle :: Pair (Signal dom a) (Signal dom b) -> Signal dom (Pair a b)
  bundle   (MkPair as bs) = MkPair <$> as <*> bs

  -- unbundle :: Signal dom (Pair a b) -> Pair (Signal dom a) (Signal dom b)
  unbundle pairs = MkPair (getA <$> pairs) (getB <$> pairs)

Minimal complete definition

Nothing

Associated Types

type Unbundled (dom :: Domain) a = res | res -> dom a Source #

type Unbundled dom a = Signal dom a

Methods

bundle :: Unbundled dom a -> Signal dom a Source #

Example:

bundle :: (Signal dom a, Signal dom b) -> Signal dom (a,b)

However:

bundle :: Signal dom Bit -> Signal dom Bit

default bundle :: Signal dom a ~ Unbundled dom a => Unbundled dom a -> Signal dom a Source #

unbundle :: Signal dom a -> Unbundled dom a Source #

Example:

unbundle :: Signal dom (a,b) -> (Signal dom a, Signal dom b)

However:

unbundle :: Signal dom Bit -> Signal dom Bit

default unbundle :: Unbundled dom a ~ Signal dom a => Signal dom a -> Unbundled dom a Source #

Instances

Instances details
Bundle EmptyTuple Source #

See commit 94b0bff5 and documentation for TaggedEmptyTuple.

Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom EmptyTuple = (res :: Type) Source #

Methods

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

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

Bundle Bit Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom Bit = (res :: Type) Source #

Methods

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

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

Bundle Integer Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom Integer = (res :: Type) Source #

Methods

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

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

Bundle () Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom () = (res :: Type) Source #

Methods

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

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

Bundle Bool Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom Bool = (res :: Type) Source #

Methods

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

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

Bundle Double Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom Double = (res :: Type) Source #

Methods

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

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

Bundle Float Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom Float = (res :: Type) Source #

Methods

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

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

Bundle Int Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom Int = (res :: Type) Source #

Methods

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

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

Bundle (BitVector n) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (BitVector n) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (BitVector n) -> Signal dom (BitVector n) Source #

unbundle :: forall (dom :: Domain). Signal dom (BitVector n) -> Unbundled dom (BitVector n) Source #

Bundle (Index n) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (Index n) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (Index n) -> Signal dom (Index n) Source #

unbundle :: forall (dom :: Domain). Signal dom (Index n) -> Unbundled dom (Index n) Source #

Bundle (Signed n) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (Signed n) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (Signed n) -> Signal dom (Signed n) Source #

unbundle :: forall (dom :: Domain). Signal dom (Signed n) -> Unbundled dom (Signed n) Source #

Bundle (Unsigned n) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (Unsigned n) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (Unsigned n) -> Signal dom (Unsigned n) Source #

unbundle :: forall (dom :: Domain). Signal dom (Unsigned n) -> Unbundled dom (Unsigned n) Source #

Bundle (Maybe a) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (Maybe a) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (Maybe a) -> Signal dom (Maybe a) Source #

unbundle :: forall (dom :: Domain). Signal dom (Maybe a) -> Unbundled dom (Maybe a) Source #

Bundle (Either a b) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (Either a b) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (Either a b) -> Signal dom (Either a b) Source #

unbundle :: forall (dom :: Domain). Signal dom (Either a b) -> Unbundled dom (Either a b) Source #

KnownNat d => Bundle (RTree d a) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (RTree d a) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (RTree d a) -> Signal dom (RTree d a) Source #

unbundle :: forall (dom :: Domain). Signal dom (RTree d a) -> Unbundled dom (RTree d a) Source #

KnownNat n => Bundle (Vec n a) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (Vec n a) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (Vec n a) -> Signal dom (Vec n a) Source #

unbundle :: forall (dom :: Domain). Signal dom (Vec n a) -> Unbundled dom (Vec n a) Source #

Bundle (a1, a2) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (a1, a2) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (a1, a2) -> Signal dom (a1, a2) Source #

unbundle :: forall (dom :: Domain). Signal dom (a1, a2) -> Unbundled dom (a1, a2) Source #

Bundle (Fixed rep int frac) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (Fixed rep int frac) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (Fixed rep int frac) -> Signal dom (Fixed rep int frac) Source #

unbundle :: forall (dom :: Domain). Signal dom (Fixed rep int frac) -> Unbundled dom (Fixed rep int frac) Source #

Bundle (a1, a2, a3) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (a1, a2, a3) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (a1, a2, a3) -> Signal dom (a1, a2, a3) Source #

unbundle :: forall (dom :: Domain). Signal dom (a1, a2, a3) -> Unbundled dom (a1, a2, a3) Source #

Bundle ((f :*: g) a) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom ((f :*: g) a) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom ((f :*: g) a) -> Signal dom ((f :*: g) a) Source #

unbundle :: forall (dom :: Domain). Signal dom ((f :*: g) a) -> Unbundled dom ((f :*: g) a) Source #

Bundle (a1, a2, a3, a4) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (a1, a2, a3, a4) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (a1, a2, a3, a4) -> Signal dom (a1, a2, a3, a4) Source #

unbundle :: forall (dom :: Domain). Signal dom (a1, a2, a3, a4) -> Unbundled dom (a1, a2, a3, a4) Source #

Bundle (a1, a2, a3, a4, a5) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (a1, a2, a3, a4, a5) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (a1, a2, a3, a4, a5) -> Signal dom (a1, a2, a3, a4, a5) Source #

unbundle :: forall (dom :: Domain). Signal dom (a1, a2, a3, a4, a5) -> Unbundled dom (a1, a2, a3, a4, a5) Source #

Bundle (a1, a2, a3, a4, a5, a6) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (a1, a2, a3, a4, a5, a6) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (a1, a2, a3, a4, a5, a6) -> Signal dom (a1, a2, a3, a4, a5, a6) Source #

unbundle :: forall (dom :: Domain). Signal dom (a1, a2, a3, a4, a5, a6) -> Unbundled dom (a1, a2, a3, a4, a5, a6) Source #

Bundle (a1, a2, a3, a4, a5, a6, a7) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (a1, a2, a3, a4, a5, a6, a7) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (a1, a2, a3, a4, a5, a6, a7) -> Signal dom (a1, a2, a3, a4, a5, a6, a7) Source #

unbundle :: forall (dom :: Domain). Signal dom (a1, a2, a3, a4, a5, a6, a7) -> Unbundled dom (a1, a2, a3, a4, a5, a6, a7) Source #

Bundle (a1, a2, a3, a4, a5, a6, a7, a8) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8) -> Signal dom (a1, a2, a3, a4, a5, a6, a7, a8) Source #

unbundle :: forall (dom :: Domain). Signal dom (a1, a2, a3, a4, a5, a6, a7, a8) -> Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8) Source #

Bundle (a1, a2, a3, a4, a5, a6, a7, a8, a9) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8, a9) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> Signal dom (a1, a2, a3, a4, a5, a6, a7, a8, a9) Source #

unbundle :: forall (dom :: Domain). Signal dom (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8, a9) Source #

Bundle (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) -> Signal dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) Source #

unbundle :: forall (dom :: Domain). Signal dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) -> Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) Source #

Bundle (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) -> Signal dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) Source #

unbundle :: forall (dom :: Domain). Signal dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) -> Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) Source #

Bundle (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) -> Signal dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) Source #

unbundle :: forall (dom :: Domain). Signal dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) -> Unbundled dom (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) Source #

type HiddenClockResetEnable dom = (HiddenClock dom, HiddenReset dom, HiddenEnable dom) Source #

A constraint that indicates the component needs a Clock, a Reset, and an Enable belonging to the same dom.

Click here to read more about hidden clocks, resets, and enables

type HiddenClock dom = (Hidden (HiddenClockName dom) (Clock dom), KnownDomain dom) Source #

A constraint that indicates the component has a hidden Clock

Click here to read more about hidden clocks, resets, and enables

type HiddenReset dom = (Hidden (HiddenResetName dom) (Reset dom), KnownDomain dom) Source #

A constraint that indicates the component needs a Reset

Click here to read more about hidden clocks, resets, and enables

type HiddenEnable dom = (Hidden (HiddenEnableName dom) (Enable dom), KnownDomain dom) Source #

A constraint that indicates the component needs an Enable

Click here to read more about hidden clocks, resets, and enables

data Reset (dom :: Domain) Source #

A reset signal belonging to a domain called dom.

The underlying representation of resets is Bool.

Instances

Instances details
ClocksSync (Clock c1, Reset c1) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1)) => ClocksSyncClocksInst (Clock c1, Reset c1) domIn -> Clock domIn -> (Clock c1, Reset c1) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) Source #

ClocksSync (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) Source # 
Instance details

Defined in Clash.Clocks

Associated Types

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) domIn Source #

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) Source #

Methods

clocksResetSynchronizer :: forall (domIn :: Domain). (KnownDomain domIn, ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18)) => ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) domIn -> Clock domIn -> (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) Source #

type TryDomain t (Reset dom) Source # 
Instance details

Defined in Clash.Class.HasDomain.HasSingleDomain

type TryDomain t (Reset dom) = 'Found dom
type HasDomain dom1 (Reset dom2) Source # 
Instance details

Defined in Clash.Class.HasDomain.HasSpecificDomain

type HasDomain dom1 (Reset dom2) = DomEq dom1 dom2
type ClocksResetSynchronizerCxt (Clock c1, Reset c1) Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1) domIn = (Clock c1, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2) Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2) domIn = (Clock c1, Clock c2, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3) domIn = (Clock c1, Clock c2, Clock c3, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain c16)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain c16, KnownDomain c17)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Signal domIn Bool)
type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) Source # 
Instance details

Defined in Clash.Clocks

type ClocksResetSynchronizerCxt (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) = (KnownDomain c1, KnownDomain c2, KnownDomain c3, KnownDomain c4, KnownDomain c5, KnownDomain c6, KnownDomain c7, KnownDomain c8, KnownDomain c9, KnownDomain c10, KnownDomain c11, KnownDomain c12, KnownDomain c13, KnownDomain c14, KnownDomain c15, KnownDomain c16, KnownDomain c17, KnownDomain c18)
type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) domIn Source # 
Instance details

Defined in Clash.Clocks

type ClocksSyncClocksInst (Clock c1, Reset c1, Clock c2, Reset c2, Clock c3, Reset c3, Clock c4, Reset c4, Clock c5, Reset c5, Clock c6, Reset c6, Clock c7, Reset c7, Clock c8, Reset c8, Clock c9, Reset c9, Clock c10, Reset c10, Clock c11, Reset c11, Clock c12, Reset c12, Clock c13, Reset c13, Clock c14, Reset c14, Clock c15, Reset c15, Clock c16, Reset c16, Clock c17, Reset c17, Clock c18, Reset c18) domIn = (Clock c1, Clock c2, Clock c3, Clock c4, Clock c5, Clock c6, Clock c7, Clock c8, Clock c9, Clock c10, Clock c11, Clock c12, Clock c13, Clock c14, Clock c15, Clock c16, Clock c17, Clock c18, Signal domIn Bool)

data Enable dom Source #

A signal of booleans, indicating whether a component is enabled. No special meaning is implied, it's up to the component itself to decide how to respond to its enable line. It is used throughout Clash as a global enable signal.

Instances

Instances details
type TryDomain t (Enable dom) Source # 
Instance details

Defined in Clash.Class.HasDomain.HasSingleDomain

type TryDomain t (Enable dom) = 'Found dom
type HasDomain dom1 (Enable dom2) Source # 
Instance details

Defined in Clash.Class.HasDomain.HasSpecificDomain

type HasDomain dom1 (Enable dom2) = DomEq dom1 dom2

class (KnownSymbol dom, KnownNat (DomainPeriod dom)) => KnownDomain (dom :: Domain) where Source #

A KnownDomain constraint indicates that a circuit's behavior depends on some properties of a domain. See DomainConfiguration for more information.

Associated Types

type KnownConf dom :: DomainConfiguration Source #

Methods

knownDomain :: SDomainConfiguration dom (KnownConf dom) Source #

Returns SDomainConfiguration corresponding to an instance's DomainConfiguration.

Example usage:

>>> knownDomain @System
SDomainConfiguration {sName = SSymbol @"System", sPeriod = SNat @10000, sActiveEdge = SRising, sResetKind = SAsynchronous, sInitBehavior = SDefined, sResetPolarity = SActiveHigh}

Instances

Instances details
KnownDomain IntelSystem Source #

System instance with defaults set for Intel FPGAs

Instance details

Defined in Clash.Signal.Internal

KnownDomain System Source #

A clock (and reset) dom with clocks running at 100 MHz

Instance details

Defined in Clash.Signal.Internal

Associated Types

type KnownConf System :: DomainConfiguration Source #

KnownDomain XilinxSystem Source #

System instance with defaults set for Xilinx FPGAs

Instance details

Defined in Clash.Signal.Internal

type System = "System" :: Domain Source #

A clock (and reset) dom with clocks running at 100 MHz. Memory elements respond to the rising edge of the clock, and asynchronously to changes in reset signals. It has defined initial values, and active-high resets.

See module documentation of Clash.Explicit.Signal for more information on how to create custom synthesis domains.

data BiSignalIn (ds :: BiSignalDefault) (dom :: Domain) (n :: Nat) Source #

The in part of an inout port. BiSignalIn has the type role

>>> :i BiSignalIn
type role BiSignalIn nominal nominal nominal
...

as it is not safe to coerce the default behaviour, synthesis domain or width of the data in the signal.

data BiSignalOut (ds :: BiSignalDefault) (dom :: Domain) (n :: Nat) Source #

The out part of an inout port

Wraps (multiple) writing signals. The semantics are such that only one of the signals may write at a single time step.

BiSignalOut has the type role

>>> :i BiSignalOut
type role BiSignalOut nominal nominal nominal
...

as it is not safe to coerce the default behaviour, synthesis domain or width of the data in the signal.

Instances

Instances details
Monoid (BiSignalOut defaultState dom n) Source #

Monoid instance to support concatenating

NB: Not synthesizable

Instance details

Defined in Clash.Signal.BiSignal

Methods

mempty :: BiSignalOut defaultState dom n #

mappend :: BiSignalOut defaultState dom n -> BiSignalOut defaultState dom n -> BiSignalOut defaultState dom n #

mconcat :: [BiSignalOut defaultState dom n] -> BiSignalOut defaultState dom n #

Semigroup (BiSignalOut defaultState dom n) Source #

NB: Not synthesizable

Instance details

Defined in Clash.Signal.BiSignal

Methods

(<>) :: BiSignalOut defaultState dom n -> BiSignalOut defaultState dom n -> BiSignalOut defaultState dom n #

sconcat :: NonEmpty (BiSignalOut defaultState dom n) -> BiSignalOut defaultState dom n #

stimes :: Integral b => b -> BiSignalOut defaultState dom n -> BiSignalOut defaultState dom n #

type TryDomain t (BiSignalOut ds dom n) Source # 
Instance details

Defined in Clash.Signal.BiSignal

type TryDomain t (BiSignalOut ds dom n) = 'Found dom
type HasDomain dom1 (BiSignalOut ds dom2 n) Source # 
Instance details

Defined in Clash.Signal.BiSignal

type HasDomain dom1 (BiSignalOut ds dom2 n) = DomEq dom1 dom2

data BiSignalDefault Source #

Used to specify the default behavior of a "BiSignal" in Haskell simulation, i.e. what value is read when no value is being written to it.

Constructors

PullUp

inout port behaves as if connected to a pull-up resistor

PullDown

inout port behaves as if connected to a pull-down resistor

Floating

inout port behaves as if is floating. Reading a floating "BiSignal" value in simulation will yield an errorX (undefined value).

Instances

Instances details
Show BiSignalDefault Source # 
Instance details

Defined in Clash.Signal.BiSignal

type KnownConfiguration dom conf = (KnownDomain dom, KnownConf dom ~ conf) Source #

data ActiveEdge Source #

Determines clock edge memory elements are sensitive to. Not yet implemented.

Constructors

Rising

Elements are sensitive to the rising edge (low-to-high) of the clock.

Falling

Elements are sensitive to the falling edge (high-to-low) of the clock.

Instances

Instances details
Data ActiveEdge Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ActiveEdge -> c ActiveEdge #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ActiveEdge #

toConstr :: ActiveEdge -> Constr #

dataTypeOf :: ActiveEdge -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ActiveEdge) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ActiveEdge) #

gmapT :: (forall b. Data b => b -> b) -> ActiveEdge -> ActiveEdge #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ActiveEdge -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ActiveEdge -> r #

gmapQ :: (forall d. Data d => d -> u) -> ActiveEdge -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ActiveEdge -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ActiveEdge -> m ActiveEdge #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ActiveEdge -> m ActiveEdge #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ActiveEdge -> m ActiveEdge #

Generic ActiveEdge Source # 
Instance details

Defined in Clash.Signal.Internal

Associated Types

type Rep ActiveEdge :: Type -> Type #

Read ActiveEdge Source # 
Instance details

Defined in Clash.Signal.Internal

Show ActiveEdge Source # 
Instance details

Defined in Clash.Signal.Internal

Binary ActiveEdge Source # 
Instance details

Defined in Clash.Signal.Internal

NFData ActiveEdge Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

rnf :: ActiveEdge -> () #

Eq ActiveEdge Source # 
Instance details

Defined in Clash.Signal.Internal

Ord ActiveEdge Source # 
Instance details

Defined in Clash.Signal.Internal

Hashable ActiveEdge Source # 
Instance details

Defined in Clash.Signal.Internal

type Rep ActiveEdge Source # 
Instance details

Defined in Clash.Signal.Internal

type Rep ActiveEdge = D1 ('MetaData "ActiveEdge" "Clash.Signal.Internal" "clash-prelude-1.9.0-inplace" 'False) (C1 ('MetaCons "Rising" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Falling" 'PrefixI 'False) (U1 :: Type -> Type))

data SActiveEdge (edge :: ActiveEdge) where Source #

Singleton version of ActiveEdge

Instances

Instances details
Show (SActiveEdge edge) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

showsPrec :: Int -> SActiveEdge edge -> ShowS #

show :: SActiveEdge edge -> String #

showList :: [SActiveEdge edge] -> ShowS #

data InitBehavior Source #

Constructors

Unknown

Power up value of memory elements is unknown.

Defined

If applicable, power up value of a memory element is defined. Applies to registers for example, but not to blockRam.

Instances

Instances details
Data InitBehavior Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> InitBehavior -> c InitBehavior #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c InitBehavior #

toConstr :: InitBehavior -> Constr #

dataTypeOf :: InitBehavior -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c InitBehavior) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c InitBehavior) #

gmapT :: (forall b. Data b => b -> b) -> InitBehavior -> InitBehavior #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> InitBehavior -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> InitBehavior -> r #

gmapQ :: (forall d. Data d => d -> u) -> InitBehavior -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> InitBehavior -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> InitBehavior -> m InitBehavior #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> InitBehavior -> m InitBehavior #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> InitBehavior -> m InitBehavior #

Generic InitBehavior Source # 
Instance details

Defined in Clash.Signal.Internal

Associated Types

type Rep InitBehavior :: Type -> Type #

Read InitBehavior Source # 
Instance details

Defined in Clash.Signal.Internal

Show InitBehavior Source # 
Instance details

Defined in Clash.Signal.Internal

Binary InitBehavior Source # 
Instance details

Defined in Clash.Signal.Internal

NFData InitBehavior Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

rnf :: InitBehavior -> () #

Eq InitBehavior Source # 
Instance details

Defined in Clash.Signal.Internal

Ord InitBehavior Source # 
Instance details

Defined in Clash.Signal.Internal

Hashable InitBehavior Source # 
Instance details

Defined in Clash.Signal.Internal

type Rep InitBehavior Source # 
Instance details

Defined in Clash.Signal.Internal

type Rep InitBehavior = D1 ('MetaData "InitBehavior" "Clash.Signal.Internal" "clash-prelude-1.9.0-inplace" 'False) (C1 ('MetaCons "Unknown" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Defined" 'PrefixI 'False) (U1 :: Type -> Type))

data SInitBehavior (init :: InitBehavior) where Source #

Instances

Instances details
Show (SInitBehavior init) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

showsPrec :: Int -> SInitBehavior init -> ShowS #

show :: SInitBehavior init -> String #

showList :: [SInitBehavior init] -> ShowS #

data ResetKind Source #

Constructors

Asynchronous

Elements respond asynchronously to changes in their reset input. This means that they do not wait for the next active clock edge, but respond immediately instead. Common on Intel FPGA platforms.

Synchronous

Elements respond synchronously to changes in their reset input. This means that changes in their reset input won't take effect until the next active clock edge. Common on Xilinx FPGA platforms.

Instances

Instances details
Data ResetKind Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ResetKind -> c ResetKind #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ResetKind #

toConstr :: ResetKind -> Constr #

dataTypeOf :: ResetKind -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ResetKind) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ResetKind) #

gmapT :: (forall b. Data b => b -> b) -> ResetKind -> ResetKind #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ResetKind -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ResetKind -> r #

gmapQ :: (forall d. Data d => d -> u) -> ResetKind -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ResetKind -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ResetKind -> m ResetKind #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ResetKind -> m ResetKind #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ResetKind -> m ResetKind #

Generic ResetKind Source # 
Instance details

Defined in Clash.Signal.Internal

Associated Types

type Rep ResetKind :: Type -> Type #

Read ResetKind Source # 
Instance details

Defined in Clash.Signal.Internal

Show ResetKind Source # 
Instance details

Defined in Clash.Signal.Internal

Binary ResetKind Source # 
Instance details

Defined in Clash.Signal.Internal

NFData ResetKind Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

rnf :: ResetKind -> () #

Eq ResetKind Source # 
Instance details

Defined in Clash.Signal.Internal

Ord ResetKind Source # 
Instance details

Defined in Clash.Signal.Internal

Hashable ResetKind Source # 
Instance details

Defined in Clash.Signal.Internal

type Rep ResetKind Source # 
Instance details

Defined in Clash.Signal.Internal

type Rep ResetKind = D1 ('MetaData "ResetKind" "Clash.Signal.Internal" "clash-prelude-1.9.0-inplace" 'False) (C1 ('MetaCons "Asynchronous" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Synchronous" 'PrefixI 'False) (U1 :: Type -> Type))

data SResetKind (resetKind :: ResetKind) where Source #

Singleton version of ResetKind

Instances

Instances details
Show (SResetKind reset) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

showsPrec :: Int -> SResetKind reset -> ShowS #

show :: SResetKind reset -> String #

showList :: [SResetKind reset] -> ShowS #

data ResetPolarity Source #

Determines the value for which a reset line is considered "active"

Constructors

ActiveHigh

Reset is considered active if underlying signal is True.

ActiveLow

Reset is considered active if underlying signal is False.

Instances

Instances details
Data ResetPolarity Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ResetPolarity -> c ResetPolarity #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ResetPolarity #

toConstr :: ResetPolarity -> Constr #

dataTypeOf :: ResetPolarity -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ResetPolarity) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ResetPolarity) #

gmapT :: (forall b. Data b => b -> b) -> ResetPolarity -> ResetPolarity #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ResetPolarity -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ResetPolarity -> r #

gmapQ :: (forall d. Data d => d -> u) -> ResetPolarity -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ResetPolarity -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ResetPolarity -> m ResetPolarity #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ResetPolarity -> m ResetPolarity #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ResetPolarity -> m ResetPolarity #

Generic ResetPolarity Source # 
Instance details

Defined in Clash.Signal.Internal

Associated Types

type Rep ResetPolarity :: Type -> Type #

Read ResetPolarity Source # 
Instance details

Defined in Clash.Signal.Internal

Show ResetPolarity Source # 
Instance details

Defined in Clash.Signal.Internal

Binary ResetPolarity Source # 
Instance details

Defined in Clash.Signal.Internal

NFData ResetPolarity Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

rnf :: ResetPolarity -> () #

Eq ResetPolarity Source # 
Instance details

Defined in Clash.Signal.Internal

Ord ResetPolarity Source # 
Instance details

Defined in Clash.Signal.Internal

Hashable ResetPolarity Source # 
Instance details

Defined in Clash.Signal.Internal

type Rep ResetPolarity Source # 
Instance details

Defined in Clash.Signal.Internal

type Rep ResetPolarity = D1 ('MetaData "ResetPolarity" "Clash.Signal.Internal" "clash-prelude-1.9.0-inplace" 'False) (C1 ('MetaCons "ActiveHigh" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ActiveLow" 'PrefixI 'False) (U1 :: Type -> Type))

data SResetPolarity (polarity :: ResetPolarity) where Source #

Singleton version of ResetPolarity

Instances

Instances details
Show (SResetPolarity polarity) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

showsPrec :: Int -> SResetPolarity polarity -> ShowS #

show :: SResetPolarity polarity -> String #

showList :: [SResetPolarity polarity] -> ShowS #

data DomainConfiguration Source #

A domain with a name (Domain). Configures the behavior of various aspects of a circuits. See the documentation of this record's field types for more information on the options.

See module documentation of Clash.Explicit.Signal for more information on how to create custom synthesis domains.

Constructors

DomainConfiguration 

Fields

data SDomainConfiguration (dom :: Domain) (conf :: DomainConfiguration) where Source #

Singleton version of DomainConfiguration

Constructors

SDomainConfiguration 

Fields

Instances

Instances details
Show (SDomainConfiguration dom conf) Source # 
Instance details

Defined in Clash.Signal.Internal

type DomainPeriod (dom :: Domain) = DomainConfigurationPeriod (KnownConf dom) Source #

Convenience type to help to extract a period from a domain. Example usage:

myFunc :: (KnownDomain dom, DomainPeriod dom ~ 6000) => ...

type DomainActiveEdge (dom :: Domain) = DomainConfigurationActiveEdge (KnownConf dom) Source #

Convenience type to help to extract the active edge from a domain. Example usage:

myFunc :: (KnownDomain dom, DomainActiveEdge dom ~ 'Rising) => ...

type DomainResetKind (dom :: Domain) = DomainConfigurationResetKind (KnownConf dom) Source #

Convenience type to help to extract the reset synchronicity from a domain. Example usage:

myFunc :: (KnownDomain dom, DomainResetKind dom ~ 'Synchronous) => ...

type DomainInitBehavior (dom :: Domain) = DomainConfigurationInitBehavior (KnownConf dom) Source #

Convenience type to help to extract the initial value behavior from a domain. Example usage:

myFunc :: (KnownDomain dom, DomainInitBehavior dom ~ 'Defined) => ...

type DomainResetPolarity (dom :: Domain) = DomainConfigurationResetPolarity (KnownConf dom) Source #

Convenience type to help to extract the reset polarity from a domain. Example usage:

myFunc :: (KnownDomain dom, DomainResetPolarity dom ~ 'ActiveHigh) => ...

type HasSynchronousReset (dom :: Domain) = (KnownDomain dom, DomainResetKind dom ~ 'Synchronous) Source #

Convenience type to constrain a domain to have synchronous resets. Example usage:

myFunc :: HasSynchronousReset dom => ...

Using this type implies KnownDomain.

Click here for usage hints

type HasAsynchronousReset (dom :: Domain) = (KnownDomain dom, DomainResetKind dom ~ 'Asynchronous) Source #

Convenience type to constrain a domain to have asynchronous resets. Example usage:

myFunc :: HasAsynchronousReset dom => ...

Using this type implies KnownDomain.

Click here for usage hints

type HasDefinedInitialValues (dom :: Domain) = (KnownDomain dom, DomainInitBehavior dom ~ 'Defined) Source #

Convenience type to constrain a domain to have initial values. Example usage:

myFunc :: HasDefinedInitialValues dom => ...

Using this type implies KnownDomain.

Note that there is no UnknownInitialValues dom as a component that works without initial values will also work if it does have them.

Click here for usage hints

type Milliseconds (ms :: Nat) = Microseconds (1000 * ms) Source #

Gets time in Picoseconds from time in Milliseconds

type Microseconds (us :: Nat) = Nanoseconds (1000 * us) Source #

Gets time in Picoseconds from time in Microseconds

type Nanoseconds (ns :: Nat) = Picoseconds (1000 * ns) Source #

Gets time in Picoseconds from time in Nanoseconds

type Picoseconds (ps :: Nat) = ps Source #

Gets time in Picoseconds from time in picoseconds, essentially id

type DomainToHz (dom :: Domain) = PeriodToHz (DomainPeriod dom) Source #

The domain's clock frequency in hertz, calculated based on the period stored in picoseconds. This might lead to rounding errors.

type HzToPeriod (hz :: Nat) = Seconds 1 `Div` hz Source #

Converts a frequency in hertz to a period in picoseconds. This might lead to rounding errors.

type PeriodToHz (period :: Nat) = Seconds 1 `Div` period Source #

Converts a period in picoseconds to a frequency in hertz. This might lead to rounding errors.

type PeriodToCycles (dom :: Domain) (period :: Nat) = period `DivRU` DomainPeriod dom Source #

Number of clock cycles required at the clock frequency of dom before a minimum period has passed

type ClockDivider (dom :: Domain) (period :: Nat) = PeriodToCycles dom period Source #

Number of clock cycles required at the clock frequency of dom before a minimum period has passed. The same as PeriodToCycles.

type XilinxSystem = "XilinxSystem" :: Domain Source #

A clock (and reset) dom with clocks running at 100 MHz. Memory elements respond to the rising edge of the clock, and synchronously to changes in reset signals. It has defined initial values, and active-high resets.

See module documentation of Clash.Explicit.Signal for more information on how to create custom synthesis domains.

type IntelSystem = "IntelSystem" :: Domain Source #

A clock (and reset) dom with clocks running at 100 MHz. Memory elements respond to the rising edge of the clock, and asynchronously to changes in reset signals. It has defined initial values, and active-high resets.

See module documentation of Clash.Explicit.Signal for more information on how to create custom synthesis domains.

data VDomainConfiguration Source #

Same as SDomainConfiguration but allows for easy updates through record update syntax. Should be used in combination with vDomain and createDomain. Example:

createDomain (knownVDomain @System){vName="System10", vPeriod=10}

This duplicates the settings in the System domain, replaces the name and period, and creates an instance for it. As most users often want to update the system domain, a shortcut is available in the form:

createDomain vSystem{vName="System10", vPeriod=10}

Instances

Instances details
Generic VDomainConfiguration Source # 
Instance details

Defined in Clash.Signal.Internal

Associated Types

type Rep VDomainConfiguration :: Type -> Type #

Read VDomainConfiguration Source # 
Instance details

Defined in Clash.Signal.Internal

Show VDomainConfiguration Source # 
Instance details

Defined in Clash.Signal.Internal

Binary VDomainConfiguration Source # 
Instance details

Defined in Clash.Signal.Internal

NFData VDomainConfiguration Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

rnf :: VDomainConfiguration -> () #

Eq VDomainConfiguration Source # 
Instance details

Defined in Clash.Signal.Internal

type Rep VDomainConfiguration Source # 
Instance details

Defined in Clash.Signal.Internal

data DiffClock (dom :: Domain) Source #

A differential clock signal belonging to a domain named dom. The clock input of a design with such an input has two ports which are in antiphase. The first input is the positive phase, the second the negative phase. When using makeTopEntity, the names of the inputs will end in _p and _n respectively.

To create a differential clock in a test bench, you can use clockToDiffClock.

Instances

Instances details
Show (DiffClock dom) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

showsPrec :: Int -> DiffClock dom -> ShowS #

show :: DiffClock dom -> String #

showList :: [DiffClock dom] -> ShowS #

data EmptyTuple Source #

Constructors

EmptyTuple 

Instances

Instances details
Bundle EmptyTuple Source #

See commit 94b0bff5 and documentation for TaggedEmptyTuple.

Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom EmptyTuple = (res :: Type) Source #

Methods

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

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

Bundle EmptyTuple Source #

See commit 94b0bff5 and documentation for TaggedEmptyTuple.

Instance details

Defined in Clash.Signal.Delayed.Bundle

Associated Types

type Unbundled dom d EmptyTuple = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain) (d :: Nat). Unbundled dom d EmptyTuple -> DSignal dom d EmptyTuple Source #

unbundle :: forall (dom :: Domain) (d :: Nat). DSignal dom d EmptyTuple -> Unbundled dom d EmptyTuple Source #

type Unbundled dom EmptyTuple Source # 
Instance details

Defined in Clash.Signal.Bundle

type Unbundled dom d EmptyTuple Source # 
Instance details

Defined in Clash.Signal.Delayed.Bundle

data TaggedEmptyTuple (dom :: Domain) Source #

Helper type to emulate the "old" behavior of Bundle's unit instance. I.e., the instance for Bundle () used to be defined as:

class Bundle () where
  bundle   :: () -> Signal dom ()
  unbundle :: Signal dom () -> ()

In order to have sensible type inference, the Bundle class specifies that the argument type of bundle should uniquely identify the result type, and vice versa for unbundle. The type signatures in the snippet above don't though, as () doesn't uniquely map to a specific domain. In other words, domain should occur in both the argument and result of both functions.

TaggedEmptyTuple tackles this by carrying the domain in its type. The bundle and unbundle instance now looks like:

class Bundle EmptyTuple where
  bundle   :: TaggedEmptyTuple dom -> Signal dom EmptyTuple
  unbundle :: Signal dom EmptyTuple -> TaggedEmptyTuple dom

dom is now mentioned both the argument and result for both bundle and unbundle.

Constructors

TaggedEmptyTuple 

fromList :: NFDataX a => [a] -> Signal dom a Source #

Create a Signal from a list

Every element in the list will correspond to a value of the signal for one clock cycle.

>>> sampleN 2 (fromList [1,2,3,4,5])
[1,2]

NB: This function is not synthesizable

sample Source #

Arguments

:: forall dom a. (KnownDomain dom, NFDataX a) 
=> (HiddenClockResetEnable dom => Signal dom a)

Signal we want to sample, whose source potentially has a hidden clock (and reset)

-> [a] 

Get an infinite list of samples from a Signal

The elements in the list correspond to the values of the Signal at consecutive clock cycles

sample s == [s0, s1, s2, s3, ...

If the given component has not yet been given a clock, reset, or enable line, sample will supply them. The reset will be asserted for a single cycle. sample will not drop the value produced by the circuit while the reset was asserted. If you want this, or if you want more than a single cycle reset, consider using sampleWithReset.

NB: This function is not synthesizable

delay Source #

Arguments

:: forall dom a. (NFDataX a, HiddenClock dom, HiddenEnable dom) 
=> a

Initial value

-> Signal dom a

Signal to delay

-> Signal dom a 

delay dflt s delays the values in Signal s for once cycle, the value at time 0 is dflt.

>>> sampleN @System 3 (delay 0 (fromList [1,2,3,4]))
[0,1,2]

(.&&.) :: Applicative f => f Bool -> f Bool -> f Bool infixr 3 Source #

The above type is a generalization for:

(.&&.) :: Signal Bool -> Signal Bool -> Signal Bool

It is a version of (&&) that returns a Signal of Bool

(.||.) :: Applicative f => f Bool -> f Bool -> f Bool infixr 2 Source #

The above type is a generalization for:

(.||.) :: Signal Bool -> Signal Bool -> Signal Bool

It is a version of (||) that returns a Signal of Bool

(.==.) :: (Eq a, Applicative f) => f a -> f a -> f Bool infix 4 Source #

The above type is a generalization for:

(.==.) :: Eq a => Signal a -> Signal a -> Signal Bool

It is a version of (==) that returns a Signal of Bool

(.>.) :: (Ord a, Applicative f) => f a -> f a -> f Bool infix 4 Source #

The above type is a generalization for:

(.>.) :: Ord a => Signal a -> Signal a -> Signal Bool

It is a version of (>) that returns a Signal of Bool

(.>=.) :: (Ord a, Applicative f) => f a -> f a -> f Bool infix 4 Source #

The above type is a generalization for:

(.>=.) :: Ord a => Signal a -> Signal a -> Signal Bool

It is a version of (>=) that returns a Signal of Bool

(.<.) :: (Ord a, Applicative f) => f a -> f a -> f Bool infix 4 Source #

The above type is a generalization for:

(.<.) :: Ord a => Signal a -> Signal a -> Signal Bool

It is a version of (<) that returns a Signal of Bool

(.<=.) :: (Ord a, Applicative f) => f a -> f a -> f Bool infix 4 Source #

The above type is a generalization for:

(.<=.) :: Ord a => Signal a -> Signal a -> Signal Bool

It is a version of (<=) that returns a Signal of Bool

(.>) :: (Ord a, Functor f) => f a -> a -> f Bool infix 4 Source #

The above type is a generalization for:

(.>) :: Ord a => Signal a -> a -> Signal Bool

It is a version of (>) that allows comparing a Signal a with a constant a and returns a Signal of Bool

(<.) :: (Ord a, Functor f) => a -> f a -> f Bool infix 4 Source #

The above type is a generalization for:

(<.) :: Ord a => a -> Signal a -> Signal Bool

It is a version of (<) that allows comparing a Signal a with a constant a and returns a Signal of Bool

(.||) :: Functor f => f Bool -> Bool -> f Bool infix 2 Source #

The above type is a generalization for:

(.||) :: Ord a => Signal Bool -> Bool -> Signal Bool

It is a version of (||) that allows comparing a Signal Bool with a constant Bool and returns a Signal of Bool

register infixr 3 Source #

Arguments

:: forall dom a. (HiddenClockResetEnable dom, NFDataX a) 
=> a

Reset value. register outputs the reset value when the reset is active. If the domain has initial values enabled, the reset value will also be the initial value.

-> Signal dom a 
-> Signal dom a 

register i s delays the values in Signal s for one cycle, and sets the value at time 0 to i

>>> sampleN @System 5 (register 8 (fromList [1,1,2,3,4]))
[8,8,1,2,3]

fromEnable :: Enable dom -> Signal dom Bool Source #

Convert Enable construct to its underlying representation: a signal of bools.

andEnable Source #

Arguments

:: forall dom r. HiddenEnable dom 
=> Signal dom Bool

The signal to AND with

-> (HiddenEnable dom => r)

The component whose enable is modified

-> r 

Merge enable signal with signal of bools by applying the boolean AND operation.

NB: The component given to andEnable as an argument needs an explicit type signature. Please read Monomorphism restriction leads to surprising behavior.

The component whose enable is modified will only be enabled when both the encompassing HiddenEnable and the Signal dom Bool are asserted.

Click here to read more about hidden clocks, resets, and enables

Example

Expand

Usage with a polymorphic domain:

>>> reg = register 5 (reg + 1)
>>> f en = andEnable en reg
>>> sampleN @System 10 (f (riseEvery d2))
[5,5,5,6,6,7,7,8,8,9]

Force andEnable to work on System (hence sampleN not needing an explicit domain later):

>>> reg = register 5 (reg + 1)
>>> f en = andEnable @System en reg
>>> sampleN 10 (f (riseEvery d2))
[5,5,5,6,6,7,7,8,8,9]

mux :: Applicative f => f Bool -> f a -> f a -> f a Source #

The above type is a generalization for:

mux :: Signal Bool -> Signal a -> Signal a -> Signal a

A multiplexer. Given "mux b t f", output t when b is True, and f when b is False.

clockPeriod :: forall dom period. (KnownDomain dom, DomainPeriod dom ~ period) => SNat period Source #

Get the clock period from a KnownDomain context

resetSynchronizer :: forall dom. KnownDomain dom => Clock dom -> Reset dom -> Reset dom Source #

The resetSynchronizer will synchronize an incoming reset according to whether the domain is synchronous or asynchronous.

For asynchronous resets this synchronizer ensures the reset will only be de-asserted synchronously but it can still be asserted asynchronously. The reset assert is immediate, but reset de-assertion is delayed by two cycles.

Normally, asynchronous resets can be both asynchronously asserted and de-asserted. Asynchronous de-assertion can induce meta-stability in the component which is being reset. To ensure this doesn't happen, resetSynchronizer ensures that de-assertion of a reset happens synchronously. Assertion of the reset remains asynchronous.

Note that asynchronous assertion does not induce meta-stability in the component whose reset is asserted. However, when a component "A" in another clock or reset domain depends on the value of a component "B" being reset, then asynchronous assertion of the reset of component "B" can induce meta-stability in component "A". To prevent this from happening you need to use a proper synchronizer, for example one of the synchronizers in Clash.Explicit.Synchronizer.

For synchronous resets this function ensures that the reset is asserted and de-asserted synchronously. Both the assertion and de-assertion of the reset are delayed by two cycles.

Example 1

Expand

The circuit below detects a rising bit (i.e., a transition from 0 to 1) in a given argument. It takes a reset that is not synchronized to any of the other incoming signals and synchronizes it using resetSynchronizer.

topEntity
  :: Clock  System
  -> Reset  System
  -> Signal System Bit
  -> Signal System (BitVector 8)
topEntity clk asyncRst key1 =
  withClockResetEnable clk rst enableGen leds
 where
  rst   = resetSynchronizer clk asyncRst
  key1R = isRising 1 key1
  leds  = mealy blinkerT (1, False, 0) key1R

Example 2

Expand

Similar to Example 1 this circuit detects a rising bit (i.e., a transition from 0 to 1) in a given argument. It takes a clock that is not stable yet and a reset signal that is not synchronized to any other signals. It stabilizes the clock and then synchronizes the reset signal.

Note that the function altpllSync provides this functionality in a convenient form, obviating the need for resetSynchronizer for this use case.

topEntity
  :: Clock  System
  -> Reset  System
  -> Signal System Bit
  -> Signal System (BitVector 8)
topEntity clk rst key1 =
    let  (pllOut,pllStable) = unsafeAltpll clk rst
         rstSync            = resetSynchronizer pllOut (unsafeFromActiveLow pllStable)
    in   exposeClockResetEnable leds pllOut rstSync enableGen
  where
    key1R  = isRising 1 key1
    leds   = mealy blinkerT (1, False, 0) key1R

Implementation details

Expand

resetSynchronizer implements the following circuit for asynchronous domains:

                                  rst
  --------------------------------------+
                      |                 |
                 +----v----+       +----v----+
    deasserted   |         |       |         |
  --------------->         +------->         +-------->
                 |         |       |         |
             +---|>        |   +---|>        |
             |   |         |   |   |         |
             |   +---------+   |   +---------+
     clk     |                 |
  -----------------------------+

This corresponds to figure 3d at https://www.embedded.com/asynchronous-reset-synchronization-and-distribution-challenges-and-solutions/

For synchronous domains two sequential dflipflops are used:

                 +---------+       +---------+
    rst          |         |       |         |
  --------------->         +------->         +-------->
                 |         |       |         |
             +---|>        |   +---|>        |
             |   |         |   |   |         |
             |   +---------+   |   +---------+
     clk     |                 |
  -----------------------------+

resetGlitchFilter Source #

Arguments

:: forall dom glitchlessPeriod. (HasCallStack, HasDefinedInitialValues dom, 1 <= glitchlessPeriod) 
=> SNat glitchlessPeriod

Consider a reset signal to be properly asserted after having seen the reset asserted for glitchlessPeriod cycles straight.

-> Clock dom 
-> Reset dom 
-> Reset dom 

Filter glitches from reset signals by only triggering a reset after it has been asserted for glitchlessPeriod cycles. Similarly, it will stay asserted until a glitchlessPeriod number of deasserted cycles have been observed.

This circuit can only be used on platforms supporting initial values. This restriction can be worked around by using unsafeResetGlitchFilter but this is not recommended.

On platforms without initial values, you should instead use resetGlitchFilterWithReset with an additional power-on reset, or holdReset if filtering is only needed on deassertion.

At power-on, the reset will be asserted. If the filtered reset input remains unasserted, the output reset will deassert after glitchlessPeriod clock cycles.

If resetGlitchFilter is used in a domain with asynchronous resets (Asynchronous), resetGlitchFilter will first synchronize the reset input with dualFlipFlopSynchronizer.

Example 1

Expand
>>> let sampleResetN n = sampleN n . unsafeToActiveHigh
>>> let resetFromList = unsafeFromActiveHigh . fromList
>>> let rst = resetFromList [True, True, False, False, True, False, False, True, True, False, True, True]
>>> sampleResetN 12 (resetGlitchFilter d2 (clockGen @XilinxSystem) rst)
[True,True,True,True,False,False,False,False,False,True,True,True]

holdReset Source #

Arguments

:: forall dom m. HiddenClockResetEnable dom 
=> SNat m

Hold for m cycles, counting from the moment the incoming reset signal becomes deasserted.

-> Reset dom 

Hold reset for a number of cycles relative to an implicit reset signal.

Example:

>>> sampleN @System 8 (unsafeToActiveHigh (holdReset (SNat @2)))
[True,True,True,False,False,False,False,False]

holdReset holds the reset for an additional 2 clock cycles for a total of 3 clock cycles where the reset is asserted.

resetGen :: forall dom. KnownDomain dom => Reset dom Source #

Reset generator for simulation purposes. Asserts the reset for a single cycle.

To be used like:

rstSystem = resetGen @System

See tbClockGen for example usage.

NB: While this can be used in the testBench function, it cannot be synthesized to hardware.

resetGenN Source #

Arguments

:: forall dom n. (KnownDomain dom, 1 <= n) 
=> SNat n

Number of initial cycles to hold reset high

-> Reset dom 

Reset generator for simulation purposes. Asserts the reset for the first n cycles.

To be used like:

rstSystem5 = resetGen @System d5

Example usage:

>>> sampleN 7 (unsafeToActiveHigh (resetGenN @System d3))
[True,True,True,False,False,False,False]

NB: While this can be used in the testBench function, it cannot be synthesized to hardware.

resetKind :: forall dom sync. (KnownDomain dom, DomainResetKind dom ~ sync) => SResetKind sync Source #

Get ResetKind from a KnownDomain context. Example usage:

f :: forall dom . KnownDomain dom => ....
f a b c =
  case resetKind @dom of
    SAsynchronous -> foo
    SSynchronous -> bar

systemResetGen :: Reset System Source #

Reset generator for use in simulation, for the System clock domain. Asserts the reset for a single cycle.

NB: While this can be used in the testBench function, it cannot be synthesized to hardware.

Example

Expand
topEntity :: Vec 2 (Vec 3 (Unsigned 8)) -> Vec 6 (Unsigned 8)
topEntity = concat

testBench :: Signal System Bool
testBench = done
  where
    testInput      = pure ((1 :> 2 :> 3 :> Nil) :> (4 :> 5 :> 6 :> Nil) :> Nil)
    expectedOutput = outputVerifier' ((1:>2:>3:>4:>5:>6:>Nil):>Nil)
    done           = exposeClockResetEnable (expectedOutput (topEntity <$> testInput)) clk rst
    clk            = tbSystemClockGen (not <$> done)
    rst            = systemResetGen

unsafeToReset :: KnownDomain dom => Signal dom Bool -> Reset dom Source #

unsafeToReset is unsafe. For asynchronous resets it is unsafe because it can introduce combinational loops. In case of synchronous resets it can lead to meta-stability issues in the presence of asynchronous resets.

NB: You probably want to use unsafeFromActiveLow or unsafeFromActiveHigh.

unsafeFromReset :: Reset dom -> Signal dom Bool Source #

unsafeFromReset is unsafe because it can introduce:

For asynchronous resets it is unsafe because it can cause combinational loops. In case of synchronous resets it can lead to meta-stability in the presence of asynchronous resets.

NB: You probably want to use unsafeToActiveLow or unsafeToActiveHigh.

unsafeToActiveHigh :: forall dom. KnownDomain dom => Reset dom -> Signal dom Bool Source #

Convert a reset to an active high reset. Has no effect if reset is already an active high reset. Is unsafe because it can introduce:

For asynchronous resets it is unsafe because it can cause combinational loops. In case of synchronous resets it can lead to meta-stability in the presence of asynchronous resets.

unsafeToActiveLow :: forall dom. KnownDomain dom => Reset dom -> Signal dom Bool Source #

Convert a reset to an active low reset. Has no effect if reset is already an active low reset. It is unsafe because it can introduce:

For asynchronous resets it is unsafe because it can cause combinational loops. In case of synchronous resets it can lead to meta-stability in the presence of asynchronous resets.

unsafeFromActiveHigh Source #

Arguments

:: forall dom. KnownDomain dom 
=> Signal dom Bool

Reset signal that's True when active, and False when inactive.

-> Reset dom 

Interpret a signal of bools as an active high reset and convert it to a reset signal corresponding to the domain's setting.

For asynchronous resets it is unsafe because it can cause combinational loops. In case of synchronous resets it can lead to meta-stability in the presence of asynchronous resets.

unsafeFromActiveLow Source #

Arguments

:: forall dom. KnownDomain dom 
=> Signal dom Bool

Reset signal that's False when active, and True when inactive.

-> Reset dom 

Interpret a signal of bools as an active low reset and convert it to a reset signal corresponding to the domain's setting.

For asynchronous resets it is unsafe because it can cause combinational loops. In case of synchronous resets it can lead to meta-stability in the presence of asynchronous resets.

unsafeFromHighPolarity Source #

Arguments

:: forall dom. KnownDomain dom 
=> Signal dom Bool

Reset signal that's True when active, and False when inactive.

-> Reset dom 

Deprecated: Use unsafeFromActiveHigh instead. This function will be removed in Clash 1.12.

Interpret a signal of bools as an active high reset and convert it to a reset signal corresponding to the domain's setting.

For asynchronous resets it is unsafe because it can cause combinational loops. In case of synchronous resets it can lead to meta-stability in the presence of asynchronous resets.

unsafeFromLowPolarity Source #

Arguments

:: forall dom. KnownDomain dom 
=> Signal dom Bool

Reset signal that's False when active, and True when inactive.

-> Reset dom 

Deprecated: Use unsafeFromActiveLow instead. This function will be removed in Clash 1.12.

Interpret a signal of bools as an active low reset and convert it to a reset signal corresponding to the domain's setting.

For asynchronous resets it is unsafe because it can cause combinational loops. In case of synchronous resets it can lead to meta-stability in the presence of asynchronous resets.

unsafeToHighPolarity :: forall dom. KnownDomain dom => Reset dom -> Signal dom Bool Source #

Deprecated: Use unsafeToActiveHigh instead. This function will be removed in Clash 1.12.

Convert a reset to an active high reset. Has no effect if reset is already an active high reset. Is unsafe because it can introduce:

For asynchronous resets it is unsafe because it can cause combinational loops. In case of synchronous resets it can lead to meta-stability in the presence of asynchronous resets.

unsafeToLowPolarity :: forall dom. KnownDomain dom => Reset dom -> Signal dom Bool Source #

Deprecated: Use unsafeToActiveLow instead. This function will be removed in Clash 1.12.

Convert a reset to an active low reset. Has no effect if reset is already an active low reset. It is unsafe because it can introduce:

For asynchronous resets it is unsafe because it can cause combinational loops. In case of synchronous resets it can lead to meta-stability in the presence of asynchronous resets.

vSystem :: VDomainConfiguration Source #

Convenience value to allow easy "subclassing" of System domain. Should be used in combination with createDomain. For example, if you just want to change the period but leave all other settings intact use:

createDomain vSystem{vName="System10", vPeriod=10}

vIntelSystem :: VDomainConfiguration Source #

Convenience value to allow easy "subclassing" of IntelSystem domain. Should be used in combination with createDomain. For example, if you just want to change the period but leave all other settings intact use:

createDomain vIntelSystem{vName="Intel10", vPeriod=10}

vXilinxSystem :: VDomainConfiguration Source #

Convenience value to allow easy "subclassing" of XilinxSystem domain. Should be used in combination with createDomain. For example, if you just want to change the period but leave all other settings intact use:

createDomain vXilinxSystem{vName="Xilinx10", vPeriod=10}

vDomain :: SDomainConfiguration dom conf -> VDomainConfiguration Source #

Convert SDomainConfiguration to VDomainConfiguration. Should be used in combination with createDomain only.

createDomain :: VDomainConfiguration -> Q [Dec] Source #

Convenience method to express new domains in terms of others.

createDomain (knownVDomain @System){vName="System10", vPeriod=10}

This duplicates the settings in the System domain, replaces the name and period, and creates an instance for it. As most users often want to update the system domain, a shortcut is available in the form:

createDomain vSystem{vName="System10", vPeriod=10}

The function will create two extra identifiers. The first:

type System10 = ..

You can use that as the dom to Clocks/Resets/Enables/Signals. For example: Signal System10 Int. Additionally, it will create a VDomainConfiguration that you can use in later calls to createDomain:

vSystem10 = knownVDomain @System10

It will also make System10 an instance of KnownDomain.

If either identifier is already in scope it will not be generated a second time. Note: This can be useful for example when documenting a new domain:

-- | Here is some documentation for CustomDomain
type CustomDomain = ("CustomDomain" :: Domain)

-- | Here is some documentation for vCustomDomain
createDomain vSystem{vName="CustomDomain"}

knownVDomain :: forall dom. KnownDomain dom => VDomainConfiguration Source #

Like 'knownDomain but yields a VDomainConfiguration. Should only be used in combination with createDomain.

activeEdge :: forall dom edge. (KnownDomain dom, DomainActiveEdge dom ~ edge) => SActiveEdge edge Source #

Get ActiveEdge from a KnownDomain context. Example usage:

f :: forall dom . KnownDomain dom => ....
f a b c =
  case activeEdge @dom of
    SRising -> foo
    SFalling -> bar

initBehavior :: forall dom init. (KnownDomain dom, DomainInitBehavior dom ~ init) => SInitBehavior init Source #

Get InitBehavior from a KnownDomain context. Example usage:

f :: forall dom . KnownDomain dom => ....
f a b c =
  case initBehavior @dom of
    SDefined -> foo
    SUnknown -> bar

resetPolarity :: forall dom polarity. (KnownDomain dom, DomainResetPolarity dom ~ polarity) => SResetPolarity polarity Source #

Get ResetPolarity from a KnownDomain context. Example usage:

f :: forall dom . KnownDomain dom => ....
f a b c =
  case resetPolarity @dom of
    SActiveHigh -> foo
    SActiveLow -> bar

toEnable :: Signal dom Bool -> Enable dom Source #

Convert a signal of bools to an Enable construct

enableGen :: Enable dom Source #

Enable generator for some domain. Is simply always True.

periodToHz :: (HasCallStack, Fractional a) => Natural -> a Source #

Calculate the frequency in Hz, given the period in ps

I.e., to calculate the clock frequency of a clock with a period of 5000 ps:

>>> periodToHz 5000
2.0e8

Note that if p in periodToHz (fromIntegral p) is negative, fromIntegral will give an Underflow :: ArithException without a call stack, making debugging cumbersome.

Before Clash 1.8, this function always returned a Ratio Natural. To get the old behavior of this function, use a type application:

>>> periodToHz @(Ratio Natural) 5000
200000000 % 1

NB: This function is not synthesizable

hzToPeriod :: (HasCallStack, Integral a) => Ratio Natural -> a Source #

Calculate the period in ps, given a frequency in Hz

I.e., to calculate the clock period for a circuit to run at 240 MHz we get

>>> hzToPeriod 240e6
4166

If the value hzToPeriod is applied to is not of the type Ratio Natural, you can use hzToPeriod (realToFrac f). Note that if f is negative, realToFrac will give an Underflow :: ArithException without a call stack, making debugging cumbersome.

Before Clash 1.8, this function always returned a Natural. To get the old behavior of this function, use a type application:

>>> hzToPeriod @Natural 240e6
4166
  • NB: This function is not synthesizable
  • NB: This function is lossy. I.e., periodToHz . hzToPeriod /= id.

dflipflop :: forall dom a. (HiddenClock dom, NFDataX a) => Signal dom a -> Signal dom a Source #

Special version of delay that doesn't take enable signals of any kind. Initial value will be undefined.

delayMaybe Source #

Arguments

:: forall dom a. (NFDataX a, HiddenClock dom, HiddenEnable dom) 
=> a

Initial value

-> Signal dom (Maybe a) 
-> Signal dom a 

Version of delay that only updates when its second argument is a Just value.

>>> let input = fromList [Just 1, Just 2, Nothing, Nothing, Just 5, Just 6, Just (7::Int)]
>>> sampleN @System 7 (delayMaybe 0 input)
[0,1,2,2,2,5,6]

delayEn Source #

Arguments

:: forall dom a. (NFDataX a, HiddenClock dom, HiddenEnable dom) 
=> a

Initial value

-> Signal dom Bool

Enable

-> Signal dom a 
-> Signal dom a 

Version of delay that only updates when its second argument is asserted.

>>> let input = fromList [1,2,3,4,5,6,7::Int]
>>> let enable = fromList [True,True,False,False,True,True,True]
>>> sampleN @System 7 (delayEn 0 enable input)
[0,1,2,2,2,5,6]

regMaybe infixr 3 Source #

Arguments

:: forall dom a. (HiddenClockResetEnable dom, NFDataX a) 
=> a

Reset value. regMaybe outputs the reset value when the reset is active. If the domain has initial values enabled, the reset value will also be the initial value.

-> Signal dom (Maybe a) 
-> Signal dom a 

Version of register that only updates its content when its second argument is a Just value. So given:

sometimes1 = s where
  s = register Nothing (switch <$> s)

  switch Nothing = Just 1
  switch _       = Nothing

countSometimes = s where
  s     = regMaybe 0 (plusM (pure <$> s) sometimes1)
  plusM = liftA2 (liftA2 (+))

We get:

>>> sampleN @System 9 sometimes1
[Nothing,Nothing,Just 1,Nothing,Just 1,Nothing,Just 1,Nothing,Just 1]
>>> sampleN @System 9 countSometimes
[0,0,0,1,1,2,2,3,3]

regEn Source #

Arguments

:: forall dom a. (HiddenClockResetEnable dom, NFDataX a) 
=> a

Reset value. regEn outputs the reset value when the reset is active. If the domain has initial values enabled, the reset value will also be the initial value.

-> Signal dom Bool 
-> Signal dom a 
-> Signal dom a 

Version of register that only updates its content when its second argument is asserted. So given:

oscillate = register False (not <$> oscillate)
count     = regEn 0 oscillate (count + 1)

We get:

>>> sampleN @System 9 oscillate
[False,False,True,False,True,False,True,False,True]
>>> sampleN @System 9 count
[0,0,0,1,1,2,2,3,3]

clockGen :: KnownDomain dom => Clock dom Source #

Clock generator for simulations. Do not use this clock generator for the testBench function, use tbClockGen instead.

To be used like:

clkSystem = clockGen @System

See DomainConfiguration for more information on how to use synthesis domains.

systemClockGen :: Clock System Source #

Clock generator for the System clock domain.

NB: Should only be used for simulation, and not for the testBench function. For the testBench function, used tbSystemClockGen

simulate Source #

Arguments

:: forall dom a b. (KnownDomain dom, NFDataX a, NFDataX b) 
=> (HiddenClockResetEnable dom => Signal dom a -> Signal dom b)

Circuit to simulate, whose source potentially has a hidden clock, reset, and/or enable.

-> [a] 
-> [b] 

Simulate a (Signal a -> Signal b) function given a list of samples of type a

>>> simulate @System (register 8) [1, 2, 3]
[8,1,2,3...
...

Where System denotes the domain to simulate on. The reset line is asserted for a single cycle. The first value is therefore supplied twice to the circuit: once while reset is high, and once directly after. The first output value (the value produced while the reset is asserted) is dropped.

If you only want to simulate a finite number of samples, see simulateN. If you need the reset line to be asserted for more than one cycle or if you need a custom reset value, see simulateWithReset and simulateWithResetN.

NB: This function is not synthesizable

simulateB Source #

Arguments

:: forall dom a b. (KnownDomain dom, Bundle a, Bundle b, NFDataX a, NFDataX b) 
=> (HiddenClockResetEnable dom => Unbundled dom a -> Unbundled dom b)

Function we want to simulate, whose components potentially have a hidden clock (and reset)

-> [a] 
-> [b] 

Simulate a (Unbundled a -> Unbundled b) function given a list of samples of type a

>>> simulateB @System (unbundle . register (8,8) . bundle) [(1,1), (2,2), (3,3)] :: [(Int,Int)]
[(8,8),(1,1),(2,2),(3,3)...
...

NB: This function is not synthesizable

simulateWithReset Source #

Arguments

:: forall dom a b m. (KnownDomain dom, NFDataX a, NFDataX b, 1 <= m) 
=> SNat m

Number of cycles to assert the reset

-> a

Reset value

-> (HiddenClockResetEnable dom => Signal dom a -> Signal dom b)

Signal we want to sample, whose source potentially has a hidden clock (and reset)

-> [a] 
-> [b] 

Same as simulate, but with the reset line asserted for n cycles. Similar to simulate, simulateWithReset will drop the output values produced while the reset is asserted. While the reset is asserted, the reset value a is supplied to the circuit.

simulateWithResetN Source #

Arguments

:: forall dom a b m. (KnownDomain dom, NFDataX a, NFDataX b, 1 <= m) 
=> SNat m

Number of cycles to assert the reset

-> a

Reset value

-> Int

Number of cycles to simulate (excluding cycles spent in reset)

-> (HiddenClockResetEnable dom => Signal dom a -> Signal dom b)

Signal we want to sample, whose source potentially has a hidden clock (and reset)

-> [a] 
-> [b] 

Same as simulateWithReset, but only sample the first Int output values.

runUntil Source #

Arguments

:: forall dom a. (KnownDomain dom, NFDataX a, ShowX a) 
=> (a -> Bool)

Condition checking function, should return True to finish run

-> (HiddenClockResetEnable dom => Signal dom a)

Signal we want to sample for the condition, potentially having a hidden clock, reset and/or enable

-> IO () 

Simulate a component until it matches a condition

If the given component has not yet been given a clock, reset, or enable line, runUntil will supply them. The reset will be asserted for a single cycle.

It prints a message of the form

Signal sampled for N cycles until value X

NB: This function is not synthesizable

Example with test bench

Expand

A common usage is with a test bench using outputVerifier.

NB: Since this uses assert, when using clashi, read the note at Clash.Explicit.Testbench.

import Clash.Prelude
import Clash.Explicit.Testbench

topEntity
  :: Signal System Int
  -> Signal System Int
topEntity = id

testBench
  :: Signal System Bool
testBench = done
 where
  testInput = stimuliGenerator clk rst $(listToVecTH [1 :: Int .. 10])
  expectedOutput =
    outputVerifier' clk rst $(listToVecTH $ [1 :: Int .. 9] <> [42])
  done = expectedOutput $ topEntity testInput
  clk = tbSystemClockGen (not <$> done)
  rst = systemResetGen
> runUntil id testBench


cycle(<Clock: System>): 10, outputVerifier
expected value: 42, not equal to actual value: 10
Signal sampled for 11 cycles until value True

When you need to verify multiple test benches, the following invocations come in handy:

> mapM_ (runUntil id) [ testBenchA, testBenchB ]

or when the test benches are in different clock domains:

testBenchA :: Signal DomA Bool
testBenchB :: Signal DomB Bool
> sequence_ [ runUntil id testBenchA, runUntil id testBenchB ]

simulate_lazy Source #

Arguments

:: forall dom a b. KnownDomain dom 
=> (HiddenClockResetEnable dom => Signal dom a -> Signal dom b)

Function we want to simulate, whose components potentially have a hidden clock (and reset)

-> [a] 
-> [b] 

Lazily simulate a (Signal a -> Signal b) function given a list of samples of type a

>>> simulate @System (register 8) [1, 2, 3]
[8,1,2,3...
...

NB: This function is not synthesizable

simulateB_lazy Source #

Arguments

:: forall dom a b. (KnownDomain dom, Bundle a, Bundle b) 
=> (HiddenClockResetEnable dom => Unbundled dom a -> Unbundled dom b)

Function we want to simulate, whose components potentially have a hidden clock (and reset)

-> [a] 
-> [b] 

Lazily simulate a (Unbundled a -> Unbundled b) function given a list of samples of type a

>>> simulateB @System (unbundle . register (8,8) . bundle) [(1,1), (2,2), (3,3)] :: [(Int,Int)]
[(8,8),(1,1),(2,2),(3,3)...
...

NB: This function is not synthesizable

signalAutomaton :: forall dom a b. KnownDomain dom => (HiddenClockResetEnable dom => Signal dom a -> Signal dom b) -> Automaton (->) a b Source #

Build an Automaton from a function over Signals.

NB: Consumption of continuation of the Automaton must be affine; that is, you can only apply the continuation associated with a particular element at most once.

sampleN Source #

Arguments

:: forall dom a. (KnownDomain dom, NFDataX a) 
=> Int

Number of samples to produce

-> (HiddenClockResetEnable dom => Signal dom a)

Signal to sample, whose source potentially has a hidden clock (and reset)

-> [a] 

Get a list of n samples from a Signal

The elements in the list correspond to the values of the Signal at consecutive clock cycles

sampleN @System 3 s == [s0, s1, s2]

If the given component has not yet been given a clock, reset, or enable line, sampleN will supply them. The reset will be asserted for a single cycle. sampleN will not drop the value produced by the circuit while the reset was asserted. If you want this, or if you want more than a single cycle reset, consider using sampleWithResetN.

NB: This function is not synthesizable

sampleWithReset Source #

Arguments

:: forall dom a m. (KnownDomain dom, NFDataX a, 1 <= m) 
=> SNat m

Number of cycles to assert the reset

-> (HiddenClockResetEnable dom => Signal dom a)

Signal to sample, whose source potentially has a hidden clock (and reset)

-> [a] 

Get an infinite list of samples from a Signal, while asserting the reset line for m clock cycles. sampleWithReset does not return the first m cycles, i.e., when the reset is asserted.

NB: This function is not synthesizable

sampleWithResetN Source #

Arguments

:: forall dom a m. (KnownDomain dom, NFDataX a, 1 <= m) 
=> SNat m

Number of cycles to assert the reset

-> Int

Number of samples to produce

-> (HiddenClockResetEnable dom => Signal dom a)

Signal to sample, whose source potentially has a hidden clock (and reset)

-> [a] 

Get a list of n samples from a Signal, while asserting the reset line for m clock cycles. sampleWithReset does not return the first m cycles, i.e., while the reset is asserted.

NB: This function is not synthesizable

fromListWithReset :: forall dom a. (HiddenReset dom, NFDataX a) => a -> [a] -> Signal dom a Source #

Like fromList, but resets on reset and has a defined reset value.

>>> let rst = unsafeFromActiveHigh (fromList [True, True, False, False, True, False])
>>> let res = withReset rst (fromListWithReset Nothing [Just 'a', Just 'b', Just 'c'])
>>> sampleN @System 6 res
[Nothing,Nothing,Just 'a',Just 'b',Nothing,Just 'a']

NB: This function is not synthesizable

sample_lazy Source #

Arguments

:: forall dom a. KnownDomain dom 
=> (HiddenClockResetEnable dom => Signal dom a)

Signal we want to sample, whose source potentially has a hidden clock (and reset)

-> [a] 

Lazily get an infinite list of samples from a Signal

The elements in the list correspond to the values of the Signal at consecutive clock cycles

sample s == [s0, s1, s2, s3, ...

If the given component has not yet been given a clock, reset, or enable line, sample_lazy will supply them. The reset will be asserted for a single cycle. sample_lazy will not drop the value produced by the circuit while the reset was asserted.

NB: This function is not synthesizable

sampleN_lazy Source #

Arguments

:: forall dom a. KnownDomain dom 
=> Int 
-> (HiddenClockResetEnable dom => Signal dom a)

Signal we want to sample, whose source potentially has a hidden clock (and reset)

-> [a] 

Lazily get a list of n samples from a Signal

The elements in the list correspond to the values of the Signal at consecutive clock cycles

sampleN @System 3 s == [s0, s1, s2]

If the given component has not yet been given a clock, reset, or enable line, sampleN_lazy will supply them. The reset will be asserted for a single cycle. sampleN_lazy will not drop the value produced by the circuit while the reset was asserted.

NB: This function is not synthesizable

fromList_lazy :: [a] -> Signal dom a Source #

Create a Signal from a list

Every element in the list will correspond to a value of the signal for one clock cycle.

>>> sampleN 2 (fromList [1,2,3,4,5] :: Signal System Int)
[1,2]

NB: This function is not synthesizable

testFor Source #

Arguments

:: KnownDomain dom 
=> Int

The number of cycles we want to test for

-> (HiddenClockResetEnable dom => Signal dom Bool)

Signal we want to evaluate, whose source potentially has a hidden clock (and reset)

-> Property 

testFor n s tests the signal s for n cycles.

NB: This function is not synthesizable

(.==) :: (Eq a, Functor f) => f a -> a -> f Bool infix 4 Source #

The above type is a generalization for:

(.==) :: Eq a => Signal a -> a -> Signal Bool

It is a version of (==) that allows comparing a Signal a with a constant a and returns a Signal of Bool

(==.) :: (Eq a, Functor f) => a -> f a -> f Bool infix 4 Source #

The above type is a generalization for:

(==.) :: Eq a => a -> Signal a -> Signal Bool

It is a version of (==) that allows comparing a Signal a with a constant a and returns a Signal of Bool

(./=.) :: (Eq a, Applicative f) => f a -> f a -> f Bool infix 4 Source #

The above type is a generalization for:

(./=.) :: Eq a => Signal a -> Signal a -> Signal Bool

It is a version of (/=) that returns a Signal of Bool

(./=) :: (Eq a, Functor f) => f a -> a -> f Bool infix 4 Source #

The above type is a generalization for:

(./=) :: Eq a => Signal a -> a -> Signal Bool

It is a version of (/=) that allows comparing a Signal a with a constant a and returns a Signal of Bool

(/=.) :: (Eq a, Functor f) => a -> f a -> f Bool infix 4 Source #

The above type is a generalization for:

(/=.) :: Eq a => a -> Signal a -> Signal Bool

It is a version of (/=) that allows comparing a Signal a with a constant a and returns a Signal of Bool

(.<) :: (Ord a, Functor f) => f a -> a -> f Bool infix 4 Source #

The above type is a generalization for:

(.<) :: Ord a => Signal a -> a -> Signal Bool

It is a version of (<) that allows comparing a Signal a with a constant a and returns a Signal of Bool

(.<=) :: (Ord a, Functor f) => f a -> a -> f Bool infix 4 Source #

The above type is a generalization for:

(.<=) :: Ord a => Signal a -> a -> Signal Bool

It is a version of (<=) that allows comparing a Signal a with a constant a and returns a Signal of Bool

(<=.) :: (Ord a, Functor f) => a -> f a -> f Bool infix 4 Source #

The above type is a generalization for:

(<=.) :: Ord a => a -> Signal a -> Signal Bool

It is a version of (<=) that allows comparing a Signal a with a constant a and returns a Signal of Bool

(.>=) :: (Ord a, Functor f) => f a -> a -> f Bool infix 4 Source #

The above type is a generalization for:

(.>=) :: Ord a => Signal a -> a -> Signal Bool

It is a version of (>=) that allows comparing a Signal a with a constant a and returns a Signal of Bool

(>=.) :: (Ord a, Functor f) => a -> f a -> f Bool infix 4 Source #

The above type is a generalization for:

(>=.) :: Ord a => a -> Signal a -> Signal Bool

It is a version of (>=) that allows comparing a Signal a with a constant a and returns a Signal of Bool

(>.) :: (Ord a, Functor f) => a -> f a -> f Bool infix 4 Source #

The above type is a generalization for:

(>.) :: Ord a => a -> Signal a -> Signal Bool

It is a version of (>) that allows comparing a Signal a with a constant a and returns a Signal of Bool

veryUnsafeToBiSignalIn :: (HasCallStack, KnownNat n, Given (SBiSignalDefault ds)) => BiSignalOut ds d n -> BiSignalIn ds d n Source #

Converts the out part of a BiSignal to an in part. In simulation it checks whether multiple components are writing and will error accordingly. Make sure this is only called ONCE for every BiSignal.

readFromBiSignal Source #

Arguments

:: (HasCallStack, BitPack a) 
=> BiSignalIn ds d (BitSize a)

A BiSignalIn with a number of bits needed to represent a

-> Signal d a 

Read the value from an inout port

writeToBiSignal Source #

Arguments

:: (HasCallStack, BitPack a, NFDataX a) 
=> BiSignalIn ds d (BitSize a) 
-> Signal d (Maybe a)

Value to write

  • Just a writes an a value
  • Nothing puts the port in a high-impedance state
-> BiSignalOut ds d (BitSize a) 

Write to an inout port

mergeBiSignalOuts :: (HasCallStack, KnownNat n) => Vec n (BiSignalOut defaultState dom m) -> BiSignalOut defaultState dom m Source #

Combine several inout signals into one.

hideClock Source #

Arguments

:: forall dom r. HiddenClock dom 
=> (Clock dom -> r)

Function whose clock argument you want to hide

-> r 

Hide the Clock argument of a component, so it can be routed implicitly.

Click here to read more about hidden clocks, resets, and enables

hideEnable Source #

Arguments

:: forall dom r. HiddenEnable dom 
=> (Enable dom -> r)

Component whose enable argument you want to hide

-> r 

Hide the Enable argument of a component, so it can be routed implicitly.

Click here to read more about hidden clocks, resets, and enables

hideReset Source #

Arguments

:: forall dom r. HiddenReset dom 
=> (Reset dom -> r)

Component whose reset argument you want to hide

-> r 

Hide the Reset argument of a component, so it can be routed implicitly.

Click here to read more about hidden clocks, resets, and enables

hideClockResetEnable Source #

Arguments

:: forall dom r. HiddenClockResetEnable dom 
=> (KnownDomain dom => Clock dom -> Reset dom -> Enable dom -> r)

Component whose clock, reset, and enable argument you want to hide

-> r 

Hide the Clock, Reset, and Enable arguments of a component, so they can be routed implicitly.

Click here to read more about hidden clocks, resets, and enables

sameDomain :: forall (domA :: Domain) (domB :: Domain). (KnownDomain domA, KnownDomain domB) => Maybe (domA :~: domB) Source #

We either get evidence that this function was instantiated with the same domains, or Nothing.

exposeClock Source #

Arguments

:: forall dom r. (HiddenClock dom => r)

The component with a hidden clock

-> KnownDomain dom => Clock dom -> r

The component with its clock argument exposed

Expose a hidden Clock argument of a component, so it can be applied explicitly.

Click here to read more about hidden clocks, resets, and enables

Example

Expand

Usage with a polymorphic domain:

>>> reg = register 5 (reg + 1)
>>> sig = exposeClock reg clockGen
>>> sampleN @System 10 sig
[5,5,6,7,8,9,10,11,12,13]

Force exposeClock to work on System (hence sampleN not needing an explicit domain later):

>>> reg = register 5 (reg + 1)
>>> sig = exposeClock @System reg clockGen
>>> sampleN 10 sig
[5,5,6,7,8,9,10,11,12,13]

withClock Source #

Arguments

:: forall dom r. KnownDomain dom 
=> Clock dom

The Clock we want to connect

-> (HiddenClock dom => r)

The function with a hidden Clock argument

-> r 

Connect an explicit Clock to a function with a hidden Clock.

Click here to read more about hidden clocks, resets, and enables

Example

Expand

Usage with a polymorphic domain:

>>> reg = register 5 (reg + 1)
>>> sig = withClock clockGen reg
>>> sampleN @System 10 sig
[5,5,6,7,8,9,10,11,12,13]

Force withClock to work on System (hence sampleN not needing an explicit domain later):

>>> reg = register 5 (reg + 1)
>>> sig = withClock @System clockGen reg
>>> sampleN 10 sig
[5,5,6,7,8,9,10,11,12,13]

hasClock :: forall dom. HiddenClock dom => Clock dom Source #

Connect a hidden Clock to an argument where a normal Clock argument was expected.

Click here to read more about hidden clocks, resets, and enables

exposeReset Source #

Arguments

:: forall dom r. (HiddenReset dom => r)

The component with a hidden reset

-> KnownDomain dom => Reset dom -> r

The component with its reset argument exposed

Expose a hidden Reset argument of a component, so it can be applied explicitly.

Example

Expand

Usage with a polymorphic domain:

>>> reg = register 5 (reg + 1)
>>> sig = exposeReset reg resetGen
>>> sampleN @System 10 sig
[5,5,6,7,8,9,10,11,12,13]

Force exposeReset to work on System (hence sampleN not needing an explicit domain later):

>>> reg = register 5 (reg + 1)
>>> sig = exposeReset @System reg resetGen
>>> sampleN 10 sig
[5,5,6,7,8,9,10,11,12,13]

withReset Source #

Arguments

:: forall dom r. KnownDomain dom 
=> Reset dom

The Reset we want to connect

-> (HiddenReset dom => r)

The function with a hidden Reset argument

-> r 

Connect an explicit Reset to a function with a hidden Reset.

Example

Expand

Usage with a polymorphic domain:

>>> reg = register 5 (reg + 1)
>>> sig = withReset resetGen reg
>>> sampleN @System 10 sig
[5,5,6,7,8,9,10,11,12,13]

Force withReset to work on System (hence sampleN not needing an explicit domain later):

>>> reg = register 5 (reg + 1)
>>> sig = withReset @System resetGen reg
>>> sampleN 10 sig
[5,5,6,7,8,9,10,11,12,13]

hasReset :: forall dom. HiddenReset dom => Reset dom Source #

Connect a hidden Reset to an argument where a normal Reset argument was expected.

Click here to read more about hidden clocks, resets, and enables

exposeEnable Source #

Arguments

:: forall dom r. (HiddenEnable dom => r)

The component with a hidden enable

-> KnownDomain dom => Enable dom -> r

The component with its enable argument exposed

Expose a hidden Enable argument of a component, so it can be applied explicitly.

Click here to read more about hidden clocks, resets, and enables

Example

Expand

Usage with a polymorphic domain:

>>> reg = register 5 (reg + 1)
>>> sig = exposeEnable reg enableGen
>>> sampleN @System 10 sig
[5,5,6,7,8,9,10,11,12,13]

Force exposeEnable to work on System (hence sampleN not needing an explicit domain later):

>>> reg = register 5 (reg + 1)
>>> sig = exposeEnable @System reg enableGen
>>> sampleN 10 sig
[5,5,6,7,8,9,10,11,12,13]

withEnable Source #

Arguments

:: forall dom r. KnownDomain dom 
=> Enable dom

The Enable we want to connect

-> (HiddenEnable dom => r)

The function with a hidden Enable argument

-> r 

Connect an explicit Enable to a function with a hidden Enable.

Click here to read more about hidden clocks, resets, and enables

Example

Expand

Usage with a polymorphic domain:

>>> reg = register 5 (reg + 1)
>>> sig = withEnable enableGen reg
>>> sampleN @System 10 sig
[5,5,6,7,8,9,10,11,12,13]

Force withEnable to work on System (hence sampleN not needing an explicit domain later):

>>> reg = register 5 (reg + 1)
>>> sig = withEnable @System enableGen reg
>>> sampleN 10 sig
[5,5,6,7,8,9,10,11,12,13]

hasEnable :: forall dom. HiddenEnable dom => Enable dom Source #

Connect a hidden Enable to an argument where a normal Enable argument was expected.

Click here to read more about hidden clocks, resets, and enables

exposeClockResetEnable Source #

Arguments

:: forall dom r. (HiddenClockResetEnable dom => r)

The component with hidden clock, reset, and enable arguments

-> KnownDomain dom => Clock dom -> Reset dom -> Enable dom -> r

The component with its clock, reset, and enable arguments exposed

Expose hidden Clock, Reset, and Enable arguments of a component, so they can be applied explicitly.

Click here to read more about hidden clocks, resets, and enables

Example

Expand

Usage with a polymorphic domain:

>>> reg = register 5 (reg + 1)
>>> sig = exposeClockResetEnable reg clockGen resetGen enableGen
>>> sampleN @System 10 sig
[5,5,6,7,8,9,10,11,12,13]

Force exposeClockResetEnable to work on System (hence sampleN not needing an explicit domain later):

>>> reg = register 5 (reg + 1)
>>> sig = exposeClockResetEnable @System reg clockGen resetGen enableGen
>>> sampleN 10 sig
[5,5,6,7,8,9,10,11,12,13]

Usage in a testbench context:

topEntity :: Vec 2 (Vec 3 (Unsigned 8)) -> Vec 6 (Unsigned 8)
topEntity = concat

testBench :: Signal System Bool
testBench = done
  where
    testInput      = pure ((1 :> 2 :> 3 :> Nil) :> (4 :> 5 :> 6 :> Nil) :> Nil)
    expectedOutput = outputVerifier' ((1:>2:>3:>4:>5:>6:>Nil):>Nil)
    done           = exposeClockResetEnable (expectedOutput (topEntity <$> testInput)) clk rst en
    clk            = tbSystemClockGen (not <$> done)
    rst            = systemResetGen
    en             = enableGen

withClockResetEnable Source #

Arguments

:: forall dom r. KnownDomain dom 
=> Clock dom

The Clock we want to connect

-> Reset dom

The Reset we want to connect

-> Enable dom

The Enable we want to connect

-> (HiddenClockResetEnable dom => r)

The function with a hidden Clock, hidden Reset, and hidden Enable argument

-> r 

Connect an explicit Clock, Reset, and Enable to a function with a hidden Clock, Reset, and Enable.

Click here to read more about hidden clocks, resets, and enables

Example

Expand

Usage with a polymorphic domain:

>>> reg = register 5 (reg + 1)
>>> sig = withClockResetEnable clockGen resetGen enableGen reg
>>> sampleN @System 10 sig
[5,5,6,7,8,9,10,11,12,13]

Force withClockResetEnable to work on System (hence sampleN not needing an explicit domain later):

>>> reg = register 5 (reg + 1)
>>> sig = withClockResetEnable @System clockGen resetGen enableGen reg
>>> sampleN 10 sig
[5,5,6,7,8,9,10,11,12,13]

(&&.) :: Functor f => Bool -> f Bool -> f Bool infixr 3 Source #

The above type is a generalization for:

(&&.) :: Signal Bool -> Signal Bool -> Signal Bool

It is a version of (&&) that allows comparing a constant 'Bool with a Signal Bool and returns a Signal of Bool

(.&&) :: Functor f => f Bool -> Bool -> f Bool infixr 3 Source #

The above type is a generalization for:

(.&&) :: Signal Bool -> Signal Bool -> Signal Bool

It is a version of (&&) that allows comparing a Signal Bool with a constant Bool and returns a Signal of Bool

(||.) :: Functor f => Bool -> f Bool -> f Bool infixr 2 Source #

The above type is a generalization for:

(||.) :: Signal Bool -> Signal Bool -> Signal Bool

It is a version of (||) that allows comparing a constant Bool with a Signal Bool and returns a Signal of Bool

simulateN Source #

Arguments

:: forall dom a b. (KnownDomain dom, NFDataX a, NFDataX b) 
=> Int

Number of cycles to simulate (excluding cycle spent in reset)

-> (HiddenClockResetEnable dom => Signal dom a -> Signal dom b)

Signal we want to sample, whose source potentially has a hidden clock (and reset)

-> [a] 
-> [b] 

Same as simulate, but only sample the first Int output values.

NB: This function is not synthesizable

Datatypes

Bit vectors

Arbitrary-width numbers

Fixed point numbers

Fixed size vectors

data Vec :: Nat -> Type -> Type where Source #

Fixed size vectors.

  • Lists with their length encoded in their type
  • Vector elements have an ASCENDING subscript starting from 0 and ending at length - 1.

Constructors

Nil :: Vec 0 a 
Cons :: a -> Vec n a -> Vec (n + 1) a infixr 5 

Bundled Patterns

pattern (:<) :: Vec n a -> a -> Vec (n + 1) a infixl 5

Add an element to the tail of a vector.

>>> (3:>4:>5:>Nil) :< 1
3 :> 4 :> 5 :> 1 :> Nil
>>> let x = (3:>4:>5:>Nil) :< 1
>>> :t x
x :: Num a => Vec 4 a

Can be used as a pattern:

>>> let f (_ :< y :< x) = y + x
>>> :t f
f :: Num a => Vec ((n + 1) + 1) a -> a
>>> f (3:>4:>5:>6:>7:>Nil)
13

Also in conjunctions with (:>):

>>> let g (a :> b :> (_ :< y :< x)) = a + b +  x + y
>>> :t g
g :: Num a => Vec ((((n + 1) + 1) + 1) + 1) a -> a
>>> g (1:>2:>3:>4:>5:>Nil)
12
pattern (:>) :: a -> Vec n a -> Vec (n + 1) a infixr 5

Add an element to the head of a vector.

>>> 3:>4:>5:>Nil
3 :> 4 :> 5 :> Nil
>>> let x = 3:>4:>5:>Nil
>>> :t x
x :: Num a => Vec 3 a

Can be used as a pattern:

>>> let f (x :> y :> _) = x + y
>>> :t f
f :: Num a => Vec ((n + 1) + 1) a -> a
>>> f (3:>4:>5:>6:>7:>Nil)
7

Also in conjunctions with (:<):

>>> let g (a :> b :> (_ :< y :< x)) = a + b +  x + y
>>> :t g
g :: Num a => Vec ((((n + 1) + 1) + 1) + 1) a -> a
>>> g (1:>2:>3:>4:>5:>Nil)
12

Instances

Instances details
Lift a => Lift (Vec n a :: Type) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

lift :: Quote m => Vec n a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Vec n a -> Code m (Vec n a) #

KnownNat n => Representable (Vec n) Source # 
Instance details

Defined in Clash.Sized.Vector

Associated Types

type Rep (Vec n) #

Methods

tabulate :: (Rep (Vec n) -> a) -> Vec n a #

index :: Vec n a -> Rep (Vec n) -> a #

KnownNat n => Foldable (Vec n) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

fold :: Monoid m => Vec n m -> m #

foldMap :: Monoid m => (a -> m) -> Vec n a -> m #

foldMap' :: Monoid m => (a -> m) -> Vec n a -> m #

foldr :: (a -> b -> b) -> b -> Vec n a -> b #

foldr' :: (a -> b -> b) -> b -> Vec n a -> b #

foldl :: (b -> a -> b) -> b -> Vec n a -> b #

foldl' :: (b -> a -> b) -> b -> Vec n a -> b #

foldr1 :: (a -> a -> a) -> Vec n a -> a #

foldl1 :: (a -> a -> a) -> Vec n a -> a #

toList :: Vec n a -> [a] #

null :: Vec n a -> Bool #

length :: Vec n a -> Int #

elem :: Eq a => a -> Vec n a -> Bool #

maximum :: Ord a => Vec n a -> a #

minimum :: Ord a => Vec n a -> a #

sum :: Num a => Vec n a -> a #

product :: Num a => Vec n a -> a #

(KnownNat n, 1 <= n) => Foldable1 (Vec n) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

fold1 :: Semigroup m => Vec n m -> m #

foldMap1 :: Semigroup m => (a -> m) -> Vec n a -> m #

foldMap1' :: Semigroup m => (a -> m) -> Vec n a -> m #

toNonEmpty :: Vec n a -> NonEmpty a #

maximum :: Ord a => Vec n a -> a #

minimum :: Ord a => Vec n a -> a #

head :: Vec n a -> a #

last :: Vec n a -> a #

foldrMap1 :: (a -> b) -> (a -> b -> b) -> Vec n a -> b #

foldlMap1' :: (a -> b) -> (b -> a -> b) -> Vec n a -> b #

foldlMap1 :: (a -> b) -> (b -> a -> b) -> Vec n a -> b #

foldrMap1' :: (a -> b) -> (a -> b -> b) -> Vec n a -> b #

KnownNat n => Traversable (Vec n) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

traverse :: Applicative f => (a -> f b) -> Vec n a -> f (Vec n b) #

sequenceA :: Applicative f => Vec n (f a) -> f (Vec n a) #

mapM :: Monad m => (a -> m b) -> Vec n a -> m (Vec n b) #

sequence :: Monad m => Vec n (m a) -> m (Vec n a) #

KnownNat n => Applicative (Vec n) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

pure :: a -> Vec n a #

(<*>) :: Vec n (a -> b) -> Vec n a -> Vec n b #

liftA2 :: (a -> b -> c) -> Vec n a -> Vec n b -> Vec n c #

(*>) :: Vec n a -> Vec n b -> Vec n b #

(<*) :: Vec n a -> Vec n b -> Vec n a #

Functor (Vec n) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

fmap :: (a -> b) -> Vec n a -> Vec n b #

(<$) :: a -> Vec n b -> Vec n a #

KnownNat n => Distributive (Vec n) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

distribute :: Functor f => f (Vec n a) -> Vec n (f a) #

collect :: Functor f => (a -> Vec n b) -> f a -> Vec n (f b) #

distributeM :: Monad m => m (Vec n a) -> Vec n (m a) #

collectM :: Monad m => (a -> Vec n b) -> m a -> Vec n (m b) #

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

Defined in Clash.Sized.Vector

Methods

arbitrary :: Gen (Vec n a) #

shrink :: Vec n a -> [Vec n a] #

CoArbitrary a => CoArbitrary (Vec n a) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

coarbitrary :: Vec n a -> Gen b -> Gen b #

(KnownNat n, Typeable a, Data a) => Data (Vec n a) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Vec n a -> c (Vec n a) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Vec n a) #

toConstr :: Vec n a -> Constr #

dataTypeOf :: Vec n a -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Vec n a)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Vec n a)) #

gmapT :: (forall b. Data b => b -> b) -> Vec n a -> Vec n a #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Vec n a -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Vec n a -> r #

gmapQ :: (forall d. Data d => d -> u) -> Vec n a -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Vec n a -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Vec n a -> m (Vec n a) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Vec n a -> m (Vec n a) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Vec n a -> m (Vec n a) #

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

Defined in Clash.Sized.Vector

Methods

mempty :: Vec n a #

mappend :: Vec n a -> Vec n a -> Vec n a #

mconcat :: [Vec n a] -> Vec n a #

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

Defined in Clash.Sized.Vector

Methods

(<>) :: Vec n a -> Vec n a -> Vec n a #

sconcat :: NonEmpty (Vec n a) -> Vec n a #

stimes :: Integral b => b -> Vec n a -> Vec n a #

KnownNat n => Generic (Vec n a) Source #

In many cases, this Generic instance only allows generic functions/instances over vectors of at least size 1, due to the n-1 in the Rep (Vec n a) definition.

We'll have to wait for things like https://ryanglscott.github.io/2018/02/11/how-to-derive-generic-for-some-gadts/ before we can work around this limitation

Instance details

Defined in Clash.Sized.Vector

Associated Types

type Rep (Vec n a) :: Type -> Type #

Methods

from :: Vec n a -> Rep (Vec n a) x #

to :: Rep (Vec n a) x -> Vec n a #

Show a => Show (Vec n a) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

showsPrec :: Int -> Vec n a -> ShowS #

show :: Vec n a -> String #

showList :: [Vec n a] -> ShowS #

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

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Vec n a -> Signal dom (Vec n a) -> Signal dom (Vec n a) Source #

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

Defined in Clash.Sized.Vector

Associated Types

type BitSize (Vec n a) :: Nat Source #

Methods

pack :: Vec n a -> BitVector (BitSize (Vec n a)) Source #

unpack :: BitVector (BitSize (Vec n a)) -> Vec n a Source #

(Counter a, KnownNat n, 1 <= n) => Counter (Vec n a) Source #

Counters on vectors increment from right to left.

>>> type T = Vec 2 (Index 10)
>>> countSucc @T (0 :> 0 :> Nil)
0 :> 1 :> Nil
>>> countSucc @T (0 :> 1 :> Nil)
0 :> 2 :> Nil
>>> countSucc @T (0 :> 9 :> Nil)
1 :> 0 :> Nil
>>> iterate (SNat @5) (countSucc @T) (9 :> 8 :> Nil)
(9 :> 8 :> Nil) :> (9 :> 9 :> Nil) :> (0 :> 0 :> Nil) :> (0 :> 1 :> Nil) :> (0 :> 2 :> Nil) :> Nil
Instance details

Defined in Clash.Class.Counter.Internal

Methods

countMin :: Vec n a Source #

countMax :: Vec n a Source #

countSuccOverflow :: Vec n a -> (Bool, Vec n a) Source #

countPredOverflow :: Vec n a -> (Bool, Vec n a) Source #

KnownNat n => Bundle (Vec n a) Source # 
Instance details

Defined in Clash.Signal.Bundle

Associated Types

type Unbundled dom (Vec n a) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain). Unbundled dom (Vec n a) -> Signal dom (Vec n a) Source #

unbundle :: forall (dom :: Domain). Signal dom (Vec n a) -> Unbundled dom (Vec n a) Source #

KnownNat n => Bundle (Vec n a) Source # 
Instance details

Defined in Clash.Signal.Delayed.Bundle

Associated Types

type Unbundled dom d (Vec n a) = (res :: Type) Source #

Methods

bundle :: forall (dom :: Domain) (d :: Nat). Unbundled dom d (Vec n a) -> DSignal dom d (Vec n a) Source #

unbundle :: forall (dom :: Domain) (d :: Nat). DSignal dom d (Vec n a) -> Unbundled dom d (Vec n a) Source #

VecToTuple (Vec 0 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

Associated Types

type TupType (Vec 0 a) = (r :: Type) Source #

Methods

vecToTuple :: Vec 0 a -> TupType (Vec 0 a) Source #

VecToTuple (Vec 1 a) Source #

Instead of using vecToTuple for Vec 1 _, you could also consider using head

Instance details

Defined in Clash.Sized.Vector.ToTuple

Associated Types

type TupType (Vec 1 a) = (r :: Type) Source #

Methods

vecToTuple :: Vec 1 a -> TupType (Vec 1 a) Source #

VecToTuple (Vec 2 a) Source #

NB: The documentation only shows instances up to 3-tuples. By default, instances up to and including 12-tuples will exist. If the flag large-tuples is set instances up to the GHC imposed limit will exist. The GHC imposed limit is either 62 or 64 depending on the GHC version.

Instance details

Defined in Clash.Sized.Vector.ToTuple

Associated Types

type TupType (Vec 2 a) = (r :: Type) Source #

Methods

vecToTuple :: Vec 2 a -> TupType (Vec 2 a) Source #

VecToTuple (Vec 3 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

Associated Types

type TupType (Vec 3 a) = (r :: Type) Source #

Methods

vecToTuple :: Vec 3 a -> TupType (Vec 3 a) Source #

VecToTuple (Vec 4 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

Associated Types

type TupType (Vec 4 a) = (r :: Type) Source #

Methods

vecToTuple :: Vec 4 a -> TupType (Vec 4 a) Source #

VecToTuple (Vec 5 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

Associated Types

type TupType (Vec 5 a) = (r :: Type) Source #

Methods

vecToTuple :: Vec 5 a -> TupType (Vec 5 a) Source #

VecToTuple (Vec 6 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

Associated Types

type TupType (Vec 6 a) = (r :: Type) Source #

Methods

vecToTuple :: Vec 6 a -> TupType (Vec 6 a) Source #

VecToTuple (Vec 7 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

Associated Types

type TupType (Vec 7 a) = (r :: Type) Source #

Methods

vecToTuple :: Vec 7 a -> TupType (Vec 7 a) Source #

VecToTuple (Vec 8 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

Associated Types

type TupType (Vec 8 a) = (r :: Type) Source #

Methods

vecToTuple :: Vec 8 a -> TupType (Vec 8 a) Source #

VecToTuple (Vec 9 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

Associated Types

type TupType (Vec 9 a) = (r :: Type) Source #

Methods

vecToTuple :: Vec 9 a -> TupType (Vec 9 a) Source #

VecToTuple (Vec 10 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

Associated Types

type TupType (Vec 10 a) = (r :: Type) Source #

Methods

vecToTuple :: Vec 10 a -> TupType (Vec 10 a) Source #

VecToTuple (Vec 11 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

Associated Types

type TupType (Vec 11 a) = (r :: Type) Source #

Methods

vecToTuple :: Vec 11 a -> TupType (Vec 11 a) Source #

VecToTuple (Vec 12 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

Associated Types

type TupType (Vec 12 a) = (r :: Type) Source #

Methods

vecToTuple :: Vec 12 a -> TupType (Vec 12 a) Source #

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

Defined in Clash.Sized.Vector

Methods

deepErrorX :: String -> Vec n a Source #

hasUndefined :: Vec n a -> Bool Source #

ensureSpine :: Vec n a -> Vec n a Source #

rnfX :: Vec n a -> () Source #

ShowX a => ShowX (Vec n a) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

showsPrecX :: Int -> Vec n a -> ShowS Source #

showX :: Vec n a -> String Source #

showListX :: [Vec n a] -> ShowS Source #

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

Defined in Clash.Sized.Vector

Methods

def :: Vec n a #

NFData a => NFData (Vec n a) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

rnf :: Vec n a -> () #

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

Defined in Clash.Sized.Vector

Methods

(==) :: Vec n a -> Vec n a -> Bool #

(/=) :: Vec n a -> Vec n a -> Bool #

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

Defined in Clash.Sized.Vector

Methods

compare :: Vec n a -> Vec n a -> Ordering #

(<) :: Vec n a -> Vec n a -> Bool #

(<=) :: Vec n a -> Vec n a -> Bool #

(>) :: Vec n a -> Vec n a -> Bool #

(>=) :: Vec n a -> Vec n a -> Bool #

max :: Vec n a -> Vec n a -> Vec n a #

min :: Vec n a -> Vec n a -> Vec n a #

KnownNat n => Ixed (Vec n a) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

ix :: Index (Vec n a) -> Traversal' (Vec n a) (IxValue (Vec n a)) #

(LockStep en a, KnownNat n) => LockStep (Vec n en) (Vec n a) Source # 
Instance details

Defined in Clash.Prelude.DataFlow

Methods

lockStep :: forall (dom :: Domain). DataFlow dom (Vec n en) Bool (Vec n a) (Vec n a) Source #

stepLock :: forall (dom :: Domain). DataFlow dom Bool (Vec n en) (Vec n a) (Vec n a) Source #

type Unbundled t d (Vec n a) Source # 
Instance details

Defined in Clash.Signal.Delayed.Bundle

type Unbundled t d (Vec n a) = Vec n (DSignal t d a)
type TryDomain t (Vec n a) Source # 
Instance details

Defined in Clash.Class.HasDomain.HasSingleDomain

type TryDomain t (Vec n a) = TryDomain t a
type HasDomain dom (Vec n a) Source # 
Instance details

Defined in Clash.Class.HasDomain.HasSpecificDomain

type HasDomain dom (Vec n a) = HasDomain dom a
type Unbundled t (Vec n a) Source # 
Instance details

Defined in Clash.Signal.Bundle

type Unbundled t (Vec n a) = Vec n (Signal t a)
type Rep (Vec n) Source # 
Instance details

Defined in Clash.Sized.Vector

type Rep (Vec n) = Index n
type Rep (Vec n a) Source # 
Instance details

Defined in Clash.Sized.Vector

type Rep (Vec n a)
type BitSize (Vec n a) Source # 
Instance details

Defined in Clash.Sized.Vector

type BitSize (Vec n a) = n * BitSize a
type TupType (Vec 0 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

type TupType (Vec 0 a) = Tagged a ()
type TupType (Vec 1 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

type TupType (Vec 1 a) = (a)
type TupType (Vec 2 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

type TupType (Vec 2 a) = (a, a)
type TupType (Vec 3 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

type TupType (Vec 3 a) = (a, a, a)
type TupType (Vec 4 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

type TupType (Vec 4 a) = (a, a, a, a)
type TupType (Vec 5 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

type TupType (Vec 5 a) = (a, a, a, a, a)
type TupType (Vec 6 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

type TupType (Vec 6 a) = (a, a, a, a, a, a)
type TupType (Vec 7 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

type TupType (Vec 7 a) = (a, a, a, a, a, a, a)
type TupType (Vec 8 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

type TupType (Vec 8 a) = (a, a, a, a, a, a, a, a)
type TupType (Vec 9 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

type TupType (Vec 9 a) = (a, a, a, a, a, a, a, a, a)
type TupType (Vec 10 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

type TupType (Vec 10 a) = (a, a, a, a, a, a, a, a, a, a)
type TupType (Vec 11 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

type TupType (Vec 11 a) = (a, a, a, a, a, a, a, a, a, a, a)
type TupType (Vec 12 a) Source # 
Instance details

Defined in Clash.Sized.Vector.ToTuple

type TupType (Vec 12 a) = (a, a, a, a, a, a, a, a, a, a, a, a)
type Index (Vec n a) Source # 
Instance details

Defined in Clash.Sized.Vector

type Index (Vec n a) = Index n
type IxValue (Vec n a) Source # 
Instance details

Defined in Clash.Sized.Vector

type IxValue (Vec n a) = a

data VCons (a :: Type) (f :: TyFun Nat Type) :: Type Source #

To be used as the motive p for dfold, when the f in "dfold p f" is a variation on (:>), e.g.:

map' :: forall n a b . KnownNat n => (a -> b) -> Vec n a -> Vec n b
map' f = dfold (Proxy @(VCons b)) (_ x xs -> f x :> xs)

Instances

Instances details
type Apply (VCons a :: TyFun Nat Type -> Type) (l :: Nat) Source # 
Instance details

Defined in Clash.Sized.Vector

type Apply (VCons a :: TyFun Nat Type -> Type) (l :: Nat) = Vec l a

toList :: Vec n a -> [a] Source #

Convert a vector to a list.

>>> toList (1:>2:>3:>Nil)
[1,2,3]

NB: This function is not synthesizable

generate :: SNat n -> (a -> a) -> a -> Vec n a Source #

"generate n f x" returns a vector with n repeated applications of f to x.

generate (SNat :: SNat 4) f x == (f x :> f (f x) :> f (f (f x)) :> f (f (f (f x))) :> Nil)
generate d4 f x               == (f x :> f (f x) :> f (f (f x)) :> f (f (f (f x))) :> Nil)
>>> generate d4 (+1) 1
2 :> 3 :> 4 :> 5 :> Nil

"generate n f z" corresponds to the following circuit layout:

(++) :: Vec n a -> Vec m a -> Vec (n + m) a infixr 5 Source #

Append two vectors.

>>> (1:>2:>3:>Nil) ++ (7:>8:>Nil)
1 :> 2 :> 3 :> 7 :> 8 :> Nil

foldr :: (a -> b -> b) -> b -> Vec n a -> b Source #

foldr, applied to a binary operator, a starting value (typically the right-identity of the operator), and a vector, reduces the vector using the binary operator, from right to left:

foldr f z (x1 :> ... :> xn1 :> xn :> Nil) == x1 `f` (... (xn1 `f` (xn `f` z))...)
foldr r z Nil                             == z
>>> foldr (/) 1 (5 :> 4 :> 3 :> 2 :> Nil)
1.875

"foldr f z xs" corresponds to the following circuit layout:

NB: "foldr f z xs" produces a linear structure, which has a depth, or delay, of O(length xs). Use fold if your binary operator f is associative, as "fold f xs" produces a structure with a depth of O(log_2(length xs)).

map :: (a -> b) -> Vec n a -> Vec n b Source #

"map f xs" is the vector obtained by applying f to each element of xs, i.e.,

map f (x1 :> x2 :>  ... :> xn :> Nil) == (f x1 :> f x2 :> ... :> f xn :> Nil)

and corresponds to the following circuit layout:

(!!) :: (KnownNat n, Enum i) => Vec n a -> i -> a Source #

"xs !! n" returns the n'th element of xs.

NB: Vector elements have an ASCENDING subscript starting from 0 and ending at length - 1.

>>> (1:>2:>3:>4:>5:>Nil) !! 4
5
>>> (1:>2:>3:>4:>5:>Nil) !! (length (1:>2:>3:>4:>5:>Nil) - 1)
5
>>> (1:>2:>3:>4:>5:>Nil) !! 1
2
>>> (1:>2:>3:>4:>5:>Nil) !! 14
*** Exception: Clash.Sized.Vector.(!!): index 14 is larger than maximum index 4
...

drop :: SNat m -> Vec (m + n) a -> Vec n a Source #

"drop n xs" returns the suffix of xs after the first n elements.

>>> drop (SNat :: SNat 3) (1:>2:>3:>4:>5:>Nil)
4 :> 5 :> Nil
>>> drop d3               (1:>2:>3:>4:>5:>Nil)
4 :> 5 :> Nil
>>> drop d0               (1:>2:>Nil)
1 :> 2 :> Nil

# 1666 "srcClashSized/Vector.hs" >>> drop d4 (1:>2:>Nil) BLANKLINE interactive:...: error:... • Couldn't match...type ‘4 + n0... The type variable ‘n0’ is ambiguous • In the first argument of ‘print’, namely ‘it’ In a stmt of an interactive GHCi command: print it

# 1684 "srcClashSized/Vector.hs"

elemIndex :: (KnownNat n, Eq a) => a -> Vec n a -> Maybe (Index n) Source #

"elemIndex a xs" returns the index of the first element which is equal (by ==) to the query element a, or Nothing if there is no such element.

>>> elemIndex 3 (1:>3:>2:>4:>3:>5:>6:>Nil)
Just 1
>>> elemIndex 8 (1:>3:>2:>4:>3:>5:>6:>Nil)
Nothing

findIndex :: KnownNat n => (a -> Bool) -> Vec n a -> Maybe (Index n) Source #

"findIndex p xs" returns the index of the first element of xs satisfying the predicate p, or Nothing if there is no such element.

>>> findIndex (> 3) (1:>3:>2:>4:>3:>5:>6:>Nil)
Just 3
>>> findIndex (> 8) (1:>3:>2:>4:>3:>5:>6:>Nil)
Nothing

head :: Vec (n + 1) a -> a Source #

Extract the first element of a vector

>>> head (1:>2:>3:>Nil)
1

# 430 "srcClashSized/Vector.hs" >>> head Nil BLANKLINE interactive:... • Couldn't match type ‘1’ with ‘0’ Expected: Vec (0 + 1) a Actual: Vec 0 a • In the first argument of ‘head’, namely ‘Nil’ In the expression: head Nil In an equation for ‘it’: it = head Nil

# 452 "srcClashSized/Vector.hs"

interleave Source #

Arguments

:: KnownNat n 
=> SNat d

Interleave step, d

-> Vec (n * d) a 
-> Vec (d * n) a 

"interleave d xs" creates a vector:

<x_0,x_d,x_(2d),...,x_1,x_(d+1),x_(2d+1),...,x_(d-1),x_(2d-1),x_(3d-1)>
>>> let xs = 1 :> 2 :> 3 :> 4 :> 5 :> 6 :> 7 :> 8 :> 9 :> Nil
>>> interleave d3 xs
1 :> 4 :> 7 :> 2 :> 5 :> 8 :> 3 :> 6 :> 9 :> Nil

iterate :: SNat n -> (a -> a) -> a -> Vec n a Source #

"iterate n f x" returns a vector starting with x followed by n repeated applications of f to x.

iterate (SNat :: SNat 4) f x == (x :> f x :> f (f x) :> f (f (f x)) :> Nil)
iterate d4 f x               == (x :> f x :> f (f x) :> f (f (f x)) :> Nil)
>>> iterate d4 (+1) 1
1 :> 2 :> 3 :> 4 :> Nil

"iterate n f z" corresponds to the following circuit layout:

repeat :: KnownNat n => a -> Vec n a Source #

"repeat a" creates a vector with as many copies of a as demanded by the context.

>>> repeat 6 :: Vec 5 Int
6 :> 6 :> 6 :> 6 :> 6 :> Nil

splitAt :: SNat m -> Vec (m + n) a -> (Vec m a, Vec n a) Source #

Split a vector into two vectors at the given point.

>>> splitAt (SNat :: SNat 3) (1:>2:>3:>7:>8:>Nil)
(1 :> 2 :> 3 :> Nil,7 :> 8 :> Nil)
>>> splitAt d3 (1:>2:>3:>7:>8:>Nil)
(1 :> 2 :> 3 :> Nil,7 :> 8 :> Nil)

tail :: Vec (n + 1) a -> Vec n a Source #

Extract the elements after the head of a vector

>>> tail (1:>2:>3:>Nil)
2 :> 3 :> Nil

# 482 "srcClashSized/Vector.hs" >>> tail Nil BLANKLINE interactive:... • Couldn't match type ‘1’ with ‘0’ Expected: Vec (0 + 1) a Actual: Vec 0 a • In the first argument of ‘tail’, namely ‘Nil’ In the expression: tail Nil In an equation for ‘it’: it = tail Nil

# 504 "srcClashSized/Vector.hs"

take :: SNat m -> Vec (m + n) a -> Vec m a Source #

"take n xs" returns the n-length prefix of xs.

>>> take (SNat :: SNat 3) (1:>2:>3:>4:>5:>Nil)
1 :> 2 :> 3 :> Nil
>>> take d3               (1:>2:>3:>4:>5:>Nil)
1 :> 2 :> 3 :> Nil
>>> take d0               (1:>2:>Nil)
Nil

# 1598 "srcClashSized/Vector.hs" >>> take d4 (1:>2:>Nil) BLANKLINE interactive:... • Couldn't match type ‘4 + n0’ with ‘2’ Expected: Vec (4 + n0) a Actual: Vec (1 + 1) a The type variable ‘n0’ is ambiguous • In the second argument of ‘take’, namely ‘(1 :> 2 :> Nil)’ In the expression: take d4 (1 :> 2 :> Nil) In an equation for ‘it’: it = take d4 (1 :> 2 :> Nil)

# 1634 "srcClashSized/Vector.hs"

transpose :: KnownNat n => Vec m (Vec n a) -> Vec n (Vec m a) Source #

Transpose a matrix: go from row-major to column-major

>>> let xss = (1:>2:>Nil):>(3:>4:>Nil):>(5:>6:>Nil):>Nil
>>> xss
(1 :> 2 :> Nil) :> (3 :> 4 :> Nil) :> (5 :> 6 :> Nil) :> Nil
>>> transpose xss
(1 :> 3 :> 5 :> Nil) :> (2 :> 4 :> 6 :> Nil) :> Nil

unzip :: Vec n (a, b) -> (Vec n a, Vec n b) Source #

unzip transforms a vector of pairs into a vector of first components and a vector of second components.

>>> unzip ((1,4):>(2,3):>(3,2):>(4,1):>Nil)
(1 :> 2 :> 3 :> 4 :> Nil,4 :> 3 :> 2 :> 1 :> Nil)

unzip3 :: Vec n (a, b, c) -> (Vec n a, Vec n b, Vec n c) Source #

unzip3 transforms a vector of triplets into a vector of first components, a vector of second components, and a vector of third components.

>>> unzip3 ((1,4,5):>(2,3,6):>(3,2,7):>(4,1,8):>Nil)
(1 :> 2 :> 3 :> 4 :> Nil,4 :> 3 :> 2 :> 1 :> Nil,5 :> 6 :> 7 :> 8 :> Nil)

zip :: Vec n a -> Vec n b -> Vec n (a, b) Source #

zip takes two vectors and returns a vector of corresponding pairs.

>>> zip (1:>2:>3:>4:>Nil) (4:>3:>2:>1:>Nil)
(1,4) :> (2,3) :> (3,2) :> (4,1) :> Nil

zip3 :: Vec n a -> Vec n b -> Vec n c -> Vec n (a, b, c) Source #

zip3 takes three vectors and returns a vector of corresponding triplets.

>>> zip3 (1:>2:>3:>4:>Nil) (4:>3:>2:>1:>Nil) (5:>6:>7:>8:>Nil)
(1,4,5) :> (2,3,6) :> (3,2,7) :> (4,1,8) :> Nil

zipWith :: (a -> b -> c) -> Vec n a -> Vec n b -> Vec n c Source #

zipWith generalizes zip by zipping with the function given as the first argument, instead of a tupling function. For example, "zipWith (+)" applied to two vectors produces the vector of corresponding sums.

zipWith f (x1 :> x2 :> ... xn :> Nil) (y1 :> y2 :> ... :> yn :> Nil) == (f x1 y1 :> f x2 y2 :> ... :> f xn yn :> Nil)

"zipWith f xs ys" corresponds to the following circuit layout:

NB: zipWith is strict in its second argument, and lazy in its third. This matters when zipWith is used in a recursive setting. See lazyV for more information.

zipWith3 :: (a -> b -> c -> d) -> Vec n a -> Vec n b -> Vec n c -> Vec n d Source #

zipWith3 generalizes zip3 by zipping with the function given as the first argument, instead of a tupling function.

zipWith3 f (x1 :> x2 :> ... xn :> Nil) (y1 :> y2 :> ... :> yn :> Nil) (z1 :> z2 :> ... :> zn :> Nil) == (f x1 y1 z1 :> f x2 y2 z2 :> ... :> f xn yn zn :> Nil)

"zipWith3 f xs ys zs" corresponds to the following circuit layout:

NB: zipWith3 is strict in its second argument, and lazy in its third and fourth. This matters when zipWith3 is used in a recursive setting. See lazyV for more information.

indices :: KnownNat n => SNat n -> Vec n (Index n) Source #

Generate a vector of indices.

>>> indices d4
0 :> 1 :> 2 :> 3 :> Nil

length :: KnownNat n => Vec n a -> Int Source #

The length of a Vector as an Int value.

>>> length (6 :> 7 :> 8 :> Nil)
3

foldl :: forall b a n. (b -> a -> b) -> b -> Vec n a -> b Source #

foldl, applied to a binary operator, a starting value (typically the left-identity of the operator), and a vector, reduces the vector using the binary operator, from left to right:

foldl f z (x1 :> x2 :> ... :> xn :> Nil) == (...((z `f` x1) `f` x2) `f`...) `f` xn
foldl f z Nil                            == z
>>> foldl (/) 1 (5 :> 4 :> 3 :> 2 :> Nil)
8.333333333333333e-3

"foldl f z xs" corresponds to the following circuit layout:

NB: "foldl f z xs" produces a linear structure, which has a depth, or delay, of O(length xs). Use fold if your binary operator f is associative, as "fold f xs" produces a structure with a depth of O(log_2(length xs)).

unfoldr :: SNat n -> (s -> (a, s)) -> s -> Vec n a Source #

"unfoldr n f s" builds a vector of length n from a seed value s, where every element a is created by successive calls of f on s. Unlike unfoldr from Data.List the generating function f cannot dictate the length of the resulting vector, it must be statically known.

a simple use of unfoldr:

>>> unfoldr d10 (\s -> (s,s-1)) 10
10 :> 9 :> 8 :> 7 :> 6 :> 5 :> 4 :> 3 :> 2 :> 1 :> Nil

concat :: Vec n (Vec m a) -> Vec (n * m) a Source #

Concatenate a vector of vectors.

>>> concat ((1:>2:>3:>Nil) :> (4:>5:>6:>Nil) :> (7:>8:>9:>Nil) :> (10:>11:>12:>Nil) :> Nil)
1 :> 2 :> 3 :> 4 :> 5 :> 6 :> 7 :> 8 :> 9 :> 10 :> 11 :> 12 :> Nil

last :: Vec (n + 1) a -> a Source #

Extract the last element of a vector

>>> last (1:>2:>3:>Nil)
3

# 534 "srcClashSized/Vector.hs" >>> last Nil BLANKLINE interactive:... • Couldn't match type ‘1’ with ‘0’ Expected: Vec (0 + 1) a Actual: Vec 0 a • In the first argument of ‘last’, namely ‘Nil’ In the expression: last Nil In an equation for ‘it’: it = last Nil

# 556 "srcClashSized/Vector.hs"

init :: Vec (n + 1) a -> Vec n a Source #

Extract all the elements of a vector except the last element

>>> init (1:>2:>3:>Nil)
1 :> 2 :> Nil

# 587 "srcClashSized/Vector.hs" >>> init Nil BLANKLINE interactive:... • Couldn't match type ‘1’ with ‘0’ Expected: Vec (0 + 1) a Actual: Vec 0 a • In the first argument of ‘init’, namely ‘Nil’ In the expression: init Nil In an equation for ‘it’: it = init Nil

# 609 "srcClashSized/Vector.hs"

foldl1 :: (a -> a -> a) -> Vec (n + 1) a -> a Source #

foldl1 is a variant of foldl that has no starting value argument, and thus must be applied to non-empty vectors.

foldl1 f (x1 :> x2 :> x3 :> ... :> xn :> Nil) == (...((x1 `f` x2) `f` x3) `f`...) `f` xn
foldl1 f (x1 :> Nil)                          == x1
foldl1 f Nil                                  == TYPE ERROR
>>> foldl1 (/) (1 :> 5 :> 4 :> 3 :> 2 :> Nil)
8.333333333333333e-3

"foldl1 f xs" corresponds to the following circuit layout:

NB: "foldl1 f z xs" produces a linear structure, which has a depth, or delay, of O(length xs). Use fold if your binary operator f is associative, as "fold f xs" produces a structure with a depth of O(log_2(length xs)).

scanl :: (b -> a -> b) -> b -> Vec n a -> Vec (n + 1) b Source #

scanl is similar to foldl, but returns a vector of successive reduced values from the left:

scanl f z (x1 :> x2 :> ... :> Nil) == z :> (z `f` x1) :> ((z `f` x1) `f` x2) :> ... :> Nil
>>> scanl (+) 0 (5 :> 4 :> 3 :> 2 :> Nil)
0 :> 5 :> 9 :> 12 :> 14 :> Nil

"scanl f z xs" corresponds to the following circuit layout:

  • NB:

    last (scanl f z xs) == foldl f z xs
  • For a different trade-off between circuit size and logic depth for associative operators, see Clash.Sized.RTree

scanl1 :: forall n a. (a -> a -> a) -> Vec (n + 1) a -> Vec (n + 1) a Source #

scanl with no seed value

>>> scanl1 (-) (1 :> 2 :> 3 :> 4 :> Nil)
1 :> -1 :> -4 :> -8 :> Nil

foldr1 :: (a -> a -> a) -> Vec (n + 1) a -> a Source #

foldr1 is a variant of foldr that has no starting value argument, and thus must be applied to non-empty vectors.

foldr1 f (x1 :> ... :> xn2 :> xn1 :> xn :> Nil) == x1 `f` (... (xn2 `f` (xn1 `f` xn))...)
foldr1 f (x1 :> Nil)                            == x1
foldr1 f Nil                                    == TYPE ERROR
>>> foldr1 (/) (5 :> 4 :> 3 :> 2 :> 1 :> Nil)
1.875

"foldr1 f xs" corresponds to the following circuit layout:

NB: "foldr1 f z xs" produces a linear structure, which has a depth, or delay, of O(length xs). Use fold if your binary operator f is associative, as "fold f xs" produces a structure with a depth of O(log_2(length xs)).

scanr :: (a -> b -> b) -> b -> Vec n a -> Vec (n + 1) b Source #

scanr is similar to foldr, but returns a vector of successive reduced values from the right:

scanr f z (... :> xn1 :> xn :> Nil) == ... :> (xn1 `f` (xn `f` z)) :> (xn `f` z) :> z :> Nil
>>> scanr (+) 0 (5 :> 4 :> 3 :> 2 :> Nil)
14 :> 9 :> 5 :> 2 :> 0 :> Nil

"scanr f z xs" corresponds to the following circuit layout:

  • NB:

    head (scanr f z xs) == foldr f z xs
  • For a different trade-off between circuit size and logic depth for associative operators, see Clash.Sized.RTree

scanr1 :: forall n a. (a -> a -> a) -> Vec (n + 1) a -> Vec (n + 1) a Source #

scanr with no seed value

>>> scanr1 (-) (1 :> 2 :> 3 :> 4 :> Nil)
-2 :> 3 :> -1 :> 4 :> Nil

maximum :: Ord a => Vec (n + 1) a -> a Source #

The largest element of a non-empty vector

minimum :: Ord a => Vec (n + 1) a -> a Source #

The least element of a non-empty vector

replicate :: SNat n -> a -> Vec n a Source #

"replicate n a" returns a vector that has n copies of a.

>>> replicate (SNat :: SNat 3) 6
6 :> 6 :> 6 :> Nil
>>> replicate d3 6
6 :> 6 :> 6 :> Nil

reverse :: Vec n a -> Vec n a Source #

The elements in a vector in reverse order.

>>> reverse (1:>2:>3:>4:>Nil)
4 :> 3 :> 2 :> 1 :> Nil

concatMap :: (a -> Vec m b) -> Vec n a -> Vec (n * m) b Source #

Map a function over all the elements of a vector and concatentate the resulting vectors.

>>> concatMap (replicate d3) (1:>2:>3:>Nil)
1 :> 1 :> 1 :> 2 :> 2 :> 2 :> 3 :> 3 :> 3 :> Nil

gather Source #

Arguments

:: (Enum i, KnownNat n) 
=> Vec n a

Source vector, xs

-> Vec m i

Index mapping, is

-> Vec m a 

Backwards permutation specified by an index mapping, is, from the destination vector specifying which element of the source vector xs to read.

"gather xs is" is equivalent to "map (xs !!) is".

For example:

>>> let input = 1:>9:>6:>4:>4:>2:>0:>1:>2:>Nil
>>> let from  = 1:>3:>7:>2:>5:>3:>Nil
>>> gather input from
9 :> 4 :> 1 :> 6 :> 2 :> 4 :> Nil

fold :: forall n a. (a -> a -> a) -> Vec (n + 1) a -> a Source #

fold is a variant of foldr1 and foldl1, but instead of reducing from right to left, or left to right, it reduces a vector using a tree-like structure. The depth, or delay, of the structure produced by "fold f xs", is hence O(log_2(length xs)), and not O(length xs).

NB: The binary operator "f" in "fold f xs" must be associative.

fold f (x1 :> x2 :> ... :> xn1 :> xn :> Nil) == ((x1 `f` x2) `f` ...) `f` (... `f` (xn1 `f` xn))
fold f (x1 :> Nil)                           == x1
fold f Nil                                   == TYPE ERROR
>>> fold (+) (5 :> 4 :> 3 :> 2 :> 1 :> Nil)
15

"fold f xs" corresponds to the following circuit layout:

mapAccumL :: (acc -> x -> (acc, y)) -> acc -> Vec n x -> (acc, Vec n y) Source #

The mapAccumL function behaves like a combination of map and foldl; it applies a function to each element of a vector, passing an accumulating parameter from left to right, and returning a final value of this accumulator together with the new vector.

>>> mapAccumL (\acc x -> (acc + x,acc + 1)) 0 (1 :> 2 :> 3 :> 4 :> Nil)
(10,1 :> 2 :> 4 :> 7 :> Nil)

"mapAccumL f acc xs" corresponds to the following circuit layout:

mapAccumR :: (acc -> x -> (acc, y)) -> acc -> Vec n x -> (acc, Vec n y) Source #

The mapAccumR function behaves like a combination of map and foldr; it applies a function to each element of a vector, passing an accumulating parameter from right to left, and returning a final value of this accumulator together with the new vector.

>>> mapAccumR (\acc x -> (acc + x,acc + 1)) 0 (1 :> 2 :> 3 :> 4 :> Nil)
(10,10 :> 8 :> 5 :> 1 :> Nil)

"mapAccumR f acc xs" corresponds to the following circuit layout:

zip4 :: Vec n a -> Vec n b -> Vec n c -> Vec n d -> Vec n (a, b, c, d) Source #

zip4 takes four vectors and returns a list of quadruples, analogous to zip.

zip5 :: Vec n a -> Vec n b -> Vec n c -> Vec n d -> Vec n e -> Vec n (a, b, c, d, e) Source #

zip5 takes five vectors and returns a list of five-tuples, analogous to zip.

zip6 :: Vec n a -> Vec n b -> Vec n c -> Vec n d -> Vec n e -> Vec n f -> Vec n (a, b, c, d, e, f) Source #

zip6 takes six vectors and returns a list of six-tuples, analogous to zip.

zip7 :: Vec n a -> Vec n b -> Vec n c -> Vec n d -> Vec n e -> Vec n f -> Vec n g -> Vec n (a, b, c, d, e, f, g) Source #

zip7 takes seven vectors and returns a list of seven-tuples, analogous to zip.

zipWith4 :: (a -> b -> c -> d -> e) -> Vec n a -> Vec n b -> Vec n c -> Vec n d -> Vec n e Source #

zipWith5 :: (a -> b -> c -> d -> e -> f) -> Vec n a -> Vec n b -> Vec n c -> Vec n d -> Vec n e -> Vec n f Source #

zipWith6 :: (a -> b -> c -> d -> e -> f -> g) -> Vec n a -> Vec n b -> Vec n c -> Vec n d -> Vec n e -> Vec n f -> Vec n g Source #

zipWith7 :: (a -> b -> c -> d -> e -> f -> g -> h) -> Vec n a -> Vec n b -> Vec n c -> Vec n d -> Vec n e -> Vec n f -> Vec n g -> Vec n h Source #

unzip4 :: Vec n (a, b, c, d) -> (Vec n a, Vec n b, Vec n c, Vec n d) Source #

unzip4 takes a vector of quadruples and returns four vectors, analogous to unzip.

unzip5 :: Vec n (a, b, c, d, e) -> (Vec n a, Vec n b, Vec n c, Vec n d, Vec n e) Source #

unzip5 takes a vector of five-tuples and returns five vectors, analogous to unzip.

unzip6 :: Vec n (a, b, c, d, e, f) -> (Vec n a, Vec n b, Vec n c, Vec n d, Vec n e, Vec n f) Source #

unzip6 takes a vector of six-tuples and returns six vectors, analogous to unzip.

unzip7 :: Vec n (a, b, c, d, e, f, g) -> (Vec n a, Vec n b, Vec n c, Vec n d, Vec n e, Vec n f, Vec n g) Source #

unzip7 takes a vector of seven-tuples and returns seven vectors, analogous to unzip.

singleton :: a -> Vec 1 a Source #

Create a vector of one element

>>> singleton 5
5 :> Nil

merge :: Vec n a -> Vec n a -> Vec (2 * n) a Source #

Merge two vectors, alternating their elements, i.e.,

>>> merge (1 :> 2 :> 3 :> 4 :> Nil) (5 :> 6 :> 7 :> 8 :> Nil)
1 :> 5 :> 2 :> 6 :> 3 :> 7 :> 4 :> 8 :> Nil

replace :: (KnownNat n, Enum i) => i -> a -> Vec n a -> Vec n a Source #

"replace n a xs" returns the vector xs where the n'th element is replaced by a.

NB: Vector elements have an ASCENDING subscript starting from 0 and ending at length - 1.

>>> replace 3 7 (1:>2:>3:>4:>5:>Nil)
1 :> 2 :> 3 :> 7 :> 5 :> Nil
>>> replace 0 7 (1:>2:>3:>4:>5:>Nil)
7 :> 2 :> 3 :> 4 :> 5 :> Nil
>>> replace 9 7 (1:>2:>3:>4:>5:>Nil)
1 :> 2 :> 3 :> 4 :> 5 :> *** Exception: Clash.Sized.Vector.replace: index 9 is out of bounds: [0..4]
...

ifoldl :: KnownNat n => (a -> Index n -> b -> a) -> a -> Vec n b -> a Source #

Left fold (function applied to each element and its index)

>>> let findRightmost x xs = ifoldl (\a i b -> if b == x then Just i else a) Nothing xs
>>> findRightmost 3 (1:>3:>2:>4:>3:>5:>6:>Nil)
Just 4
>>> findRightmost 8 (1:>3:>2:>4:>3:>5:>6:>Nil)
Nothing

"ifoldl f z xs" corresponds to the following circuit layout:

ifoldr :: KnownNat n => (Index n -> a -> b -> b) -> b -> Vec n a -> b Source #

Right fold (function applied to each element and its index)

>>> let findLeftmost x xs = ifoldr (\i a b -> if a == x then Just i else b) Nothing xs
>>> findLeftmost 3 (1:>3:>2:>4:>3:>5:>6:>Nil)
Just 1
>>> findLeftmost 8 (1:>3:>2:>4:>3:>5:>6:>Nil)
Nothing

"ifoldr f z xs" corresponds to the following circuit layout:

imap :: forall n a b. KnownNat n => (Index n -> a -> b) -> Vec n a -> Vec n b Source #

Apply a function of every element of a vector and its index.

>>> :t imap (+) (2 :> 2 :> 2 :> 2 :> Nil)
imap (+) (2 :> 2 :> 2 :> 2 :> Nil) :: Vec 4 (Index 4)
>>> imap (+) (2 :> 2 :> 2 :> 2 :> Nil)
2 :> 3 :> *** Exception: X: Clash.Sized.Index: result 4 is out of bounds: [0..3]
...
>>> imap (\i a -> extend (bitCoerce i) + a) (2 :> 2 :> 2 :> 2 :> Nil) :: Vec 4 (Unsigned 8)
2 :> 3 :> 4 :> 5 :> Nil

"imap f xs" corresponds to the following circuit layout:

at :: SNat m -> Vec (m + (n + 1)) a -> a Source #

"at n xs" returns n'th element of xs

NB: Vector elements have an ASCENDING subscript starting from 0 and ending at length - 1.

>>> at (SNat :: SNat 1) (1:>2:>3:>4:>5:>Nil)
2
>>> at d1               (1:>2:>3:>4:>5:>Nil)
2

select :: forall i s n f a. ((s * n) + 1) <= (i + s) => SNat f -> SNat s -> SNat n -> Vec (f + i) a -> Vec n a Source #

"select f s n xs" selects n elements with step-size s and offset f from xs.

>>> select (SNat :: SNat 1) (SNat :: SNat 2) (SNat :: SNat 3) (1:>2:>3:>4:>5:>6:>7:>8:>Nil)
2 :> 4 :> 6 :> Nil
>>> select d1 d2 d3 (1:>2:>3:>4:>5:>6:>7:>8:>Nil)
2 :> 4 :> 6 :> Nil

postscanl :: (b -> a -> b) -> b -> Vec n a -> Vec n b Source #

postscanl is a variant of scanl where the first result is dropped:

postscanl f z (x1 :> x2 :> ... :> Nil) == (z `f` x1) :> ((z `f` x1) `f` x2) :> ... :> Nil
>>> postscanl (+) 0 (5 :> 4 :> 3 :> 2 :> Nil)
5 :> 9 :> 12 :> 14 :> Nil

"postscanl f z xs" corresponds to the following circuit layout:

backpermute Source #

Arguments

:: (Enum i, KnownNat n) 
=> Vec n a

Source vector, xs

-> Vec m i

Index mapping, is

-> Vec m a 

Backwards permutation specified by an index mapping, is, from the destination vector specifying which element of the source vector xs to read.

"backpermute xs is" is equivalent to "map (xs !!) is".

For example:

>>> let input = 1:>9:>6:>4:>4:>2:>0:>1:>2:>Nil
>>> let from  = 1:>3:>7:>2:>5:>3:>Nil
>>> backpermute input from
9 :> 4 :> 1 :> 6 :> 2 :> 4 :> Nil

izipWith :: KnownNat n => (Index n -> a -> b -> c) -> Vec n a -> Vec n b -> Vec n c Source #

Zip two vectors with a functions that also takes the elements' indices.

>>> izipWith (\i a b -> i + a + b) (2 :> 2 :> Nil)  (3 :> 3:> Nil)
*** Exception: X: Clash.Sized.Index: result 2 is out of bounds: [0..1]
...
>>> izipWith (\i a b -> extend (bitCoerce i) + a + b) (2 :> 2 :> Nil) (3 :> 3 :> Nil) :: Vec 2 (Unsigned 8)
5 :> 6 :> Nil

"imap f xs" corresponds to the following circuit layout:

NB: izipWith is strict in its second argument, and lazy in its third. This matters when izipWith is used in a recursive setting. See lazyV for more information.

postscanr :: (a -> b -> b) -> b -> Vec n a -> Vec n b Source #

postscanr is a variant of scanr that where the last result is dropped:

postscanr f z (... :> xn1 :> xn :> Nil) == ... :> (xn1 `f` (xn `f` z)) :> (xn `f` z) :> Nil
>>> postscanr (+) 0 (5 :> 4 :> 3 :> 2 :> Nil)
14 :> 9 :> 5 :> 2 :> Nil

"postscanr f z xs" corresponds to the following circuit layout:

lazyV :: KnownNat n => Vec n a -> Vec n a Source #

What you should use when your vector functions are too strict in their arguments.

doctests setup

Expand
>>> let compareSwapL a b = if a < b then (a,b) else (b,a)
>>> :{
let sortVL :: (Ord a, KnownNat (n + 1)) => Vec ((n + 1) + 1) a -> Vec ((n + 1) + 1) a
    sortVL xs = map fst sorted :< (snd (last sorted))
      where
        lefts  = head xs :> map snd (init sorted)
        rights = tail xs
        sorted = zipWith compareSwapL (lazyV lefts) rights
:}
>>> :{
let sortV_flip xs = map fst sorted :< (snd (last sorted))
      where
        lefts  = head xs :> map snd (init sorted)
        rights = tail xs
        sorted = zipWith (flip compareSwapL) rights lefts
:}

Example usage

For example:

-- Bubble sort for 1 iteration
sortV xs = map fst sorted :< (snd (last sorted))
 where
   lefts  = head xs :> map snd (init sorted)
   rights = tail xs
   sorted = zipWith compareSwapL lefts rights

-- Compare and swap
compareSwapL a b = if a < b then (a,b)
                            else (b,a)

Will not terminate because zipWith is too strict in its second argument.

In this case, adding lazyV on zipWiths second argument:

sortVL xs = map fst sorted :< (snd (last sorted))
 where
   lefts  = head xs :> map snd (init sorted)
   rights = tail xs
   sorted = zipWith compareSwapL (lazyV lefts) rights

Results in a successful computation:

>>> sortVL (4 :> 1 :> 2 :> 3 :> Nil)
1 :> 2 :> 3 :> 4 :> Nil

NB: There is also a solution using flip, but it slightly obfuscates the meaning of the code:

sortV_flip xs = map fst sorted :< (snd (last sorted))
 where
   lefts  = head xs :> map snd (init sorted)
   rights = tail xs
   sorted = zipWith (flip compareSwapL) rights lefts
>>> sortV_flip (4 :> 1 :> 2 :> 3 :> Nil)
1 :> 2 :> 3 :> 4 :> Nil

smap :: forall k a b. KnownNat k => (forall n. SNat n -> a -> b) -> Vec k a -> Vec k b Source #

Apply a function to every element of a vector and the element's position (as an SNat value) in the vector.

>>> let rotateMatrix = smap (flip rotateRightS)
>>> let xss = (1:>2:>3:>Nil):>(1:>2:>3:>Nil):>(1:>2:>3:>Nil):>Nil
>>> xss
(1 :> 2 :> 3 :> Nil) :> (1 :> 2 :> 3 :> Nil) :> (1 :> 2 :> 3 :> Nil) :> Nil
>>> rotateMatrix xss
(1 :> 2 :> 3 :> Nil) :> (3 :> 1 :> 2 :> Nil) :> (2 :> 3 :> 1 :> Nil) :> Nil

iterateI :: forall n a. KnownNat n => (a -> a) -> a -> Vec n a Source #

"iterateI f x" returns a vector starting with x followed by n repeated applications of f to x, where n is determined by the context.

iterateI f x :: Vec 3 a == (x :> f x :> f (f x) :> Nil)
>>> iterateI (+1) 1 :: Vec 3 Int
1 :> 2 :> 3 :> Nil

"iterateI f z" corresponds to the following circuit layout:

traverse# :: forall a f b n. Applicative f => (a -> f b) -> Vec n a -> f (Vec n b) Source #

dtfold Source #

Arguments

:: forall p k a. KnownNat k 
=> Proxy (p :: TyFun Nat Type -> Type)

The motive

-> (a -> p @@ 0)

Function to apply to every element

-> (forall n. SNat n -> (p @@ n) -> (p @@ n) -> p @@ (n + 1))

Function to combine results.

NB: The SNat l indicates the depth/height of the node in the tree that is created by applying this function. The leafs of the tree have depth/height 0, and the root of the tree has height k.

-> Vec (2 ^ k) a

Vector to fold over.

NB: Must have a length that is a power of 2.

-> p @@ k 

A combination of dfold and fold: a dependently typed fold that reduces a vector in a tree-like structure.

doctests setup

Expand
>>> :seti -XUndecidableInstances
>>> import Data.Singletons (Apply, Proxy (..), TyFun)
>>> data IIndex (f :: TyFun Nat Type) :: Type
>>> type instance Apply IIndex l = Index ((2^l)+1)
>>> :{
let populationCount' :: (KnownNat k, KnownNat (2^k)) => BitVector (2^k) -> Index ((2^k)+1)
    populationCount' bv = dtfold (Proxy @IIndex)
                                 fromIntegral
                                 (\_ x y -> add x y)
                                 (bv2v bv)
:}

Example usage

As an example of when you might want to use dtfold we will build a population counter: a circuit that counts the number of bits set to '1' in a BitVector. Given a vector of n bits, we only need we need a data type that can represent the number n: Index (n+1). Index k has a range of [0 .. k-1] (using ceil(log2(k)) bits), hence we need Index n+1. As an initial attempt we will use sum, because it gives a nice (log2(n)) tree-structure of adders:

populationCount :: (KnownNat (n+1), KnownNat (n+2))
                => BitVector (n+1) -> Index (n+2)
populationCount = sum . map fromIntegral . bv2v

The "problem" with this description is that all adders have the same bit-width, i.e. all adders are of the type:

(+) :: Index (n+2) -> Index (n+2) -> Index (n+2).

This is a "problem" because we could have a more efficient structure: one where each layer of adders is precisely wide enough to count the number of bits at that layer. That is, at height d we want the adder to be of type:

Index ((2^d)+1) -> Index ((2^d)+1) -> Index ((2^(d+1))+1)

We have such an adder in the form of the add function, as defined in the instance ExtendingNum instance of Index. However, we cannot simply use fold to create a tree-structure of addes:

# 2510 "srcClashSized/Vector.hs" >>> :{ let populationCount' :: (KnownNat (n+1), KnownNat (n+2)) => BitVector (n+1) -> Index (n+2) populationCount' = fold add . map fromIntegral . bv2v :} BLANKLINE interactive:... • Couldn't match type: ((n + 2) + (n + 2)) - 1 with: n + 2 Expected: Index (n + 2) -> Index (n + 2) -> Index (n + 2) Actual: Index (n + 2) -> Index (n + 2) -> AResult (Index (n + 2)) (Index (n + 2)) • In the first argument of ‘fold’, namely ‘add’ In the first argument of ‘(.)’, namely ‘fold add’ In the expression: fold add . map fromIntegral . bv2v • Relevant bindings include populationCount' :: BitVector (n + 1) -> Index (n + 2) (bound at ...)

# 2549 "srcClashSized/Vector.hs"

because fold expects a function of type "a -> a -> a", i.e. a function where the arguments and result all have exactly the same type.

In order to accommodate the type of our add, where the result is larger than the arguments, we must use a dependently typed fold in the form of dtfold:

{-# LANGUAGE UndecidableInstances #-}
import Data.Singletons
import Data.Proxy

data IIndex (f :: TyFun Nat Type) :: Type
type instance Apply IIndex l = Index ((2^l)+1)

populationCount' :: (KnownNat k, KnownNat (2^k))
                 => BitVector (2^k) -> Index ((2^k)+1)
populationCount' bv = dtfold (Proxy @IIndex)
                             fromIntegral
                             (\_ x y -> add x y)
                             (bv2v bv)

And we can test that it works:

>>> :t populationCount' (7 :: BitVector 16)
populationCount' (7 :: BitVector 16) :: Index 17
>>> populationCount' (7 :: BitVector 16)
3

Some final remarks:

  • By using dtfold instead of fold, we had to restrict our BitVector argument to have bit-width that is a power of 2.
  • Even though our original populationCount function specified a structure where all adders had the same width. Most VHDL/(System)Verilog synthesis tools will create a more efficient circuit, i.e. one where the adders have an increasing bit-width for every layer, from the VHDL/(System)Verilog produced by the Clash compiler.

NB: The depth, or delay, of the structure produced by "dtfold m f g xs" is O(log_2(length xs)).

lengthS :: KnownNat n => Vec n a -> SNat n Source #

Length of a Vector as an SNat value

indicesI :: KnownNat n => Vec n (Index n) Source #

Generate a vector of indices, where the length of the vector is determined by the context.

>>> indicesI :: Vec 4 (Index 4)
0 :> 1 :> 2 :> 3 :> Nil

takeI :: KnownNat m => Vec (m + n) a -> Vec m a Source #

"takeI xs" returns the prefix of xs as demanded by the context.

>>> takeI (1:>2:>3:>4:>5:>Nil) :: Vec 2 Int
1 :> 2 :> Nil

dropI :: KnownNat m => Vec (m + n) a -> Vec n a Source #

"dropI xs" returns the suffix of xs as demanded by the context.

>>> dropI (1:>2:>3:>4:>5:>Nil) :: Vec 2 Int
4 :> 5 :> Nil

selectI :: (1 <= s, ((s * n) + 1) <= (i + s), KnownNat n) => SNat f -> SNat s -> Vec (f + i) a -> Vec n a Source #

"selectI f s xs" selects as many elements as demanded by the context with step-size s and offset f from xs.

>>> selectI d1 d2 (1:>2:>3:>4:>5:>6:>7:>8:>Nil) :: Vec 2 Int
2 :> 4 :> Nil

splitAtI :: KnownNat m => Vec (m + n) a -> (Vec m a, Vec n a) Source #

Split a vector into two vectors where the length of the two is determined by the context.

>>> splitAtI (1:>2:>3:>7:>8:>Nil) :: (Vec 2 Int, Vec 3 Int)
(1 :> 2 :> Nil,3 :> 7 :> 8 :> Nil)

unconcat :: KnownNat n => SNat m -> Vec (n * m) a -> Vec n (Vec m a) Source #

Split a vector of (n * m) elements into a vector of "vectors of length m", where the length m is given.

>>> unconcat d4 (1:>2:>3:>4:>5:>6:>7:>8:>9:>10:>11:>12:>Nil)
(1 :> 2 :> 3 :> 4 :> Nil) :> (5 :> 6 :> 7 :> 8 :> Nil) :> (9 :> 10 :> 11 :> 12 :> Nil) :> Nil

unconcatI :: (KnownNat n, KnownNat m) => Vec (n * m) a -> Vec n (Vec m a) Source #

Split a vector of (n * m) elements into a vector of "vectors of length m", where the length m is determined by the context.

>>> unconcatI (1:>2:>3:>4:>5:>6:>7:>8:>9:>10:>11:>12:>Nil) :: Vec 2 (Vec 6 Int)
(1 :> 2 :> 3 :> 4 :> 5 :> 6 :> Nil) :> (7 :> 8 :> 9 :> 10 :> 11 :> 12 :> Nil) :> Nil

generateI :: KnownNat n => (a -> a) -> a -> Vec n a Source #

"generateI f x" returns a vector with n repeated applications of f to x, where n is determined by the context.

generateI f x :: Vec 3 a == (f x :> f (f x) :> f (f (f x)) :> Nil)
>>> generateI (+1) 1 :: Vec 3 Int
2 :> 3 :> 4 :> Nil

"generateI f z" corresponds to the following circuit layout:

unfoldrI :: KnownNat n => (s -> (a, s)) -> s -> Vec n a Source #

"unfoldrI f s" builds a vector from a seed value s, where every element a is created by successive calls of f on s; the length of the vector is inferred from the context. Unlike unfoldr from Data.List the generating function f cannot dictate the length of the resulting vector, it must be statically known.

a simple use of unfoldrI:

>>> unfoldrI (\s -> (s,s-1)) 10 :: Vec 10 Int
10 :> 9 :> 8 :> 7 :> 6 :> 5 :> 4 :> 3 :> 2 :> 1 :> Nil

listToVecTH :: Lift a => [a] -> ExpQ Source #

Create a vector literal from a list literal.

$(listToVecTH [1::Signed 8,2,3,4,5]) == (8:>2:>3:>4:>5:>Nil) :: Vec 5 (Signed 8)
>>> [1 :: Signed 8,2,3,4,5]
[1,2,3,4,5]
>>> $(listToVecTH [1::Signed 8,2,3,4,5])
1 :> 2 :> 3 :> 4 :> 5 :> Nil

(+>>) :: forall n a. a -> Vec n a -> Vec n a infixr 4 Source #

Add an element to the head of a vector, and extract all but the last element.

>>> 1 +>> (3:>4:>5:>Nil)
1 :> 3 :> 4 :> Nil
>>> 1 +>> Nil
Nil

(<<+) :: Vec n a -> a -> Vec n a infixl 4 Source #

Add an element to the tail of a vector, and extract all but the first element.

>>> (3:>4:>5:>Nil) <<+ 1
4 :> 5 :> 1 :> Nil
>>> Nil <<+ 1
Nil

shiftInAt0 Source #

Arguments

:: KnownNat n 
=> Vec n a

The old vector

-> Vec m a

The elements to shift in at the head

-> (Vec n a, Vec m a)

(The new vector, shifted out elements)

Shift in elements to the head of a vector, bumping out elements at the tail. The result is a tuple containing:

  • The new vector
  • The shifted out elements
>>> shiftInAt0 (1 :> 2 :> 3 :> 4 :> Nil) ((-1) :> 0 :> Nil)
(-1 :> 0 :> 1 :> 2 :> Nil,3 :> 4 :> Nil)
>>> shiftInAt0 (1 :> Nil) ((-1) :> 0 :> Nil)
(-1 :> Nil,0 :> 1 :> Nil)

shiftInAtN Source #

Arguments

:: KnownNat m 
=> Vec n a

The old vector

-> Vec m a

The elements to shift in at the tail

-> (Vec n a, Vec m a)

(The new vector, shifted out elements)

Shift in element to the tail of a vector, bumping out elements at the head. The result is a tuple containing:

  • The new vector
  • The shifted out elements
>>> shiftInAtN (1 :> 2 :> 3 :> 4 :> Nil) (5 :> 6 :> Nil)
(3 :> 4 :> 5 :> 6 :> Nil,1 :> 2 :> Nil)
>>> shiftInAtN (1 :> Nil) (2 :> 3 :> Nil)
(3 :> Nil,1 :> 2 :> Nil)

shiftOutFrom0 Source #

Arguments

:: (Default a, KnownNat m) 
=> SNat m

m, the number of elements to shift out

-> Vec (m + n) a

The old vector

-> (Vec (m + n) a, Vec m a)

(The new vector, shifted out elements)

Shift m elements out from the head of a vector, filling up the tail with Default values. The result is a tuple containing:

  • The new vector
  • The shifted out values
>>> shiftOutFrom0 d2 ((1 :> 2 :> 3 :> 4 :> 5 :> Nil) :: Vec 5 Integer)
(3 :> 4 :> 5 :> 0 :> 0 :> Nil,1 :> 2 :> Nil)

shiftOutFromN Source #

Arguments

:: (Default a, KnownNat n) 
=> SNat m

m, the number of elements to shift out

-> Vec (m + n) a

The old vector

-> (Vec (m + n) a, Vec m a)

(The new vector, shifted out elements)

Shift m elements out from the tail of a vector, filling up the head with Default values. The result is a tuple containing:

  • The new vector
  • The shifted out values
>>> shiftOutFromN d2 ((1 :> 2 :> 3 :> 4 :> 5 :> Nil) :: Vec 5 Integer)
(0 :> 0 :> 1 :> 2 :> 3 :> Nil,4 :> 5 :> Nil)

permute Source #

Arguments

:: (Enum i, KnownNat n, KnownNat m) 
=> (a -> a -> a)

Combination function, f

-> Vec n a

Default values, def

-> Vec m i

Index mapping, is

-> Vec (m + k) a

Vector to be permuted, xs

-> Vec n a 

Forward permutation specified by an index mapping, ix. The result vector is initialized by the given defaults, def, and an further values that are permuted into the result are added to the current value using the given combination function, f.

The combination function must be associative and commutative.

scatter Source #

Arguments

:: (Enum i, KnownNat n, KnownNat m) 
=> Vec n a

Default values, def

-> Vec m i

Index mapping, is

-> Vec (m + k) a

Vector to be scattered, xs

-> Vec n a 

Copy elements from the source vector, xs, to the destination vector according to an index mapping is. This is a forward permute operation where a to vector encodes an input to output index mapping. Output elements for indices that are not mapped assume the value in the default vector def.

For example:

>>> let defVec = 0:>0:>0:>0:>0:>0:>0:>0:>0:>Nil
>>> let to = 1:>3:>7:>2:>5:>8:>Nil
>>> let input = 1:>9:>6:>4:>4:>2:>5:>Nil
>>> scatter defVec to input
0 :> 1 :> 4 :> 9 :> 0 :> 4 :> 0 :> 6 :> 2 :> Nil

NB: If the same index appears in the index mapping more than once, the latest mapping is chosen.

rotateLeft :: (Enum i, KnownNat n) => Vec n a -> i -> Vec n a Source #

Dynamically rotate a Vector to the left:

>>> let xs = 1 :> 2 :> 3 :> 4 :> Nil
>>> rotateLeft xs 1
2 :> 3 :> 4 :> 1 :> Nil
>>> rotateLeft xs 2
3 :> 4 :> 1 :> 2 :> Nil
>>> rotateLeft xs (-1)
4 :> 1 :> 2 :> 3 :> Nil

NB: Use rotateLeftS if you want to rotate left by a static amount.

rotateRight :: (Enum i, KnownNat n) => Vec n a -> i -> Vec n a Source #

Dynamically rotate a Vector to the right:

>>> let xs = 1 :> 2 :> 3 :> 4 :> Nil
>>> rotateRight xs 1
4 :> 1 :> 2 :> 3 :> Nil
>>> rotateRight xs 2
3 :> 4 :> 1 :> 2 :> Nil
>>> rotateRight xs (-1)
2 :> 3 :> 4 :> 1 :> Nil

NB: Use rotateRightS if you want to rotate right by a static amount.

rotateLeftS :: KnownNat n => Vec n a -> SNat d -> Vec n a Source #

Statically rotate a Vector to the left:

>>> let xs = 1 :> 2 :> 3 :> 4 :> Nil
>>> rotateLeftS xs d1
2 :> 3 :> 4 :> 1 :> Nil

NB: Use rotateLeft if you want to rotate left by a dynamic amount.

rotateRightS :: KnownNat n => Vec n a -> SNat d -> Vec n a Source #

Statically rotate a Vector to the right:

>>> let xs = 1 :> 2 :> 3 :> 4 :> Nil
>>> rotateRightS xs d1
4 :> 1 :> 2 :> 3 :> Nil

NB: Use rotateRight if you want to rotate right by a dynamic amount.

smapWithBounds :: forall k a b. KnownNat k => (forall n. (n + 1) <= k => SNat n -> a -> b) -> Vec k a -> Vec k b Source #

Extended version of smap offering an additional boundary proof to the mapped function. Note that the type checker may need additional type annotations to resolve type ambiguity for this. Thus, if the boundary constraint is not needed it is recommended to stay with smap instead.

dfold Source #

Arguments

:: forall p k a. KnownNat k 
=> Proxy (p :: TyFun Nat Type -> Type)

The motive

-> (forall n. (n + 1) <= k => SNat n -> a -> (p @@ n) -> p @@ (n + 1))

Function to fold.

NB: The SNat l is not the index (see (!!)) to the element a. SNat l is the number of elements that occur to the right of a.

-> (p @@ 0)

Initial element

-> Vec k a

Vector to fold over

-> p @@ k 

A dependently typed fold.

doctests setup

Expand
>>> :seti -fplugin GHC.TypeLits.Normalise
>>> import Data.Singletons (Apply, Proxy (..), TyFun)
>>> data Append (m :: Nat) (a :: Type) (f :: TyFun Nat Type) :: Type
>>> type instance Apply (Append m a) l = Vec (l + m) a
>>> :{
>>> append' :: forall a k m. KnownNat k => Vec k a -> Vec m a -> Vec (k + m) a
>>> append' xs ys = dfold (Proxy :: Proxy (Append m a)) (const ((:>) @a)) ys xs
>>> :}

Example usage

Using lists, we can define append (a.k.a. Data.List.++) in terms of Data.List.foldr:

>>> import qualified Data.List
>>> let append xs ys = Data.List.foldr (:) ys xs
>>> append [1,2] [3,4]
[1,2,3,4]

However, when we try to do the same for Vec, by defining append' in terms of Clash.Sized.Vector.foldr:

append' xs ys = foldr (:>) ys xs

we get a type error:

>>> let append' xs ys = foldr (:>) ys xs

<interactive>:...
    • Occurs check: cannot construct the infinite type: ... ~ ... + 1
      Expected type: a -> Vec ... a -> Vec ... a
        Actual type: a -> Vec ... a -> Vec (... + 1) a
    • In the first argument of ‘foldr’, namely ‘(:>)’
      In the expression: foldr (:>) ys xs
      In an equation for ‘append'’: append' xs ys = foldr (:>) ys xs
    • Relevant bindings include
        ys :: Vec ... a (bound at ...)
        append' :: Vec n a -> Vec ... a -> Vec ... a
          (bound at ...)

The reason is that the type of foldr is:

>>> :t foldr
foldr :: (a -> b -> b) -> b -> Vec n a -> b

While the type of (:>) is:

>>> :t (:>)
(:>) :: a -> Vec n a -> Vec (n + 1) a

We thus need a fold function that can handle the growing vector type: dfold. Compared to foldr, dfold takes an extra parameter, called the motive, that allows the folded function to have an argument and result type that depends on the current length of the vector. Using dfold, we can now correctly define append':

import Data.Singletons
import Data.Proxy

data Append (m :: Nat) (a :: Type) (f :: TyFun Nat Type) :: Type
type instance Apply (Append m a) l = Vec (l + m) a

append' xs ys = dfold (Proxy :: Proxy (Append m a)) (const (:>)) ys xs

We now see that append' has the appropriate type:

>>> :t append'
append' :: KnownNat k => Vec k a -> Vec m a -> Vec (k + m) a

And that it works:

>>> append' (1 :> 2 :> Nil) (3 :> 4 :> Nil)
1 :> 2 :> 3 :> 4 :> Nil

NB: "dfold m f z xs" creates a linear structure, which has a depth, or delay, of O(length xs). Look at dtfold for a dependently typed fold that produces a structure with a depth of O(log_2(length xs)).

vfold :: forall k a b. KnownNat k => (forall n. SNat n -> a -> Vec n b -> Vec (n + 1) b) -> Vec k a -> Vec k b Source #

Specialised version of dfold that builds a triangular computational structure.

doctests setup

Expand
>>> let compareSwap a b = if a > b then (a,b) else (b,a)
>>> let insert y xs = let (y',xs') = mapAccumL compareSwap y xs in xs' :< y'
>>> let insertionSort = vfold (const insert)

Example usage

compareSwap a b = if a > b then (a,b) else (b,a)
insert y xs     = let (y',xs') = mapAccumL compareSwap y xs in xs' :< y'
insertionSort   = vfold (const insert)

Builds a triangular structure of compare and swaps to sort a row.

>>> insertionSort (7 :> 3 :> 9 :> 1 :> Nil)
1 :> 3 :> 7 :> 9 :> Nil

The circuit layout of insertionSort, build using vfold, is:

stencil1d Source #

Arguments

:: KnownNat n 
=> SNat (stX + 1)

Windows length stX, at least size 1

-> (Vec (stX + 1) a -> b)

The stencil (function)

-> Vec ((stX + n) + 1) a 
-> Vec (n + 1) b 

1-dimensional stencil computations

"stencil1d stX f xs", where xs has stX + n elements, applies the stencil computation f on: n + 1 overlapping (1D) windows of length stX, drawn from xs. The resulting vector has n + 1 elements.

>>> let xs = (1:>2:>3:>4:>5:>6:>Nil)
>>> :t xs
xs :: Num a => Vec 6 a
>>> :t stencil1d d2 sum xs
stencil1d d2 sum xs :: Num b => Vec 5 b
>>> stencil1d d2 sum xs
3 :> 5 :> 7 :> 9 :> 11 :> Nil

stencil2d Source #

Arguments

:: (KnownNat n, KnownNat m) 
=> SNat (stY + 1)

Window hight stY, at least size 1

-> SNat (stX + 1)

Window width stX, at least size 1

-> (Vec (stY + 1) (Vec (stX + 1) a) -> b)

The stencil (function)

-> Vec ((stY + m) + 1) (Vec ((stX + n) + 1) a) 
-> Vec (m + 1) (Vec (n + 1) b) 

2-dimensional stencil computations

"stencil2d stY stX f xss", where xss is a matrix of stY + m rows of stX + n elements, applies the stencil computation f on: (m + 1) * (n + 1) overlapping (2D) windows of stY rows of stX elements, drawn from xss. The result matrix has m + 1 rows of n + 1 elements.

>>> let xss = ((1:>2:>3:>4:>Nil):>(5:>6:>7:>8:>Nil):>(9:>10:>11:>12:>Nil):>(13:>14:>15:>16:>Nil):>Nil)
>>> :t xss
xss :: Num a => Vec 4 (Vec 4 a)
>>> :t stencil2d d2 d2 (sum . map sum) xss
stencil2d d2 d2 (sum . map sum) xss :: Num a => Vec 3 (Vec 3 a)
>>> stencil2d d2 d2 (sum . map sum) xss
(14 :> 18 :> 22 :> Nil) :> (30 :> 34 :> 38 :> Nil) :> (46 :> 50 :> 54 :> Nil) :> Nil

windows1d Source #

Arguments

:: KnownNat n 
=> SNat (stX + 1)

Length of the window, at least size 1

-> Vec ((stX + n) + 1) a 
-> Vec (n + 1) (Vec (stX + 1) a) 

"windows1d stX xs", where the vector xs has stX + n elements, returns a vector of n + 1 overlapping (1D) windows of xs of length stX.

>>> let xs = (1:>2:>3:>4:>5:>6:>Nil)
>>> :t xs
xs :: Num a => Vec 6 a
>>> :t windows1d d2 xs
windows1d d2 xs :: Num a => Vec 5 (Vec 2 a)
>>> windows1d d2 xs
(1 :> 2 :> Nil) :> (2 :> 3 :> Nil) :> (3 :> 4 :> Nil) :> (4 :> 5 :> Nil) :> (5 :> 6 :> Nil) :> Nil

windows2d Source #

Arguments

:: (KnownNat n, KnownNat m) 
=> SNat (stY + 1)

Window hight stY, at least size 1

-> SNat (stX + 1)

Window width stX, at least size 1

-> Vec ((stY + m) + 1) (Vec ((stX + n) + 1) a) 
-> Vec (m + 1) (Vec (n + 1) (Vec (stY + 1) (Vec (stX + 1) a))) 

"windows2d stY stX xss", where matrix xss has stY + m rows of stX + n, returns a matrix of m+1 rows of n+1 elements. The elements of this new matrix are the overlapping (2D) windows of xss, where every window has stY rows of stX elements.

>>> let xss = ((1:>2:>3:>4:>Nil):>(5:>6:>7:>8:>Nil):>(9:>10:>11:>12:>Nil):>(13:>14:>15:>16:>Nil):>Nil)
>>> :t xss
xss :: Num a => Vec 4 (Vec 4 a)
>>> :t windows2d d2 d2 xss
windows2d d2 d2 xss :: Num a => Vec 3 (Vec 3 (Vec 2 (Vec 2 a)))
>>> windows2d d2 d2 xss
(((1 :> 2 :> Nil) :> (5 :> 6 :> Nil) :> Nil) :> ((2 :> 3 :> Nil) :> (6 :> 7 :> Nil) :> Nil) :> ((3 :> 4 :> Nil) :> (7 :> 8 :> Nil) :> Nil) :> Nil) :> (((5 :> 6 :> Nil) :> (9 :> 10 :> Nil) :> Nil) :> ((6 :> 7 :> Nil) :> (10 :> 11 :> Nil) :> Nil) :> ((7 :> 8 :> Nil) :> (11 :> 12 :> Nil) :> Nil) :> Nil) :> (((9 :> 10 :> Nil) :> (13 :> 14 :> Nil) :> Nil) :> ((10 :> 11 :> Nil) :> (14 :> 15 :> Nil) :> Nil) :> ((11 :> 12 :> Nil) :> (15 :> 16 :> Nil) :> Nil) :> Nil) :> Nil

bv2v :: KnownNat n => BitVector n -> Vec n Bit Source #

Convert a BitVector to a Vec of Bits.

>>> let x = 6 :: BitVector 8
>>> x
0b0000_0110
>>> bv2v x
0 :> 0 :> 0 :> 0 :> 0 :> 1 :> 1 :> 0 :> Nil

v2bv :: KnownNat n => Vec n Bit -> BitVector n Source #

Convert a Vec of Bits to a BitVector.

>>> let x = (0:>0:>0:>1:>0:>0:>1:>0:>Nil) :: Vec 8 Bit
>>> x
0 :> 0 :> 0 :> 1 :> 0 :> 0 :> 1 :> 0 :> Nil
>>> v2bv x
0b0001_0010

asNatProxy :: Vec n a -> Proxy n Source #

Vector as a Proxy for Nat

seqV :: KnownNat n => Vec n a -> b -> b infixr 0 Source #

Evaluate all elements of a vector to WHNF, returning the second argument

forceV :: KnownNat n => Vec n a -> Vec n a Source #

Evaluate all elements of a vector to WHNF

seqVX :: KnownNat n => Vec n a -> b -> b infixr 0 Source #

Evaluate all elements of a vector to WHNF, returning the second argument. Does not propagate XExceptions.

forceVX :: KnownNat n => Vec n a -> Vec n a Source #

Evaluate all elements of a vector to WHNF. Does not propagate XExceptions.

concatBitVector# :: forall n m. (KnownNat n, KnownNat m) => Vec n (BitVector m) -> BitVector (n * m) Source #

unconcatBitVector# :: forall n m. (KnownNat n, KnownNat m) => BitVector (n * m) -> Vec n (BitVector m) Source #

Perfect depth trees

Annotations

Generics type-classes

class Generic a #

Representable types of kind *. This class is derivable in GHC with the DeriveGeneric flag on.

A Generic instance must satisfy the following laws:

from . toid
to . fromid

Minimal complete definition

from, to

Instances

Instances details
Generic All 
Instance details

Defined in Data.Semigroup.Internal

Associated Types

type Rep All :: Type -> Type #

Methods

from :: All -> Rep All x #

to :: Rep All x -> All #

Generic Any 
Instance details

Defined in Data.Semigroup.Internal

Associated Types

type Rep Any :: Type -> Type #

Methods

from :: Any -> Rep Any x #

to :: Rep Any x -> Any #

Generic Version 
Instance details

Defined in Data.Version

Associated Types

type Rep Version :: Type -> Type #

Methods

from :: Version -> Rep Version x #

to :: Rep Version x -> Version #

Generic Void 
Instance details

Defined in GHC.Generics

Associated Types

type Rep Void :: Type -> Type #

Methods

from :: Void -> Rep Void x #

to :: Rep Void x -> Void #

Generic Fingerprint 
Instance details

Defined in GHC.Generics

Associated Types

type Rep Fingerprint :: Type -> Type #

Generic Associativity 
Instance details

Defined in GHC.Generics

Associated Types

type Rep Associativity :: Type -> Type #

Generic DecidedStrictness 
Instance details

Defined in GHC.Generics

Associated Types

type Rep DecidedStrictness :: Type -> Type #

Generic Fixity 
Instance details

Defined in GHC.Generics

Associated Types

type Rep Fixity :: Type -> Type #

Methods

from :: Fixity -> Rep Fixity x #

to :: Rep Fixity x -> Fixity #

Generic SourceStrictness 
Instance details

Defined in GHC.Generics

Associated Types

type Rep SourceStrictness :: Type -> Type #

Generic SourceUnpackedness 
Instance details

Defined in GHC.Generics

Associated Types

type Rep SourceUnpackedness :: Type -> Type #

Generic ExitCode 
Instance details

Defined in GHC.IO.Exception

Associated Types

type Rep ExitCode :: Type -> Type #

Methods

from :: ExitCode -> Rep ExitCode x #

to :: Rep ExitCode x -> ExitCode #

Generic CCFlags 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep CCFlags :: Type -> Type #

Methods

from :: CCFlags -> Rep CCFlags x #

to :: Rep CCFlags x -> CCFlags #

Generic ConcFlags 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep ConcFlags :: Type -> Type #

Generic DebugFlags 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep DebugFlags :: Type -> Type #

Generic DoCostCentres 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep DoCostCentres :: Type -> Type #

Generic DoHeapProfile 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep DoHeapProfile :: Type -> Type #

Generic DoTrace 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep DoTrace :: Type -> Type #

Methods

from :: DoTrace -> Rep DoTrace x #

to :: Rep DoTrace x -> DoTrace #

Generic GCFlags 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep GCFlags :: Type -> Type #

Methods

from :: GCFlags -> Rep GCFlags x #

to :: Rep GCFlags x -> GCFlags #

Generic GiveGCStats 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep GiveGCStats :: Type -> Type #

Generic MiscFlags 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep MiscFlags :: Type -> Type #

Generic ParFlags 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep ParFlags :: Type -> Type #

Methods

from :: ParFlags -> Rep ParFlags x #

to :: Rep ParFlags x -> ParFlags #

Generic ProfFlags 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep ProfFlags :: Type -> Type #

Generic RTSFlags 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep RTSFlags :: Type -> Type #

Methods

from :: RTSFlags -> Rep RTSFlags x #

to :: Rep RTSFlags x -> RTSFlags #

Generic TickyFlags 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep TickyFlags :: Type -> Type #

Generic TraceFlags 
Instance details

Defined in GHC.RTS.Flags

Associated Types

type Rep TraceFlags :: Type -> Type #

Generic SrcLoc 
Instance details

Defined in GHC.Generics

Associated Types

type Rep SrcLoc :: Type -> Type #

Methods

from :: SrcLoc -> Rep SrcLoc x #

to :: Rep SrcLoc x -> SrcLoc #

Generic GCDetails 
Instance details

Defined in GHC.Stats

Associated Types

type Rep GCDetails :: Type -> Type #

Generic RTSStats 
Instance details

Defined in GHC.Stats

Associated Types

type Rep RTSStats :: Type -> Type #

Methods

from :: RTSStats -> Rep RTSStats x #

to :: Rep RTSStats x -> RTSStats #

Generic GeneralCategory 
Instance details

Defined in GHC.Generics

Associated Types

type Rep GeneralCategory :: Type -> Type #

Generic ConstrRepr Source # 
Instance details

Defined in Clash.Annotations.BitRepresentation

Associated Types

type Rep ConstrRepr :: Type -> Type #

Generic DataReprAnn Source # 
Instance details

Defined in Clash.Annotations.BitRepresentation

Associated Types

type Rep DataReprAnn :: Type -> Type #

Generic ConstrRepr' Source # 
Instance details

Defined in Clash.Annotations.BitRepresentation.Internal

Associated Types

type Rep ConstrRepr' :: Type -> Type #

Generic DataRepr' Source # 
Instance details

Defined in Clash.Annotations.BitRepresentation.Internal

Associated Types

type Rep DataRepr' :: Type -> Type #

Generic Type' Source # 
Instance details

Defined in Clash.Annotations.BitRepresentation.Internal

Associated Types

type Rep Type' :: Type -> Type #

Methods

from :: Type' -> Rep Type' x #

to :: Rep Type' x -> Type' #

Generic HDL Source # 
Instance details

Defined in Clash.Annotations.Primitive

Associated Types

type Rep HDL :: Type -> Type #

Methods

from :: HDL -> Rep HDL x #

to :: Rep HDL x -> HDL #

Generic Primitive Source # 
Instance details

Defined in Clash.Annotations.Primitive

Associated Types

type Rep Primitive :: Type -> Type #

Generic PrimitiveWarning Source # 
Instance details

Defined in Clash.Annotations.Primitive

Associated Types

type Rep PrimitiveWarning :: Type -> Type #

Generic PortName Source # 
Instance details

Defined in Clash.Annotations.TopEntity

Associated Types

type Rep PortName :: Type -> Type #

Methods

from :: PortName -> Rep PortName x #

to :: Rep PortName x -> PortName #

Generic TopEntity Source # 
Instance details

Defined in Clash.Annotations.TopEntity

Associated Types

type Rep TopEntity :: Type -> Type #

Generic RxReg Source # 
Instance details

Defined in Clash.Examples.Internal

Associated Types

type Rep RxReg :: Type -> Type #

Methods

from :: RxReg -> Rep RxReg x #

to :: Rep RxReg x -> RxReg #

Generic TxReg Source # 
Instance details

Defined in Clash.Examples.Internal

Associated Types

type Rep TxReg :: Type -> Type #

Methods

from :: TxReg -> Rep TxReg x #

to :: Rep TxReg x -> TxReg #

Generic ActiveEdge Source # 
Instance details

Defined in Clash.Signal.Internal

Associated Types

type Rep ActiveEdge :: Type -> Type #

Generic ClockAB Source # 
Instance details

Defined in Clash.Signal.Internal

Associated Types

type Rep ClockAB :: Type -> Type #

Methods

from :: ClockAB -> Rep ClockAB x #

to :: Rep ClockAB x -> ClockAB #

Generic Femtoseconds Source # 
Instance details

Defined in Clash.Signal.Internal

Associated Types

type Rep Femtoseconds :: Type -> Type #

Generic InitBehavior Source # 
Instance details

Defined in Clash.Signal.Internal

Associated Types

type Rep InitBehavior :: Type -> Type #

Generic ResetKind Source # 
Instance details

Defined in Clash.Signal.Internal

Associated Types

type Rep ResetKind :: Type -> Type #

Generic ResetPolarity Source # 
Instance details

Defined in Clash.Signal.Internal

Associated Types

type Rep ResetPolarity :: Type -> Type #

Generic VDomainConfiguration Source # 
Instance details

Defined in Clash.Signal.Internal

Associated Types

type Rep VDomainConfiguration :: Type -> Type #

Generic Bit Source # 
Instance details

Defined in Clash.Sized.Internal.BitVector

Associated Types

type Rep Bit :: Type -> Type #

Methods

from :: Bit -> Rep Bit x #

to :: Rep Bit x -> Bit #

Generic OsChar 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Associated Types

type Rep OsChar :: Type -> Type #

Methods

from :: OsChar -> Rep OsChar x #

to :: Rep OsChar x -> OsChar #

Generic OsString 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Associated Types

type Rep OsString :: Type -> Type #

Methods

from :: OsString -> Rep OsString x #

to :: Rep OsString x -> OsString #

Generic PosixChar 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Associated Types

type Rep PosixChar :: Type -> Type #

Generic PosixString 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Associated Types

type Rep PosixString :: Type -> Type #

Generic WindowsChar 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Associated Types

type Rep WindowsChar :: Type -> Type #

Generic WindowsString 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Associated Types

type Rep WindowsString :: Type -> Type #

Generic ForeignSrcLang 
Instance details

Defined in GHC.ForeignSrcLang.Type

Associated Types

type Rep ForeignSrcLang :: Type -> Type #

Generic Extension 
Instance details

Defined in GHC.LanguageExtensions.Type

Associated Types

type Rep Extension :: Type -> Type #

Generic Ordering 
Instance details

Defined in GHC.Generics

Associated Types

type Rep Ordering :: Type -> Type #

Methods

from :: Ordering -> Rep Ordering x #

to :: Rep Ordering x -> Ordering #

Generic Half 
Instance details

Defined in Numeric.Half.Internal

Associated Types

type Rep Half :: Type -> Type #

Methods

from :: Half -> Rep Half x #

to :: Rep Half x -> Half #

Generic SrcLoc 
Instance details

Defined in Language.Haskell.Exts.SrcLoc

Associated Types

type Rep SrcLoc :: Type -> Type #

Methods

from :: SrcLoc -> Rep SrcLoc x #

to :: Rep SrcLoc x -> SrcLoc #

Generic SrcSpan 
Instance details

Defined in Language.Haskell.Exts.SrcLoc

Associated Types

type Rep SrcSpan :: Type -> Type #

Methods

from :: SrcSpan -> Rep SrcSpan x #

to :: Rep SrcSpan x -> SrcSpan #

Generic SrcSpanInfo 
Instance details

Defined in Language.Haskell.Exts.SrcLoc

Associated Types

type Rep SrcSpanInfo :: Type -> Type #

Generic Boxed 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep Boxed :: Type -> Type #

Methods

from :: Boxed -> Rep Boxed x #

to :: Rep Boxed x -> Boxed #

Generic Tool 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep Tool :: Type -> Type #

Methods

from :: Tool -> Rep Tool x #

to :: Rep Tool x -> Tool #

Generic OsChar 
Instance details

Defined in System.OsString.Internal.Types

Associated Types

type Rep OsChar :: Type -> Type #

Methods

from :: OsChar -> Rep OsChar x #

to :: Rep OsChar x -> OsChar #

Generic OsString 
Instance details

Defined in System.OsString.Internal.Types

Associated Types

type Rep OsString :: Type -> Type #

Methods

from :: OsString -> Rep OsString x #

to :: Rep OsString x -> OsString #

Generic PosixChar 
Instance details

Defined in System.OsString.Internal.Types

Associated Types

type Rep PosixChar :: Type -> Type #

Generic PosixString 
Instance details

Defined in System.OsString.Internal.Types

Associated Types

type Rep PosixString :: Type -> Type #

Generic WindowsChar 
Instance details

Defined in System.OsString.Internal.Types

Associated Types

type Rep WindowsChar :: Type -> Type #

Generic WindowsString 
Instance details

Defined in System.OsString.Internal.Types

Associated Types

type Rep WindowsString :: Type -> Type #

Generic Mode 
Instance details

Defined in Text.PrettyPrint.Annotated.HughesPJ

Associated Types

type Rep Mode :: Type -> Type #

Methods

from :: Mode -> Rep Mode x #

to :: Rep Mode x -> Mode #

Generic Style 
Instance details

Defined in Text.PrettyPrint.Annotated.HughesPJ

Associated Types

type Rep Style :: Type -> Type #

Methods

from :: Style -> Rep Style x #

to :: Rep Style x -> Style #

Generic TextDetails 
Instance details

Defined in Text.PrettyPrint.Annotated.HughesPJ

Associated Types

type Rep TextDetails :: Type -> Type #

Generic Doc 
Instance details

Defined in Text.PrettyPrint.HughesPJ

Associated Types

type Rep Doc :: Type -> Type #

Methods

from :: Doc -> Rep Doc x #

to :: Rep Doc x -> Doc #

Generic AnnLookup 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep AnnLookup :: Type -> Type #

Generic AnnTarget 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep AnnTarget :: Type -> Type #

Generic Bang 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Bang :: Type -> Type #

Methods

from :: Bang -> Rep Bang x #

to :: Rep Bang x -> Bang #

Generic Body 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Body :: Type -> Type #

Methods

from :: Body -> Rep Body x #

to :: Rep Body x -> Body #

Generic Bytes 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Bytes :: Type -> Type #

Methods

from :: Bytes -> Rep Bytes x #

to :: Rep Bytes x -> Bytes #

Generic Callconv 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Callconv :: Type -> Type #

Methods

from :: Callconv -> Rep Callconv x #

to :: Rep Callconv x -> Callconv #

Generic Clause 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Clause :: Type -> Type #

Methods

from :: Clause -> Rep Clause x #

to :: Rep Clause x -> Clause #

Generic Con 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Con :: Type -> Type #

Methods

from :: Con -> Rep Con x #

to :: Rep Con x -> Con #

Generic Dec 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Dec :: Type -> Type #

Methods

from :: Dec -> Rep Dec x #

to :: Rep Dec x -> Dec #

Generic DecidedStrictness 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep DecidedStrictness :: Type -> Type #

Generic DerivClause 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep DerivClause :: Type -> Type #

Generic DerivStrategy 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep DerivStrategy :: Type -> Type #

Generic DocLoc 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep DocLoc :: Type -> Type #

Methods

from :: DocLoc -> Rep DocLoc x #

to :: Rep DocLoc x -> DocLoc #

Generic Exp 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Exp :: Type -> Type #

Methods

from :: Exp -> Rep Exp x #

to :: Rep Exp x -> Exp #

Generic FamilyResultSig 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep FamilyResultSig :: Type -> Type #

Generic Fixity 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Fixity :: Type -> Type #

Methods

from :: Fixity -> Rep Fixity x #

to :: Rep Fixity x -> Fixity #

Generic FixityDirection 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep FixityDirection :: Type -> Type #

Generic Foreign 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Foreign :: Type -> Type #

Methods

from :: Foreign -> Rep Foreign x #

to :: Rep Foreign x -> Foreign #

Generic FunDep 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep FunDep :: Type -> Type #

Methods

from :: FunDep -> Rep FunDep x #

to :: Rep FunDep x -> FunDep #

Generic Guard 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Guard :: Type -> Type #

Methods

from :: Guard -> Rep Guard x #

to :: Rep Guard x -> Guard #

Generic Info 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Info :: Type -> Type #

Methods

from :: Info -> Rep Info x #

to :: Rep Info x -> Info #

Generic InjectivityAnn 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep InjectivityAnn :: Type -> Type #

Generic Inline 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Inline :: Type -> Type #

Methods

from :: Inline -> Rep Inline x #

to :: Rep Inline x -> Inline #

Generic Lit 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Lit :: Type -> Type #

Methods

from :: Lit -> Rep Lit x #

to :: Rep Lit x -> Lit #

Generic Loc 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Loc :: Type -> Type #

Methods

from :: Loc -> Rep Loc x #

to :: Rep Loc x -> Loc #

Generic Match 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Match :: Type -> Type #

Methods

from :: Match -> Rep Match x #

to :: Rep Match x -> Match #

Generic ModName 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep ModName :: Type -> Type #

Methods

from :: ModName -> Rep ModName x #

to :: Rep ModName x -> ModName #

Generic Module 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Module :: Type -> Type #

Methods

from :: Module -> Rep Module x #

to :: Rep Module x -> Module #

Generic ModuleInfo 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep ModuleInfo :: Type -> Type #

Generic Name 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Name :: Type -> Type #

Methods

from :: Name -> Rep Name x #

to :: Rep Name x -> Name #

Generic NameFlavour 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep NameFlavour :: Type -> Type #

Generic NameSpace 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep NameSpace :: Type -> Type #

Generic OccName 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep OccName :: Type -> Type #

Methods

from :: OccName -> Rep OccName x #

to :: Rep OccName x -> OccName #

Generic Overlap 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Overlap :: Type -> Type #

Methods

from :: Overlap -> Rep Overlap x #

to :: Rep Overlap x -> Overlap #

Generic Pat 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Pat :: Type -> Type #

Methods

from :: Pat -> Rep Pat x #

to :: Rep Pat x -> Pat #

Generic PatSynArgs 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep PatSynArgs :: Type -> Type #

Generic PatSynDir 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep PatSynDir :: Type -> Type #

Generic Phases 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Phases :: Type -> Type #

Methods

from :: Phases -> Rep Phases x #

to :: Rep Phases x -> Phases #

Generic PkgName 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep PkgName :: Type -> Type #

Methods

from :: PkgName -> Rep PkgName x #

to :: Rep PkgName x -> PkgName #

Generic Pragma 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Pragma :: Type -> Type #

Methods

from :: Pragma -> Rep Pragma x #

to :: Rep Pragma x -> Pragma #

Generic Range 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Range :: Type -> Type #

Methods

from :: Range -> Rep Range x #

to :: Rep Range x -> Range #

Generic Role 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Role :: Type -> Type #

Methods

from :: Role -> Rep Role x #

to :: Rep Role x -> Role #

Generic RuleBndr 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep RuleBndr :: Type -> Type #

Methods

from :: RuleBndr -> Rep RuleBndr x #

to :: Rep RuleBndr x -> RuleBndr #

Generic RuleMatch 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep RuleMatch :: Type -> Type #

Generic Safety 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Safety :: Type -> Type #

Methods

from :: Safety -> Rep Safety x #

to :: Rep Safety x -> Safety #

Generic SourceStrictness 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep SourceStrictness :: Type -> Type #

Generic SourceUnpackedness 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep SourceUnpackedness :: Type -> Type #

Generic Specificity 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Specificity :: Type -> Type #

Generic Stmt 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Stmt :: Type -> Type #

Methods

from :: Stmt -> Rep Stmt x #

to :: Rep Stmt x -> Stmt #

Generic TyLit 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep TyLit :: Type -> Type #

Methods

from :: TyLit -> Rep TyLit x #

to :: Rep TyLit x -> TyLit #

Generic TySynEqn 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep TySynEqn :: Type -> Type #

Methods

from :: TySynEqn -> Rep TySynEqn x #

to :: Rep TySynEqn x -> TySynEqn #

Generic Type 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep Type :: Type -> Type #

Methods

from :: Type -> Rep Type x #

to :: Rep Type x -> Type #

Generic TypeFamilyHead 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep TypeFamilyHead :: Type -> Type #

Generic ConstructorInfo 
Instance details

Defined in Language.Haskell.TH.Datatype

Associated Types

type Rep ConstructorInfo :: Type -> Type #

Generic ConstructorVariant 
Instance details

Defined in Language.Haskell.TH.Datatype

Associated Types

type Rep ConstructorVariant :: Type -> Type #

Generic DatatypeInfo 
Instance details

Defined in Language.Haskell.TH.Datatype

Associated Types

type Rep DatatypeInfo :: Type -> Type #

Generic DatatypeVariant 
Instance details

Defined in Language.Haskell.TH.Datatype

Associated Types

type Rep DatatypeVariant :: Type -> Type #

Generic FieldStrictness 
Instance details

Defined in Language.Haskell.TH.Datatype

Associated Types

type Rep FieldStrictness :: Type -> Type #

Generic Strictness 
Instance details

Defined in Language.Haskell.TH.Datatype

Associated Types

type Rep Strictness :: Type -> Type #

Generic Unpackedness 
Instance details

Defined in Language.Haskell.TH.Datatype

Associated Types

type Rep Unpackedness :: Type -> Type #

Generic () 
Instance details

Defined in GHC.Generics

Associated Types

type Rep () :: Type -> Type #

Methods

from :: () -> Rep () x #

to :: Rep () x -> () #

Generic Bool 
Instance details

Defined in GHC.Generics

Associated Types

type Rep Bool :: Type -> Type #

Methods

from :: Bool -> Rep Bool x #

to :: Rep Bool x -> Bool #

Generic (ZipList a) 
Instance details

Defined in Control.Applicative

Associated Types

type Rep (ZipList a) :: Type -> Type #

Methods

from :: ZipList a -> Rep (ZipList a) x #

to :: Rep (ZipList a) x -> ZipList a #

Generic (Complex a) 
Instance details

Defined in Data.Complex

Associated Types

type Rep (Complex a) :: Type -> Type #

Methods

from :: Complex a -> Rep (Complex a) x #

to :: Rep (Complex a) x -> Complex a #

Generic (Identity a) 
Instance details

Defined in Data.Functor.Identity

Associated Types

type Rep (Identity a) :: Type -> Type #

Methods

from :: Identity a -> Rep (Identity a) x #

to :: Rep (Identity a) x -> Identity a #

Generic (First a) 
Instance details

Defined in Data.Monoid

Associated Types

type Rep (First a) :: Type -> Type #

Methods

from :: First a -> Rep (First a) x #

to :: Rep (First a) x -> First a #

Generic (Last a) 
Instance details

Defined in Data.Monoid

Associated Types

type Rep (Last a) :: Type -> Type #

Methods

from :: Last a -> Rep (Last a) x #

to :: Rep (Last a) x -> Last a #

Generic (Down a) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (Down a) :: Type -> Type #

Methods

from :: Down a -> Rep (Down a) x #

to :: Rep (Down a) x -> Down a #

Generic (First a) 
Instance details

Defined in Data.Semigroup

Associated Types

type Rep (First a) :: Type -> Type #

Methods

from :: First a -> Rep (First a) x #

to :: Rep (First a) x -> First a #

Generic (Last a) 
Instance details

Defined in Data.Semigroup

Associated Types

type Rep (Last a) :: Type -> Type #

Methods

from :: Last a -> Rep (Last a) x #

to :: Rep (Last a) x -> Last a #

Generic (Max a) 
Instance details

Defined in Data.Semigroup

Associated Types

type Rep (Max a) :: Type -> Type #

Methods

from :: Max a -> Rep (Max a) x #

to :: Rep (Max a) x -> Max a #

Generic (Min a) 
Instance details

Defined in Data.Semigroup

Associated Types

type Rep (Min a) :: Type -> Type #

Methods

from :: Min a -> Rep (Min a) x #

to :: Rep (Min a) x -> Min a #

Generic (WrappedMonoid m) 
Instance details

Defined in Data.Semigroup

Associated Types

type Rep (WrappedMonoid m) :: Type -> Type #

Generic (Dual a) 
Instance details

Defined in Data.Semigroup.Internal

Associated Types

type Rep (Dual a) :: Type -> Type #

Methods

from :: Dual a -> Rep (Dual a) x #

to :: Rep (Dual a) x -> Dual a #

Generic (Endo a) 
Instance details

Defined in Data.Semigroup.Internal

Associated Types

type Rep (Endo a) :: Type -> Type #

Methods

from :: Endo a -> Rep (Endo a) x #

to :: Rep (Endo a) x -> Endo a #

Generic (Product a) 
Instance details

Defined in Data.Semigroup.Internal

Associated Types

type Rep (Product a) :: Type -> Type #

Methods

from :: Product a -> Rep (Product a) x #

to :: Rep (Product a) x -> Product a #

Generic (Sum a) 
Instance details

Defined in Data.Semigroup.Internal

Associated Types

type Rep (Sum a) :: Type -> Type #

Methods

from :: Sum a -> Rep (Sum a) x #

to :: Rep (Sum a) x -> Sum a #

Generic (NonEmpty a) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (NonEmpty a) :: Type -> Type #

Methods

from :: NonEmpty a -> Rep (NonEmpty a) x #

to :: Rep (NonEmpty a) x -> NonEmpty a #

Generic (Par1 p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (Par1 p) :: Type -> Type #

Methods

from :: Par1 p -> Rep (Par1 p) x #

to :: Rep (Par1 p) x -> Par1 p #

Generic (PrimitiveGuard a) Source # 
Instance details

Defined in Clash.Annotations.Primitive

Associated Types

type Rep (PrimitiveGuard a) :: Type -> Type #

Generic (Attr a) Source # 
Instance details

Defined in Clash.Annotations.SynthesisAttributes

Associated Types

type Rep (Attr a) :: Type -> Type #

Methods

from :: Attr a -> Rep (Attr a) x #

to :: Rep (Attr a) x -> Attr a #

Generic (SimOnly a) Source # 
Instance details

Defined in Clash.Magic

Associated Types

type Rep (SimOnly a) :: Type -> Type #

Methods

from :: SimOnly a -> Rep (SimOnly a) x #

to :: Rep (SimOnly a) x -> SimOnly a #

Generic (Overflowing a) Source # 
Instance details

Defined in Clash.Num.Overflowing

Associated Types

type Rep (Overflowing a) :: Type -> Type #

Methods

from :: Overflowing a -> Rep (Overflowing a) x #

to :: Rep (Overflowing a) x -> Overflowing a #

Generic (BitVector n) Source # 
Instance details

Defined in Clash.Sized.Internal.BitVector

Associated Types

type Rep (BitVector n) :: Type -> Type #

Methods

from :: BitVector n -> Rep (BitVector n) x #

to :: Rep (BitVector n) x -> BitVector n #

Generic (Index n) Source # 
Instance details

Defined in Clash.Sized.Internal.Index

Associated Types

type Rep (Index n) :: Type -> Type #

Methods

from :: Index n -> Rep (Index n) x #

to :: Rep (Index n) x -> Index n #

Generic (Signed n) Source # 
Instance details

Defined in Clash.Sized.Internal.Signed

Associated Types

type Rep (Signed n) :: Type -> Type #

Methods

from :: Signed n -> Rep (Signed n) x #

to :: Rep (Signed n) x -> Signed n #

Generic (Unsigned n) Source # 
Instance details

Defined in Clash.Sized.Internal.Unsigned

Associated Types

type Rep (Unsigned n) :: Type -> Type #

Methods

from :: Unsigned n -> Rep (Unsigned n) x #

to :: Rep (Unsigned n) x -> Unsigned n #

Generic (Digit a) 
Instance details

Defined in Data.Sequence.Internal

Associated Types

type Rep (Digit a) :: Type -> Type #

Methods

from :: Digit a -> Rep (Digit a) x #

to :: Rep (Digit a) x -> Digit a #

Generic (Elem a) 
Instance details

Defined in Data.Sequence.Internal

Associated Types

type Rep (Elem a) :: Type -> Type #

Methods

from :: Elem a -> Rep (Elem a) x #

to :: Rep (Elem a) x -> Elem a #

Generic (FingerTree a) 
Instance details

Defined in Data.Sequence.Internal

Associated Types

type Rep (FingerTree a) :: Type -> Type #

Methods

from :: FingerTree a -> Rep (FingerTree a) x #

to :: Rep (FingerTree a) x -> FingerTree a #

Generic (Node a) 
Instance details

Defined in Data.Sequence.Internal

Associated Types

type Rep (Node a) :: Type -> Type #

Methods

from :: Node a -> Rep (Node a) x #

to :: Rep (Node a) x -> Node a #

Generic (ViewL a) 
Instance details

Defined in Data.Sequence.Internal

Associated Types

type Rep (ViewL a) :: Type -> Type #

Methods

from :: ViewL a -> Rep (ViewL a) x #

to :: Rep (ViewL a) x -> ViewL a #

Generic (ViewR a) 
Instance details

Defined in Data.Sequence.Internal

Associated Types

type Rep (ViewR a) :: Type -> Type #

Methods

from :: ViewR a -> Rep (ViewR a) x #

to :: Rep (ViewR a) x -> ViewR a #

Generic (Tree a) 
Instance details

Defined in Data.Tree

Associated Types

type Rep (Tree a) :: Type -> Type #

Methods

from :: Tree a -> Rep (Tree a) x #

to :: Rep (Tree a) x -> Tree a #

Generic (Fix f) 
Instance details

Defined in Data.Fix

Associated Types

type Rep (Fix f) :: Type -> Type #

Methods

from :: Fix f -> Rep (Fix f) x #

to :: Rep (Fix f) x -> Fix f #

Generic (Loc a) 
Instance details

Defined in Language.Haskell.Exts.SrcLoc

Associated Types

type Rep (Loc a) :: Type -> Type #

Methods

from :: Loc a -> Rep (Loc a) x #

to :: Rep (Loc a) x -> Loc a #

Generic (Activation l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Activation l) :: Type -> Type #

Methods

from :: Activation l -> Rep (Activation l) x #

to :: Rep (Activation l) x -> Activation l #

Generic (Alt l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Alt l) :: Type -> Type #

Methods

from :: Alt l -> Rep (Alt l) x #

to :: Rep (Alt l) x -> Alt l #

Generic (Annotation l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Annotation l) :: Type -> Type #

Methods

from :: Annotation l -> Rep (Annotation l) x #

to :: Rep (Annotation l) x -> Annotation l #

Generic (Assoc l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Assoc l) :: Type -> Type #

Methods

from :: Assoc l -> Rep (Assoc l) x #

to :: Rep (Assoc l) x -> Assoc l #

Generic (Asst l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Asst l) :: Type -> Type #

Methods

from :: Asst l -> Rep (Asst l) x #

to :: Rep (Asst l) x -> Asst l #

Generic (BangType l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (BangType l) :: Type -> Type #

Methods

from :: BangType l -> Rep (BangType l) x #

to :: Rep (BangType l) x -> BangType l #

Generic (Binds l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Binds l) :: Type -> Type #

Methods

from :: Binds l -> Rep (Binds l) x #

to :: Rep (Binds l) x -> Binds l #

Generic (BooleanFormula l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (BooleanFormula l) :: Type -> Type #

Generic (Bracket l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Bracket l) :: Type -> Type #

Methods

from :: Bracket l -> Rep (Bracket l) x #

to :: Rep (Bracket l) x -> Bracket l #

Generic (CName l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (CName l) :: Type -> Type #

Methods

from :: CName l -> Rep (CName l) x #

to :: Rep (CName l) x -> CName l #

Generic (CallConv l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (CallConv l) :: Type -> Type #

Methods

from :: CallConv l -> Rep (CallConv l) x #

to :: Rep (CallConv l) x -> CallConv l #

Generic (ClassDecl l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (ClassDecl l) :: Type -> Type #

Methods

from :: ClassDecl l -> Rep (ClassDecl l) x #

to :: Rep (ClassDecl l) x -> ClassDecl l #

Generic (ConDecl l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (ConDecl l) :: Type -> Type #

Methods

from :: ConDecl l -> Rep (ConDecl l) x #

to :: Rep (ConDecl l) x -> ConDecl l #

Generic (Context l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Context l) :: Type -> Type #

Methods

from :: Context l -> Rep (Context l) x #

to :: Rep (Context l) x -> Context l #

Generic (DataOrNew l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (DataOrNew l) :: Type -> Type #

Methods

from :: DataOrNew l -> Rep (DataOrNew l) x #

to :: Rep (DataOrNew l) x -> DataOrNew l #

Generic (Decl l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Decl l) :: Type -> Type #

Methods

from :: Decl l -> Rep (Decl l) x #

to :: Rep (Decl l) x -> Decl l #

Generic (DeclHead l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (DeclHead l) :: Type -> Type #

Methods

from :: DeclHead l -> Rep (DeclHead l) x #

to :: Rep (DeclHead l) x -> DeclHead l #

Generic (DerivStrategy l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (DerivStrategy l) :: Type -> Type #

Generic (Deriving l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Deriving l) :: Type -> Type #

Methods

from :: Deriving l -> Rep (Deriving l) x #

to :: Rep (Deriving l) x -> Deriving l #

Generic (EWildcard l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (EWildcard l) :: Type -> Type #

Methods

from :: EWildcard l -> Rep (EWildcard l) x #

to :: Rep (EWildcard l) x -> EWildcard l #

Generic (Exp l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Exp l) :: Type -> Type #

Methods

from :: Exp l -> Rep (Exp l) x #

to :: Rep (Exp l) x -> Exp l #

Generic (ExportSpec l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (ExportSpec l) :: Type -> Type #

Methods

from :: ExportSpec l -> Rep (ExportSpec l) x #

to :: Rep (ExportSpec l) x -> ExportSpec l #

Generic (ExportSpecList l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (ExportSpecList l) :: Type -> Type #

Generic (FieldDecl l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (FieldDecl l) :: Type -> Type #

Methods

from :: FieldDecl l -> Rep (FieldDecl l) x #

to :: Rep (FieldDecl l) x -> FieldDecl l #

Generic (FieldUpdate l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (FieldUpdate l) :: Type -> Type #

Methods

from :: FieldUpdate l -> Rep (FieldUpdate l) x #

to :: Rep (FieldUpdate l) x -> FieldUpdate l #

Generic (FunDep l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (FunDep l) :: Type -> Type #

Methods

from :: FunDep l -> Rep (FunDep l) x #

to :: Rep (FunDep l) x -> FunDep l #

Generic (GadtDecl l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (GadtDecl l) :: Type -> Type #

Methods

from :: GadtDecl l -> Rep (GadtDecl l) x #

to :: Rep (GadtDecl l) x -> GadtDecl l #

Generic (GuardedRhs l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (GuardedRhs l) :: Type -> Type #

Methods

from :: GuardedRhs l -> Rep (GuardedRhs l) x #

to :: Rep (GuardedRhs l) x -> GuardedRhs l #

Generic (IPBind l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (IPBind l) :: Type -> Type #

Methods

from :: IPBind l -> Rep (IPBind l) x #

to :: Rep (IPBind l) x -> IPBind l #

Generic (IPName l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (IPName l) :: Type -> Type #

Methods

from :: IPName l -> Rep (IPName l) x #

to :: Rep (IPName l) x -> IPName l #

Generic (ImportDecl l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (ImportDecl l) :: Type -> Type #

Methods

from :: ImportDecl l -> Rep (ImportDecl l) x #

to :: Rep (ImportDecl l) x -> ImportDecl l #

Generic (ImportSpec l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (ImportSpec l) :: Type -> Type #

Methods

from :: ImportSpec l -> Rep (ImportSpec l) x #

to :: Rep (ImportSpec l) x -> ImportSpec l #

Generic (ImportSpecList l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (ImportSpecList l) :: Type -> Type #

Generic (InjectivityInfo l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (InjectivityInfo l) :: Type -> Type #

Generic (InstDecl l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (InstDecl l) :: Type -> Type #

Methods

from :: InstDecl l -> Rep (InstDecl l) x #

to :: Rep (InstDecl l) x -> InstDecl l #

Generic (InstHead l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (InstHead l) :: Type -> Type #

Methods

from :: InstHead l -> Rep (InstHead l) x #

to :: Rep (InstHead l) x -> InstHead l #

Generic (InstRule l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (InstRule l) :: Type -> Type #

Methods

from :: InstRule l -> Rep (InstRule l) x #

to :: Rep (InstRule l) x -> InstRule l #

Generic (Literal l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Literal l) :: Type -> Type #

Methods

from :: Literal l -> Rep (Literal l) x #

to :: Rep (Literal l) x -> Literal l #

Generic (Match l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Match l) :: Type -> Type #

Methods

from :: Match l -> Rep (Match l) x #

to :: Rep (Match l) x -> Match l #

Generic (MaybePromotedName l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (MaybePromotedName l) :: Type -> Type #

Generic (Module l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Module l) :: Type -> Type #

Methods

from :: Module l -> Rep (Module l) x #

to :: Rep (Module l) x -> Module l #

Generic (ModuleHead l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (ModuleHead l) :: Type -> Type #

Methods

from :: ModuleHead l -> Rep (ModuleHead l) x #

to :: Rep (ModuleHead l) x -> ModuleHead l #

Generic (ModuleName l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (ModuleName l) :: Type -> Type #

Methods

from :: ModuleName l -> Rep (ModuleName l) x #

to :: Rep (ModuleName l) x -> ModuleName l #

Generic (ModulePragma l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (ModulePragma l) :: Type -> Type #

Methods

from :: ModulePragma l -> Rep (ModulePragma l) x #

to :: Rep (ModulePragma l) x -> ModulePragma l #

Generic (Name l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Name l) :: Type -> Type #

Methods

from :: Name l -> Rep (Name l) x #

to :: Rep (Name l) x -> Name l #

Generic (Namespace l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Namespace l) :: Type -> Type #

Methods

from :: Namespace l -> Rep (Namespace l) x #

to :: Rep (Namespace l) x -> Namespace l #

Generic (Op l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Op l) :: Type -> Type #

Methods

from :: Op l -> Rep (Op l) x #

to :: Rep (Op l) x -> Op l #

Generic (Overlap l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Overlap l) :: Type -> Type #

Methods

from :: Overlap l -> Rep (Overlap l) x #

to :: Rep (Overlap l) x -> Overlap l #

Generic (PXAttr l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (PXAttr l) :: Type -> Type #

Methods

from :: PXAttr l -> Rep (PXAttr l) x #

to :: Rep (PXAttr l) x -> PXAttr l #

Generic (Pat l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Pat l) :: Type -> Type #

Methods

from :: Pat l -> Rep (Pat l) x #

to :: Rep (Pat l) x -> Pat l #

Generic (PatField l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (PatField l) :: Type -> Type #

Methods

from :: PatField l -> Rep (PatField l) x #

to :: Rep (PatField l) x -> PatField l #

Generic (PatternSynDirection l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (PatternSynDirection l) :: Type -> Type #

Generic (Promoted l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Promoted l) :: Type -> Type #

Methods

from :: Promoted l -> Rep (Promoted l) x #

to :: Rep (Promoted l) x -> Promoted l #

Generic (QName l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (QName l) :: Type -> Type #

Methods

from :: QName l -> Rep (QName l) x #

to :: Rep (QName l) x -> QName l #

Generic (QOp l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (QOp l) :: Type -> Type #

Methods

from :: QOp l -> Rep (QOp l) x #

to :: Rep (QOp l) x -> QOp l #

Generic (QualConDecl l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (QualConDecl l) :: Type -> Type #

Methods

from :: QualConDecl l -> Rep (QualConDecl l) x #

to :: Rep (QualConDecl l) x -> QualConDecl l #

Generic (QualStmt l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (QualStmt l) :: Type -> Type #

Methods

from :: QualStmt l -> Rep (QualStmt l) x #

to :: Rep (QualStmt l) x -> QualStmt l #

Generic (RPat l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (RPat l) :: Type -> Type #

Methods

from :: RPat l -> Rep (RPat l) x #

to :: Rep (RPat l) x -> RPat l #

Generic (RPatOp l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (RPatOp l) :: Type -> Type #

Methods

from :: RPatOp l -> Rep (RPatOp l) x #

to :: Rep (RPatOp l) x -> RPatOp l #

Generic (ResultSig l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (ResultSig l) :: Type -> Type #

Methods

from :: ResultSig l -> Rep (ResultSig l) x #

to :: Rep (ResultSig l) x -> ResultSig l #

Generic (Rhs l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Rhs l) :: Type -> Type #

Methods

from :: Rhs l -> Rep (Rhs l) x #

to :: Rep (Rhs l) x -> Rhs l #

Generic (Role l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Role l) :: Type -> Type #

Methods

from :: Role l -> Rep (Role l) x #

to :: Rep (Role l) x -> Role l #

Generic (Rule l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Rule l) :: Type -> Type #

Methods

from :: Rule l -> Rep (Rule l) x #

to :: Rep (Rule l) x -> Rule l #

Generic (RuleVar l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (RuleVar l) :: Type -> Type #

Methods

from :: RuleVar l -> Rep (RuleVar l) x #

to :: Rep (RuleVar l) x -> RuleVar l #

Generic (Safety l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Safety l) :: Type -> Type #

Methods

from :: Safety l -> Rep (Safety l) x #

to :: Rep (Safety l) x -> Safety l #

Generic (Sign l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Sign l) :: Type -> Type #

Methods

from :: Sign l -> Rep (Sign l) x #

to :: Rep (Sign l) x -> Sign l #

Generic (SpecialCon l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (SpecialCon l) :: Type -> Type #

Methods

from :: SpecialCon l -> Rep (SpecialCon l) x #

to :: Rep (SpecialCon l) x -> SpecialCon l #

Generic (Splice l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Splice l) :: Type -> Type #

Methods

from :: Splice l -> Rep (Splice l) x #

to :: Rep (Splice l) x -> Splice l #

Generic (Stmt l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Stmt l) :: Type -> Type #

Methods

from :: Stmt l -> Rep (Stmt l) x #

to :: Rep (Stmt l) x -> Stmt l #

Generic (TyVarBind l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (TyVarBind l) :: Type -> Type #

Methods

from :: TyVarBind l -> Rep (TyVarBind l) x #

to :: Rep (TyVarBind l) x -> TyVarBind l #

Generic (Type l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Type l) :: Type -> Type #

Methods

from :: Type l -> Rep (Type l) x #

to :: Rep (Type l) x -> Type l #

Generic (TypeEqn l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (TypeEqn l) :: Type -> Type #

Methods

from :: TypeEqn l -> Rep (TypeEqn l) x #

to :: Rep (TypeEqn l) x -> TypeEqn l #

Generic (Unpackedness l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (Unpackedness l) :: Type -> Type #

Methods

from :: Unpackedness l -> Rep (Unpackedness l) x #

to :: Rep (Unpackedness l) x -> Unpackedness l #

Generic (WarningText l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (WarningText l) :: Type -> Type #

Methods

from :: WarningText l -> Rep (WarningText l) x #

to :: Rep (WarningText l) x -> WarningText l #

Generic (XAttr l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (XAttr l) :: Type -> Type #

Methods

from :: XAttr l -> Rep (XAttr l) x #

to :: Rep (XAttr l) x -> XAttr l #

Generic (XName l) 
Instance details

Defined in Language.Haskell.Exts.Syntax

Associated Types

type Rep (XName l) :: Type -> Type #

Methods

from :: XName l -> Rep (XName l) x #

to :: Rep (XName l) x -> XName l #

Generic (Doc a) 
Instance details

Defined in Text.PrettyPrint.Annotated.HughesPJ

Associated Types

type Rep (Doc a) :: Type -> Type #

Methods

from :: Doc a -> Rep (Doc a) x #

to :: Rep (Doc a) x -> Doc a #

Generic (Maybe a) 
Instance details

Defined in Data.Strict.Maybe

Associated Types

type Rep (Maybe a) :: Type -> Type #

Methods

from :: Maybe a -> Rep (Maybe a) x #

to :: Rep (Maybe a) x -> Maybe a #

Generic (TyVarBndr flag) 
Instance details

Defined in Language.Haskell.TH.Syntax

Associated Types

type Rep (TyVarBndr flag) :: Type -> Type #

Methods

from :: TyVarBndr flag -> Rep (TyVarBndr flag) x #

to :: Rep (TyVarBndr flag) x -> TyVarBndr flag #

Generic (Maybe a) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (Maybe a) :: Type -> Type #

Methods

from :: Maybe a -> Rep (Maybe a) x #

to :: Rep (Maybe a) x -> Maybe a #

Generic (a) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a) :: Type -> Type #

Methods

from :: (a) -> Rep (a) x #

to :: Rep (a) x -> (a) #

Generic [a] 
Instance details

Defined in GHC.Generics

Associated Types

type Rep [a] :: Type -> Type #

Methods

from :: [a] -> Rep [a] x #

to :: Rep [a] x -> [a] #

Generic (WrappedMonad m a) 
Instance details

Defined in Control.Applicative

Associated Types

type Rep (WrappedMonad m a) :: Type -> Type #

Methods

from :: WrappedMonad m a -> Rep (WrappedMonad m a) x #

to :: Rep (WrappedMonad m a) x -> WrappedMonad m a #

Generic (Either a b) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (Either a b) :: Type -> Type #

Methods

from :: Either a b -> Rep (Either a b) x #

to :: Rep (Either a b) x -> Either a b #

Generic (Proxy t) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (Proxy t) :: Type -> Type #

Methods

from :: Proxy t -> Rep (Proxy t) x #

to :: Rep (Proxy t) x -> Proxy t #

Generic (Arg a b) 
Instance details

Defined in Data.Semigroup

Associated Types

type Rep (Arg a b) :: Type -> Type #

Methods

from :: Arg a b -> Rep (Arg a b) x #

to :: Rep (Arg a b) x -> Arg a b #

Generic (U1 p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (U1 p) :: Type -> Type #

Methods

from :: U1 p -> Rep (U1 p) x #

to :: Rep (U1 p) x -> U1 p #

Generic (V1 p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (V1 p) :: Type -> Type #

Methods

from :: V1 p -> Rep (V1 p) x #

to :: Rep (V1 p) x -> V1 p #

Generic (RamOp n a) Source # 
Instance details

Defined in Clash.Explicit.BlockRam

Associated Types

type Rep (RamOp n a) :: Type -> Type #

Methods

from :: RamOp n a -> Rep (RamOp n a) x #

to :: Rep (RamOp n a) x -> RamOp n a #

KnownNat n => Generic (Vec n a) Source #

In many cases, this Generic instance only allows generic functions/instances over vectors of at least size 1, due to the n-1 in the Rep (Vec n a) definition.

We'll have to wait for things like https://ryanglscott.github.io/2018/02/11/how-to-derive-generic-for-some-gadts/ before we can work around this limitation

Instance details

Defined in Clash.Sized.Vector

Associated Types

type Rep (Vec n a) :: Type -> Type #

Methods

from :: Vec n a -> Rep (Vec n a) x #

to :: Rep (Vec n a) x -> Vec n a #

Generic (Cofree f a) 
Instance details

Defined in Control.Comonad.Cofree

Associated Types

type Rep (Cofree f a) :: Type -> Type #

Methods

from :: Cofree f a -> Rep (Cofree f a) x #

to :: Rep (Cofree f a) x -> Cofree f a #

Generic (Free f a) 
Instance details

Defined in Control.Monad.Free

Associated Types

type Rep (Free f a) :: Type -> Type #

Methods

from :: Free f a -> Rep (Free f a) x #

to :: Rep (Free f a) x -> Free f a #

Generic (ListF a b) 
Instance details

Defined in Data.Functor.Base

Associated Types

type Rep (ListF a b) :: Type -> Type #

Methods

from :: ListF a b -> Rep (ListF a b) x #

to :: Rep (ListF a b) x -> ListF a b #

Generic (NonEmptyF a b) 
Instance details

Defined in Data.Functor.Base

Associated Types

type Rep (NonEmptyF a b) :: Type -> Type #

Methods

from :: NonEmptyF a b -> Rep (NonEmptyF a b) x #

to :: Rep (NonEmptyF a b) x -> NonEmptyF a b #

Generic (TreeF a b) 
Instance details

Defined in Data.Functor.Base

Associated Types

type Rep (TreeF a b) :: Type -> Type #

Methods

from :: TreeF a b -> Rep (TreeF a b) x #

to :: Rep (TreeF a b) x -> TreeF a b #

Generic (Either a b) 
Instance details

Defined in Data.Strict.Either

Associated Types

type Rep (Either a b) :: Type -> Type #

Methods

from :: Either a b -> Rep (Either a b) x #

to :: Rep (Either a b) x -> Either a b #

Generic (These a b) 
Instance details

Defined in Data.Strict.These

Associated Types

type Rep (These a b) :: Type -> Type #

Methods

from :: These a b -> Rep (These a b) x #

to :: Rep (These a b) x -> These a b #

Generic (Pair a b) 
Instance details

Defined in Data.Strict.Tuple

Associated Types

type Rep (Pair a b) :: Type -> Type #

Methods

from :: Pair a b -> Rep (Pair a b) x #

to :: Rep (Pair a b) x -> Pair a b #

Generic (These a b) 
Instance details

Defined in Data.These

Associated Types

type Rep (These a b) :: Type -> Type #

Methods

from :: These a b -> Rep (These a b) x #

to :: Rep (These a b) x -> These a b #

Generic (Lift f a) 
Instance details

Defined in Control.Applicative.Lift

Associated Types

type Rep (Lift f a) :: Type -> Type #

Methods

from :: Lift f a -> Rep (Lift f a) x #

to :: Rep (Lift f a) x -> Lift f a #

Generic (MaybeT m a) 
Instance details

Defined in Control.Monad.Trans.Maybe

Associated Types

type Rep (MaybeT m a) :: Type -> Type #

Methods

from :: MaybeT m a -> Rep (MaybeT m a) x #

to :: Rep (MaybeT m a) x -> MaybeT m a #

Generic (a, b) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b) :: Type -> Type #

Methods

from :: (a, b) -> Rep (a, b) x #

to :: Rep (a, b) x -> (a, b) #

Generic (WrappedArrow a b c) 
Instance details

Defined in Control.Applicative

Associated Types

type Rep (WrappedArrow a b c) :: Type -> Type #

Methods

from :: WrappedArrow a b c -> Rep (WrappedArrow a b c) x #

to :: Rep (WrappedArrow a b c) x -> WrappedArrow a b c #

Generic (Kleisli m a b) 
Instance details

Defined in Control.Arrow

Associated Types

type Rep (Kleisli m a b) :: Type -> Type #

Methods

from :: Kleisli m a b -> Rep (Kleisli m a b) x #

to :: Rep (Kleisli m a b) x -> Kleisli m a b #

Generic (Const a b) 
Instance details

Defined in Data.Functor.Const

Associated Types

type Rep (Const a b) :: Type -> Type #

Methods

from :: Const a b -> Rep (Const a b) x #

to :: Rep (Const a b) x -> Const a b #

Generic (Ap f a) 
Instance details

Defined in Data.Monoid

Associated Types

type Rep (Ap f a) :: Type -> Type #

Methods

from :: Ap f a -> Rep (Ap f a) x #

to :: Rep (Ap f a) x -> Ap f a #

Generic (Alt f a) 
Instance details

Defined in Data.Semigroup.Internal

Associated Types

type Rep (Alt f a) :: Type -> Type #

Methods

from :: Alt f a -> Rep (Alt f a) x #

to :: Rep (Alt f a) x -> Alt f a #

Generic (Rec1 f p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (Rec1 f p) :: Type -> Type #

Methods

from :: Rec1 f p -> Rep (Rec1 f p) x #

to :: Rep (Rec1 f p) x -> Rec1 f p #

Generic (URec (Ptr ()) p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (URec (Ptr ()) p) :: Type -> Type #

Methods

from :: URec (Ptr ()) p -> Rep (URec (Ptr ()) p) x #

to :: Rep (URec (Ptr ()) p) x -> URec (Ptr ()) p #

Generic (URec Char p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (URec Char p) :: Type -> Type #

Methods

from :: URec Char p -> Rep (URec Char p) x #

to :: Rep (URec Char p) x -> URec Char p #

Generic (URec Double p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (URec Double p) :: Type -> Type #

Methods

from :: URec Double p -> Rep (URec Double p) x #

to :: Rep (URec Double p) x -> URec Double p #

Generic (URec Float p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (URec Float p) :: Type -> Type #

Methods

from :: URec Float p -> Rep (URec Float p) x #

to :: Rep (URec Float p) x -> URec Float p #

Generic (URec Int p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (URec Int p) :: Type -> Type #

Methods

from :: URec Int p -> Rep (URec Int p) x #

to :: Rep (URec Int p) x -> URec Int p #

Generic (URec Word p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (URec Word p) :: Type -> Type #

Methods

from :: URec Word p -> Rep (URec Word p) x #

to :: Rep (URec Word p) x -> URec Word p #

Generic (Fix p a) 
Instance details

Defined in Data.Bifunctor.Fix

Associated Types

type Rep (Fix p a) :: Type -> Type #

Methods

from :: Fix p a -> Rep (Fix p a) x #

to :: Rep (Fix p a) x -> Fix p a #

Generic (Join p a) 
Instance details

Defined in Data.Bifunctor.Join

Associated Types

type Rep (Join p a) :: Type -> Type #

Methods

from :: Join p a -> Rep (Join p a) x #

to :: Rep (Join p a) x -> Join p a #

Generic (CofreeF f a b) 
Instance details

Defined in Control.Comonad.Trans.Cofree

Associated Types

type Rep (CofreeF f a b) :: Type -> Type #

Methods

from :: CofreeF f a b -> Rep (CofreeF f a b) x #

to :: Rep (CofreeF f a b) x -> CofreeF f a b #

Generic (FreeF f a b) 
Instance details

Defined in Control.Monad.Trans.Free

Associated Types

type Rep (FreeF f a b) :: Type -> Type #

Methods

from :: FreeF f a b -> Rep (FreeF f a b) x #

to :: Rep (FreeF f a b) x -> FreeF f a b #

Generic (Tagged s b) 
Instance details

Defined in Data.Tagged

Associated Types

type Rep (Tagged s b) :: Type -> Type #

Methods

from :: Tagged s b -> Rep (Tagged s b) x #

to :: Rep (Tagged s b) x -> Tagged s b #

Generic (Backwards f a) 
Instance details

Defined in Control.Applicative.Backwards

Associated Types

type Rep (Backwards f a) :: Type -> Type #

Methods

from :: Backwards f a -> Rep (Backwards f a) x #

to :: Rep (Backwards f a) x -> Backwards f a #

Generic (AccumT w m a) 
Instance details

Defined in Control.Monad.Trans.Accum

Associated Types

type Rep (AccumT w m a) :: Type -> Type #

Methods

from :: AccumT w m a -> Rep (AccumT w m a) x #

to :: Rep (AccumT w m a) x -> AccumT w m a #

Generic (ExceptT e m a) 
Instance details

Defined in Control.Monad.Trans.Except

Associated Types

type Rep (ExceptT e m a) :: Type -> Type #

Methods

from :: ExceptT e m a -> Rep (ExceptT e m a) x #

to :: Rep (ExceptT e m a) x -> ExceptT e m a #

Generic (IdentityT f a) 
Instance details

Defined in Control.Monad.Trans.Identity

Associated Types

type Rep (IdentityT f a) :: Type -> Type #

Methods

from :: IdentityT f a -> Rep (IdentityT f a) x #

to :: Rep (IdentityT f a) x -> IdentityT f a #

Generic (ReaderT r m a) 
Instance details

Defined in Control.Monad.Trans.Reader

Associated Types

type Rep (ReaderT r m a) :: Type -> Type #

Methods

from :: ReaderT r m a -> Rep (ReaderT r m a) x #

to :: Rep (ReaderT r m a) x -> ReaderT r m a #

Generic (SelectT r m a) 
Instance details

Defined in Control.Monad.Trans.Select

Associated Types

type Rep (SelectT r m a) :: Type -> Type #

Methods

from :: SelectT r m a -> Rep (SelectT r m a) x #

to :: Rep (SelectT r m a) x -> SelectT r m a #

Generic (StateT s m a) 
Instance details

Defined in Control.Monad.Trans.State.Lazy

Associated Types

type Rep (StateT s m a) :: Type -> Type #

Methods

from :: StateT s m a -> Rep (StateT s m a) x #

to :: Rep (StateT s m a) x -> StateT s m a #

Generic (StateT s m a) 
Instance details

Defined in Control.Monad.Trans.State.Strict

Associated Types

type Rep (StateT s m a) :: Type -> Type #

Methods

from :: StateT s m a -> Rep (StateT s m a) x #

to :: Rep (StateT s m a) x -> StateT s m a #

Generic (WriterT w m a) 
Instance details

Defined in Control.Monad.Trans.Writer.CPS

Associated Types

type Rep (WriterT w m a) :: Type -> Type #

Methods

from :: WriterT w m a -> Rep (WriterT w m a) x #

to :: Rep (WriterT w m a) x -> WriterT w m a #

Generic (WriterT w m a) 
Instance details

Defined in Control.Monad.Trans.Writer.Lazy

Associated Types

type Rep (WriterT w m a) :: Type -> Type #

Methods

from :: WriterT w m a -> Rep (WriterT w m a) x #

to :: Rep (WriterT w m a) x -> WriterT w m a #

Generic (WriterT w m a) 
Instance details

Defined in Control.Monad.Trans.Writer.Strict

Associated Types

type Rep (WriterT w m a) :: Type -> Type #

Methods

from :: WriterT w m a -> Rep (WriterT w m a) x #

to :: Rep (WriterT w m a) x -> WriterT w m a #

Generic (Constant a b) 
Instance details

Defined in Data.Functor.Constant

Associated Types

type Rep (Constant a b) :: Type -> Type #

Methods

from :: Constant a b -> Rep (Constant a b) x #

to :: Rep (Constant a b) x -> Constant a b #

Generic (Reverse f a) 
Instance details

Defined in Data.Functor.Reverse

Associated Types

type Rep (Reverse f a) :: Type -> Type #

Methods

from :: Reverse f a -> Rep (Reverse f a) x #

to :: Rep (Reverse f a) x -> Reverse f a #

Generic (a, b, c) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b, c) :: Type -> Type #

Methods

from :: (a, b, c) -> Rep (a, b, c) x #

to :: Rep (a, b, c) x -> (a, b, c) #

Generic (Product f g a) 
Instance details

Defined in Data.Functor.Product

Associated Types

type Rep (Product f g a) :: Type -> Type #

Methods

from :: Product f g a -> Rep (Product f g a) x #

to :: Rep (Product f g a) x -> Product f g a #

Generic (Sum f g a) 
Instance details

Defined in Data.Functor.Sum

Associated Types

type Rep (Sum f g a) :: Type -> Type #

Methods

from :: Sum f g a -> Rep (Sum f g a) x #

to :: Rep (Sum f g a) x -> Sum f g a #

Generic ((f :*: g) p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep ((f :*: g) p) :: Type -> Type #

Methods

from :: (f :*: g) p -> Rep ((f :*: g) p) x #

to :: Rep ((f :*: g) p) x -> (f :*: g) p #

Generic ((f :+: g) p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep ((f :+: g) p) :: Type -> Type #

Methods

from :: (f :+: g) p -> Rep ((f :+: g) p) x #

to :: Rep ((f :+: g) p) x -> (f :+: g) p #

Generic (K1 i c p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (K1 i c p) :: Type -> Type #

Methods

from :: K1 i c p -> Rep (K1 i c p) x #

to :: Rep (K1 i c p) x -> K1 i c p #

Generic (ContT r m a) 
Instance details

Defined in Control.Monad.Trans.Cont

Associated Types

type Rep (ContT r m a) :: Type -> Type #

Methods

from :: ContT r m a -> Rep (ContT r m a) x #

to :: Rep (ContT r m a) x -> ContT r m a #

Generic (a, b, c, d) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b, c, d) :: Type -> Type #

Methods

from :: (a, b, c, d) -> Rep (a, b, c, d) x #

to :: Rep (a, b, c, d) x -> (a, b, c, d) #

Generic (Compose f g a) 
Instance details

Defined in Data.Functor.Compose

Associated Types

type Rep (Compose f g a) :: Type -> Type #

Methods

from :: Compose f g a -> Rep (Compose f g a) x #

to :: Rep (Compose f g a) x -> Compose f g a #

Generic ((f :.: g) p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep ((f :.: g) p) :: Type -> Type #

Methods

from :: (f :.: g) p -> Rep ((f :.: g) p) x #

to :: Rep ((f :.: g) p) x -> (f :.: g) p #

Generic (M1 i c f p) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (M1 i c f p) :: Type -> Type #

Methods

from :: M1 i c f p -> Rep (M1 i c f p) x #

to :: Rep (M1 i c f p) x -> M1 i c f p #

Generic (Clown f a b) 
Instance details

Defined in Data.Bifunctor.Clown

Associated Types

type Rep (Clown f a b) :: Type -> Type #

Methods

from :: Clown f a b -> Rep (Clown f a b) x #

to :: Rep (Clown f a b) x -> Clown f a b #

Generic (Flip p a b) 
Instance details

Defined in Data.Bifunctor.Flip

Associated Types

type Rep (Flip p a b) :: Type -> Type #

Methods

from :: Flip p a b -> Rep (Flip p a b) x #

to :: Rep (Flip p a b) x -> Flip p a b #

Generic (Joker g a b) 
Instance details

Defined in Data.Bifunctor.Joker

Associated Types

type Rep (Joker g a b) :: Type -> Type #

Methods

from :: Joker g a b -> Rep (Joker g a b) x #

to :: Rep (Joker g a b) x -> Joker g a b #

Generic (WrappedBifunctor p a b) 
Instance details

Defined in Data.Bifunctor.Wrapped

Associated Types

type Rep (WrappedBifunctor p a b) :: Type -> Type #

Methods

from :: WrappedBifunctor p a b -> Rep (WrappedBifunctor p a b) x #

to :: Rep (WrappedBifunctor p a b) x -> WrappedBifunctor p a b #

Generic (RWST r w s m a) 
Instance details

Defined in Control.Monad.Trans.RWS.CPS

Associated Types

type Rep (RWST r w s m a) :: Type -> Type #

Methods

from :: RWST r w s m a -> Rep (RWST r w s m a) x #

to :: Rep (RWST r w s m a) x -> RWST r w s m a #

Generic (RWST r w s m a) 
Instance details

Defined in Control.Monad.Trans.RWS.Lazy

Associated Types

type Rep (RWST r w s m a) :: Type -> Type #

Methods

from :: RWST r w s m a -> Rep (RWST r w s m a) x #

to :: Rep (RWST r w s m a) x -> RWST r w s m a #

Generic (RWST r w s m a) 
Instance details

Defined in Control.Monad.Trans.RWS.Strict

Associated Types

type Rep (RWST r w s m a) :: Type -> Type #

Methods

from :: RWST r w s m a -> Rep (RWST r w s m a) x #

to :: Rep (RWST r w s m a) x -> RWST r w s m a #

Generic (a, b, c, d, e) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b, c, d, e) :: Type -> Type #

Methods

from :: (a, b, c, d, e) -> Rep (a, b, c, d, e) x #

to :: Rep (a, b, c, d, e) x -> (a, b, c, d, e) #

Generic (Product f g a b) 
Instance details

Defined in Data.Bifunctor.Product

Associated Types

type Rep (Product f g a b) :: Type -> Type #

Methods

from :: Product f g a b -> Rep (Product f g a b) x #

to :: Rep (Product f g a b) x -> Product f g a b #

Generic (Sum p q a b) 
Instance details

Defined in Data.Bifunctor.Sum

Associated Types

type Rep (Sum p q a b) :: Type -> Type #

Methods

from :: Sum p q a b -> Rep (Sum p q a b) x #

to :: Rep (Sum p q a b) x -> Sum p q a b #

Generic (a, b, c, d, e, f) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b, c, d, e, f) :: Type -> Type #

Methods

from :: (a, b, c, d, e, f) -> Rep (a, b, c, d, e, f) x #

to :: Rep (a, b, c, d, e, f) x -> (a, b, c, d, e, f) #

Generic (Tannen f p a b) 
Instance details

Defined in Data.Bifunctor.Tannen

Associated Types

type Rep (Tannen f p a b) :: Type -> Type #

Methods

from :: Tannen f p a b -> Rep (Tannen f p a b) x #

to :: Rep (Tannen f p a b) x -> Tannen f p a b #

Generic (a, b, c, d, e, f, g) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b, c, d, e, f, g) :: Type -> Type #

Methods

from :: (a, b, c, d, e, f, g) -> Rep (a, b, c, d, e, f, g) x #

to :: Rep (a, b, c, d, e, f, g) x -> (a, b, c, d, e, f, g) #

Generic (a, b, c, d, e, f, g, h) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b, c, d, e, f, g, h) :: Type -> Type #

Methods

from :: (a, b, c, d, e, f, g, h) -> Rep (a, b, c, d, e, f, g, h) x #

to :: Rep (a, b, c, d, e, f, g, h) x -> (a, b, c, d, e, f, g, h) #

Generic (Biff p f g a b) 
Instance details

Defined in Data.Bifunctor.Biff

Associated Types

type Rep (Biff p f g a b) :: Type -> Type #

Methods

from :: Biff p f g a b -> Rep (Biff p f g a b) x #

to :: Rep (Biff p f g a b) x -> Biff p f g a b #

Generic (a, b, c, d, e, f, g, h, i) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b, c, d, e, f, g, h, i) :: Type -> Type #

Methods

from :: (a, b, c, d, e, f, g, h, i) -> Rep (a, b, c, d, e, f, g, h, i) x #

to :: Rep (a, b, c, d, e, f, g, h, i) x -> (a, b, c, d, e, f, g, h, i) #

Generic (a, b, c, d, e, f, g, h, i, j) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b, c, d, e, f, g, h, i, j) :: Type -> Type #

Methods

from :: (a, b, c, d, e, f, g, h, i, j) -> Rep (a, b, c, d, e, f, g, h, i, j) x #

to :: Rep (a, b, c, d, e, f, g, h, i, j) x -> (a, b, c, d, e, f, g, h, i, j) #

Generic (a, b, c, d, e, f, g, h, i, j, k) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b, c, d, e, f, g, h, i, j, k) :: Type -> Type #

Methods

from :: (a, b, c, d, e, f, g, h, i, j, k) -> Rep (a, b, c, d, e, f, g, h, i, j, k) x #

to :: Rep (a, b, c, d, e, f, g, h, i, j, k) x -> (a, b, c, d, e, f, g, h, i, j, k) #

Generic (a, b, c, d, e, f, g, h, i, j, k, l) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b, c, d, e, f, g, h, i, j, k, l) :: Type -> Type #

Methods

from :: (a, b, c, d, e, f, g, h, i, j, k, l) -> Rep (a, b, c, d, e, f, g, h, i, j, k, l) x #

to :: Rep (a, b, c, d, e, f, g, h, i, j, k, l) x -> (a, b, c, d, e, f, g, h, i, j, k, l) #

Generic (a, b, c, d, e, f, g, h, i, j, k, l, m) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b, c, d, e, f, g, h, i, j, k, l, m) :: Type -> Type #

Methods

from :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Rep (a, b, c, d, e, f, g, h, i, j, k, l, m) x #

to :: Rep (a, b, c, d, e, f, g, h, i, j, k, l, m) x -> (a, b, c, d, e, f, g, h, i, j, k, l, m) #

Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n) :: Type -> Type #

Methods

from :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n) x #

to :: Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n) x -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) #

Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) :: Type -> Type #

Methods

from :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) x #

to :: Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) x -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) #

class Generic1 (f :: k -> Type) #

Representable types of kind * -> * (or kind k -> *, when PolyKinds is enabled). This class is derivable in GHC with the DeriveGeneric flag on.

A Generic1 instance must satisfy the following laws:

from1 . to1id
to1 . from1id

Minimal complete definition

from1, to1

Instances

Instances details
Generic1 ZipList 
Instance details

Defined in Control.Applicative

Associated Types

type Rep1 ZipList :: k -> Type #

Methods

from1 :: forall (a :: k). ZipList a -> Rep1 ZipList a #

to1 :: forall (a :: k). Rep1 ZipList a -> ZipList a #

Generic1 Complex 
Instance details

Defined in Data.Complex

Associated Types

type Rep1 Complex :: k -> Type #

Methods

from1 :: forall (a :: k). Complex a -> Rep1 Complex a #

to1 :: forall (a :: k). Rep1 Complex a -> Complex a #

Generic1 Identity 
Instance details

Defined in Data.Functor.Identity

Associated Types

type Rep1 Identity :: k -> Type #

Methods

from1 :: forall (a :: k). Identity a -> Rep1 Identity a #

to1 :: forall (a :: k). Rep1 Identity a -> Identity a #

Generic1 First 
Instance details

Defined in Data.Monoid

Associated Types

type Rep1 First :: k -> Type #

Methods

from1 :: forall (a :: k). First a -> Rep1 First a #

to1 :: forall (a :: k). Rep1 First a -> First a #

Generic1 Last 
Instance details

Defined in Data.Monoid

Associated Types

type Rep1 Last :: k -> Type #

Methods

from1 :: forall (a :: k). Last a -> Rep1 Last a #

to1 :: forall (a :: k). Rep1 Last a -> Last a #

Generic1 Down 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 Down :: k -> Type #

Methods

from1 :: forall (a :: k). Down a -> Rep1 Down a #

to1 :: forall (a :: k). Rep1 Down a -> Down a #

Generic1 First 
Instance details

Defined in Data.Semigroup

Associated Types

type Rep1 First :: k -> Type #

Methods

from1 :: forall (a :: k). First a -> Rep1 First a #

to1 :: forall (a :: k). Rep1 First a -> First a #

Generic1 Last 
Instance details

Defined in Data.Semigroup

Associated Types

type Rep1 Last :: k -> Type #

Methods

from1 :: forall (a :: k). Last a -> Rep1 Last a #

to1 :: forall (a :: k). Rep1 Last a -> Last a #

Generic1 Max 
Instance details

Defined in Data.Semigroup

Associated Types

type Rep1 Max :: k -> Type #

Methods

from1 :: forall (a :: k). Max a -> Rep1 Max a #

to1 :: forall (a :: k). Rep1 Max a -> Max a #

Generic1 Min 
Instance details

Defined in Data.Semigroup

Associated Types

type Rep1 Min :: k -> Type #

Methods

from1 :: forall (a :: k). Min a -> Rep1 Min a #

to1 :: forall (a :: k). Rep1 Min a -> Min a #

Generic1 WrappedMonoid 
Instance details

Defined in Data.Semigroup

Associated Types

type Rep1 WrappedMonoid :: k -> Type #

Methods

from1 :: forall (a :: k). WrappedMonoid a -> Rep1 WrappedMonoid a #

to1 :: forall (a :: k). Rep1 WrappedMonoid a -> WrappedMonoid a #

Generic1 Dual 
Instance details

Defined in Data.Semigroup.Internal

Associated Types

type Rep1 Dual :: k -> Type #

Methods

from1 :: forall (a :: k). Dual a -> Rep1 Dual a #

to1 :: forall (a :: k). Rep1 Dual a -> Dual a #

Generic1 Product 
Instance details

Defined in Data.Semigroup.Internal

Associated Types

type Rep1 Product :: k -> Type #

Methods

from1 :: forall (a :: k). Product a -> Rep1 Product a #

to1 :: forall (a :: k). Rep1 Product a -> Product a #

Generic1 Sum 
Instance details

Defined in Data.Semigroup.Internal

Associated Types

type Rep1 Sum :: k -> Type #

Methods

from1 :: forall (a :: k). Sum a -> Rep1 Sum a #

to1 :: forall (a :: k). Rep1 Sum a -> Sum a #

Generic1 NonEmpty 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 NonEmpty :: k -> Type #

Methods

from1 :: forall (a :: k). NonEmpty a -> Rep1 NonEmpty a #

to1 :: forall (a :: k). Rep1 NonEmpty a -> NonEmpty a #

Generic1 Par1 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 Par1 :: k -> Type #

Methods

from1 :: forall (a :: k). Par1 a -> Rep1 Par1 a #

to1 :: forall (a :: k). Rep1 Par1 a -> Par1 a #

Generic1 Digit 
Instance details

Defined in Data.Sequence.Internal

Associated Types

type Rep1 Digit :: k -> Type #

Methods

from1 :: forall (a :: k). Digit a -> Rep1 Digit a #

to1 :: forall (a :: k). Rep1 Digit a -> Digit a #

Generic1 Elem 
Instance details

Defined in Data.Sequence.Internal

Associated Types

type Rep1 Elem :: k -> Type #

Methods

from1 :: forall (a :: k). Elem a -> Rep1 Elem a #

to1 :: forall (a :: k). Rep1 Elem a -> Elem a #

Generic1 FingerTree 
Instance details

Defined in Data.Sequence.Internal

Associated Types

type Rep1 FingerTree :: k -> Type #

Methods

from1 :: forall (a :: k). FingerTree a -> Rep1 FingerTree a #

to1 :: forall (a :: k). Rep1 FingerTree a -> FingerTree a #

Generic1 Node 
Instance details

Defined in Data.Sequence.Internal

Associated Types

type Rep1 Node :: k -> Type #

Methods

from1 :: forall (a :: k). Node a -> Rep1 Node a #

to1 :: forall (a :: k). Rep1 Node a -> Node a #

Generic1 ViewL 
Instance details

Defined in Data.Sequence.Internal

Associated Types

type Rep1 ViewL :: k -> Type #

Methods

from1 :: forall (a :: k). ViewL a -> Rep1 ViewL a #

to1 :: forall (a :: k). Rep1 ViewL a -> ViewL a #

Generic1 ViewR 
Instance details

Defined in Data.Sequence.Internal

Associated Types

type Rep1 ViewR :: k -> Type #

Methods

from1 :: forall (a :: k). ViewR a -> Rep1 ViewR a #

to1 :: forall (a :: k). Rep1 ViewR a -> ViewR a #

Generic1 Tree 
Instance details

Defined in Data.Tree

Associated Types

type Rep1 Tree :: k -> Type #

Methods

from1 :: forall (a :: k). Tree a -> Rep1 Tree a #

to1 :: forall (a :: k). Rep1 Tree a -> Tree a #

Generic1 Maybe 
Instance details

Defined in Data.Strict.Maybe

Associated Types

type Rep1 Maybe :: k -> Type #

Methods

from1 :: forall (a :: k). Maybe a -> Rep1 Maybe a #

to1 :: forall (a :: k). Rep1 Maybe a -> Maybe a #

Generic1 Maybe 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 Maybe :: k -> Type #

Methods

from1 :: forall (a :: k). Maybe a -> Rep1 Maybe a #

to1 :: forall (a :: k). Rep1 Maybe a -> Maybe a #

Generic1 Solo 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 Solo :: k -> Type #

Methods

from1 :: forall (a :: k). Solo a -> Rep1 Solo a #

to1 :: forall (a :: k). Rep1 Solo a -> Solo a #

Generic1 List 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 List :: k -> Type #

Methods

from1 :: forall (a :: k). [a] -> Rep1 List a #

to1 :: forall (a :: k). Rep1 List a -> [a] #

Generic1 (WrappedMonad m :: Type -> Type) 
Instance details

Defined in Control.Applicative

Associated Types

type Rep1 (WrappedMonad m) :: k -> Type #

Methods

from1 :: forall (a :: k). WrappedMonad m a -> Rep1 (WrappedMonad m) a #

to1 :: forall (a :: k). Rep1 (WrappedMonad m) a -> WrappedMonad m a #

Generic1 (Either a :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (Either a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). Either a a0 -> Rep1 (Either a) a0 #

to1 :: forall (a0 :: k). Rep1 (Either a) a0 -> Either a a0 #

Generic1 (Arg a :: Type -> Type) 
Instance details

Defined in Data.Semigroup

Associated Types

type Rep1 (Arg a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). Arg a a0 -> Rep1 (Arg a) a0 #

to1 :: forall (a0 :: k). Rep1 (Arg a) a0 -> Arg a a0 #

Functor f => Generic1 (Cofree f :: Type -> Type) 
Instance details

Defined in Control.Comonad.Cofree

Associated Types

type Rep1 (Cofree f) :: k -> Type #

Methods

from1 :: forall (a :: k). Cofree f a -> Rep1 (Cofree f) a #

to1 :: forall (a :: k). Rep1 (Cofree f) a -> Cofree f a #

Functor f => Generic1 (Free f :: Type -> Type) 
Instance details

Defined in Control.Monad.Free

Associated Types

type Rep1 (Free f) :: k -> Type #

Methods

from1 :: forall (a :: k). Free f a -> Rep1 (Free f) a #

to1 :: forall (a :: k). Rep1 (Free f) a -> Free f a #

Generic1 (ListF a :: Type -> Type) 
Instance details

Defined in Data.Functor.Base

Associated Types

type Rep1 (ListF a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). ListF a a0 -> Rep1 (ListF a) a0 #

to1 :: forall (a0 :: k). Rep1 (ListF a) a0 -> ListF a a0 #

Generic1 (NonEmptyF a :: Type -> Type) 
Instance details

Defined in Data.Functor.Base

Associated Types

type Rep1 (NonEmptyF a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). NonEmptyF a a0 -> Rep1 (NonEmptyF a) a0 #

to1 :: forall (a0 :: k). Rep1 (NonEmptyF a) a0 -> NonEmptyF a a0 #

Generic1 (TreeF a :: Type -> Type) 
Instance details

Defined in Data.Functor.Base

Associated Types

type Rep1 (TreeF a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). TreeF a a0 -> Rep1 (TreeF a) a0 #

to1 :: forall (a0 :: k). Rep1 (TreeF a) a0 -> TreeF a a0 #

Generic1 (Either a :: Type -> Type) 
Instance details

Defined in Data.Strict.Either

Associated Types

type Rep1 (Either a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). Either a a0 -> Rep1 (Either a) a0 #

to1 :: forall (a0 :: k). Rep1 (Either a) a0 -> Either a a0 #

Generic1 (These a :: Type -> Type) 
Instance details

Defined in Data.Strict.These

Associated Types

type Rep1 (These a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). These a a0 -> Rep1 (These a) a0 #

to1 :: forall (a0 :: k). Rep1 (These a) a0 -> These a a0 #

Generic1 (Pair a :: Type -> Type) 
Instance details

Defined in Data.Strict.Tuple

Associated Types

type Rep1 (Pair a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). Pair a a0 -> Rep1 (Pair a) a0 #

to1 :: forall (a0 :: k). Rep1 (Pair a) a0 -> Pair a a0 #

Generic1 (These a :: Type -> Type) 
Instance details

Defined in Data.These

Associated Types

type Rep1 (These a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). These a a0 -> Rep1 (These a) a0 #

to1 :: forall (a0 :: k). Rep1 (These a) a0 -> These a a0 #

Generic1 (Lift f :: Type -> Type) 
Instance details

Defined in Control.Applicative.Lift

Associated Types

type Rep1 (Lift f) :: k -> Type #

Methods

from1 :: forall (a :: k). Lift f a -> Rep1 (Lift f) a #

to1 :: forall (a :: k). Rep1 (Lift f) a -> Lift f a #

Functor m => Generic1 (MaybeT m :: Type -> Type) 
Instance details

Defined in Control.Monad.Trans.Maybe

Associated Types

type Rep1 (MaybeT m) :: k -> Type #

Methods

from1 :: forall (a :: k). MaybeT m a -> Rep1 (MaybeT m) a #

to1 :: forall (a :: k). Rep1 (MaybeT m) a -> MaybeT m a #

Generic1 ((,) a :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,) a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). (a, a0) -> Rep1 ((,) a) a0 #

to1 :: forall (a0 :: k). Rep1 ((,) a) a0 -> (a, a0) #

Generic1 (Proxy :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 Proxy :: k -> Type #

Methods

from1 :: forall (a :: k0). Proxy a -> Rep1 Proxy a #

to1 :: forall (a :: k0). Rep1 Proxy a -> Proxy a #

Generic1 (U1 :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 U1 :: k -> Type #

Methods

from1 :: forall (a :: k0). U1 a -> Rep1 U1 a #

to1 :: forall (a :: k0). Rep1 U1 a -> U1 a #

Generic1 (V1 :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 V1 :: k -> Type #

Methods

from1 :: forall (a :: k0). V1 a -> Rep1 V1 a #

to1 :: forall (a :: k0). Rep1 V1 a -> V1 a #

Generic1 (WrappedArrow a b :: Type -> Type) 
Instance details

Defined in Control.Applicative

Associated Types

type Rep1 (WrappedArrow a b) :: k -> Type #

Methods

from1 :: forall (a0 :: k). WrappedArrow a b a0 -> Rep1 (WrappedArrow a b) a0 #

to1 :: forall (a0 :: k). Rep1 (WrappedArrow a b) a0 -> WrappedArrow a b a0 #

Generic1 (Kleisli m a :: Type -> Type) 
Instance details

Defined in Control.Arrow

Associated Types

type Rep1 (Kleisli m a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). Kleisli m a a0 -> Rep1 (Kleisli m a) a0 #

to1 :: forall (a0 :: k). Rep1 (Kleisli m a) a0 -> Kleisli m a a0 #

Generic1 (CofreeF f a :: Type -> Type) 
Instance details

Defined in Control.Comonad.Trans.Cofree

Associated Types

type Rep1 (CofreeF f a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). CofreeF f a a0 -> Rep1 (CofreeF f a) a0 #

to1 :: forall (a0 :: k). Rep1 (CofreeF f a) a0 -> CofreeF f a a0 #

Generic1 (FreeF f a :: Type -> Type) 
Instance details

Defined in Control.Monad.Trans.Free

Associated Types

type Rep1 (FreeF f a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). FreeF f a a0 -> Rep1 (FreeF f a) a0 #

to1 :: forall (a0 :: k). Rep1 (FreeF f a) a0 -> FreeF f a a0 #

Generic1 (Tagged s :: Type -> Type) 
Instance details

Defined in Data.Tagged

Associated Types

type Rep1 (Tagged s) :: k -> Type #

Methods

from1 :: forall (a :: k). Tagged s a -> Rep1 (Tagged s) a #

to1 :: forall (a :: k). Rep1 (Tagged s) a -> Tagged s a #

Functor m => Generic1 (ExceptT e m :: Type -> Type) 
Instance details

Defined in Control.Monad.Trans.Except

Associated Types

type Rep1 (ExceptT e m) :: k -> Type #

Methods

from1 :: forall (a :: k). ExceptT e m a -> Rep1 (ExceptT e m) a #

to1 :: forall (a :: k). Rep1 (ExceptT e m) a -> ExceptT e m a #

Generic1 (ReaderT r m :: Type -> Type) 
Instance details

Defined in Control.Monad.Trans.Reader

Associated Types

type Rep1 (ReaderT r m) :: k -> Type #

Methods

from1 :: forall (a :: k). ReaderT r m a -> Rep1 (ReaderT r m) a #

to1 :: forall (a :: k). Rep1 (ReaderT r m) a -> ReaderT r m a #

Generic1 ((,,) a b :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,,) a b) :: k -> Type #

Methods

from1 :: forall (a0 :: k). (a, b, a0) -> Rep1 ((,,) a b) a0 #

to1 :: forall (a0 :: k). Rep1 ((,,) a b) a0 -> (a, b, a0) #

Generic1 (Const a :: k -> Type) 
Instance details

Defined in Data.Functor.Const

Associated Types

type Rep1 (Const a) :: k -> Type #

Methods

from1 :: forall (a0 :: k0). Const a a0 -> Rep1 (Const a) a0 #

to1 :: forall (a0 :: k0). Rep1 (Const a) a0 -> Const a a0 #

Generic1 (Ap f :: k -> Type) 
Instance details

Defined in Data.Monoid

Associated Types

type Rep1 (Ap f) :: k -> Type #

Methods

from1 :: forall (a :: k0). Ap f a -> Rep1 (Ap f) a #

to1 :: forall (a :: k0). Rep1 (Ap f) a -> Ap f a #

Generic1 (Alt f :: k -> Type) 
Instance details

Defined in Data.Semigroup.Internal

Associated Types

type Rep1 (Alt f) :: k -> Type #

Methods

from1 :: forall (a :: k0). Alt f a -> Rep1 (Alt f) a #

to1 :: forall (a :: k0). Rep1 (Alt f) a -> Alt f a #

Generic1 (Rec1 f :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (Rec1 f) :: k -> Type #

Methods

from1 :: forall (a :: k0). Rec1 f a -> Rep1 (Rec1 f) a #

to1 :: forall (a :: k0). Rep1 (Rec1 f) a -> Rec1 f a #

Generic1 (URec (Ptr ()) :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (URec (Ptr ())) :: k -> Type #

Methods

from1 :: forall (a :: k0). URec (Ptr ()) a -> Rep1 (URec (Ptr ())) a #

to1 :: forall (a :: k0). Rep1 (URec (Ptr ())) a -> URec (Ptr ()) a #

Generic1 (URec Char :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (URec Char) :: k -> Type #

Methods

from1 :: forall (a :: k0). URec Char a -> Rep1 (URec Char) a #

to1 :: forall (a :: k0). Rep1 (URec Char) a -> URec Char a #

Generic1 (URec Double :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (URec Double) :: k -> Type #

Methods

from1 :: forall (a :: k0). URec Double a -> Rep1 (URec Double) a #

to1 :: forall (a :: k0). Rep1 (URec Double) a -> URec Double a #

Generic1 (URec Float :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (URec Float) :: k -> Type #

Methods

from1 :: forall (a :: k0). URec Float a -> Rep1 (URec Float) a #

to1 :: forall (a :: k0). Rep1 (URec Float) a -> URec Float a #

Generic1 (URec Int :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (URec Int) :: k -> Type #

Methods

from1 :: forall (a :: k0). URec Int a -> Rep1 (URec Int) a #

to1 :: forall (a :: k0). Rep1 (URec Int) a -> URec Int a #

Generic1 (URec Word :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (URec Word) :: k -> Type #

Methods

from1 :: forall (a :: k0). URec Word a -> Rep1 (URec Word) a #

to1 :: forall (a :: k0). Rep1 (URec Word) a -> URec Word a #

Generic1 (Backwards f :: k -> Type) 
Instance details

Defined in Control.Applicative.Backwards

Associated Types

type Rep1 (Backwards f) :: k -> Type #

Methods

from1 :: forall (a :: k0). Backwards f a -> Rep1 (Backwards f) a #

to1 :: forall (a :: k0). Rep1 (Backwards f) a -> Backwards f a #

Generic1 (IdentityT f :: k -> Type) 
Instance details

Defined in Control.Monad.Trans.Identity

Associated Types

type Rep1 (IdentityT f) :: k -> Type #

Methods

from1 :: forall (a :: k0). IdentityT f a -> Rep1 (IdentityT f) a #

to1 :: forall (a :: k0). Rep1 (IdentityT f) a -> IdentityT f a #

Generic1 (Constant a :: k -> Type) 
Instance details

Defined in Data.Functor.Constant

Associated Types

type Rep1 (Constant a) :: k -> Type #

Methods

from1 :: forall (a0 :: k0). Constant a a0 -> Rep1 (Constant a) a0 #

to1 :: forall (a0 :: k0). Rep1 (Constant a) a0 -> Constant a a0 #

Generic1 (Reverse f :: k -> Type) 
Instance details

Defined in Data.Functor.Reverse

Associated Types

type Rep1 (Reverse f) :: k -> Type #

Methods

from1 :: forall (a :: k0). Reverse f a -> Rep1 (Reverse f) a #

to1 :: forall (a :: k0). Rep1 (Reverse f) a -> Reverse f a #

Generic1 ((,,,) a b c :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,,,) a b c) :: k -> Type #

Methods

from1 :: forall (a0 :: k). (a, b, c, a0) -> Rep1 ((,,,) a b c) a0 #

to1 :: forall (a0 :: k). Rep1 ((,,,) a b c) a0 -> (a, b, c, a0) #

Generic1 (Product f g :: k -> Type) 
Instance details

Defined in Data.Functor.Product

Associated Types

type Rep1 (Product f g) :: k -> Type #

Methods

from1 :: forall (a :: k0). Product f g a -> Rep1 (Product f g) a #

to1 :: forall (a :: k0). Rep1 (Product f g) a -> Product f g a #

Generic1 (Sum f g :: k -> Type) 
Instance details

Defined in Data.Functor.Sum

Associated Types

type Rep1 (Sum f g) :: k -> Type #

Methods

from1 :: forall (a :: k0). Sum f g a -> Rep1 (Sum f g) a #

to1 :: forall (a :: k0). Rep1 (Sum f g) a -> Sum f g a #

Generic1 (f :*: g :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (f :*: g) :: k -> Type #

Methods

from1 :: forall (a :: k0). (f :*: g) a -> Rep1 (f :*: g) a #

to1 :: forall (a :: k0). Rep1 (f :*: g) a -> (f :*: g) a #

Generic1 (f :+: g :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (f :+: g) :: k -> Type #

Methods

from1 :: forall (a :: k0). (f :+: g) a -> Rep1 (f :+: g) a #

to1 :: forall (a :: k0). Rep1 (f :+: g) a -> (f :+: g) a #

Generic1 (K1 i c :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (K1 i c) :: k -> Type #

Methods

from1 :: forall (a :: k0). K1 i c a -> Rep1 (K1 i c) a #

to1 :: forall (a :: k0). Rep1 (K1 i c) a -> K1 i c a #

Generic1 ((,,,,) a b c d :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,,,,) a b c d) :: k -> Type #

Methods

from1 :: forall (a0 :: k). (a, b, c, d, a0) -> Rep1 ((,,,,) a b c d) a0 #

to1 :: forall (a0 :: k). Rep1 ((,,,,) a b c d) a0 -> (a, b, c, d, a0) #

Functor f => Generic1 (Compose f g :: k -> Type) 
Instance details

Defined in Data.Functor.Compose

Associated Types

type Rep1 (Compose f g) :: k -> Type #

Methods

from1 :: forall (a :: k0). Compose f g a -> Rep1 (Compose f g) a #

to1 :: forall (a :: k0). Rep1 (Compose f g) a -> Compose f g a #

Functor f => Generic1 (f :.: g :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (f :.: g) :: k -> Type #

Methods

from1 :: forall (a :: k0). (f :.: g) a -> Rep1 (f :.: g) a #

to1 :: forall (a :: k0). Rep1 (f :.: g) a -> (f :.: g) a #

Generic1 (M1 i c f :: k -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 (M1 i c f) :: k -> Type #

Methods

from1 :: forall (a :: k0). M1 i c f a -> Rep1 (M1 i c f) a #

to1 :: forall (a :: k0). Rep1 (M1 i c f) a -> M1 i c f a #

Generic1 (Clown f a :: k1 -> Type) 
Instance details

Defined in Data.Bifunctor.Clown

Associated Types

type Rep1 (Clown f a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). Clown f a a0 -> Rep1 (Clown f a) a0 #

to1 :: forall (a0 :: k). Rep1 (Clown f a) a0 -> Clown f a a0 #

Generic1 (Joker g a :: k1 -> Type) 
Instance details

Defined in Data.Bifunctor.Joker

Associated Types

type Rep1 (Joker g a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). Joker g a a0 -> Rep1 (Joker g a) a0 #

to1 :: forall (a0 :: k). Rep1 (Joker g a) a0 -> Joker g a a0 #

Generic1 (WrappedBifunctor p a :: k1 -> Type) 
Instance details

Defined in Data.Bifunctor.Wrapped

Associated Types

type Rep1 (WrappedBifunctor p a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). WrappedBifunctor p a a0 -> Rep1 (WrappedBifunctor p a) a0 #

to1 :: forall (a0 :: k). Rep1 (WrappedBifunctor p a) a0 -> WrappedBifunctor p a a0 #

Generic1 ((,,,,,) a b c d e :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,,,,,) a b c d e) :: k -> Type #

Methods

from1 :: forall (a0 :: k). (a, b, c, d, e, a0) -> Rep1 ((,,,,,) a b c d e) a0 #

to1 :: forall (a0 :: k). Rep1 ((,,,,,) a b c d e) a0 -> (a, b, c, d, e, a0) #

Generic1 (Product f g a :: k1 -> Type) 
Instance details

Defined in Data.Bifunctor.Product

Associated Types

type Rep1 (Product f g a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). Product f g a a0 -> Rep1 (Product f g a) a0 #

to1 :: forall (a0 :: k). Rep1 (Product f g a) a0 -> Product f g a a0 #

Generic1 (Sum p q a :: k1 -> Type) 
Instance details

Defined in Data.Bifunctor.Sum

Associated Types

type Rep1 (Sum p q a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). Sum p q a a0 -> Rep1 (Sum p q a) a0 #

to1 :: forall (a0 :: k). Rep1 (Sum p q a) a0 -> Sum p q a a0 #

Generic1 ((,,,,,,) a b c d e f :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,,,,,,) a b c d e f) :: k -> Type #

Methods

from1 :: forall (a0 :: k). (a, b, c, d, e, f, a0) -> Rep1 ((,,,,,,) a b c d e f) a0 #

to1 :: forall (a0 :: k). Rep1 ((,,,,,,) a b c d e f) a0 -> (a, b, c, d, e, f, a0) #

Functor f => Generic1 (Tannen f p a :: k2 -> Type) 
Instance details

Defined in Data.Bifunctor.Tannen

Associated Types

type Rep1 (Tannen f p a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). Tannen f p a a0 -> Rep1 (Tannen f p a) a0 #

to1 :: forall (a0 :: k). Rep1 (Tannen f p a) a0 -> Tannen f p a a0 #

Generic1 ((,,,,,,,) a b c d e f g :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,,,,,,,) a b c d e f g) :: k -> Type #

Methods

from1 :: forall (a0 :: k). (a, b, c, d, e, f, g, a0) -> Rep1 ((,,,,,,,) a b c d e f g) a0 #

to1 :: forall (a0 :: k). Rep1 ((,,,,,,,) a b c d e f g) a0 -> (a, b, c, d, e, f, g, a0) #

Generic1 ((,,,,,,,,) a b c d e f g h :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,,,,,,,,) a b c d e f g h) :: k -> Type #

Methods

from1 :: forall (a0 :: k). (a, b, c, d, e, f, g, h, a0) -> Rep1 ((,,,,,,,,) a b c d e f g h) a0 #

to1 :: forall (a0 :: k). Rep1 ((,,,,,,,,) a b c d e f g h) a0 -> (a, b, c, d, e, f, g, h, a0) #

Functor (p (f a)) => Generic1 (Biff p f g a :: k3 -> Type) 
Instance details

Defined in Data.Bifunctor.Biff

Associated Types

type Rep1 (Biff p f g a) :: k -> Type #

Methods

from1 :: forall (a0 :: k). Biff p f g a a0 -> Rep1 (Biff p f g a) a0 #

to1 :: forall (a0 :: k). Rep1 (Biff p f g a) a0 -> Biff p f g a a0 #

Generic1 ((,,,,,,,,,) a b c d e f g h i :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,,,,,,,,,) a b c d e f g h i) :: k -> Type #

Methods

from1 :: forall (a0 :: k). (a, b, c, d, e, f, g, h, i, a0) -> Rep1 ((,,,,,,,,,) a b c d e f g h i) a0 #

to1 :: forall (a0 :: k). Rep1 ((,,,,,,,,,) a b c d e f g h i) a0 -> (a, b, c, d, e, f, g, h, i, a0) #

Generic1 ((,,,,,,,,,,) a b c d e f g h i j :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,,,,,,,,,,) a b c d e f g h i j) :: k -> Type #

Methods

from1 :: forall (a0 :: k). (a, b, c, d, e, f, g, h, i, j, a0) -> Rep1 ((,,,,,,,,,,) a b c d e f g h i j) a0 #

to1 :: forall (a0 :: k). Rep1 ((,,,,,,,,,,) a b c d e f g h i j) a0 -> (a, b, c, d, e, f, g, h, i, j, a0) #

Generic1 ((,,,,,,,,,,,) a b c d e f g h i j k :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,,,,,,,,,,,) a b c d e f g h i j k) :: k -> Type #

Methods

from1 :: forall (a0 :: k0). (a, b, c, d, e, f, g, h, i, j, k, a0) -> Rep1 ((,,,,,,,,,,,) a b c d e f g h i j k) a0 #

to1 :: forall (a0 :: k0). Rep1 ((,,,,,,,,,,,) a b c d e f g h i j k) a0 -> (a, b, c, d, e, f, g, h, i, j, k, a0) #

Generic1 ((,,,,,,,,,,,,) a b c d e f g h i j k l :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,,,,,,,,,,,,) a b c d e f g h i j k l) :: k -> Type #

Methods

from1 :: forall (a0 :: k0). (a, b, c, d, e, f, g, h, i, j, k, l, a0) -> Rep1 ((,,,,,,,,,,,,) a b c d e f g h i j k l) a0 #

to1 :: forall (a0 :: k0). Rep1 ((,,,,,,,,,,,,) a b c d e f g h i j k l) a0 -> (a, b, c, d, e, f, g, h, i, j, k, l, a0) #

Generic1 ((,,,,,,,,,,,,,) a b c d e f g h i j k l m :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,,,,,,,,,,,,,) a b c d e f g h i j k l m) :: k -> Type #

Methods

from1 :: forall (a0 :: k0). (a, b, c, d, e, f, g, h, i, j, k, l, m, a0) -> Rep1 ((,,,,,,,,,,,,,) a b c d e f g h i j k l m) a0 #

to1 :: forall (a0 :: k0). Rep1 ((,,,,,,,,,,,,,) a b c d e f g h i j k l m) a0 -> (a, b, c, d, e, f, g, h, i, j, k, l, m, a0) #

Generic1 ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n :: Type -> Type) 
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n) :: k -> Type #

Methods

from1 :: forall (a0 :: k0). (a, b, c, d, e, f, g, h, i, j, k, l, m, n, a0) -> Rep1 ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n) a0 #

to1 :: forall (a0 :: k0). Rep1 ((,,,,,,,,,,,,,,) a b c d e f g h i j k l m n) a0 -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, a0) #

Type-level natural numbers

data Symbol #

(Kind) This is the kind of type-level symbols.

Instances

Instances details
SingKind Symbol

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Associated Types

type DemoteRep Symbol

Methods

fromSing :: forall (a :: Symbol). Sing a -> DemoteRep Symbol

TestCoercion SSymbol

Since: base-4.18.0.0

Instance details

Defined in GHC.TypeLits

Methods

testCoercion :: forall (a :: k) (b :: k). SSymbol a -> SSymbol b -> Maybe (Coercion a b) #

TestEquality SSymbol

Since: base-4.18.0.0

Instance details

Defined in GHC.TypeLits

Methods

testEquality :: forall (a :: k) (b :: k). SSymbol a -> SSymbol b -> Maybe (a :~: b) #

KnownSymbol a => SingI (a :: Symbol)

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

sing :: Sing a

KnownSymbol n => Reifies (n :: Symbol) String 
Instance details

Defined in Data.Reflection

Methods

reflect :: proxy n -> String #

type DemoteRep Symbol 
Instance details

Defined in GHC.Generics

type DemoteRep Symbol = String
data Sing (s :: Symbol) 
Instance details

Defined in GHC.Generics

data Sing (s :: Symbol) where
type MEmpty 
Instance details

Defined in Fcf.Class.Monoid

type MEmpty = ""
type Compare (a :: Symbol) (b :: Symbol) 
Instance details

Defined in Data.Type.Ord

type Compare (a :: Symbol) (b :: Symbol) = CmpSymbol a b
type (x :: Symbol) <> (y :: Symbol)

With base >= 4.10.0.0.

Instance details

Defined in Fcf.Class.Monoid

type (x :: Symbol) <> (y :: Symbol) = AppendSymbol x y
type TryDomain t (Proxy dom) Source # 
Instance details

Defined in Clash.Class.HasDomain.HasSingleDomain

type TryDomain t (Proxy dom) = 'Found dom
type HasDomain dom1 (Proxy dom2) Source # 
Instance details

Defined in Clash.Class.HasDomain.HasSpecificDomain

type HasDomain dom1 (Proxy dom2) = DomEq dom1 dom2

data Natural #

Natural number

Invariant: numbers <= 0xffffffffffffffff use the NS constructor

Instances

Instances details
Data Natural

Since: base-4.8.0.0

Instance details

Defined in Data.Data

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Natural -> c Natural #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Natural #

toConstr :: Natural -> Constr #

dataTypeOf :: Natural -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Natural) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Natural) #

gmapT :: (forall b. Data b => b -> b) -> Natural -> Natural #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Natural -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Natural -> r #

gmapQ :: (forall d. Data d => d -> u) -> Natural -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Natural -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Natural -> m Natural #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Natural -> m Natural #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Natural -> m Natural #

Bits Natural

Since: base-4.8.0

Instance details

Defined in GHC.Bits

Enum Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Enum

Ix Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Ix

Num Natural

Note that Natural's Num instance isn't a ring: no element but 0 has an additive inverse. It is a semiring though.

Since: base-4.8.0.0

Instance details

Defined in GHC.Num

Read Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Read

Integral Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Real

Real Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Real

Show Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Show

PrintfArg Natural

Since: base-4.8.0.0

Instance details

Defined in Text.Printf

Binary Natural

Since: binary-0.7.3.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Natural -> Put #

get :: Get Natural #

putList :: [Natural] -> Put #

NFDataX Natural Source # 
Instance details

Defined in Clash.XException

ShowX Natural Source # 
Instance details

Defined in Clash.XException

NFData Natural

Since: deepseq-1.4.0.0

Instance details

Defined in Control.DeepSeq

Methods

rnf :: Natural -> () #

Eq Natural 
Instance details

Defined in GHC.Num.Natural

Methods

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

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

Ord Natural 
Instance details

Defined in GHC.Num.Natural

Hashable Natural 
Instance details

Defined in Data.Hashable.Class

Methods

hashWithSalt :: Int -> Natural -> Int #

hash :: Natural -> Int #

UniformRange Natural 
Instance details

Defined in System.Random.Internal

Methods

uniformRM :: StatefulGen g m => (Natural, Natural) -> g -> m Natural #

isInRange :: (Natural, Natural) -> Natural -> Bool #

Corecursive Natural 
Instance details

Defined in Data.Functor.Foldable

Methods

embed :: Base Natural Natural -> Natural #

ana :: (a -> Base Natural a) -> a -> Natural #

apo :: (a -> Base Natural (Either Natural a)) -> a -> Natural #

postpro :: Recursive Natural => (forall b. Base Natural b -> Base Natural b) -> (a -> Base Natural a) -> a -> Natural #

gpostpro :: (Recursive Natural, Monad m) => (forall b. m (Base Natural b) -> Base Natural (m b)) -> (forall c. Base Natural c -> Base Natural c) -> (a -> Base Natural (m a)) -> a -> Natural #

Recursive Natural 
Instance details

Defined in Data.Functor.Foldable

Methods

project :: Natural -> Base Natural Natural #

cata :: (Base Natural a -> a) -> Natural -> a #

para :: (Base Natural (Natural, a) -> a) -> Natural -> a #

gpara :: (Corecursive Natural, Comonad w) => (forall b. Base Natural (w b) -> w (Base Natural b)) -> (Base Natural (EnvT Natural w a) -> a) -> Natural -> a #

prepro :: Corecursive Natural => (forall b. Base Natural b -> Base Natural b) -> (Base Natural a -> a) -> Natural -> a #

gprepro :: (Corecursive Natural, Comonad w) => (forall b. Base Natural (w b) -> w (Base Natural b)) -> (forall c. Base Natural c -> Base Natural c) -> (Base Natural (w a) -> a) -> Natural -> a #

TestCoercion SNat

Since: base-4.18.0.0

Instance details

Defined in GHC.TypeNats

Methods

testCoercion :: forall (a :: k) (b :: k). SNat a -> SNat b -> Maybe (Coercion a b) #

TestEquality SNat

Since: base-4.18.0.0

Instance details

Defined in GHC.TypeNats

Methods

testEquality :: forall (a :: k) (b :: k). SNat a -> SNat b -> Maybe (a :~: b) #

Lift Natural 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Natural -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Natural -> Code m Natural #

KnownNat n => Reifies (n :: Nat) Integer 
Instance details

Defined in Data.Reflection

Methods

reflect :: proxy n -> Integer #

(KnownNat a, KnownNat b) => KnownBoolNat2 "Data.Type.Ord.<=?" (a :: Nat) (b :: Nat) 
Instance details

Defined in GHC.TypeLits.KnownNat

Methods

boolNatSing2 :: SBoolKb "Data.Type.Ord.<=?" #

(KnownNat a, KnownNat b) => KnownBoolNat2 "Data.Type.Ord.OrdCond" (a :: Nat) (b :: Nat) 
Instance details

Defined in GHC.TypeLits.KnownNat

Methods

boolNatSing2 :: SBoolKb "Data.Type.Ord.OrdCond" #

(KnownBool a, KnownNat b, KnownNat c) => KnownNat2Bool "Data.Type.Bool.If" a (b :: Nat) (c :: Nat) 
Instance details

Defined in GHC.TypeLits.KnownNat

Methods

natBoolSing3 :: SNatKn "Data.Type.Bool.If" #

() :=> (Bits Natural) 
Instance details

Defined in Data.Constraint

Methods

ins :: () :- Bits Natural #

() :=> (Enum Natural) 
Instance details

Defined in Data.Constraint

Methods

ins :: () :- Enum Natural #

() :=> (Num Natural) 
Instance details

Defined in Data.Constraint

Methods

ins :: () :- Num Natural #

() :=> (Read Natural) 
Instance details

Defined in Data.Constraint

Methods

ins :: () :- Read Natural #

() :=> (Integral Natural) 
Instance details

Defined in Data.Constraint

Methods

ins :: () :- Integral Natural #

() :=> (Real Natural) 
Instance details

Defined in Data.Constraint

Methods

ins :: () :- Real Natural #

() :=> (Show Natural) 
Instance details

Defined in Data.Constraint

Methods

ins :: () :- Show Natural #

() :=> (Eq Natural) 
Instance details

Defined in Data.Constraint

Methods

ins :: () :- Eq Natural #

() :=> (Ord Natural) 
Instance details

Defined in Data.Constraint

Methods

ins :: () :- Ord Natural #

Resize f => Resize (Compose Erroring f) Source # 
Instance details

Defined in Clash.Num.Erroring

Methods

resize :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Erroring f a -> Compose Erroring f b Source #

extend :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Erroring f a -> Compose Erroring f (b + a) Source #

zeroExtend :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Erroring f a -> Compose Erroring f (b + a) Source #

signExtend :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Erroring f a -> Compose Erroring f (b + a) Source #

truncateB :: forall (a :: Nat) (b :: Natural). KnownNat a => Compose Erroring f (a + b) -> Compose Erroring f a Source #

Resize f => Resize (Compose Saturating f) Source # 
Instance details

Defined in Clash.Num.Saturating

Methods

resize :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Saturating f a -> Compose Saturating f b Source #

extend :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Saturating f a -> Compose Saturating f (b + a) Source #

zeroExtend :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Saturating f a -> Compose Saturating f (b + a) Source #

signExtend :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Saturating f a -> Compose Saturating f (b + a) Source #

truncateB :: forall (a :: Nat) (b :: Natural). KnownNat a => Compose Saturating f (a + b) -> Compose Saturating f a Source #

Resize f => Resize (Compose Wrapping f) Source # 
Instance details

Defined in Clash.Num.Wrapping

Methods

resize :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Wrapping f a -> Compose Wrapping f b Source #

extend :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Wrapping f a -> Compose Wrapping f (b + a) Source #

zeroExtend :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Wrapping f a -> Compose Wrapping f (b + a) Source #

signExtend :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Wrapping f a -> Compose Wrapping f (b + a) Source #

truncateB :: forall (a :: Nat) (b :: Natural). KnownNat a => Compose Wrapping f (a + b) -> Compose Wrapping f a Source #

Resize f => Resize (Compose Zeroing f) Source # 
Instance details

Defined in Clash.Num.Zeroing

Methods

resize :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Zeroing f a -> Compose Zeroing f b Source #

extend :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Zeroing f a -> Compose Zeroing f (b + a) Source #

zeroExtend :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Zeroing f a -> Compose Zeroing f (b + a) Source #

signExtend :: forall (a :: Nat) (b :: Nat). (KnownNat a, KnownNat b) => Compose Zeroing f a -> Compose Zeroing f (b + a) Source #

truncateB :: forall (a :: Nat) (b :: Natural). KnownNat a => Compose Zeroing f (a + b) -> Compose Zeroing f a Source #

type Base Natural 
Instance details

Defined in Data.Functor.Foldable

type TryDomain t Natural Source # 
Instance details

Defined in Clash.Class.HasDomain.HasSingleDomain

type Compare (a :: Natural) (b :: Natural) 
Instance details

Defined in Data.Type.Ord

type Compare (a :: Natural) (b :: Natural) = CmpNat a b
type Apply (VCons a :: TyFun Nat Type -> Type) (l :: Nat) Source # 
Instance details

Defined in Clash.Sized.Vector

type Apply (VCons a :: TyFun Nat Type -> Type) (l :: Nat) = Vec l a
type Eval (Sum ns :: Nat -> Type) 
Instance details

Defined in Fcf.Class.Foldable

type Eval (Sum ns :: Nat -> Type) = Eval (Foldr (+) 0 ns)
type Eval (Length ('[] :: [a]) :: Nat -> Type) 
Instance details

Defined in Fcf.Data.List

type Eval (Length ('[] :: [a]) :: Nat -> Type) = 0
type Eval (Length (a2 ': as) :: Nat -> Type) 
Instance details

Defined in Fcf.Data.List

type Eval (Length (a2 ': as) :: Nat -> Type) = 1 + Eval (Length as)
type Eval (a * b :: Nat -> Type) 
Instance details

Defined in Fcf.Data.Nat

type Eval (a * b :: Nat -> Type) = a * b
type Eval (a + b :: Nat -> Type) 
Instance details

Defined in Fcf.Data.Nat

type Eval (a + b :: Nat -> Type) = a + b
type Eval (a - b :: Nat -> Type) 
Instance details

Defined in Fcf.Data.Nat

type Eval (a - b :: Nat -> Type) = a - b
type Eval (a ^ b :: Nat -> Type) 
Instance details

Defined in Fcf.Data.Nat

type Eval (a ^ b :: Nat -> Type) = a ^ b
type Eval (FindIndex _p ('[] :: [a]) :: Maybe Nat -> Type) 
Instance details

Defined in Fcf.Data.List

type Eval (FindIndex _p ('[] :: [a]) :: Maybe Nat -> Type) = 'Nothing :: Maybe Nat
type Eval (FindIndex p (a2 ': as) :: Maybe Nat -> Type) 
Instance details

Defined in Fcf.Data.List

type Eval (FindIndex p (a2 ': as) :: Maybe Nat -> Type) = Eval (If (Eval (p a2)) (Pure ('Just 0)) ((Map ((+) 1) :: Maybe Nat -> Maybe Nat -> Type) =<< FindIndex p as))
type Eval (NumIter a s :: Maybe (k, Nat) -> Type) 
Instance details

Defined in Fcf.Data.List

type Eval (NumIter a s :: Maybe (k, Nat) -> Type) = If (Eval (s > 0)) ('Just '(a, s - 1)) ('Nothing :: Maybe (k, Natural))

type family (a :: Natural) - (b :: Natural) :: Natural where ... infixl 6 #

Subtraction of type-level naturals.

Since: base-4.7.0.0

class KnownNat (n :: Nat) where #

This class gives the integer associated with a type-level natural. There are instances of the class for every concrete literal: 0, 1, 2, etc.

Since: base-4.7.0.0

Methods

natSing :: SNat n #

class KnownSymbol (n :: Symbol) where #

This class gives the string associated with a type-level symbol. There are instances of the class for every concrete literal: "hello", etc.

Since: base-4.7.0.0

Methods

symbolSing :: SSymbol n #

class KnownChar (n :: Char) where #

Since: base-4.16.0.0

Methods

charSing :: SChar n #

type family TypeError (a :: ErrorMessage) :: b where ... #

The type-level equivalent of error.

The polymorphic kind of this type allows it to be used in several settings. For instance, it can be used as a constraint, e.g. to provide a better error message for a non-existent instance,

-- in a context
instance TypeError (Text "Cannot Show functions." :$$:
                    Text "Perhaps there is a missing argument?")
      => Show (a -> b) where
    showsPrec = error "unreachable"

It can also be placed on the right-hand side of a type-level function to provide an error for an invalid case,

type family ByteSize x where
   ByteSize Word16   = 2
   ByteSize Word8    = 1
   ByteSize a        = TypeError (Text "The type " :<>: ShowType a :<>:
                                  Text " is not exportable.")

Since: base-4.9.0.0

type family AppendSymbol (a :: Symbol) (b :: Symbol) :: Symbol where ... #

Concatenation of type-level symbols.

Since: base-4.10.0.0

type family (a :: Natural) + (b :: Natural) :: Natural where ... infixl 6 #

Addition of type-level naturals.

Since: base-4.7.0.0

type family (a :: Natural) * (b :: Natural) :: Natural where ... infixl 7 #

Multiplication of type-level naturals.

Since: base-4.7.0.0

type family (a :: Natural) ^ (b :: Natural) :: Natural where ... infixr 8 #

Exponentiation of type-level naturals.

Since: base-4.7.0.0

type family CmpSymbol (a :: Symbol) (b :: Symbol) :: Ordering where ... #

Comparison of type-level symbols, as a function.

Since: base-4.7.0.0

type family CmpNat (a :: Natural) (b :: Natural) :: Ordering where ... #

Comparison of type-level naturals, as a function.

Since: base-4.7.0.0

type family CmpChar (a :: Char) (b :: Char) :: Ordering where ... #

Comparison of type-level characters.

Since: base-4.16.0.0

type family Div (a :: Natural) (b :: Natural) :: Natural where ... infixl 7 #

Division (round down) of natural numbers. Div x 0 is undefined (i.e., it cannot be reduced).

Since: base-4.11.0.0

type family Mod (a :: Natural) (b :: Natural) :: Natural where ... infixl 7 #

Modulus of natural numbers. Mod x 0 is undefined (i.e., it cannot be reduced).

Since: base-4.11.0.0

type family Log2 (a :: Natural) :: Natural where ... #

Log base 2 (round down) of natural numbers. Log 0 is undefined (i.e., it cannot be reduced).

Since: base-4.11.0.0

type family ConsSymbol (a :: Char) (b :: Symbol) :: Symbol where ... #

Extending a type-level symbol with a type-level character

Since: base-4.16.0.0

type family UnconsSymbol (a :: Symbol) :: Maybe (Char, Symbol) where ... #

This type family yields type-level Just storing the first character of a symbol and its tail if it is defined and Nothing otherwise.

Since: base-4.16.0.0

type family CharToNat (a :: Char) :: Natural where ... #

Convert a character to its Unicode code point (cf. ord)

Since: base-4.16.0.0

type family NatToChar (a :: Natural) :: Char where ... #

Convert a Unicode code point to a character (cf. chr)

Since: base-4.16.0.0

type (<=) (x :: t) (y :: t) = Assert (x <=? y) (LeErrMsg x y :: Constraint) infix 4 #

Comparison (<=) of comparable types, as a constraint.

Since: base-4.16.0.0

data ErrorMessage #

A description of a custom type error.

Constructors

Text Symbol

Show the text as is.

ShowType t

Pretty print the type. ShowType :: k -> ErrorMessage

ErrorMessage :<>: ErrorMessage infixl 6

Put two pieces of error message next to each other.

ErrorMessage :$$: ErrorMessage infixl 5

Stack two pieces of error message on top of each other.

type (<=?) (m :: k) (n :: k) = OrdCond (Compare m n) 'True 'True 'False infix 4 #

Comparison (<=) of comparable types, as a function.

Since: base-4.16.0.0

data OrderingI (a :: k) (b :: k) where #

Ordering data type for type literals that provides proof of their ordering.

Since: base-4.16.0.0

Constructors

LTI :: forall {k} (a :: k) (b :: k). Compare a b ~ 'LT => OrderingI a b 
EQI :: forall {k} (a :: k). Compare a a ~ 'EQ => OrderingI a a 
GTI :: forall {k} (a :: k) (b :: k). Compare a b ~ 'GT => OrderingI a b 

Instances

Instances details
Show (OrderingI a b) 
Instance details

Defined in Data.Type.Ord

Methods

showsPrec :: Int -> OrderingI a b -> ShowS #

show :: OrderingI a b -> String #

showList :: [OrderingI a b] -> ShowS #

Eq (OrderingI a b) 
Instance details

Defined in Data.Type.Ord

Methods

(==) :: OrderingI a b -> OrderingI a b -> Bool #

(/=) :: OrderingI a b -> OrderingI a b -> Bool #

data SomeNat #

This type represents unknown type-level natural numbers.

Since: base-4.10.0.0

Constructors

KnownNat n => SomeNat (Proxy n) 

Instances

Instances details
Read SomeNat

Since: base-4.7.0.0

Instance details

Defined in GHC.TypeNats

Show SomeNat

Since: base-4.7.0.0

Instance details

Defined in GHC.TypeNats

Eq SomeNat

Since: base-4.7.0.0

Instance details

Defined in GHC.TypeNats

Methods

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

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

Ord SomeNat

Since: base-4.7.0.0

Instance details

Defined in GHC.TypeNats

type Nat = Natural #

A type synonym for Natural.

Prevously, this was an opaque data type, but it was changed to a type synonym.

Since: base-4.16.0.0

data SChar (s :: Char) #

A value-level witness for a type-level character. This is commonly referred to as a singleton type, as for each c, there is a single value that inhabits the type SChar c (aside from bottom).

The definition of SChar is intentionally left abstract. To obtain an SChar value, use one of the following:

  1. The charSing method of KnownChar.
  2. The SChar pattern synonym.
  3. The withSomeSChar function, which creates an SChar from a Char.

Since: base-4.18.0.0

Instances

Instances details
TestCoercion SChar

Since: base-4.18.0.0

Instance details

Defined in GHC.TypeLits

Methods

testCoercion :: forall (a :: k) (b :: k). SChar a -> SChar b -> Maybe (Coercion a b) #

TestEquality SChar

Since: base-4.18.0.0

Instance details

Defined in GHC.TypeLits

Methods

testEquality :: forall (a :: k) (b :: k). SChar a -> SChar b -> Maybe (a :~: b) #

Show (SChar c)

Since: base-4.18.0.0

Instance details

Defined in GHC.TypeLits

Methods

showsPrec :: Int -> SChar c -> ShowS #

show :: SChar c -> String #

showList :: [SChar c] -> ShowS #

data SomeChar #

Constructors

KnownChar n => SomeChar (Proxy n) 

Instances

Instances details
Read SomeChar 
Instance details

Defined in GHC.TypeLits

Show SomeChar 
Instance details

Defined in GHC.TypeLits

Eq SomeChar 
Instance details

Defined in GHC.TypeLits

Ord SomeChar 
Instance details

Defined in GHC.TypeLits

data SomeSymbol #

This type represents unknown type-level symbols.

Constructors

KnownSymbol n => SomeSymbol (Proxy n)

Since: base-4.7.0.0

Instances

Instances details
Read SomeSymbol

Since: base-4.7.0.0

Instance details

Defined in GHC.TypeLits

Show SomeSymbol

Since: base-4.7.0.0

Instance details

Defined in GHC.TypeLits

Eq SomeSymbol

Since: base-4.7.0.0

Instance details

Defined in GHC.TypeLits

Ord SomeSymbol

Since: base-4.7.0.0

Instance details

Defined in GHC.TypeLits

pattern SChar :: () => KnownChar c => SChar c #

A explicitly bidirectional pattern synonym relating an SChar to a KnownChar constraint.

As an expression: Constructs an explicit SChar c value from an implicit KnownChar c constraint:

SChar @c :: KnownChar c => SChar c

As a pattern: Matches on an explicit SChar c value bringing an implicit KnownChar c constraint into scope:

f :: SChar c -> ..
f SChar = {- SChar c in scope -}

Since: base-4.18.0.0

natVal :: forall (n :: Nat) proxy. KnownNat n => proxy n -> Integer #

Since: base-4.7.0.0

natVal' :: forall (n :: Nat). KnownNat n => Proxy# n -> Integer #

Since: base-4.8.0.0

someNatVal :: Integer -> Maybe SomeNat #

Convert an integer into an unknown type-level natural.

Since: base-4.7.0.0

sameNat :: forall (a :: Nat) (b :: Nat) proxy1 proxy2. (KnownNat a, KnownNat b) => proxy1 a -> proxy2 b -> Maybe (a :~: b) #

We either get evidence that this function was instantiated with the same type-level numbers, or Nothing.

Since: base-4.7.0.0

cmpNat :: forall (a :: Nat) (b :: Nat) proxy1 proxy2. (KnownNat a, KnownNat b) => proxy1 a -> proxy2 b -> OrderingI a b #

Like sameNat, but if the numbers aren't equal, this additionally provides proof of LT or GT.

Since: base-4.16.0.0

withKnownNat :: forall (n :: Nat) (rep :: RuntimeRep) (r :: TYPE rep). SNat n -> (KnownNat n => r) -> r #

Convert an explicit SNat n value into an implicit KnownNat n constraint.

Since: base-4.18.0.0

withSomeSNat :: forall (rep :: RuntimeRep) (r :: TYPE rep). Integer -> (forall (n :: Nat). Maybe (SNat n) -> r) -> r #

Attempt to convert an Integer into an SNat n value, where n is a fresh type-level natural number. If the Integer argument is non-negative, invoke the continuation with Just sn, where sn is the SNat n value. If the Integer argument is negative, invoke the continuation with Nothing.

For a version of this function where the continuation uses 'SNat n instead of Maybe (SNat n)@, see withSomeSNat in GHC.TypeNats.

Since: base-4.18.0.0

symbolVal :: forall (n :: Symbol) proxy. KnownSymbol n => proxy n -> String #

Since: base-4.7.0.0

symbolVal' :: forall (n :: Symbol). KnownSymbol n => Proxy# n -> String #

Since: base-4.8.0.0

charVal :: forall (n :: Char) proxy. KnownChar n => proxy n -> Char #

charVal' :: forall (n :: Char). KnownChar n => Proxy# n -> Char #

someSymbolVal :: String -> SomeSymbol #

Convert a string into an unknown type-level symbol.

Since: base-4.7.0.0

someCharVal :: Char -> SomeChar #

Convert a character into an unknown type-level char.

Since: base-4.16.0.0

sameSymbol :: forall (a :: Symbol) (b :: Symbol) proxy1 proxy2. (KnownSymbol a, KnownSymbol b) => proxy1 a -> proxy2 b -> Maybe (a :~: b) #

We either get evidence that this function was instantiated with the same type-level symbols, or Nothing.

Since: base-4.7.0.0

sameChar :: forall (a :: Char) (b :: Char) proxy1 proxy2. (KnownChar a, KnownChar b) => proxy1 a -> proxy2 b -> Maybe (a :~: b) #

We either get evidence that this function was instantiated with the same type-level characters, or Nothing.

Since: base-4.16.0.0

cmpSymbol :: forall (a :: Symbol) (b :: Symbol) proxy1 proxy2. (KnownSymbol a, KnownSymbol b) => proxy1 a -> proxy2 b -> OrderingI a b #

Like sameSymbol, but if the symbols aren't equal, this additionally provides proof of LT or GT.

Since: base-4.16.0.0

cmpChar :: forall (a :: Char) (b :: Char) proxy1 proxy2. (KnownChar a, KnownChar b) => proxy1 a -> proxy2 b -> OrderingI a b #

Like sameChar, but if the Chars aren't equal, this additionally provides proof of LT or GT.

Since: base-4.16.0.0

fromSSymbol :: forall (s :: Symbol). SSymbol s -> String #

Return the String corresponding to s in an SSymbol s value.

Since: base-4.18.0.0

withKnownSymbol :: forall (s :: Symbol) (rep :: RuntimeRep) (r :: TYPE rep). SSymbol s -> (KnownSymbol s => r) -> r #

Convert an explicit SSymbol s value into an implicit KnownSymbol s constraint.

Since: base-4.18.0.0

withSomeSSymbol :: forall (rep :: RuntimeRep) (r :: TYPE rep). String -> (forall (s :: Symbol). SSymbol s -> r) -> r #

Convert a String into an SSymbol s value, where s is a fresh type-level symbol.

Since: base-4.18.0.0

fromSChar :: forall (c :: Char). SChar c -> Char #

Return the Char corresponding to c in an SChar c value.

Since: base-4.18.0.0

withKnownChar :: forall (c :: Char) (rep :: RuntimeRep) (r :: TYPE rep). SChar c -> (KnownChar c => r) -> r #

Convert an explicit SChar c value into an implicit KnownChar c constraint.

Since: base-4.18.0.0

withSomeSChar :: forall (rep :: RuntimeRep) (r :: TYPE rep). Char -> (forall (c :: Char). SChar c -> r) -> r #

Convert a Char into an SChar c value, where c is a fresh type-level character.

Since: base-4.18.0.0

Type-level strings

Template Haskell

class Lift (t :: TYPE r) where #

A Lift instance can have any of its values turned into a Template Haskell expression. This is needed when a value used within a Template Haskell quotation is bound outside the Oxford brackets ([| ... |] or [|| ... ||]) but not at the top level. As an example:

add1 :: Int -> Q (TExp Int)
add1 x = [|| x + 1 ||]

Template Haskell has no way of knowing what value x will take on at splice-time, so it requires the type of x to be an instance of Lift.

A Lift instance must satisfy $(lift x) ≡ x and $$(liftTyped x) ≡ x for all x, where $(...) and $$(...) are Template Haskell splices. It is additionally expected that lift x ≡ unTypeQ (liftTyped x).

Lift instances can be derived automatically by use of the -XDeriveLift GHC language extension:

{-# LANGUAGE DeriveLift #-}
module Foo where

import Language.Haskell.TH.Syntax

data Bar a = Bar1 a (Bar a) | Bar2 String
  deriving Lift

Representation-polymorphic since template-haskell-2.16.0.0.

Minimal complete definition

liftTyped

Methods

lift :: Quote m => t -> m Exp #

Turn a value into a Template Haskell expression, suitable for use in a splice.

liftTyped :: forall (m :: Type -> Type). Quote m => t -> Code m t #

Turn a value into a Template Haskell typed expression, suitable for use in a typed splice.

Since: template-haskell-2.16.0.0

Instances

Instances details
Lift Addr#

Produces an Addr# literal from the NUL-terminated C-string starting at the given memory address.

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Addr# -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Addr# -> Code m Addr# #

Lift Double#

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Double# -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Double# -> Code m Double# #

Lift Float#

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Float# -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Float# -> Code m Float# #

Lift Int#

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Int# -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Int# -> Code m Int# #

Lift ByteArray

Since: template-haskell-2.19.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => ByteArray -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => ByteArray -> Code m ByteArray #

Lift Void

Since: template-haskell-2.15.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Void -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Void -> Code m Void #

Lift Int16 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Int16 -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Int16 -> Code m Int16 #

Lift Int32 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Int32 -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Int32 -> Code m Int32 #

Lift Int64 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Int64 -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Int64 -> Code m Int64 #

Lift Int8 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Int8 -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Int8 -> Code m Int8 #

Lift Word16 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Word16 -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Word16 -> Code m Word16 #

Lift Word32 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Word32 -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Word32 -> Code m Word32 #

Lift Word64 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Word64 -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Word64 -> Code m Word64 #

Lift Word8 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Word8 -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Word8 -> Code m Word8 #

Lift ByteString

Since: bytestring-0.11.2.0

Instance details

Defined in Data.ByteString.Internal.Type

Methods

lift :: Quote m => ByteString -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => ByteString -> Code m ByteString #

Lift ByteString 
Instance details

Defined in Data.ByteString.Lazy.Internal

Methods

lift :: Quote m => ByteString -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => ByteString -> Code m ByteString #

Lift ShortByteString

Since: bytestring-0.11.2.0

Instance details

Defined in Data.ByteString.Short.Internal

Methods

lift :: Quote m => ShortByteString -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => ShortByteString -> Code m ShortByteString #

Lift ConstrRepr Source # 
Instance details

Defined in Clash.Annotations.BitRepresentation

Methods

lift :: Quote m => ConstrRepr -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => ConstrRepr -> Code m ConstrRepr #

Lift DataReprAnn Source # 
Instance details

Defined in Clash.Annotations.BitRepresentation

Methods

lift :: Quote m => DataReprAnn -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => DataReprAnn -> Code m DataReprAnn #

Lift PortName Source # 
Instance details

Defined in Clash.Annotations.TopEntity

Methods

lift :: Quote m => PortName -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => PortName -> Code m PortName #

Lift TopEntity Source # 
Instance details

Defined in Clash.Annotations.TopEntity

Methods

lift :: Quote m => TopEntity -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => TopEntity -> Code m TopEntity #

Lift Femtoseconds Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

lift :: Quote m => Femtoseconds -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Femtoseconds -> Code m Femtoseconds #

Lift Bit Source # 
Instance details

Defined in Clash.Sized.Internal.BitVector

Methods

lift :: Quote m => Bit -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Bit -> Code m Bit #

Lift IntSet

Since: containers-0.6.6

Instance details

Defined in Data.IntSet.Internal

Methods

lift :: Quote m => IntSet -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => IntSet -> Code m IntSet #

Lift OsString 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Methods

lift :: Quote m => OsString -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => OsString -> Code m OsString #

Lift PosixString 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Methods

lift :: Quote m => PosixString -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => PosixString -> Code m PosixString #

Lift WindowsString 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Methods

lift :: Quote m => WindowsString -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => WindowsString -> Code m WindowsString #

Lift Half 
Instance details

Defined in Numeric.Half.Internal

Methods

lift :: Quote m => Half -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Half -> Code m Half #

Lift OsString 
Instance details

Defined in System.OsString.Internal.Types

Methods

lift :: Quote m => OsString -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => OsString -> Code m OsString #

Lift PosixString 
Instance details

Defined in System.OsString.Internal.Types

Methods

lift :: Quote m => PosixString -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => PosixString -> Code m PosixString #

Lift WindowsString 
Instance details

Defined in System.OsString.Internal.Types

Methods

lift :: Quote m => WindowsString -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => WindowsString -> Code m WindowsString #

Lift Integer 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Integer -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Integer -> Code m Integer #

Lift Natural 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Natural -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Natural -> Code m Natural #

Lift () 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => () -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => () -> Code m () #

Lift Bool 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Bool -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Bool -> Code m Bool #

Lift Char 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Char -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Char -> Code m Char #

Lift Double 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Double -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Double -> Code m Double #

Lift Float 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Float -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Float -> Code m Float #

Lift Int 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Int -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Int -> Code m Int #

Lift Word 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Word -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Word -> Code m Word #

Lift Char#

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Char# -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Char# -> Code m Char# #

Lift Word#

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Word# -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Word# -> Code m Word# #

Lift (# #)

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# #) -> Code m (# #) #

Lift a => Lift (NonEmpty a :: Type)

Since: template-haskell-2.15.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => NonEmpty a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => NonEmpty a -> Code m (NonEmpty a) #

Integral a => Lift (Ratio a :: Type) 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Ratio a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Ratio a -> Code m (Ratio a) #

Lift a => Lift (Attr a :: Type) Source # 
Instance details

Defined in Clash.Annotations.SynthesisAttributes

Methods

lift :: Quote m => Attr a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Attr a -> Code m (Attr a) #

Lift (SNat n :: Type) Source # 
Instance details

Defined in Clash.Promoted.Nat

Methods

lift :: Quote m => SNat n -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => SNat n -> Code m (SNat n) #

KnownSymbol s => Lift (SSymbol s :: Type) Source # 
Instance details

Defined in Clash.Promoted.Symbol

Methods

lift :: Quote m => SSymbol s -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => SSymbol s -> Code m (SSymbol s) #

KnownNat n => Lift (BitVector n :: Type) Source # 
Instance details

Defined in Clash.Sized.Internal.BitVector

Methods

lift :: Quote m => BitVector n -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => BitVector n -> Code m (BitVector n) #

KnownNat n => Lift (Index n :: Type) Source # 
Instance details

Defined in Clash.Sized.Internal.Index

Methods

lift :: Quote m => Index n -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Index n -> Code m (Index n) #

KnownNat n => Lift (Signed n :: Type) Source # 
Instance details

Defined in Clash.Sized.Internal.Signed

Methods

lift :: Quote m => Signed n -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Signed n -> Code m (Signed n) #

KnownNat n => Lift (Unsigned n :: Type) Source # 
Instance details

Defined in Clash.Sized.Internal.Unsigned

Methods

lift :: Quote m => Unsigned n -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Unsigned n -> Code m (Unsigned n) #

Lift a => Lift (IntMap a :: Type)

Since: containers-0.6.6

Instance details

Defined in Data.IntMap.Internal

Methods

lift :: Quote m => IntMap a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => IntMap a -> Code m (IntMap a) #

Lift a => Lift (Digit a :: Type)

Since: containers-0.6.6

Instance details

Defined in Data.Sequence.Internal

Methods

lift :: Quote m => Digit a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Digit a -> Code m (Digit a) #

Lift a => Lift (FingerTree a :: Type)

Since: containers-0.6.6

Instance details

Defined in Data.Sequence.Internal

Methods

lift :: Quote m => FingerTree a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => FingerTree a -> Code m (FingerTree a) #

Lift a => Lift (Node a :: Type)

Since: containers-0.6.6

Instance details

Defined in Data.Sequence.Internal

Methods

lift :: Quote m => Node a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Node a -> Code m (Node a) #

Lift a => Lift (Seq a :: Type)

Since: containers-0.6.6

Instance details

Defined in Data.Sequence.Internal

Methods

lift :: Quote m => Seq a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Seq a -> Code m (Seq a) #

Lift a => Lift (ViewL a :: Type)

Since: containers-0.6.6

Instance details

Defined in Data.Sequence.Internal

Methods

lift :: Quote m => ViewL a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => ViewL a -> Code m (ViewL a) #

Lift a => Lift (ViewR a :: Type)

Since: containers-0.6.6

Instance details

Defined in Data.Sequence.Internal

Methods

lift :: Quote m => ViewR a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => ViewR a -> Code m (ViewR a) #

Lift a => Lift (Set a :: Type)

Since: containers-0.6.6

Instance details

Defined in Data.Set.Internal

Methods

lift :: Quote m => Set a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Set a -> Code m (Set a) #

Lift a => Lift (Tree a :: Type)

Since: containers-0.6.6

Instance details

Defined in Data.Tree

Methods

lift :: Quote m => Tree a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Tree a -> Code m (Tree a) #

Lift a => Lift (Array a :: Type) 
Instance details

Defined in Data.Primitive.Array

Methods

lift :: Quote m => Array a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Array a -> Code m (Array a) #

Lift (PrimArray a :: Type) 
Instance details

Defined in Data.Primitive.PrimArray

Methods

lift :: Quote m => PrimArray a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => PrimArray a -> Code m (PrimArray a) #

Lift a => Lift (SmallArray a :: Type) 
Instance details

Defined in Data.Primitive.SmallArray

Methods

lift :: Quote m => SmallArray a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => SmallArray a -> Code m (SmallArray a) #

Lift a => Lift (HashSet a :: Type)

Since: unordered-containers-0.2.17.0

Instance details

Defined in Data.HashSet.Internal

Methods

lift :: Quote m => HashSet a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => HashSet a -> Code m (HashSet a) #

Lift a => Lift (Maybe a :: Type) 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Maybe a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Maybe a -> Code m (Maybe a) #

Lift a => Lift ([a] :: Type) 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => [a] -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => [a] -> Code m [a] #

(Lift a, Lift b) => Lift (Either a b :: Type) 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => Either a b -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Either a b -> Code m (Either a b) #

Lift a => Lift (Signal dom a :: Type) Source # 
Instance details

Defined in Clash.Signal.Internal

Methods

lift :: Quote m => Signal dom a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Signal dom a -> Code m (Signal dom a) #

Lift a => Lift (RTree d a :: Type) Source # 
Instance details

Defined in Clash.Sized.RTree

Methods

lift :: Quote m => RTree d a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => RTree d a -> Code m (RTree d a) #

Lift a => Lift (Vec n a :: Type) Source # 
Instance details

Defined in Clash.Sized.Vector

Methods

lift :: Quote m => Vec n a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Vec n a -> Code m (Vec n a) #

(Lift k, Lift a) => Lift (Map k a :: Type)

Since: containers-0.6.6

Instance details

Defined in Data.Map.Internal

Methods

lift :: Quote m => Map k a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Map k a -> Code m (Map k a) #

(Lift k, Lift v) => Lift (HashMap k v :: Type)

Since: unordered-containers-0.2.17.0

Instance details

Defined in Data.HashMap.Internal

Methods

lift :: Quote m => HashMap k v -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => HashMap k v -> Code m (HashMap k v) #

(Lift k, Lift v) => Lift (Leaf k v :: Type)

Since: unordered-containers-0.2.17.0

Instance details

Defined in Data.HashMap.Internal

Methods

lift :: Quote m => Leaf k v -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Leaf k v -> Code m (Leaf k v) #

(Lift a, Lift b) => Lift ((a, b) :: Type) 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (a, b) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (a, b) -> Code m (a, b) #

Lift a => Lift (DSignal dom delay a :: Type) Source # 
Instance details

Defined in Clash.Signal.Delayed.Internal

Methods

lift :: Quote m => DSignal dom delay a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => DSignal dom delay a -> Code m (DSignal dom delay a) #

(Lift (rep (int + frac)), KnownNat frac, KnownNat int, Typeable rep) => Lift (Fixed rep int frac :: Type) Source # 
Instance details

Defined in Clash.Sized.Fixed

Methods

lift :: Quote m => Fixed rep int frac -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Fixed rep int frac -> Code m (Fixed rep int frac) #

(Lift a, Lift b, Lift c) => Lift ((a, b, c) :: Type) 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (a, b, c) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (a, b, c) -> Code m (a, b, c) #

(Lift a, Lift b, Lift c, Lift d) => Lift ((a, b, c, d) :: Type) 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (a, b, c, d) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (a, b, c, d) -> Code m (a, b, c, d) #

(Lift a, Lift b, Lift c, Lift d, Lift e) => Lift ((a, b, c, d, e) :: Type) 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (a, b, c, d, e) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (a, b, c, d, e) -> Code m (a, b, c, d, e) #

(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift ((a, b, c, d, e, f) :: Type) 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (a, b, c, d, e, f) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (a, b, c, d, e, f) -> Code m (a, b, c, d, e, f) #

(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift ((a, b, c, d, e, f, g) :: Type) 
Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (a, b, c, d, e, f, g) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (a, b, c, d, e, f, g) -> Code m (a, b, c, d, e, f, g) #

Lift a => Lift ((# a #) :: TYPE ('TupleRep '[LiftedRep]))

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# a #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# a #) -> Code m (# a #) #

(Lift a, Lift b) => Lift ((# a | b #) :: TYPE ('SumRep '[LiftedRep, LiftedRep]))

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# a | b #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# a | b #) -> Code m (# a | b #) #

(Lift a, Lift b) => Lift ((# a, b #) :: TYPE ('TupleRep '[LiftedRep, LiftedRep]))

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# a, b #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# a, b #) -> Code m (# a, b #) #

(Lift a, Lift b, Lift c) => Lift ((# a | b | c #) :: TYPE ('SumRep '[LiftedRep, LiftedRep, LiftedRep]))

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# a | b | c #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# a | b | c #) -> Code m (# a | b | c #) #

(Lift a, Lift b, Lift c) => Lift ((# a, b, c #) :: TYPE ('TupleRep '[LiftedRep, LiftedRep, LiftedRep]))

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# a, b, c #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# a, b, c #) -> Code m (# a, b, c #) #

(Lift a, Lift b, Lift c, Lift d) => Lift ((# a | b | c | d #) :: TYPE ('SumRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep]))

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# a | b | c | d #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# a | b | c | d #) -> Code m (# a | b | c | d #) #

(Lift a, Lift b, Lift c, Lift d) => Lift ((# a, b, c, d #) :: TYPE ('TupleRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep]))

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# a, b, c, d #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# a, b, c, d #) -> Code m (# a, b, c, d #) #

(Lift a, Lift b, Lift c, Lift d, Lift e) => Lift ((# a | b | c | d | e #) :: TYPE ('SumRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep]))

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# a | b | c | d | e #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# a | b | c | d | e #) -> Code m (# a | b | c | d | e #) #

(Lift a, Lift b, Lift c, Lift d, Lift e) => Lift ((# a, b, c, d, e #) :: TYPE ('TupleRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep]))

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# a, b, c, d, e #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# a, b, c, d, e #) -> Code m (# a, b, c, d, e #) #

(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift ((# a | b | c | d | e | f #) :: TYPE ('SumRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep]))

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# a | b | c | d | e | f #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# a | b | c | d | e | f #) -> Code m (# a | b | c | d | e | f #) #

(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift ((# a, b, c, d, e, f #) :: TYPE ('TupleRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep]))

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# a, b, c, d, e, f #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# a, b, c, d, e, f #) -> Code m (# a, b, c, d, e, f #) #

(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift ((# a | b | c | d | e | f | g #) :: TYPE ('SumRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep]))

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# a | b | c | d | e | f | g #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# a | b | c | d | e | f | g #) -> Code m (# a | b | c | d | e | f | g #) #

(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift ((# a, b, c, d, e, f, g #) :: TYPE ('TupleRep '[LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep, LiftedRep]))

Since: template-haskell-2.16.0.0

Instance details

Defined in Language.Haskell.TH.Syntax

Methods

lift :: Quote m => (# a, b, c, d, e, f, g #) -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => (# a, b, c, d, e, f, g #) -> Code m (# a, b, c, d, e, f, g #) #

Type classes

Clash

class NFDataX a => AutoReg a Source #

autoReg is a "smart" version of register. It does two things:

  1. It splits product types over their fields. For example, given a 3-tuple, the corresponding HDL will end up with three instances of a register (or more if the three fields can be split up similarly).
  2. Given a data type where a constructor indicates (parts) of the data will (not) be updated a given cycle, it will split the data in two parts. The first part will contain the "always interesting" parts (the constructor bits). The second holds the "potentially uninteresting" data (the rest). Both parts will be stored in separate registers. The register holding the "potentially uninteresting" part will only be enabled if the constructor bits indicate they're interesting.

The most important example of this is Maybe. Consider Maybe (Signed 16); when viewed as bits, a Nothing would look like:

>>> pack @(Maybe (Signed 16)) Nothing
0b0_...._...._...._....

and Just

>>> pack @(Maybe (Signed 16)) (Just 3)
0b1_0000_0000_0000_0011

In the first case, Nothing, we don't particularly care about updating the register holding the Signed 16 field, as they'll be unknown anyway. We can therefore deassert its enable line.

Making Clash lay it out like this increases the chances of synthesis tools clock gating the registers, saving energy.

This version of autoReg will split the given data type up recursively. For example, given a :: Maybe (Maybe Int, Maybe Int), a total of five registers will be rendered. Both the "interesting" and "uninteresting" enable lines of the inner Maybe types will be controlled by the outer one, in addition to the inner parts controlling their "uninteresting" parts as described in (2).

The default implementation is just register. If you don't need or want the special features of AutoReg, you can use that by writing an empty instance.

data MyDataType = ...
instance AutoReg MyDataType

If you have a product type you can use deriveAutoReg to derive an instance.

Instances

Instances details
AutoReg CUShort Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> CUShort -> Signal dom CUShort -> Signal dom CUShort Source #

AutoReg Int16 Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Int16 -> Signal dom Int16 -> Signal dom Int16 Source #

AutoReg Int32 Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Int32 -> Signal dom Int32 -> Signal dom Int32 Source #

AutoReg Int64 Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Int64 -> Signal dom Int64 -> Signal dom Int64 Source #

AutoReg Int8 Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Int8 -> Signal dom Int8 -> Signal dom Int8 Source #

AutoReg Word16 Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Word16 -> Signal dom Word16 -> Signal dom Word16 Source #

AutoReg Word32 Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Word32 -> Signal dom Word32 -> Signal dom Word32 Source #

AutoReg Word64 Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Word64 -> Signal dom Word64 -> Signal dom Word64 Source #

AutoReg Word8 Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Word8 -> Signal dom Word8 -> Signal dom Word8 Source #

AutoReg Bit Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Bit -> Signal dom Bit -> Signal dom Bit Source #

AutoReg Half Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Half -> Signal dom Half -> Signal dom Half Source #

AutoReg Integer Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Integer -> Signal dom Integer -> Signal dom Integer Source #

AutoReg () Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> () -> Signal dom () -> Signal dom () Source #

AutoReg Bool Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Bool -> Signal dom Bool -> Signal dom Bool Source #

AutoReg Char Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Char -> Signal dom Char -> Signal dom Char Source #

AutoReg Double Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Double -> Signal dom Double -> Signal dom Double Source #

AutoReg Float Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Float -> Signal dom Float -> Signal dom Float Source #

AutoReg Int Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Int -> Signal dom Int -> Signal dom Int Source #

AutoReg Word Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Word -> Signal dom Word -> Signal dom Word Source #

AutoReg a => AutoReg (Complex a) Source # 
Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Complex a -> Signal dom (Complex a) -> Signal dom (Complex a) Source #

AutoReg a => AutoReg (Down a) Source # 
Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Down a -> Signal dom (Down a) -> Signal dom (Down a) Source #

AutoReg a => AutoReg (Ratio a) Source # 
Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Ratio a -> Signal dom (Ratio a) -> Signal dom (Ratio a) Source #

KnownNat n => AutoReg (BitVector n) Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> BitVector n -> Signal dom (BitVector n) -> Signal dom (BitVector n) Source #

AutoReg (Index n) Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Index n -> Signal dom (Index n) -> Signal dom (Index n) Source #

AutoReg (Signed n) Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Signed n -> Signal dom (Signed n) -> Signal dom (Signed n) Source #

AutoReg (Unsigned n) Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Unsigned n -> Signal dom (Unsigned n) -> Signal dom (Unsigned n) Source #

AutoReg a => AutoReg (Maybe a) Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Maybe a -> Signal dom (Maybe a) -> Signal dom (Maybe a) Source #

(AutoReg a, KnownNat n) => AutoReg (RamOp n a) Source # 
Instance details

Defined in Clash.Explicit.BlockRam

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> RamOp n a -> Signal dom (RamOp n a) -> Signal dom (RamOp n a) Source #

(KnownNat d, AutoReg a) => AutoReg (RTree d a) Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> RTree d a -> Signal dom (RTree d a) -> Signal dom (RTree d a) Source #

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

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Vec n a -> Signal dom (Vec n a) -> Signal dom (Vec n a) Source #

(AutoReg a, AutoReg b) => AutoReg (a, b) Source # 
Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> (a, b) -> Signal dom (a, b) -> Signal dom (a, b) Source #

NFDataX (rep (int + frac)) => AutoReg (Fixed rep int frac) Source # 
Instance details

Defined in Clash.Class.AutoReg.Internal

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> Fixed rep int frac -> Signal dom (Fixed rep int frac) -> Signal dom (Fixed rep int frac) Source #

(AutoReg a, AutoReg b, AutoReg c) => AutoReg (a, b, c) Source # 
Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> (a, b, c) -> Signal dom (a, b, c) -> Signal dom (a, b, c) Source #

(AutoReg a, AutoReg b, AutoReg c, AutoReg d) => AutoReg (a, b, c, d) Source # 
Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> (a, b, c, d) -> Signal dom (a, b, c, d) -> Signal dom (a, b, c, d) Source #

(AutoReg a, AutoReg b, AutoReg c, AutoReg d, AutoReg e) => AutoReg (a, b, c, d, e) Source # 
Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> (a, b, c, d, e) -> Signal dom (a, b, c, d, e) -> Signal dom (a, b, c, d, e) Source #

(AutoReg a, AutoReg b, AutoReg c, AutoReg d, AutoReg e, AutoReg f) => AutoReg (a, b, c, d, e, f) Source # 
Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> (a, b, c, d, e, f) -> Signal dom (a, b, c, d, e, f) -> Signal dom (a, b, c, d, e, f) Source #

(AutoReg a, AutoReg b, AutoReg c, AutoReg d, AutoReg e, AutoReg f, AutoReg g) => AutoReg (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> (a, b, c, d, e, f, g) -> Signal dom (a, b, c, d, e, f, g) -> Signal dom (a, b, c, d, e, f, g) Source #

(AutoReg a, AutoReg b, AutoReg c, AutoReg d, AutoReg e, AutoReg f, AutoReg g, AutoReg h) => AutoReg (a, b, c, d, e, f, g, h) Source # 
Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> (a, b, c, d, e, f, g, h) -> Signal dom (a, b, c, d, e, f, g, h) -> Signal dom (a, b, c, d, e, f, g, h) Source #

(AutoReg a, AutoReg b, AutoReg c, AutoReg d, AutoReg e, AutoReg f, AutoReg g, AutoReg h, AutoReg i) => AutoReg (a, b, c, d, e, f, g, h, i) Source # 
Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> (a, b, c, d, e, f, g, h, i) -> Signal dom (a, b, c, d, e, f, g, h, i) -> Signal dom (a, b, c, d, e, f, g, h, i) Source #

(AutoReg a, AutoReg b, AutoReg c, AutoReg d, AutoReg e, AutoReg f, AutoReg g, AutoReg h, AutoReg i, AutoReg j) => AutoReg (a, b, c, d, e, f, g, h, i, j) Source # 
Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> (a, b, c, d, e, f, g, h, i, j) -> Signal dom (a, b, c, d, e, f, g, h, i, j) -> Signal dom (a, b, c, d, e, f, g, h, i, j) Source #

(AutoReg a, AutoReg b, AutoReg c, AutoReg d, AutoReg e, AutoReg f, AutoReg g, AutoReg h, AutoReg i, AutoReg j, AutoReg k) => AutoReg (a, b, c, d, e, f, g, h, i, j, k) Source # 
Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> (a, b, c, d, e, f, g, h, i, j, k) -> Signal dom (a, b, c, d, e, f, g, h, i, j, k) -> Signal dom (a, b, c, d, e, f, g, h, i, j, k) Source #

(AutoReg a, AutoReg b, AutoReg c, AutoReg d, AutoReg e, AutoReg f, AutoReg g, AutoReg h, AutoReg i, AutoReg j, AutoReg k, AutoReg l) => AutoReg (a, b, c, d, e, f, g, h, i, j, k, l) Source #

NB: The documentation only shows instances up to 3-tuples. By default, instances up to and including 12-tuples will exist. If the flag large-tuples is set instances up to the GHC imposed limit will exist. The GHC imposed limit is either 62 or 64 depending on the GHC version.

Instance details

Defined in Clash.Class.AutoReg.Instances

Methods

autoReg :: forall (dom :: Domain). (HasCallStack, KnownDomain dom) => Clock dom -> Reset dom -> Enable dom -> (a, b, c, d, e, f, g, h, i, j, k, l) -> Signal dom (a, b, c, d, e, f, g, h, i, j, k, l) -> Signal dom (a, b, c, d, e, f, g, h, i, j, k, l) Source #

autoReg :: (HasCallStack, HiddenClockResetEnable dom, AutoReg a) => a -> Signal dom a -> Signal dom a Source #

Implicit version of autoReg

deriveAutoReg :: Name -> DecsQ Source #

Automatically derives an AutoReg instance for a product type

Usage:

data Pair a b = MkPair { getA :: a, getB :: b } deriving (Generic, NFDataX)
data Tup3 a b c = MkTup3 { getAB :: Pair a b, getC :: c } deriving (Generic, NFDataX)
deriveAutoReg ''Pair
deriveAutoReg ''Tup3

NB: Because of the way template haskell works the order here matters, if you try to deriveAutoReg ''Tup3 before Pair it will complain about missing an instance AutoReg (Pair a b).

Other

module Data.Bits

type Type = TYPE LiftedRep #

The kind of types with lifted values. For example Int :: Type.

type Constraint = CONSTRAINT LiftedRep #

The kind of lifted constraints

Exceptions

Named types

Hidden arguments

Magic

Haskell Prelude

Clash.Prelude re-exports most of the Haskell Prelude with the exception of those functions that the Clash API defines to work on Vec from Clash.Sized.Vector instead of on lists as the Haskell Prelude does. In addition, for the odd and even functions a type class called Parity is available at Clash.Class.Parity.