提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
本节学习SV第4章:interface
一、interface
接口(interface)是SV引入的很重要的特性,目前在绝大多数验证环境或者设计中都会出现。接口最直接的作用就是将一组相关的信号封装到一起,特别是一些标准协议的接口信号,比如常见的AMBA AXI/AHB/APB等等。接口的定义不仅可以方便信号在验证环境组件中的连接,还可以将其复用至其他芯片设计中,降低连接出错的概率。
接口并不只是提供一组信号这么简单,它还是可综合的,它还可以包含modport、clocking block、parameter、过程语句块、断言、覆盖组(covergroup)、函数和任务等。
interface特点
- 接口便于设计重用,当两个块之间有两个以上的信号需要连接,并且使用特定的协议进行通信时应该使用接口
- 接口可以用于替代原来需要在模块或者程序中反复声明并且位于代码内部的一系列信号,减少连接错误的可能性
- 要增加新的信号时,只需要在接口中声明一次,不需要再更高层的模块中共声明,减少错误
- modport允许一个模块很方便的将接口的一系列信号捆绑在一起,也可以为信号指定方向以便工具自动检查
- 作为SV中唯一的硬件与软件环境的媒介交互,既可以在硬件世界(module)中使用,也可以在软件世界(class)中使用
module和interface区别
- interface不能例化module的,module可以例化interface
- 不能将module里面portlist含有另一个module的,可以含有interface
- 如果function、task的端口声明中声明为ref,那么function、task必须是automatic
- 在program或者module中,function、task默认都是static
下面举例说明interface:
//以仲裁器举例:
module arb_port (grant,request,rst,clk);
output