System Verilog——接口

我们在进行模块与模块之间的连接时,需要将信号与端口进行连接,所有的这些连接都是极易出错的,因为一个信号可能流经几个设计层次,它必须一遍一遍地被声明和连接。最糟糕的是如果你将添加一个新的信号,它必须在多个文件中定义和连接。使用System Verilog接口可以解决这些的问题。
例:仲裁器的简单接口

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//arbif.clk      arbif.rst
		...
	end
endmodule

使用简单仲裁器接口的测试平台

module test(arb_if arbif);
...
	initial begin
		@(posedge arbif.clk);
		...
	end

将所有快都在top模块中例化和连接

module top;
	bit clk;
	always #5 clk = ~clk;
	
	arb_if arbif(clk);
	arb a1(arbif);
	test t1(arbif);
endmodule

显然,接口使得连接变得更加简洁而不易出错。如果你希望在一个接口中放入一个新的信号,你只需要在接口中放入一个新的信号,你只需要在接口定义和实际使用这个接口的模块中做修改。你不需要改变其他任何模块,例如在top模块,信号只是穿过该模块,而不进行任何操作。这种特性极大地降低了连线出错的几率。

注意:使用接口时需要确保在你的模块和程序块之外声明接口变量。有些编译器可能不支持在模块中定义接口。即使允许,那么接口就只是所在模块的局部变量,所以对设计的其他部分来说是不可见的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值