千家信息网

virtual interface怎么使用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"virtual interface怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"virtual interface怎么使用"吧!
千家信息网最后更新 2026年11月01日virtual interface怎么使用

本篇内容主要讲解"virtual interface怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"virtual interface怎么使用"吧!

interface 封装了模块的端口(ports),以及它们的方向(modports),同步关系( clocking block),function和task。

interface 简化了模块之间的连接,但是无法很好地适用于基于OOP的测试平台,无法在program ,class中进行实例化。

为了解决这个问题, System Verilog引入了virtual interface的概念。virtual interface是实际interface的指针。即virtual interface是一种可以在class中实例化的数据类型,使用virtual interface可与被测设计(DUT)进行间接地通信,而无需使用层次结构引用。

interface将测试平台与DUT分开。virtual interface在测试平台的不同位置操纵一组虚拟信号,而不是直接操纵实际的信号。

interface SBus; // A Simple bus interfacelogic [7:0] addr, data;endinterface
class SBusTransctor; // SBus transactor class virtual SBus bus; // virtual interface of type Sbus function new( virtual SBus s ); bus= s; // initialize the virtual interface endfunctionendclass
module dev ( Sbus s ) ... endmodule //devices that use SBus
module topSBus s ; // instantiate interfacedev a ( s ); // instantiate device
initial beginSbusTransactor t; // create bus-transactorst = new( s );endendmodule

在前面的示例中,SbusTransctor是一个简单的可重用事务类,其在编写时不需要知道测试平台的层次结构,也不知道与之交互的特定设计。该事务类可以与符合接口协议的任何数量的设计进行交互。

在测试平台中是virtual interface时,需要满足以下3个要求

1、 实例化的接口必须正确连接到DUT。


SBus s ; // instantiate  interfacedev a ( s ); // instantiate  device

2、 必须在类中声明virtual interface句柄。


virtual SBus bus; // virtual interface oftype Sbusfunction new( virtual SBus s );  bus = s; // initialize the virtual interface endfunction

3、必须将指定模块的interface赋值给virtual interface


SbusTransactor t; // create  bus-transactorst = new( s );

UVM是基于类的验证方法,其需要在driver和monitor两个不同的位置访问DUT,因此在UVM中需要两个virtual interface。

在UVM中设置虚拟接口如下所示


module top;…dut_if dif;…initial beginuvm_config_db#(virtual dut_if)::set(null, "*", "vif", dif);run_test();endendmoduleclass tb_driver extends uvm_driver #(trans1);…virtual dut_if vif;…function void build_phase(uvm_phase phase);super.build_phase(phase);// Get the virtual interface handle that was stored in the// uvm_config_db and assign it to the local vif field.if (!uvm_config_db#(virtual dut_if)::get(this, "", "vif",vif))`uvm_fatal("NOVIF", {"virtual interface must be set for: ",get_full_name(), ".vif"});endfunction…endclass

实际的interface dif在顶层模块中的run_test()之前使用命令


uvm_config_db#(virtualdut_if)::set(null, "*", "vif", dif);

存储在(set)字符串" vif"中。

然后使用命令


uvm_config_db#(virtual dut_if)::get(this, "", "vif", vif)

从同一" vif"位置,并将其赋值给tb_driver类中的virtual interface vif。

到此,相信大家对"virtual interface怎么使用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

平台 测试 实际 模块 位置 实例 接口 设计 不同 两个 事务 信号 内容 命令 层次 方法 结构 学习 实用 更深 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技平台互联网 互联网 的科技创新 艾特科技互联网 浩特互联网科技 新浪科技互联网 深圳市运趣互联网科技有限公司 互联网科技公司需要的职位 深圳国际航运科技和互联网 阿里互联网科技公司 宁夏众和广鑫互联网科技有限公司 互联网科技项目计划书材料类 互联网为啥属于高科技 注册互联网科技公司经营范围大全 允成互联网科技有限公司融资 济南有互联网科技公司吗 互联网金融科技元年 图游互联网科技 互联网科技职业技能培训学校 数字科技和互联网金融哪个好 保山浩联互联网科技有限公司 互联网科技企业 互联网科技公司税收优惠 安徽鑫晟辉互联网科技 顺网科技2021年互联网排名 健康食品互联网创新科技园项目 互联网第三次科技革命特征 深圳无忧互联网科技 从那以后互联网科技有限公司 新氧科技和美国互联网有关系吗 互联网科技创新创业项目
0