reduce noise in tag engine unit test as well as make results apparent

This commit is contained in:
Yehowshua Immanuel 2025-04-19 22:04:38 -04:00
parent 2d9bc945c5
commit 89664a01f6
3 changed files with 79 additions and 9 deletions

View file

@ -40,18 +40,18 @@ mkTagEngine = do
requestSignal <- mkRWire -- Signals a tag request requestSignal <- mkRWire -- Signals a tag request
-- Debug -- Debug
debugOnce <- mkReg True debugOnce <- mkReg False
-- Rules -- Rules
addRules |> addRules |>
rules rules
"debug_initial_state": when debugOnce ==> do "debug_initial_state": when debugOnce ==> do
$display "tagUsage: " (fshow (readVReg tagUsage)) -- $display "tagUsage: " (fshow (readVReg tagUsage))
debugOnce := False debugOnce := False
"retire_tag": when True ==> do "retire_tag": when True ==> do
let tag = retireQueue.first let tag = retireQueue.first
$display "Retiring tag: " (fshow tag) -- $display "Retiring tag: " (fshow tag)
retireQueue.deq retireQueue.deq
freeTagQueue.enq tag freeTagQueue.enq tag
retireSignal.wset tag retireSignal.wset tag
@ -66,13 +66,13 @@ mkTagEngine = do
usage' = update usage requestTag True usage' = update usage requestTag True
usage'' = update usage' retireTag False usage'' = update usage' retireTag False
writeVReg tagUsage usage'' writeVReg tagUsage usage''
$display $time " Updated usage (request + retire): " (fshow |> readVReg tagUsage) -- $display $time " Updated usage (request + retire): " (fshow |> readVReg tagUsage)
(Just retireTag, Nothing) -> do (Just retireTag, Nothing) -> do
(select tagUsage retireTag) := False (select tagUsage retireTag) := False
$display $time " Updated usage (retire): " (fshow (readVReg tagUsage)) -- $display $time " Updated usage (retire): " (fshow (readVReg tagUsage))
(Nothing, Just requestTag) -> do (Nothing, Just requestTag) -> do
(select tagUsage requestTag) := True (select tagUsage requestTag) := True
$display $time " Updated usage (request): " (fshow (readVReg tagUsage)) -- $display $time " Updated usage (request): " (fshow (readVReg tagUsage))
(Nothing, Nothing) -> action {} (Nothing, Nothing) -> action {}
-- Interface -- Interface

67
bs/Tests/BusTester.bs Normal file
View file

@ -0,0 +1,67 @@
package TagEngineTester(mkTagEngineTester) where
import TagEngine
import ActionSeq
import Assert
mkTagEngineTester :: Module Empty
mkTagEngineTester = do
tagEngine :: TagEngine 5 <- mkTagEngine
runOnce :: Reg Bool <- mkReg False
s :: ActionSeq
s <-
let
requestTagAction :: Action
requestTagAction =
do
tag <- tagEngine.requestTag
$display $time " got tag : " (fshow tag)
retireTagAction :: UInt 3 -> Action
retireTagAction tag =
do
res <- tagEngine.retireTag tag
$display $time " retiring tag : " (fshow tag) " " (fshow res)
action {}
in
actionSeq $
do requestTagAction
|> do
requestTagAction
-- tag <- tagEngine.requestTag
|> 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

View file

@ -19,18 +19,20 @@ mkTagEngineTester = do
requestTagAction = requestTagAction =
do do
tag <- tagEngine.requestTag tag <- tagEngine.requestTag
$display $time " got tag : " (fshow tag) -- $display $time " got tag : " (fshow tag)
action {}
retireTagAction :: UInt 3 -> Action retireTagAction :: UInt 3 -> Action
retireTagAction tag = retireTagAction tag =
do do
res <- tagEngine.retireTag tag res <- tagEngine.retireTag tag
$display $time " retiring tag : " (fshow tag) " " (fshow res) -- $display $time " retiring tag : " (fshow tag) " " (fshow res)
action {} action {}
in in
actionSeq $ actionSeq $
do do
$display "=== TESTING TagEngine ==="
let expectedTag = 4 let expectedTag = 4
tag <- tagEngine.requestTag tag <- tagEngine.requestTag
dynamicAssert (tag == expectedTag) "" dynamicAssert (tag == expectedTag) ""
@ -59,10 +61,11 @@ mkTagEngineTester = do
dynamicAssert (tag == expectedTag) "" dynamicAssert (tag == expectedTag) ""
|> do |> do
retireTagAction 2 retireTagAction 2
let expectedTag = 3 let expectedTag = 4
tag <- tagEngine.requestTag tag <- tagEngine.requestTag
dynamicAssert (tag == expectedTag) "" dynamicAssert (tag == expectedTag) ""
|> do |> do
$display "=== PASSED ==="
terminateSimNoError terminateSimNoError
addRules $ addRules $