IC验证(接口)

1 篇文章 0 订阅
1 篇文章 0 订阅
本文详细介绍了如何在SystemVerilog(SV)和UVM中使用接口。首先,展示了在SV中创建接口及其在test和test_top模块中的应用。接着,解释了在UVM环境下,如何在driver类中通过uvm_config_db获取接口,并在test_top模块中设置接口。文章强调了接口在连接DUT和TB中的关键作用,以及在大型验证项目中UVM的优势。
摘要由CSDN通过智能技术生成

interface(接口)在验证平台中的使用


参考:
uvm实战
绿皮书

interface在SV中的使用

使用文件:

interface.sv  //用来定义接口的文件,里面声明了接口信号或clocking等信息
test.sv  //是用来产生激励的文件
test_top.sv  //顶层文件,用来连接dut和test

具体做法:
1.在interface中编写好需要用到的接口文件

//interface.sv
interface my_itf(input bit clk);
	logic	in_1;
	logic	in_2;
	logic 	out;
endinterface

2.在test中用virtual声明interface

//test.sv
class test;
	virtual my_itf vir_itf  //声明接口指针,interface作为介于硬件软件之间的媒介,不能直接在tb中声明,需要使用virtual前缀即相当于用指针的方式调用。
	function new(virtual my_itf itf  ,……);
		this.vir_itf = itf;  //将传入的接口赋给tb声明的接口变量,此时对vir_itf的赋值操作便相当于对dut的赋值操作,即接口已经将dut和tb连接起来。
		……
	endfuction
endclass

3.在test_top中例化接口、dut,并连接各个端口

//test_top.sv
`include "interface.sv"  //使用include相当于将改文件粘贴到改位置,如果不用那么编译器将会报错,表示找不到
module router_test_top;
	my_itf itf(clk); //例化接口
	dut  M1(
		.in_1(itf.in_1),
		.in_2(itf.in_1=2),
		.out(itf.out),
		.clock(itf.clk),
		) //连接dut和tb
	initial begin
		/*
		例化对象
		*/
    	test t;
		t = new(itf);
		 ……
	end
endmodule

在UVM中使用接口

使用文件:

test_top.sv 
Interface.sv
my_driver.sv

具体做法:
1.定义interface //同sv内容一样
2.在test中用virtual声明interface,并使用get获得interface

//my_driver.sv
class my_driver extends uvm_driver;
	virtual itf vir_itf;  //声明接口
	......
	uvm_config_db#(virtual itf)::get(this, " ", "vif", "vir_itf");  //在build_phase中获得接口
endclass
……
	vir_itf.in_1 = 0; //对接口操作

3.在test_top中例化接口、dut,并连接各个端口,使用set发送接口

//test_top.sv
`include"interface"
module top;
	itf vir_itf;	//例化接口
	……
	dut M1(... 
				);  //连接端口
	initial begin
		uvm_config_db#(virtual itf)::set(null, "uvm_test_top.xxx", "vif", vir_itf);  //在top中传递接口
		......
	end
endmodule

总结

uvm作为当前通用的验证方法学,其内含有大量的宏和包,uvm本质上也是使用sv语言编辑的。故在uvm中我们可以使用内置好的代码,非常方便的搭建接口,尽管在一个初级的验证环境中uvm显得繁琐,但是大型项目中uvm的优势便会立刻体现出来。

哎,csdn不支持sv和uvm语法高亮

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值