SV芯片验证之接口interface

本文介绍了Verilog中接口interface的重要性和作用,包括作为抽象建模方式、简化复杂设计、整合信号等。接口不包含设计层次,但可以例化接口。接口的例化与模块类似,接口端口在例化时需连接到具体接口实例。modport用于规定不同模块间接口信号的方向,而不能声明信号宽度。文章还展示了如何通过modport定义不同视角的信号连接方向。
摘要由CSDN通过智能技术生成

Verilog中模块与模块之间的通信是通过它们之间的端口连接来实现的。

一、接口的介绍: 

1、提供了一种对抽象级建模的方式;

2、使用接口可以简化建模以及验证大型复杂的设计;

3、它和module非常像,比如定义变量、声明类型。

4、Interface允许将多个模块中的信号整合到一起用来表示一个单一的抽象端口,因此,多个模块就可以使用同一个interface,避免分散的多个端口信号连接。

二、接口的作用:

1、连接硬件和硬件,或者硬件与测试平台;

2、可以定义变量类型或者线网类型,构成组合逻辑或者时序逻辑;

3、可以封装模块之间通信的协议;

4、可以嵌入与协议有关的断言检查、功能覆盖率收集等模块;

接口interface与模块module的区别:

接口不允许包含设计层次,即接口无法例化模块,但接口可以例化接口

模块可以例化模块和接口

三、接口的例化:

接口的例化方式和模块的例化方式一致。

1、模块里的端口声明方向为input、output或者inout,在例化时不用连接这些端口

(本人理解:因为已经声明了方向,所以不需要连接。连接端口相当于指明方向。)

2、模块里的端口如果是抽象的,即是声明为interface,那么这些端口在例化时就必须连接到一个接口实例,或者另一个接口的端口。

(本人理解:interface里的端口是抽象的,没有声明方向,所以在例化时就必须连接到一个接口实例或者另一个接口的端口)

四、接口里端口的索引:

如果一个模块拥有一个接口类型的端口,那么如果要索引该接口中的信号(端口),就需要通过以下方式来:

<port_name>.<internal_interface_signal_name>

<接口类型的端口名>.<接口内部的信号名>

always @(posedge bus.clock, negedge bus.resetN)

...

五、modport:

1、它是module port的缩写,表示不同模块看到同一组信号时的视角或连接方向

2、接口中的变量或者线网信号,对于连接到该接口的不同模块则可能具备不同的连接方向。

所以在接口中声明modport时,需要在modport中指明(约束)各个信号在不同模块里连接时的方向。

一句话:modport的作用就是把你所关心的信号规定上方向,但在modport里不能指明信号的宽度。

interface chip_bus(input logic clock, resetN);
  logic interrupt_request, grant, ready;
  logic [31:0] address;
  wire  [63:0] data;

//相同的信号,在不同的模块里的方向不一样;
//modport里面不能声明信号,它只是规定方向的。
  modport master (input  interrupt_request,
                  input  address,
                  output grant, ready,
                  inout  data,
                  input  clock, resetN);

  modport slave  (output  interrupt_request,
                  output  address,
                  input   grant, ready,
                  inout   data,
                  input   clock, resetN);
endinterface

在SystemVeriloginterface是一种用于在硬件模块和软件类之间进行交互的媒介。它可以在端口列表定义时钟、复位等公共信号,或者在变量列表定义需要与设计单元(DUT)和测试台(TB)连接的逻辑变量。通过参数化方式,interface可以提高复用性,使得有对应interface的DUT和TB在实例化时只需传递匹配的interface变量名即可完成接口变量的传递。接口可以用于设计和验证,它使得连接变得简洁且不易出错。与模块类似,interface可以定义端口、双相信号,使用initial和always块,以及定义function和task。初学者可以将interface看作是一个"插排",用于实现DUT和TB之间的数据驱动关系。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SV 接口(interface)](https://blog.csdn.net/weixin_45680021/article/details/125753127)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [SV学习(3)——接口interface、modport、时钟块clocking](https://blog.csdn.net/Bunny9__/article/details/122605991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值