路科验证的个人空间 https://blog.eetop.cn/1561828 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

[彩虹糖带你入门UVM] 第1节 验证组件之接口

已有 2305 次阅读| 2019-5-29 10:20 |个人分类:验证系统思想|系统分类:芯片设计| UVM

  这一篇我们主要会介绍一个非常重要的概念interface, interface作为SV中唯一的硬件和软件环境的媒介交互,它的地位不可取代哦。另外,interface连接了我们生产彩虹糖的验证平台和我们的糖果爱好者,没有它我们也不可能吃到好吃的彩虹糖。

  上一篇短文主要介绍了彩虹糖验证平台中的transactionsequence以下是上一篇短文中主要介绍的一些类。

  • transaction

class jelly_bean_transaction extends uvm_sequence_item;

class sugar_free_jelly_bean_transaction extends jelly_bean _transaction;

  • sequence

class one_jelly_bean_sequence extends uvm_sequence#(jelly_bean_transaction );

class same_flavored_jelly_beans_sequence extends uvm_sequence#(jelly_bean_transaction );

class gift_boxed_jelly_beans_sequence extends uvm_sequence#(jelly_bean_transaction );

 

一、接口(interface)

我们首先会对interface做一个大概的介绍。jelly_bean_if(我们彩虹糖验证平台中的接口)的主要作用就是来连接我们的验证组件和我们的待测设计(DUT)

jelly_bean_if内的主要代码如下图所示。总体上来说jelly_bean_if内包含的大部分的信号都是从jelly_bean_transaction中提取出来的。                     

1.jelly_bean_if

相应信号的时序信息是由时钟块(clockingblock)来定义的。master_cb时钟块是从主控总线(bus-master)的角度来定义时序的,而slave_cb时钟块是从受控总线(bus-slave)的角度来定义时序的。

该接口还定义了一些modport列表,规定了interface中一些信号的方向。总计有4modport列表。如下所示。DUT使用的是异步的modport(master_mpslave_mp),测试平台使用的是异步的modport(master_sync_mpslave_sync_mp)

1.modport列表

名称

端口方向

时序信息

使用位置

master_mp

Master输出

异步

DUT

slave_mp

Slave输出

异步

DUT

master_sync_mp

Master输出

使用master_cb同步

Testbench

slave_sync_mp

Slave输出

使用slave_cb同步

Testbench

 二、DUT

下面的代码描述的是一个简单的DUT也就是我们的彩虹糖评测员,会反馈彩虹可口程度的jelly_bean_taster.第一行使用了我们上面定义的接口jelly_bean_if来作为module的端口信号,slave_mp这个modport来定义信号的输入输出方向。从代码中可以看出,彩虹糖评测员只会给酸巧克力口味的彩虹糖差评,其他口味的都是好评。也就是当从interface输入给DUTflavor信号是巧克力口味,并且sour信号是1的情况下,jelly_bean_taster的输出taste会输出YUCKY值,其他情况都是YUMMY值。

2.jelly_bean_taster

当然,我们也不一定需要在module定义的时候指定modport,也可以在例化module并进行连接的时候指定modport信息。

3. 在例化的时候指定modport

    我们也可以同时在定义和例化module的时候指定modport,但是前提是这两个modport得完全一样。如果在interface中没有定义任何modport来指定信号的方向,那么这些信号默认就是inout类型的方向。


  • 总结interface,clocking, modport, 采样以及驱动

  • interface

  1. interface的创建使用关键词interface/endinterface。在interface的端口列表中只需要定义时钟、复位等公共信号,或者不定义任何端口信号,转而在变量列表中定义各个需要跟DUTTB连接的logic变量。为了简单易用,我们推荐使用logic来定义变量。例如在jelly_bean_if中我们只定义了clk这一个端口信号“input bit clk”. 在变量列表中定义了TBDUT要交互的一些信号例如flavor,taste, color等信号。

  2. interface在例化时,同module的例化方式一样。对于有对应interfaceDUTTB组件(例如stimulator),在其例化时,也只需要传递匹配的interface变量名即可完成interface的变量传递。例如我们只需要在图3moduleTOP中将jelly_bean_if例化成jb_slave_if,然后将jb_slave_if.slave_mp传递给例化的DUT即可完成连接interfaceDUT的连接。如下图也是一种连接方式。

  3. interface中可以声明一些modport来将信号分组,并定义一些信号的方向信息。可以定义一些时钟块(clockingblock)来做一些同步的驱动和采样。

  • modport

  1. 使用modport来规定interface中定义的信号的方向。比如jelly_bean_ifmaster_mpflavor,color定义为output,而在slave_mp中又将其定义为input。这两个moport的使用场景不一样,对于master生产彩虹糖的一方来说,会口味以及颜色等信息是作为输出来表明彩虹糖的属性。对于slave接受并评估彩虹糖可口程度的一方来说,需要口味和颜色这一些信息作为输入,这样才能评估生产出来的彩虹糖是否符合要求。

  •  时钟块(clocking block)

  1. interface中可以使用时钟块来指定一些同步信号相对于时钟的时序,使得我们可以在TB中使用和DUT相同的时钟来进行同步的驱动和采样。可以很大程度上避免DUTTB的竞争状态。

  2. clocking在声明完名字之后,应该伴随着定义默认的采样事件,即“defaultinput/output event”。如果没有定义,则会默认地在clocking采样事件前的1stepTB输入进行采样,在采样事件后的#0TB输出进行驱动。在jelly_bean_ifmaster_cb定义了在clk上升沿前1step采样DUT输入给彩虹糖测试平台的taste信号的值,在当前clk上升沿后的1ns驱动给DUT的输出flavor,color等信号。

  • 采样和驱动

  1. 一般来说时钟块只在TB中使用,用来做一些同步的驱动和采样,因为这也代表着一种对时序信息的模拟。而不在DUT的端口上使用时钟块,因为design内部自己会定义好同步异步的时序信息。

  2. TB中使用clockinginput进行采样,对output进行驱动的,相对于clock的关系大致如下

  3. 对于驱动和采样,我们设计了一个更加详细的例子来说明这个问题。

具体的波形图如下所示


TB通过时钟块去采样DUToutput的值来作为TBinput,如sig1sig3所示:

  • sig1TB通过时钟块采样到的信号值。

  • sig2TB时钟块的定义的input的信号值。

  • sig3DUT输出的值。

TB通过时钟块去驱动TBoutput去作为DUTinput,如sig4sig6所示:

  • sig4TB内部产生的激励,通过时钟块驱动给DUT

  • sig5是时钟块内部的定义的output的信号值。

  • sig6DUT输入的值。

对于TB而言其时钟块的值发生变化都是在时钟上升沿,只不过对于采样而言,采样点是在时钟上升沿之前;对于驱动而言,实际驱动值变化会在时钟上升沿叠加一个偏移量之后发生,这样可以保证DUT的输入能够准确无误。


2019年路科验证实战就业VIP春季班

早鸟报名通道开启

 扫码即可报名

前30名报名的同学给予早鸟价格

优惠500

往期精彩:

2019验证VIP春季班   早鸟报名通道扫码报名稿!

实锤!30W+!!!2018芯片校招薪资比肩互联网!理解UVM-1.2到IEEE1800.2标准的变化,掌握这3点就够了Verification和Validation傻傻分不清楚?面经重点!没想到,双十一只花10块钱,我竟然爱上了加班人工智能和机器学习让验证更快更智能

 



点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 02:32 , Processed in 0.012863 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部