apb_watchdog验证模块搭建(一)文章目录
文章目录
前言
本文介绍了apb_watchdog验证模块的搭建过程与其具体代码,主要包括其中验证环境的构建,测试序列的发送与回归测试收集。主要运用systemvorilog与uvm在已有apb2总线vip(来源路科验证)的基础上进行验证测试,仿真验证工具为vcs。本项目的设计代码由路科验证提供。
一、apb_watchdog简单功能介绍
关于apb_watchdog的具体功能可以参考arm提供的设计功能描述文档**《Cortex™-M System Design Kit》**其中第四节component部分对apb_watchdog进行了详细介绍。下文对其主要功能进行简单介绍,具体功能与寄存器描述将在后文验证中提到。
下图为apb_watchdog接口,左侧接口为apb2总线接口(从信号方向可知其为从端),通过总线端的数据传输完成对watchdog的寄存器进行功能配置,右侧为watchdog本身接口。
watchdog为一个32bit逐减计数器,由重载寄存器初始化,WDOGLOAD。当watchdog计数器减少到预计的数值时,输出端WDPGINT将拉高,输出中断信号。
在WDOGCLKEN信号为高时,计数器会在每个WDOGCLK的上升沿减一。计数到0时,若此时WDOGCONCROL寄存器部分的INT域与RES域为高则使能reset与interrupt功能。即输出中断信号并且watchdog会安装WDOGLAOD中预定值进行重置。若WDOGCONTROL域中有未使能的情况则回等待重置或无法输出中断。
二、测试平台环境搭建
1.测试所用模板介绍
利用gvim可以创建与打开文件如下:
vorilog文件夹中存放设计代码。
uvm文件夹中存放验证代码与其环境结构。
cfg为配置文件,由顶层basetest创建,其中包括一些配置信息,也可将interface,regmodel打包传入。
env为验证环境部分,主体为pkg,env与virtual sequencer
reg为寄存器模型
seq_lib为存放测试用例sequence文件夹
sim为仿真文件夹
tb为testbench与interface文件夹
test用以存放不同测试文件
vip_lib中存放了apb2总线的vip
在创建模板时,除vip部分其他基本为空
2.tb与interface
interface代码:
interface rkv_watchdog_if;
logic [3:0] ecorevnum = 4'b1011;
logic wdogint;
logic wdogres;
logic apb_clk;
logic apb_rstn;
logic wdg_clk;
logic wdg_rstn;
endinterface
tb中提供了apb与watchdog的时钟与复位信号,以及wdogint与wdogres。ecorevnum是注册修订号,赋值即可。
tb代码:
module rkv_watchdog_tb;
import uvm_pkg::*;
`include "uvm_macros.svh"
import rkv_watchdog_pkg::*;
bit apb_clk;
bit apb_rstn;
bit wdg_clk;
bit wdg_rstn;
cmsdk_apb_watchdog dut(
.PCLK(apb_clk), // APB clock
.PRESETn(apb_rstn), // APB reset
.PENABLE(apb_if_inst.penable), // APB enable
.PSEL(apb_if_inst.psel), // APB periph select
.PADDR(apb_if_inst.paddr[11:2]), // APB address bus
.