riscv-bluespec-classic/bs/Tests/TagEngineTester.bs
Yehowshua Immanuel e055b1bbdf reduced latency
2025-04-02 02:59:49 -04:00

65 lines
1.7 KiB
Haskell

package TagEngineTester(mkTagEngineTester) where
import TagEngine
import ActionSeq
mkTagEngineTester :: Module Empty
mkTagEngineTester = do
tagEngine :: TagEngine 5 <- mkTagEngine
count :: Reg (UInt 32) <- mkReg 0;
runOnce :: Reg Bool <- mkReg False
s :: ActionSeq
s <-
let
requestTagAction :: Action
requestTagAction =
do
tag <- tagEngine.requestTag
$display "got tag : " (fshow tag)
retireTagAction :: UInt 3 -> Action
retireTagAction tag =
do
res <- tagEngine.retireTag tag
$display "retiring tag : " (fshow tag) " " (fshow res)
action {}
in
actionSeq $
do requestTagAction
|> do requestTagAction
|> do requestTagAction
|> do requestTagAction
|> do requestTagAction
|> do retireTagAction 2
-- |> do $display "BEGIN TRY SIMULTANEOUS RETIRE and REQUEST"
|> do
retireTagAction 4
requestTagAction
-- |> do $display "END TRY SIMULTANEOUS RETIRE and REQUEST"
-- |> do $display "BEGIN TRY SIMULTANEOUS RETIRE and REQUEST"
|> do
retireTagAction 4
requestTagAction
-- |> do $display "END TRY SIMULTANEOUS RETIRE and REQUEST"
|> do $finish
-- |> do retireTagAction 4
-- |> do retireTagAction 4
-- |> do retireTagAction 0
-- |> do requestTagAction
-- |> do requestTagAction
-- |> do retireTagAction 1
-- |> do requestTagAction
-- |> do $finish
addRules $
rules
"counter": when True ==>
do
count := count + 1
$display "count : " (fshow count)
"testIncrement": when (runOnce == False) ==>
do
s.start
runOnce := True