白皮书《UVM实战》学习——2.2.4 加入virtual interface

本文介绍如何在UVM验证平台中加入virtual interface,以提高可移植性。通过创建my_if interface,实例化并连接到DUT,以及使用config_db机制在top_tb和my_driver之间传递接口,从而避免绝对路径。同时讲解了build_phase和set/get操作在配置接口中的应用。
摘要由CSDN通过智能技术生成

标题如下:

第2章 一个简单的UVM验证平台

2.1 验证平台的组成

2.2 只有driver的验证平台

2.2.1 最简单的验证平台

2.2.2 加入factory机制

2.2.3 加入objection机制

2.2.4 加入virtual interface

2.3 为验证平台加入各个组件

2.3.1 加入transaction

未完待续

正文在下面

2.2.4 加入virtual interface

这部分代码多了一个my_if.sv。

一、my_if

在前面的代码中,top_tb中既有DUT又有my_driver,所以用相同的信号将两者连起来了。比如my_driver中等待时钟事件是@(posedge top_tb.clk),给DUT的输入端口赋值写的是top_tb.rx_dv <= 1'b1,这用的都是绝对路径,大大减弱了验证平台的可移植性。从根本上说,应该尽量杜绝在验证平台中使用绝对路径。

避免使用绝对路径的一个方法是使用宏:`define TOP top_tb,这样如果以后TOP变了,只需要修改宏定义即可。但是如果clk的路径变为了top_tb.clk_inst.clk,那么单纯修改宏定义就没办法起到作用。

避免绝对路径的另一个方法是使用interface。SV中使用interface来连接验证平台与DUT的端口(所以interface中要写出DUT中所有的端口)。interface定义如下:

`ifndef MY_IF__SV
`define MY_IF__SV

interface my_if(input clk, input rst_n);

   logic [7:0] data;
   logic valid;
endinterface

`endif

这个interface并没有把DUT所有的端口全部包含进去,这是因为① clk和rst_n既是DUT的输入,也是验证平台的输入,所以应该放在interface的端口中。在top_tb中实例化interface时,

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值