apb_watchdog(apb总线配置watchdog模块验证)二

        上一篇文章中,已经完成了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测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值