上一篇文章中,已经完成了test_01寄存器default值的验证,以及test_02寄存器上锁功能以及写入全F测试。
一、test_03 中断请求信号检测
测试思路:首先解锁寄存器的写访问限制,进而向WDOGLOAD寄存器写入计数寄存器WDOGVALUE自减的初始值,设置WDOGCONTROL中断使能,这里,为了清楚的观察其自减过程,使用driver和sequence之间的put/get response机制,将WDOGVALUE的实时数据给到sequence,通过WDOGVALUE的值进行下一步中断信号WDOGINT的判断。
golden port get transaction
--------------------------------------------------------------------------------------
Name Type Size Value
--------------------------------------------------------------------------------------
w_trans wdog_transaction - @1065
PRDATA integral 32 'h20
PADDR integral 32 'h0
depth int 32 'd2
parent sequence (name) string 6 seq_02
parent sequence (full name) string 31 uvm_test_top.env.agt.sqr.seq_02
sequencer string 24 uvm_test_top.env.agt.sqr
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name Type Size Value
---------------------------------------
w_trans wdog_transaction - @1073
PRDATA integral 32 'h20
PADDR integral 32 'h0
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 85000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
@156000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1089
PRDATA integral 32 'h20
PADDR integral 32 'h4
---------------------------------------
@206000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1113
PRDATA integral 32 'h1f
PADDR integral 32 'h4
---------------------------------------
@256000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1137
PRDATA integral 32 'h1e
PADDR integral 32 'h4
---------------------------------------
@306000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1161
PRDATA integral 32 'h1d
PADDR integral 32 'h4
---------------------------------------
@356000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1185
PRDATA integral 32 'h1c
PADDR integral 32 'h4
---------------------------------------
@406000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1209
PRDATA integral 32 'h1b
PADDR integral 32 'h4
---------------------------------------
@456000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1233
PRDATA integral 32 'h1a
PADDR integral 32 'h4
---------------------------------------
@506000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1257
PRDATA integral 32 'h19
PADDR integral 32 'h4
---------------------------------------
@556000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1281
PRDATA integral 32 'h18
PADDR integral 32 'h4
---------------------------------------
@606000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1305
PRDATA integral 32 'h17
PADDR integral 32 'h4
---------------------------------------
@656000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1329
PRDATA integral 32 'h16
PADDR integral 32 'h4
---------------------------------------
@706000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1353
PRDATA integral 32 'h15
PADDR integral 32 'h4
---------------------------------------
@756000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1377
PRDATA integral 32 'h14
PADDR integral 32 'h4
---------------------------------------
@806000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1401
PRDATA integral 32 'h13
PADDR integral 32 'h4
---------------------------------------
@856000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1425
PRDATA integral 32 'h12
PADDR integral 32 'h4
---------------------------------------
@906000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1449
PRDATA integral 32 'h11
PADDR integral 32 'h4
---------------------------------------
@956000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1473
PRDATA integral 32 'h10
PADDR integral 32 'h4
---------------------------------------
@1006000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1497
PRDATA integral 32 'hf
PADDR integral 32 'h4
---------------------------------------
@1056000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1521
PRDATA integral 32 'he
PADDR integral 32 'h4
---------------------------------------
@1106000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1545
PRDATA integral 32 'hd
PADDR integral 32 'h4
---------------------------------------
@1156000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1569
PRDATA integral 32 'hc
PADDR integral 32 'h4
---------------------------------------
@1206000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1593
PRDATA integral 32 'hb
PADDR integral 32 'h4
---------------------------------------
@1256000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1617
PRDATA integral 32 'ha
PADDR integral 32 'h4
---------------------------------------
@1306000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1641
PRDATA integral 32 'h9
PADDR integral 32 'h4
---------------------------------------
@1356000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1665
PRDATA integral 32 'h8
PADDR integral 32 'h4
---------------------------------------
@1406000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1689
PRDATA integral 32 'h7
PADDR integral 32 'h4
---------------------------------------
@1456000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1713
PRDATA integral 32 'h6
PADDR integral 32 'h4
---------------------------------------
@1506000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1737
PRDATA integral 32 'h5
PADDR integral 32 'h4
---------------------------------------
@1556000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1761
PRDATA integral 32 'h4
PADDR integral 32 'h4
---------------------------------------
@1606000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1785
PRDATA integral 32 'h3
PADDR integral 32 'h4
---------------------------------------
@1656000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1809
PRDATA integral 32 'h2
PADDR integral 32 'h4
---------------------------------------
@1706000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1833
PRDATA integral 32 'h1
PADDR integral 32 'h4
---------------------------------------
@1756000:get_response print
---------------------------------------
Name Type Size Value
---------------------------------------
rsp wdog_transaction - @1857
PRDATA integral 32 'h0
PADDR integral 32 'h4
---------------------------------------
WDOGINT is 1
UVM_INFO ../seq/test_02_sequence.sv(107) @ 1785000: uvm_test_top.env.agt.sqr@@seq_02 [test_02_sequence] INTERRUPT RISE
SvtTestEpilog:------------------------ Passed---------------
--- UVM Report Summary ---
** Report counts by severity
UVM_INFO : 19
UVM_WARNING : 0
UVM_ERROR : 0
UVM_FATAL : 0
** Report counts by id
[RNTST] 1
[UVMTOP] 1
[base_test] 3
[test_02] 3
[test_02_sequence] 1
[wdog_agent] 3
[wdog_driver] 1
[wdog_env] 2
[wdog_monitor] 1
[wdog_scoreboard] 2
[wodg_scorebaord] 1
$finish called from file "/eda/vcs_vO-2018.09-SP2/vcs/O-2018.09-SP2/etc/uvm-1.1/base/uvm_root.svh", line 439.
$finish at simulation time 2185000
---------------------------------------------------------------------------
VCS Coverage Metrics: during simulation line, cond, FSM, branch, tgl was monitored
---------------------------------------------------------------------------
V C S S i m u l a t i o n R e p o r t
Time: 2185000 ps
CPU Time: 0.420 seconds; Data structure size: 0.5Mb
Wed Dec 27 11:10:11 2023
从运行结果可以清晰得到,计数寄存器自减功能正常,当计数寄存器自减到零之后,中断信号WDOGINT拉高。而对于WDOGRES信号的产生测试,在test_03中,将控制寄存器的值写为3,得到复位信号WDOGRES的有效拉起。
二、test_04 中断信号清除检测
配置WDOGINTCLR寄存器任意有效值,观察WDOGINT中断信号是否被拉低。
UVM_INFO ../env/wdog_driver.sv(19) @ 0: uvm_test_top.env.agt.drv [wdog_driver] main_phase Enter...
UVM_INFO ../env/wdog_monitor.sv(24) @ 0: uvm_test_top.env.agt.mon [wdog_monitor] main_phase Enter...
UVM_INFO ../env/wdog_scoreboard.sv(29) @ 0: uvm_test_top.env.scb [wodg_scorebaord] main_phase Enter...
golden port get transaction
--------------------------------------------------------------------------------------
Name Type Size Value
--------------------------------------------------------------------------------------
w_trans wdog_transaction - @1065
PRDATA integral 32 'h20
PADDR integral 32 'h0
depth int 32 'd2
parent sequence (name) string 6 seq_03
parent sequence (full name) string 31 uvm_test_top.env.agt.sqr.seq_03
sequencer string 24 uvm_test_top.env.agt.sqr
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name Type Size Value
---------------------------------------
w_trans wdog_transaction - @1073
PRDATA integral 32 'h20
PADDR integral 32 'h0
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 85000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
WDOGINT is 1
UVM_INFO ../seq/test_03_sequence.sv(106) @ 1785000: uvm_test_top.env.agt.sqr@@seq_03 [test_02_sequence] INTERRUPT RISE
SET WDOGINTCLR_reg to 1,ENABLE INTCLR...
WDOGINT is 0
UVM_INFO ../seq/test_03_sequence.sv(124) @ 1805000: uvm_test_top.env.agt.sqr@@seq_03 [test_02_sequence] INTERRUPT DOWN
dut port get transaction
---------------------------------------
Name Type Size Value
---------------------------------------
w_trans wdog_transaction - @1097
PRDATA integral 32 'h20
PADDR integral 32 'h4
---------------------------------------
UVM_ERROR ../env/wdog_scoreboard.sv(57) @ 1825000: uvm_test_top.env.scb [wdog_scorebaord] receive dut but golden is null at time 1825000
SvtTestEpilog:------------------------ Failed---------------
--- UVM Report Summary ---
** Report counts by severity
UVM_INFO : 20
UVM_WARNING : 0
UVM_ERROR : 1
UVM_FATAL : 0
** Report counts by id
[RNTST] 1
[UVMTOP] 1
[base_test] 3
[test_02_sequence] 2
[test_03] 3
[wdog_agent] 3
[wdog_driver] 1
[wdog_env] 2
[wdog_monitor] 1
[wdog_scorebaord] 1
[wdog_scoreboard] 2
[wodg_scorebaord] 1
$finish called from file "/eda/vcs_vO-2018.09-SP2/vcs/O-2018.09-SP2/etc/uvm-1.1/base/uvm_root.svh", line 439.
$finish at simulation time 2225000
---------------------------------------------------------------------------
VCS Coverage Metrics: during simulation line, cond, FSM, branch, tgl was monitored
---------------------------------------------------------------------------
V C S S i m u l a t i o n R e p o r t
Time: 2225000 ps
CPU Time: 0.450 seconds; Data structure size: 0.5Mb
Wed Dec 27 13:46:24 2023
在配置WDOGINTCLR为有效值后,WDOGINT中断信号拉低,此时再去读WDOGVALUE寄存器内的值,已经被重置为WDOGLOAD寄存器内的值,功能正确。
三、test_05 集成测试模式下的中断、复位信号输出
根据设计文档描述,在配置WDOGITCR寄存器有效后,watchdog启用集成测试模式,以WDOGITOP的实际配置输出中断、复位信号。
UVM_INFO ../env/wdog_driver.sv(19) @ 0: uvm_test_top.env.agt.drv [wdog_driver] main_phase Enter...
UVM_INFO ../env/wdog_monitor.sv(24) @ 0: uvm_test_top.env.agt.mon [wdog_monitor] main_phase Enter...
UVM_INFO ../env/wdog_scoreboard.sv(29) @ 0: uvm_test_top.env.scb [wodg_scorebaord] main_phase Enter...
Enter ITOP_3...
integration test mode WDOGINT is 1
integration test mode WDOGRES is 1
UVM_INFO ../seq/test_04_sequence.sv(56) @ 85000: uvm_test_top.env.agt.sqr@@seq_04 [test_04_sequence] RISE
Enter ITOP_2...
integration test mode WDOGINT is 1
integration test mode WDOGRES is 0
UVM_INFO ../seq/test_04_sequence.sv(85) @ 105000: uvm_test_top.env.agt.sqr@@seq_04 [test_04_sequence] RISE
Enter ITOP_1...
integration test mode WDOGINT is 0
integration test mode WDOGRES is 1
UVM_INFO ../seq/test_04_sequence.sv(117) @ 125000: uvm_test_top.env.agt.sqr@@seq_04 [test_04_sequence] RISE
SvtTestEpilog:------------------------ Passed---------------
--- UVM Report Summary ---
** Report counts by severity
UVM_INFO : 20
UVM_WARNING : 0
UVM_ERROR : 0
UVM_FATAL : 0
** Report counts by id
[RNTST] 1
[UVMTOP] 1
[base_test] 3
[test_04] 3
[test_04_sequence] 3
[wdog_agent] 3
[wdog_driver] 1
[wdog_env] 2
[wdog_monitor] 1
[wdog_scoreboard] 1
[wodg_scorebaord] 1
$finish called from file "/eda/vcs_vO-2018.09-SP2/vcs/O-2018.09-SP2/etc/uvm-1.1/base/uvm_root.svh", line 439.
$finish at simulation time 425000
---------------------------------------------------------------------------
VCS Coverage Metrics: during simulation line, cond, FSM, branch, tgl was monitored
---------------------------------------------------------------------------
V C S S i m u l a t i o n R e p o r t
Time: 425000 ps
CPU Time: 0.430 seconds; Data structure size: 0.5Mb
Wed Dec 27 14:23:13 2023
采用条件编译。ITOP_X是指向WDOGITOP写入的值为X。
当WDOGITOP寄存器配置为3时,[0]和[1]位均有效,WDOGINT中断信号以及WDOGRES复位信号有效。WDOGITOP配置为2时,WDOGINT中断信号有效。WDOGITOP配置为1时,复位信号WDOGRES有效,符合设计文档描述,验证通过。
.....
还有一些测试点,但为了避免繁琐,只写了watchdog的主要功能点测试。
下一篇:编写寄存器模型并完成test_case测试。