reduce noise in tag engine unit test as well as make results apparent
This commit is contained in:
parent
2d9bc945c5
commit
89664a01f6
|
@ -40,18 +40,18 @@ mkTagEngine = do
|
|||
requestSignal <- mkRWire -- Signals a tag request
|
||||
|
||||
-- Debug
|
||||
debugOnce <- mkReg True
|
||||
debugOnce <- mkReg False
|
||||
|
||||
-- Rules
|
||||
addRules |>
|
||||
rules
|
||||
"debug_initial_state": when debugOnce ==> do
|
||||
$display "tagUsage: " (fshow (readVReg tagUsage))
|
||||
-- $display "tagUsage: " (fshow (readVReg tagUsage))
|
||||
debugOnce := False
|
||||
|
||||
"retire_tag": when True ==> do
|
||||
let tag = retireQueue.first
|
||||
$display "Retiring tag: " (fshow tag)
|
||||
-- $display "Retiring tag: " (fshow tag)
|
||||
retireQueue.deq
|
||||
freeTagQueue.enq tag
|
||||
retireSignal.wset tag
|
||||
|
@ -66,13 +66,13 @@ mkTagEngine = do
|
|||
usage' = update usage requestTag True
|
||||
usage'' = update usage' retireTag False
|
||||
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
|
||||
(select tagUsage retireTag) := False
|
||||
$display $time " Updated usage (retire): " (fshow (readVReg tagUsage))
|
||||
-- $display $time " Updated usage (retire): " (fshow (readVReg tagUsage))
|
||||
(Nothing, Just requestTag) -> do
|
||||
(select tagUsage requestTag) := True
|
||||
$display $time " Updated usage (request): " (fshow (readVReg tagUsage))
|
||||
-- $display $time " Updated usage (request): " (fshow (readVReg tagUsage))
|
||||
(Nothing, Nothing) -> action {}
|
||||
|
||||
-- Interface
|
||||
|
|
67
bs/Tests/BusTester.bs
Normal file
67
bs/Tests/BusTester.bs
Normal 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
|
|
@ -19,18 +19,20 @@ mkTagEngineTester = do
|
|||
requestTagAction =
|
||||
do
|
||||
tag <- tagEngine.requestTag
|
||||
$display $time " got tag : " (fshow tag)
|
||||
-- $display $time " got tag : " (fshow tag)
|
||||
action {}
|
||||
|
||||
retireTagAction :: UInt 3 -> Action
|
||||
retireTagAction tag =
|
||||
do
|
||||
res <- tagEngine.retireTag tag
|
||||
$display $time " retiring tag : " (fshow tag) " " (fshow res)
|
||||
-- $display $time " retiring tag : " (fshow tag) " " (fshow res)
|
||||
action {}
|
||||
|
||||
in
|
||||
actionSeq $
|
||||
do
|
||||
$display "=== TESTING TagEngine ==="
|
||||
let expectedTag = 4
|
||||
tag <- tagEngine.requestTag
|
||||
dynamicAssert (tag == expectedTag) ""
|
||||
|
@ -59,10 +61,11 @@ mkTagEngineTester = do
|
|||
dynamicAssert (tag == expectedTag) ""
|
||||
|> do
|
||||
retireTagAction 2
|
||||
let expectedTag = 3
|
||||
let expectedTag = 4
|
||||
tag <- tagEngine.requestTag
|
||||
dynamicAssert (tag == expectedTag) ""
|
||||
|> do
|
||||
$display "=== PASSED ==="
|
||||
terminateSimNoError
|
||||
|
||||
addRules $
|
||||
|
|
Loading…
Reference in a new issue