1.前面的例子使用的是绝对路径,移植性差,因此用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
2.例化DUT是可以直接连到端口上(systemverilog):
my_if input_if(clk, rst_n);
my_if output_if(clk, rst_n);
dut my_dut(.clk(clk),
.rst_n(rst_n),
.rxd(input_if.data),
.rx_dv(input_if.valid),
.txd(output_if.data),
.tx_en(output_if.valid));
3.想在driver中使用,想当然的是在里面声明同样类型的变量,再赋值:
class my_driver extends uvm_driver;
my_if drv_vif;
..........................
endclass
1)但这样是报错的,在class中是不能声明一个interface的实参的,只有top_tb这种module可以。
2)即:在class中不能声明 一个占大