System Verilog学习笔记(七)——接口
接口(interface)
- 接口提供了一种新型的对抽象级建模的方式,可以简化建模和验证大型复杂的设计。
- 使用Verilog的方式实现下图的连接需要:对每个子模块进行端口声明;在上层环境需要声明非常多的网线;将上层环境的网线在各个模块之间进行连接。这样会使常用的总线端口和通信协议在多个模块中重复声明和定义,在不同模块之间的连接会出现不匹配的信号声明和连接,一个设计发生变化也可能会影响多个模块的端口声明和连接。
接口的优势
- interface允许多个信号被整合到一起用来表示一个单一的抽象端口
- 多个模块可以使用同一个interface,避免分散的多个端口信号连接
接口的内容
- 接口不仅可以包含变量或线网,还可以封装模块之间的通信协议
- 还可以嵌入与协议有关的断言检查、功能覆盖率收集等模块
- 接口不允许包含设计层次,即接口无法例化module,但是接口可以例化接口
- 接口中可以进一步声明modport来约束不同模块连接时的信号方向
接口的声明
interface 接口名 (参数);
endinterface
- 接口可以有端口,接口内部可以声明所有变量或者线网类型。
接口的例化
- 接口的例化方式同模块例化一致
- 模块的端口如果声明为input、output或者inout,那么在例化时可以不连接
- 模块的端口如果声明为interface,那么在例化时必须连接一个接口实例或者另外一个接口端口
- 利用“.”来索引interface里的端口号
modport
- 接口中的变量或者线网信号,对于连接到该端口的不同模块则可能具备不同的连接方向
- 接口引入modport来作为module port的缩写,表示不同的模块看到同一组信号时的视角(连接方向)
- 在接口中声明modport,需要指明modport中各个信号的方向,不需要指明宽度
- 当一个模块在例化时,可以选择连接到interface端口中具体的某个modport
验证中的应用
利用接口,可以将测试平台同DUT连接在一起