{-# LANGUAGE DataKinds        #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MagicHash        #-}
{-# LANGUAGE TypeFamilies     #-}
{-# LANGUAGE TypeOperators    #-}
module Clash.Intel.DDR
  ( altddioIn
  , altddioOut
  )
where
import GHC.Stack (HasCallStack, withFrozenCallStack)
import Clash.Explicit.Prelude
import Clash.Explicit.DDR
altddioIn
  :: ( HasCallStack
     , fast ~ 'Dom n pFast
     , slow ~ 'Dom n (2*pFast)
     , KnownNat m )
  => SSymbol deviceFamily
  
  
  
  
  
  -> Clock slow gated
  
  -> Reset slow synchronous
  
  -> Signal fast (BitVector m)
  
  -> Signal slow (BitVector m,BitVector m)
  
altddioIn _devFam clk rst = withFrozenCallStack ddrIn# clk rst 0 0 0
{-# NOINLINE altddioIn #-}
altddioOut
  :: ( HasCallStack
     , fast ~ 'Dom n pFast
     , slow ~ 'Dom n (2*pFast)
     , KnownNat m )
  => SSymbol deviceFamily
  
  
  
  
  
  -> Clock slow gated
  
  -> Reset slow synchronous
  
  -> Signal slow (BitVector m,BitVector m)
  
  -> Signal fast (BitVector m)
  
altddioOut devFam clk rst =
  uncurry (withFrozenCallStack altddioOut# devFam clk rst) . unbundle
altddioOut#
  :: ( HasCallStack
     , fast ~ 'Dom n pFast
     , slow ~ 'Dom n (2*pFast)
     , KnownNat m )
  => SSymbol deviceFamily
  -> Clock slow gated
  -> Reset slow synchronous
  -> Signal slow (BitVector m)
  -> Signal slow (BitVector m)
  -> Signal fast (BitVector m)
altddioOut# _ clk rst = ddrOut# clk rst 0
{-# NOINLINE altddioOut# #-}