Systemverilog语言(2)------- Systemverilog Interface

1.outline

在这里插入图片描述
Interface是SV里面新增加的概念;
Stimulus timing:仿真的区间或者区域;
Clocking Blocks :interface里面用于同步的关键字;

connecting tsetbench and design

在这里插入图片描述
sv里面增加了.和interface,共三种连接方式,verilog通过名称例化实现。
在这里插入图片描述
.
:*(*是通配符)主要用于连接相同名字的变量自动匹配,要求有相同的size和name。
在这里插入图片描述
.name : 对于相同name和size的变量,可以将例化括号里面的线网类型声明去掉,只列写端口,得以简化。
在这里插入图片描述
interface:可以理解为将信号封装为一个简单端口,在一个测试文件中声明一次就可以了。

2.using an interface

在这里插入图片描述
上例,首先在inteface里面封装request[1:0],qrant[1:0],reset信号,clk为外部输入信号;top模块使用的时候,首先例化interface,然后DUT和testbench都通过interface连接。
在这里插入图片描述
声明interface,然后在testbench把interface传进去;
@(posedge arbif.clk):检测到arbif模块clk时钟的上升沿;
arbif.request <= 2’b01;在arbif模块内部引用request信号并赋值;
上图主要介绍如何驱动与访问interface内部信号的方式
在这里插入图片描述
对于DUT不是interface的接口
可以采用上图的方式,在module里面引入声明好的interface,然后分别将DUT端口里面的信号与interface信号连接;
或者另外一种连接方式,即将DUT端口信号wrapper(封装),然后再在testbench里面与interface相连。

3.modport

在这里插入图片描述
interface可以用于设计,可综合;
modport:提供的一种看接口的视角;
modport本身可以作为一种module port,只不过该port是多个信号的集合,一个interface里面可以定义任意个modport;
modport 声明一般可以声明为input,output,或者bidirectional。
使用时首先在interface里面声明modport,可以用于testbench,也可以用于DUT,总线集成的时候用的多;设计里使用时,interface.modport name,注意modport声明了方向。
在这里插入图片描述
interface只是接口,不能包含design hierarchy,例如module等;

4.Clocking Blocks

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
interface也可以包含一些同步的信息,用Clocking Blocks同步,且只能在testbench出现;testbench采样采时钟前面那个值,驱动时采样后面那个值;
在这里插入图片描述
上图详细介绍在Clocking Blocks里面skew的含义,input #1ps address,表示在输入在时钟沿前1ps输入address;output #6 data;表示在时钟沿后6个周期送出数据。
在这里插入图片描述
clocking block 模块首先定义同步信号@(posedge clk);上图中logic中的request实际是异步的,但是clocking里面的request是同步的。clocking block可以直接在test模块中声明,如modport;
引用clocking block内部信号示例:<arbit.cb.request> 。
在这里插入图片描述
testbench同步到某信号一般采用@arbit.cb即可;
同步到某信号也可以@arbit.cb.grant;
#n:进过N个时间单位 ;##n :进过N个周期。
在这里插入图片描述
驱动信号的时候要用非阻塞赋值<= ;采样信号的时候用阻塞赋值=即可。
在这里插入图片描述
clocking Block 默认添加有1个周期的input skew 避免race,0个周期的output skew 使用时一般改为1。

5.0 Timing Regions

在这里插入图片描述
在这里插入图片描述
interface在采样信号的时候一般在postpone采样,如上图所示的TEST arbit.cb.grant 采样值在DUT前面的信号;interface如果去驱动的话,DUT向后采样;

5. program block

program是为了实现DUT与interface之间交互;
program 类似于一个module,可以包含code,变量也可以例化一些module;
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值