module Lion.Rvfi where
import Clash.Prelude
import Control.Lens
import Data.Maybe
import Data.Monoid
data RvfiCsr n = RvfiCsr
{ forall (n :: Nat). RvfiCsr n -> "wdata" ::: BitVector n
_wdataCsr :: "wdata" ::: BitVector n
, forall (n :: Nat). RvfiCsr n -> "wdata" ::: BitVector n
_rdataCsr :: "rdata" ::: BitVector n
, forall (n :: Nat). RvfiCsr n -> "wdata" ::: BitVector n
_wmaskCsr :: "wmask" ::: BitVector n
, forall (n :: Nat). RvfiCsr n -> "wdata" ::: BitVector n
_rmaskCsr :: "rmask" ::: BitVector n
}
deriving stock ((forall x. RvfiCsr n -> Rep (RvfiCsr n) x)
-> (forall x. Rep (RvfiCsr n) x -> RvfiCsr n)
-> Generic (RvfiCsr n)
forall (n :: Nat) x. Rep (RvfiCsr n) x -> RvfiCsr n
forall (n :: Nat) x. RvfiCsr n -> Rep (RvfiCsr n) x
forall x. Rep (RvfiCsr n) x -> RvfiCsr n
forall x. RvfiCsr n -> Rep (RvfiCsr n) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall (n :: Nat) x. RvfiCsr n -> Rep (RvfiCsr n) x
from :: forall x. RvfiCsr n -> Rep (RvfiCsr n) x
$cto :: forall (n :: Nat) x. Rep (RvfiCsr n) x -> RvfiCsr n
to :: forall x. Rep (RvfiCsr n) x -> RvfiCsr n
Generic, Int -> RvfiCsr n -> ShowS
[RvfiCsr n] -> ShowS
RvfiCsr n -> String
(Int -> RvfiCsr n -> ShowS)
-> (RvfiCsr n -> String)
-> ([RvfiCsr n] -> ShowS)
-> Show (RvfiCsr n)
forall (n :: Nat). KnownNat n => Int -> RvfiCsr n -> ShowS
forall (n :: Nat). KnownNat n => [RvfiCsr n] -> ShowS
forall (n :: Nat). KnownNat n => RvfiCsr n -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall (n :: Nat). KnownNat n => Int -> RvfiCsr n -> ShowS
showsPrec :: Int -> RvfiCsr n -> ShowS
$cshow :: forall (n :: Nat). KnownNat n => RvfiCsr n -> String
show :: RvfiCsr n -> String
$cshowList :: forall (n :: Nat). KnownNat n => [RvfiCsr n] -> ShowS
showList :: [RvfiCsr n] -> ShowS
Show, RvfiCsr n -> RvfiCsr n -> Bool
(RvfiCsr n -> RvfiCsr n -> Bool)
-> (RvfiCsr n -> RvfiCsr n -> Bool) -> Eq (RvfiCsr n)
forall (n :: Nat). KnownNat n => RvfiCsr n -> RvfiCsr n -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall (n :: Nat). KnownNat n => RvfiCsr n -> RvfiCsr n -> Bool
== :: RvfiCsr n -> RvfiCsr n -> Bool
$c/= :: forall (n :: Nat). KnownNat n => RvfiCsr n -> RvfiCsr n -> Bool
/= :: RvfiCsr n -> RvfiCsr n -> Bool
Eq)
deriving anyclass HasCallStack => String -> RvfiCsr n
RvfiCsr n -> Bool
RvfiCsr n -> ()
RvfiCsr n -> RvfiCsr n
(HasCallStack => String -> RvfiCsr n)
-> (RvfiCsr n -> Bool)
-> (RvfiCsr n -> RvfiCsr n)
-> (RvfiCsr n -> ())
-> NFDataX (RvfiCsr n)
forall (n :: Nat).
(KnownNat n, HasCallStack) =>
String -> RvfiCsr n
forall (n :: Nat). KnownNat n => RvfiCsr n -> Bool
forall (n :: Nat). KnownNat n => RvfiCsr n -> ()
forall (n :: Nat). KnownNat n => RvfiCsr n -> RvfiCsr n
forall a.
(HasCallStack => String -> a)
-> (a -> Bool) -> (a -> a) -> (a -> ()) -> NFDataX a
$cdeepErrorX :: forall (n :: Nat).
(KnownNat n, HasCallStack) =>
String -> RvfiCsr n
deepErrorX :: HasCallStack => String -> RvfiCsr n
$chasUndefined :: forall (n :: Nat). KnownNat n => RvfiCsr n -> Bool
hasUndefined :: RvfiCsr n -> Bool
$censureSpine :: forall (n :: Nat). KnownNat n => RvfiCsr n -> RvfiCsr n
ensureSpine :: RvfiCsr n -> RvfiCsr n
$crnfX :: forall (n :: Nat). KnownNat n => RvfiCsr n -> ()
rnfX :: RvfiCsr n -> ()
NFDataX
makeLenses ''RvfiCsr
data Rvfi = Rvfi
{
Rvfi -> Bool
_rvfiValid :: "valid" ::: Bool
, Rvfi -> BitVector 64
_rvfiOrder :: "order" ::: BitVector 64
, Rvfi -> BitVector 32
_rvfiInsn :: "insn" ::: BitVector 32
, Rvfi -> Bool
_rvfiTrap :: "trap" ::: Bool
, Rvfi -> Bool
_rvfiHalt :: "halt" ::: Bool
, Rvfi -> Bool
_rvfiIntr :: "intr" ::: Bool
, Rvfi -> BitVector 2
_rvfiMode :: "mode" ::: BitVector 2
, Rvfi -> BitVector 2
_rvfiIxl :: "ixl" ::: BitVector 2
, Rvfi -> Unsigned 5
_rvfiRs1Addr :: "rs1_addr" ::: Unsigned 5
, Rvfi -> Unsigned 5
_rvfiRs2Addr :: "rs2_addr" ::: Unsigned 5
, Rvfi -> BitVector 32
_rvfiRs1Data :: "rs1_rdata" ::: BitVector 32
, Rvfi -> BitVector 32
_rvfiRs2Data :: "rs2_rdata" ::: BitVector 32
, Rvfi -> Unsigned 5
_rvfiRdAddr :: "rd_addr" ::: Unsigned 5
, Rvfi -> BitVector 32
_rvfiRdWData :: "rd_wdata" ::: BitVector 32
, Rvfi -> BitVector 32
_rvfiPcRData :: "pc_rdata" ::: BitVector 32
, Rvfi -> BitVector 32
_rvfiPcWData :: "pc_wdata" ::: BitVector 32
, Rvfi -> BitVector 32
_rvfiMemAddr :: "mem_addr" ::: BitVector 32
, Rvfi -> BitVector 4
_rvfiMemRMask :: "mem_rmask" ::: BitVector 4
, Rvfi -> BitVector 4
_rvfiMemWMask :: "mem_wmask" ::: BitVector 4
, Rvfi -> BitVector 32
_rvfiMemRData :: "mem_rdata" ::: BitVector 32
, Rvfi -> BitVector 32
_rvfiMemWData :: "mem_wdata" ::: BitVector 32
, Rvfi -> "csr_minstret" ::: RvfiCsr 64
_rvfiCsrMinstret :: "csr_minstret" ::: RvfiCsr 64
, Rvfi -> "csr_minstret" ::: RvfiCsr 64
_rvfiCsrMcycle :: "csr_mcycle" ::: RvfiCsr 64
, Rvfi -> "csr_mscratch" ::: RvfiCsr 32
_rvfiCsrMscratch :: "csr_mscratch" ::: RvfiCsr 32
, Rvfi -> "csr_mscratch" ::: RvfiCsr 32
_rvfiCsrMstatus :: "csr_mstatus" ::: RvfiCsr 32
, Rvfi -> "csr_mscratch" ::: RvfiCsr 32
_rvfiCsrMisa :: "csr_misa" ::: RvfiCsr 32
}
deriving stock ((forall x. Rvfi -> Rep Rvfi x)
-> (forall x. Rep Rvfi x -> Rvfi) -> Generic Rvfi
forall x. Rep Rvfi x -> Rvfi
forall x. Rvfi -> Rep Rvfi x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Rvfi -> Rep Rvfi x
from :: forall x. Rvfi -> Rep Rvfi x
$cto :: forall x. Rep Rvfi x -> Rvfi
to :: forall x. Rep Rvfi x -> Rvfi
Generic, Int -> Rvfi -> ShowS
[Rvfi] -> ShowS
Rvfi -> String
(Int -> Rvfi -> ShowS)
-> (Rvfi -> String) -> ([Rvfi] -> ShowS) -> Show Rvfi
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Rvfi -> ShowS
showsPrec :: Int -> Rvfi -> ShowS
$cshow :: Rvfi -> String
show :: Rvfi -> String
$cshowList :: [Rvfi] -> ShowS
showList :: [Rvfi] -> ShowS
Show, Rvfi -> Rvfi -> Bool
(Rvfi -> Rvfi -> Bool) -> (Rvfi -> Rvfi -> Bool) -> Eq Rvfi
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Rvfi -> Rvfi -> Bool
== :: Rvfi -> Rvfi -> Bool
$c/= :: Rvfi -> Rvfi -> Bool
/= :: Rvfi -> Rvfi -> Bool
Eq)
deriving anyclass HasCallStack => String -> Rvfi
Rvfi -> Bool
Rvfi -> ()
Rvfi -> Rvfi
(HasCallStack => String -> Rvfi)
-> (Rvfi -> Bool) -> (Rvfi -> Rvfi) -> (Rvfi -> ()) -> NFDataX Rvfi
forall a.
(HasCallStack => String -> a)
-> (a -> Bool) -> (a -> a) -> (a -> ()) -> NFDataX a
$cdeepErrorX :: HasCallStack => String -> Rvfi
deepErrorX :: HasCallStack => String -> Rvfi
$chasUndefined :: Rvfi -> Bool
hasUndefined :: Rvfi -> Bool
$censureSpine :: Rvfi -> Rvfi
ensureSpine :: Rvfi -> Rvfi
$crnfX :: Rvfi -> ()
rnfX :: Rvfi -> ()
NFDataX
makeLenses ''Rvfi
fromRvfi :: First Rvfi -> Rvfi
fromRvfi :: First Rvfi -> Rvfi
fromRvfi = Rvfi -> Maybe Rvfi -> Rvfi
forall a. a -> Maybe a -> a
fromMaybe Rvfi
mkRvfi (Maybe Rvfi -> Rvfi)
-> (First Rvfi -> Maybe Rvfi) -> First Rvfi -> Rvfi
forall b c a. (b -> c) -> (a -> b) -> a -> c
. First Rvfi -> Maybe Rvfi
forall a. First a -> Maybe a
getFirst
mkRvfi :: Rvfi
mkRvfi :: Rvfi
mkRvfi = Rvfi
{ _rvfiValid :: Bool
_rvfiValid = Bool
False
, _rvfiOrder :: BitVector 64
_rvfiOrder = BitVector 64
0
, _rvfiInsn :: BitVector 32
_rvfiInsn = BitVector 32
0
, _rvfiTrap :: Bool
_rvfiTrap = Bool
False
, _rvfiHalt :: Bool
_rvfiHalt = Bool
False
, _rvfiIntr :: Bool
_rvfiIntr = Bool
False
, _rvfiMode :: BitVector 2
_rvfiMode = BitVector 2
3
, _rvfiIxl :: BitVector 2
_rvfiIxl = BitVector 2
1
, _rvfiRs1Addr :: Unsigned 5
_rvfiRs1Addr = Unsigned 5
0
, _rvfiRs2Addr :: Unsigned 5
_rvfiRs2Addr = Unsigned 5
0
, _rvfiRs1Data :: BitVector 32
_rvfiRs1Data = BitVector 32
0
, _rvfiRs2Data :: BitVector 32
_rvfiRs2Data = BitVector 32
0
, _rvfiRdAddr :: Unsigned 5
_rvfiRdAddr = Unsigned 5
0
, _rvfiRdWData :: BitVector 32
_rvfiRdWData = BitVector 32
0
, _rvfiPcRData :: BitVector 32
_rvfiPcRData = BitVector 32
0
, _rvfiPcWData :: BitVector 32
_rvfiPcWData = BitVector 32
0
, _rvfiMemAddr :: BitVector 32
_rvfiMemAddr = BitVector 32
0
, _rvfiMemRMask :: BitVector 4
_rvfiMemRMask = BitVector 4
0
, _rvfiMemWMask :: BitVector 4
_rvfiMemWMask = BitVector 4
0
, _rvfiMemRData :: BitVector 32
_rvfiMemRData = BitVector 32
0
, _rvfiMemWData :: BitVector 32
_rvfiMemWData = BitVector 32
0
, _rvfiCsrMinstret :: "csr_minstret" ::: RvfiCsr 64
_rvfiCsrMinstret = BitVector 64
-> BitVector 64
-> BitVector 64
-> BitVector 64
-> "csr_minstret" ::: RvfiCsr 64
forall (n :: Nat).
("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> RvfiCsr n
RvfiCsr BitVector 64
0 BitVector 64
0 BitVector 64
0 BitVector 64
0
, _rvfiCsrMcycle :: "csr_minstret" ::: RvfiCsr 64
_rvfiCsrMcycle = BitVector 64
-> BitVector 64
-> BitVector 64
-> BitVector 64
-> "csr_minstret" ::: RvfiCsr 64
forall (n :: Nat).
("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> RvfiCsr n
RvfiCsr BitVector 64
0 BitVector 64
0 BitVector 64
0 BitVector 64
0
, _rvfiCsrMscratch :: "csr_mscratch" ::: RvfiCsr 32
_rvfiCsrMscratch = BitVector 32
-> BitVector 32
-> BitVector 32
-> BitVector 32
-> "csr_mscratch" ::: RvfiCsr 32
forall (n :: Nat).
("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> RvfiCsr n
RvfiCsr BitVector 32
0 BitVector 32
0 BitVector 32
0 BitVector 32
0
, _rvfiCsrMstatus :: "csr_mscratch" ::: RvfiCsr 32
_rvfiCsrMstatus = BitVector 32
-> BitVector 32
-> BitVector 32
-> BitVector 32
-> "csr_mscratch" ::: RvfiCsr 32
forall (n :: Nat).
("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> RvfiCsr n
RvfiCsr BitVector 32
0 BitVector 32
0 BitVector 32
0 BitVector 32
0
, _rvfiCsrMisa :: "csr_mscratch" ::: RvfiCsr 32
_rvfiCsrMisa = BitVector 32
-> BitVector 32
-> BitVector 32
-> BitVector 32
-> "csr_mscratch" ::: RvfiCsr 32
forall (n :: Nat).
("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> ("wdata" ::: BitVector n)
-> RvfiCsr n
RvfiCsr BitVector 32
0 BitVector 32
0 BitVector 32
0 BitVector 32
0
}