RiscV-Formal/hs/Execute.hs

23 lines
623 B
Haskell

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE NumericUnderscores #-}
module Execute(execute) where
import Clash.Prelude
import Decode(DecodeResult(..))
import DecodeTypes(Opcode(..))
import Types(Addr, DoubleWord)
import BusTypes(
WriteRequest(..),
ReadRequest(..),
)
import RegFiles(RegFileIdx)
import Util((|>))
data ExecuteResult = ReadRequest {readRequest :: ReadRequest, insnAddr :: Addr}
| WriteRequest {writeRequest :: WriteRequest, insnAddr :: Addr}
| WriteBackGPR {idx :: RegFileIdx, val :: DoubleWord}
execute :: DecodeResult -> ExecuteResult
execute = undefined