1.什么是接口?
接口可以用做设计,也可以用来验证;
在验证环境中,接口可以使得连接变得简单而不易出错;
interface和module的使用性质很像,它可以定义端口,也可以定义双相信号;它可以使用initial和always,也可以使用function和task;
interface可以在软件环境和硬件环境中传递,例如作为module的端口列表,也可以作为软件方法的形式参数。
testbench<--interface-->Arbiter
interface arb_if(input bit clk);
logic [1:0] grant,request;
logic rst;
endinterface
module arb (arb_if arbif);
---
always @(posedge arbif.clk or posedge arbif.rst) begin
if(arbif.rst)
arbif.grant<=2'b00;//将数据传给接口
else
arbif.grant<=next_grant;
---
end
endmodule
module test (arb_if arbif)
---
initial begin
//reset code left out
@(posedge arbif.clk) arbif.request <=2'b01;
$display("@%0t: Drove req=01",$time);
repeat (2) @(posedge arbif.clk);
if(arbif.grant !=2'b01) $display("@%0t:al:grant!=2'b01",$time);
$finish
end
endmodule : test
//实例化
module top;
bit clk;
always #5 clk=~clk;
arb_if arbif(clk);
arb_al (arbif);
test_t1(arbif);
endmodule : top