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),