前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UVM的一个简单验证demo

UVM的一个简单验证demo

作者头像
数字IC小站
发布2020-06-30 16:18:45
1.5K0
发布2020-06-30 16:18:45
举报
文章被收录于专栏:数字IC小站数字IC小站

文末附本文所有代码。

上次使用SystemVerilog进行验证,现在使用UVM对同一DUT进行验证。

SystemVerilog的一个简单验证demo

UVM框架如下:

为了保持组件/对象命名的一致性,所有组件/对象的名称都以mem_*开头。

基本组件:

Sequence item

  • 把激励所需的变量在sequence_item中进行声明。
  • sequence_item可以用作DUT信号上监视器监视的活动的占位符。

sequence_item是通过扩展uvm_seq_item来编写的:

代码语言:javascript
复制
class mem_seq_item extends uvm_sequence_item;    //Utility macro  `uvm_object_utils(mem_seq_item)    //Constructor  function new(string name = "mem_seq_item");    super.new(name);  endfunction endclass

在mem_seq_item中声明变量,并声明随机化:

代码语言:javascript
复制
class mem_seq_item extends uvm_sequence_item;   //data and control fields  rand bit [3:0] addr;  rand bit       wr_en;  rand bit       rd_en;  rand bit [7:0] wdata;       bit [7:0] rdata;
endclass

为了使用uvm_object方法(复制、比较、打包、解包、记录、打印等),所有变量都注册到uvm_field_*宏。

代码语言:javascript
复制
class mem_seq_item extends uvm_sequence_item;  //Utility and Field macros,  `uvm_object_utils_begin(mem_seq_item)    `uvm_field_int(addr,UVM_ALL_ON)    `uvm_field_int(wr_en,UVM_ALL_ON)    `uvm_field_int(rd_en,UVM_ALL_ON)    `uvm_field_int(wdata,UVM_ALL_ON)  `uvm_object_utils_end endclass
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字IC小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档