SV中的interface
(2014-07-03 18:50:47)
标签:
interfacesystemverilog |
分类: Verification |
Interface在一个低的抽象级别,主要是一些Nets和Variables的组合,为他们提供端口,实现便捷的访问。
Interface在一个高的抽象级别,功能类似一个类的模板,可以parameter, constants, variables, functions and tasks。在task/function methods中,可以使用initial or always blocks来建立一些系统级的模型和testbench的应用。
Modport结构主要是提供一些额外的direction information,来使得信号的整理,使用更加方便。
Interface的定义:
Eg:
Interface 的例化,其中#(100)表示例化的interface中的第一个参数为100。整个语句共例化了11个interface,包括scalar1和10个向量组vector:
Eg:
只定义一些变量的连接关系时的简单用例,interface只是将module中要用到的一些变量整合好,方便之后模块的例化和调用。其中module
对于变量定义在interface的port内还是item中,区别主要是port中的变量可以与外部建立连接。其中a, d, c可以从外部直接例化时赋值,d则相当于interface中的局部变量,私有。
Eg
Modport可以在interface中定义,来加上额外的direction information。Modport的作用就是把一组信号按不同模块的需要进行打包,然后使得模块方便调用。
Modport的定义:
modport在module中的例化,语法是interface_name.modport_name
在嵌套式的interface中,一个modport中变量的使用必须是统一的,另一层中的变量不可以直接不声明的直接拿来用,如下例中的错误用法。
Eg
interface中clocking blocks的定义,定义好clocking之后,可以在modport中直接引用。
Eg
例化时,A_Bus
在interface中定义functions和tasks。当functions或者tasks需要在外部module中定义时,声明函数时,需要加关键字extern在interface中,或者export在modport中,并且函数必须定义为prototype型。在interface中定义函数时,声明也在interface中可以不加关键字,在modport中必须加import,各个参数和函数返回值都相同。
当需要在外部定义多个并发任务时,在interface中的定义为
extern
通过对interface定义为虚接口,可以在functions,tasks和methods中直接使用。
在interface的module header和port
connection中都没有定义nets和variables的方向,默认是inout /
19.7参数化的命令Interface.
Eg: interface
博文主要来源:SystemVerilog 3.1 LRM

加载中…