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

参考文档:Arm® Cortex®-M System Design Kit

DUT来源:购买所得

分成以下三部分进行:

  • 使用driver实现apb协议,根据协议进行DUT内部寄存器的配置
  • 实现DUT的寄存器模型reg_model,使用寄存器模型完成内部寄存器配置
  • 将watchdog挂载到Synopsys APB VIP上,使用VIP进行watchdog内部寄存器配置

一、watchdog功能介绍

        基本思想:针对被监视的目标设置一个计数器和一个阈值,watchdog会自己计算计数值, 并等待被监视的目标周期性的重置计数值,一旦目标发生错误,watchdog会检测到计数值溢出,触发中断,并给出复位信号。

        watchdog模块基于一个32bit的下行计数器,即逐减。计数器从WDOGLOAD_reg寄存器初始化,当计数寄存器值减小到0(carry msb有效),产生中断信号WDOGINT,当WDOGCLKEN为高时,计数器会在WDOGCLK的posedge处减1。

        watchdog监视中断,并在计数器达到0时assert WDOGRES信号,计数器停止,在下一个启用的WDOGCLK时钟边沿上,计数器从WDOGLOAD_reg寄存器中重新加载,倒计时继续。如果中断在计数器再一次达到0时没有被清除,watchdog重新assert WDOGRES信号。

二、watchdog DUT 寄存器描述

NameaddressTypeWidthDefaultDescription
WDOGLOAD0×00RW320×FFFFFFFFWDOGLOAD寄存器包含计数器要自减的值,当写入此寄存器时,计数立刻从新值从新开始,最小有效值为1
WDOGVALUE0×04RO320×FFFFFFFFWDOGVALUE寄存器给出了自减计数器的当前值
WDOGCONTROL0×08RW20×0

WDOGCONTROL寄存器使软件能够控制watchdog单元

[1]RESEN:设置为1表示允许复位,设置为0表示不允许复位。

[0]INTEN:设置为1以启用计数器和中断,或设置为0以禁用计数器和中断

WDOGINTCLR0×0CWO对此寄存器的任何值的写入都会清除看门狗中断,并从WDOGLOAD的值重新加载计数器
WDOGRIS0×10RO10×0WDOGRIS寄存器表示来自计数器的原始中断状态
WDOGMIS0×14RO10×0来自计数器的中断状态,此值是原始中断状态域控制寄存器的INTEN位的逻辑与
WDOGLOCK0×C00RW320×0WDOGLOCK寄存器禁止对其他寄存器的写访问,这是为了防止恶意软件禁用看门狗功能,写入0×1ACCE551值使能写入,可以实现对其他所有寄存器的写访问,写入任何其他值将禁用写访问
WDOGITCR0×F00RW10×0

WDOGITCR寄存器启用integration test mode集成测试模式,在这种模式下,测试输出寄存器直接控制中断输出WDOGINT和WDOGRES复位输出

[0]为1启用集成测试模式

WDOGITOP0×F04WO20×0

当处于集成测试模式时,WDOGITOP的值直接驱动中断输出和复位输出

[0]:集成测试模式下,WDOGRES的值输出

[1]:集成测试模式下,WDOGINT的值输出

WDOGPERIPHID40×FD0RO80×04
WDOGPERIPHID50×FD4RO80×00
WDOGPERIPHID60×FD8RO80×00
WDOGPERIPHID70×FDCRO80×00
WDOGPERIPHID00×FE0RO80×24
WDOGPERIPHID10×FE4RO80×B8
WDOGPERIPHID20×FE8RO80×1B
WDOGPERIPHID30×FECRO80×00
WDOGPCELLID00×FF0RO80×0D
WDOGPCELLID10×FF4RO80×F0
WDOGPCELLID20×FF8RO80×05
WDOGPCELLID30×FFCRO80×B1

(手机版往左划一下,后面还有一列寄存器的功能介绍)

三、 验证策略

Notest feature
1寄存器测试:寄存器default值读取
2寄存器上锁功能测试:对WDOGLOCK寄存器写入0×1ACCE551时,对寄存器的写访问是否允许,写入其他值时对寄存器写访问是否被禁止
3

寄存器写入全F测试

4中断请求信号检测:在计数寄存器自减为0时(计数寄存器自减验证可从此测),配置控制寄存器检测WDOGINT信号是否受控制寄存器控制拉高
5中断清除寄存器检测:当WDOGINT信号拉起后,配置中断清除寄存器,检测中断信号是否被拉低
6

复位信号产生检测:配置控制寄存器,当计数寄存器自减为0时候,检测WDOGRES信号是否被拉高

7integration test mode 测试:配置WDOGITCR寄存器进入集成测试模式,配置WDOGITOP寄存器检测相应模式下的中断和复位信号是否拉高
..................

四、环境搭建

        搭建基于UVM的环境架构,采用APB协议来配置DUT内部寄存器,进行功能测试。

        项目结构大概如下

a9e4602a16aa4e569db46c5571d8db52.png

component功能(需要说的说一下)

tb_top:例化DUT,并与interface进行连接。定义相关时钟信号,给到接口interface。通过uvm_config_db派发接口文件。编写run_test()以及定义波形文件名称,$fsdbDumpfile以及$fsdbDumpvars。

driver:驱动,driver须严格按照APB协议规定的方式编写。当然,这要求DUT必须是按照用总线配置的方式去写的。其主要功能是将transaction级拆成interface级,通过tb_top中接口与DUT的连接驱动相应命令进入DUT,实现对DUT内部寄存器的读写。

base_test与base_sequence:将一些重复性工作在base_class中编写完,后续test和sequence定义为此类的扩展类可以减少工作量。

其他模块略

五、运行以及结果讨论

1.test_00 寄存器default值测试

-----------------------------------------------------------------------
Name                       Type                        Size  Value     
-----------------------------------------------------------------------
uvm_test_top               test_00                     -     @464      
  env                      wdog_env                    -     @474      
    agt                    wdog_agent                  -     @693      
      drv                  wdog_driver                 -     @819      
        rsp_port           uvm_analysis_port           -     @836      
        seq_item_port      uvm_seq_item_pull_port      -     @827      
      mon                  wdog_monitor                -     @977      
        ap                 uvm_analysis_port           -     @985      
      sqr                  wdog_sequencer              -     @845      
        ap                 uvm_analysis_port           -     @968      
        rsp_export         uvm_analysis_export         -     @853      
        seq_item_export    uvm_seq_item_pull_imp       -     @959      
        arbitration_queue  array                       0     -         
        lock_queue         array                       0     -         
        num_last_reqs      integral                    32    'd1       
        num_last_rsps      integral                    32    'd1       
    mon_scb_fifo           uvm_tlm_analysis_fifo #(T)  -     @762      
      analysis_export      uvm_analysis_imp            -     @806      
      get_ap               uvm_analysis_port           -     @797      
      get_peek_export      uvm_get_peek_imp            -     @779      
      put_ap               uvm_analysis_port           -     @788      
      put_export           uvm_put_imp                 -     @770      
    scb                    wdog_scoreboard             -     @701      
      act_port             uvm_blocking_get_port       -     @1005     
      exp_port             uvm_blocking_get_port       -     @996      
    sqr_scb_fifo           uvm_tlm_analysis_fifo #(T)  -     @709      
      analysis_export      uvm_analysis_imp            -     @753      
      get_ap               uvm_analysis_port           -     @744      
      get_peek_export      uvm_get_peek_imp            -     @726      
      put_ap               uvm_analysis_port           -     @735      
      put_export           uvm_put_imp                 -     @717      
  v_seqr                   wdog_virtual_sequencer      -     @482      
    rsp_export             uvm_analysis_export         -     @490      
    seq_item_export        uvm_seq_item_pull_imp       -     @596      
    arbitration_queue      array                       0     -         
    lock_queue             array                       0     -         
    num_last_reqs          integral                    32    'd1       
    num_last_rsps          integral                    32    'd1       
  hdl_path                 string                      10    tb_top.dut
-----------------------------------------------------------------------

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                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1057                          
  PRDATA                       integral          32    'hffffffff                     
  PADDR                        integral          32    'h0                            
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
--------------------------------------------
Name      Type              Size  Value     
--------------------------------------------
w_trans   wdog_transaction  -     @1065     
  PRDATA  integral          32    'hffffffff
  PADDR   integral          32    'h0       
--------------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 45000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1073                          
  PRDATA                       integral          32    'hffffffff                     
  PADDR                        integral          32    'h4                            
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
--------------------------------------------
Name      Type              Size  Value     
--------------------------------------------
w_trans   wdog_transaction  -     @1081     
  PRDATA  integral          32    'hffffffff
  PADDR   integral          32    'h4       
--------------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 65000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1089                          
  PRDATA                       integral          32    'h0                            
  PADDR                        integral          32    'h8                            
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1097
  PRDATA  integral          32    'h0  
  PADDR   integral          32    'h8  
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 85000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1105                          
  PRDATA                       integral          32    'h0                            
  PADDR                        integral          32    'h10                           
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1113
  PRDATA  integral          32    'h0  
  PADDR   integral          32    'h10 
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 105000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1121                          
  PRDATA                       integral          32    'h0                            
  PADDR                        integral          32    'h14                           
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1129
  PRDATA  integral          32    'h0  
  PADDR   integral          32    'h14 
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 125000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1137                          
  PRDATA                       integral          32    'h0                            
  PADDR                        integral          32    'hc00                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1145
  PRDATA  integral          32    'h0  
  PADDR   integral          32    'hc00
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 145000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1153                          
  PRDATA                       integral          32    'h0                            
  PADDR                        integral          32    'hf00                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1161
  PRDATA  integral          32    'h0  
  PADDR   integral          32    'hf00
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 165000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1169                          
  PRDATA                       integral          32    'h4                            
  PADDR                        integral          32    'hfd0                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1177
  PRDATA  integral          32    'h4  
  PADDR   integral          32    'hfd0
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 185000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1185                          
  PRDATA                       integral          32    'h0                            
  PADDR                        integral          32    'hfd4                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1193
  PRDATA  integral          32    'h0  
  PADDR   integral          32    'hfd4
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 205000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1201                          
  PRDATA                       integral          32    'h0                            
  PADDR                        integral          32    'hfd8                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1209
  PRDATA  integral          32    'h0  
  PADDR   integral          32    'hfd8
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 225000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1217                          
  PRDATA                       integral          32    'h0                            
  PADDR                        integral          32    'hfdc                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1225
  PRDATA  integral          32    'h0  
  PADDR   integral          32    'hfdc
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 245000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1233                          
  PRDATA                       integral          32    'h24                           
  PADDR                        integral          32    'hfe0                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1241
  PRDATA  integral          32    'h24 
  PADDR   integral          32    'hfe0
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 265000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1249                          
  PRDATA                       integral          32    'hb8                           
  PADDR                        integral          32    'hfe4                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1257
  PRDATA  integral          32    'hb8 
  PADDR   integral          32    'hfe4
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 285000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1265                          
  PRDATA                       integral          32    'h1b                           
  PADDR                        integral          32    'hfe8                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1273
  PRDATA  integral          32    'h1b 
  PADDR   integral          32    'hfe8
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 305000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1281                          
  PRDATA                       integral          32    'hb0                           
  PADDR                        integral          32    'hfec                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1289
  PRDATA  integral          32    'hb0 
  PADDR   integral          32    'hfec
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 325000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1297                          
  PRDATA                       integral          32    'hd                            
  PADDR                        integral          32    'hff0                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1305
  PRDATA  integral          32    'hd  
  PADDR   integral          32    'hff0
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 345000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1313                          
  PRDATA                       integral          32    'hf0                           
  PADDR                        integral          32    'hff4                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1321
  PRDATA  integral          32    'hf0 
  PADDR   integral          32    'hff4
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 365000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1329                          
  PRDATA                       integral          32    'h5                            
  PADDR                        integral          32    'hff8                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1337
  PRDATA  integral          32    'h5  
  PADDR   integral          32    'hff8
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 385000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
trans                          wdog_transaction  -     @1345                          
  PRDATA                       integral          32    'hb1                           
  PADDR                        integral          32    'hffc                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_00                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_00
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1353
  PRDATA  integral          32    'hb1 
  PADDR   integral          32    'hffc
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 405000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
SvtTestEpilog:------------------------ Passed---------------


--- UVM Report Summary ---

** Report counts by severity
UVM_INFO :   36
UVM_WARNING :    0
UVM_ERROR :    0
UVM_FATAL :    0
** Report counts by id
[RNTST]     1
[UVMTOP]     1
[base_test]     3
[test_00]     3
[wdog_agent]     3
[wdog_driver]     1
[wdog_env]     2
[wdog_monitor]     1
[wdog_scoreboard]    20
[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               705000

---------------------------------------------------------------------------
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: 705000 ps
CPU Time:      0.490 seconds;       Data structure size:   0.5Mb
Tue Dec 26 19:26:38 2023

可以看到地址为32'hFEC的WDOGPERIPHID3寄存器default值与设计文档的描述是不符的,这是因为default值确实是0×0,但是ta的输出并不是直接将default值输出,而是以这样的方式给出

39bff891af534e5f9586fab691470c46.png

ECOREVNUM,连接到外设ID寄存器中的ECO修订号,以显示芯片设计过程中ECO修订变化,可以将其连接到特殊的连接单元,以便可以在硅网列表或硅掩膜等等较低级别更改ECO修订号。

上面这些话我看不懂,不用管这个东西。将其值设置为4‘b1011,所以{1011_0000},以十六进制读出自然就是'hB0

以上就是非WO的寄存器default值测试,未做任何写入的情况下,其读出值与设计文档一致。

2.test_01寄存器上锁功能以及写入全F测试

        测试思路是这样的,采用条件编译,先对WDOGLOCK寄存器写入除0×1ACCE551以外的任何其它值,对含有“W”类型寄存器进行先写后读测试,观察log的输出结果,如果相应寄存器读出来的是default值,说明寄存器并没有写入成功。然后写入解锁值0×1ACCE551,重复对寄存器的写入读出测试,观察结果。

golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
w_trans                        wdog_transaction  -     @1065                          
  PRDATA                       integral          32    'h7d9247                       
  PADDR                        integral          32    'h0                            
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_01                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_01
  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    'hffffffff
  PADDR   integral          32    'h0       
--------------------------------------------
UVM_INFO @ 85000: reporter [MISCMP] Miscompare for w_trans.PRDATA: lhs = 'hffffffff : rhs = 'h7d9247
UVM_INFO @ 85000: reporter [MISCMP] 1 Miscompare(s) for object w_trans@1065 vs. w_trans@1073
UVM_ERROR ../env/wdog_scoreboard.sv(51) @ 85000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MISMATCH at time 85000
DUT is
--------------------------------------------
Name      Type              Size  Value     
--------------------------------------------
w_trans   wdog_transaction  -     @1073     
  PRDATA  integral          32    'hffffffff
  PADDR   integral          32    'h0       
--------------------------------------------
golden is
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
w_trans                        wdog_transaction  -     @1065                          
  PRDATA                       integral          32    'h7d9247                       
  PADDR                        integral          32    'h0                            
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_01                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_01
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
w_trans                        wdog_transaction  -     @1085                          
  PRDATA                       integral          32    'h1                            
  PADDR                        integral          32    'h8                            
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_01                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_01
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1093
  PRDATA  integral          32    'h0  
  PADDR   integral          32    'h8  
---------------------------------------
UVM_INFO @ 125000: reporter [MISCMP] Miscompare for w_trans.PRDATA: lhs = 'h0 : rhs = 'h1
UVM_INFO @ 125000: reporter [MISCMP] 1 Miscompare(s) for object w_trans@1085 vs. w_trans@1093
UVM_ERROR ../env/wdog_scoreboard.sv(51) @ 125000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MISMATCH at time 125000
DUT is
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1093
  PRDATA  integral          32    'h0  
  PADDR   integral          32    'h8  
---------------------------------------
golden is
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
w_trans                        wdog_transaction  -     @1085                          
  PRDATA                       integral          32    'h1                            
  PADDR                        integral          32    'h8                            
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_01                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_01
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
w_trans                        wdog_transaction  -     @1105                          
  PRDATA                       integral          32    'h1                            
  PADDR                        integral          32    'hf00                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_01                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_01
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1113
  PRDATA  integral          32    'h0  
  PADDR   integral          32    'hf00
---------------------------------------
UVM_INFO @ 165000: reporter [MISCMP] Miscompare for w_trans.PRDATA: lhs = 'h0 : rhs = 'h1
UVM_INFO @ 165000: reporter [MISCMP] 1 Miscompare(s) for object w_trans@1105 vs. w_trans@1113
UVM_ERROR ../env/wdog_scoreboard.sv(51) @ 165000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MISMATCH at time 165000
DUT is
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1113
  PRDATA  integral          32    'h0  
  PADDR   integral          32    'hf00
---------------------------------------
golden is
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
w_trans                        wdog_transaction  -     @1105                          
  PRDATA                       integral          32    'h1                            
  PADDR                        integral          32    'hf00                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_01                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_01
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
UVM_INFO ../seq/test_01_sequence.sv(91) @ 165000: uvm_test_top.env.agt.sqr@@seq_01 [test_01_sequence] UNLOCK Enter...
SvtTestEpilog:------------------------ Failed---------------


--- UVM Report Summary ---

** Report counts by severity
UVM_INFO :   24
UVM_WARNING :    0
UVM_ERROR :    3
UVM_FATAL :    0
** Report counts by id
[MISCMP]     6
[RNTST]     1
[UVMTOP]     1
[base_test]     3
[test_01]     3
[test_01_sequence]     1
[wdog_agent]     3
[wdog_driver]     1
[wdog_env]     2
[wdog_monitor]     1
[wdog_scoreboard]     4
[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               465000

---------------------------------------------------------------------------
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: 465000 ps
CPU Time:      0.540 seconds;       Data structure size:   0.5Mb
Tue Dec 26 20:28:21 2023

        golden口接受到的数据是实际向寄存器写入的值,而dut口实际接收到的还是相应寄存器的default值,说明写访问被拒绝。

        而向WDOGLOCK写入解锁值0×1ACCE551时,根据log信息显示

UVM_INFO ../seq/test_01_sequence.sv(91) @ 0: uvm_test_top.env.agt.sqr@@seq_01 [test_01_sequence] UNLOCK Enter...
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
w_trans                        wdog_transaction  -     @1065                          
  PRDATA                       integral          32    'h7d9247                       
  PADDR                        integral          32    'h0                            
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_01                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_01
  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    'h7d9247
  PADDR   integral          32    'h0     
------------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 85000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
w_trans                        wdog_transaction  -     @1085                          
  PRDATA                       integral          32    'h1                            
  PADDR                        integral          32    'h8                            
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_01                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_01
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1093
  PRDATA  integral          32    'h1  
  PADDR   integral          32    'h8  
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 125000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
golden port get transaction
--------------------------------------------------------------------------------------
Name                           Type              Size  Value                          
--------------------------------------------------------------------------------------
w_trans                        wdog_transaction  -     @1105                          
  PRDATA                       integral          32    'h1                            
  PADDR                        integral          32    'hf00                          
  depth                        int               32    'd2                            
  parent sequence (name)       string            6     seq_01                         
  parent sequence (full name)  string            31    uvm_test_top.env.agt.sqr.seq_01
  sequencer                    string            24    uvm_test_top.env.agt.sqr       
--------------------------------------------------------------------------------------
dut port get transaction
---------------------------------------
Name      Type              Size  Value
---------------------------------------
w_trans   wdog_transaction  -     @1113
  PRDATA  integral          32    'h1  
  PADDR   integral          32    'hf00
---------------------------------------
UVM_INFO ../env/wdog_scoreboard.sv(48) @ 165000: uvm_test_top.env.scb [wdog_scoreboard] COMPARE MATCH
SvtTestEpilog:------------------------ Passed---------------


--- UVM Report Summary ---

** Report counts by severity
UVM_INFO :   21
UVM_WARNING :    0
UVM_ERROR :    0
UVM_FATAL :    0
** Report counts by id
[RNTST]     1
[UVMTOP]     1
[base_test]     3
[test_01]     3
[test_01_sequence]     1
[wdog_agent]     3
[wdog_driver]     1
[wdog_env]     2
[wdog_monitor]     1
[wdog_scoreboard]     4
[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               465000

---------------------------------------------------------------------------
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: 465000 ps
CPU Time:      0.450 seconds;       Data structure size:   0.5Mb
Tue Dec 26 20:33:30 2023

        写访问成功,PWDATA成功写入寄存器内。

        这里在实际测试时发现一个bug,就是当不对WDOGLOCK寄存器做操作时,直接进行相关寄存器的写访问,是可以成功写入的,根据watchdog功能来看,没有解锁的情况下,不应该允许对寄存器的写访问。

写入全F测试,略...

bug1:不对WDOGLOCK做操作,直接对相应寄存器进行写访问,可以成功写入。

剩下的转下一篇章。。。

     

        

         

        

        

  

  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值