这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 湖北理工TEA » 数字IC验证之“搭建一个可以运行的uvm测试平台”(5)连载中...

共1条 1/1 1 跳转至

数字IC验证之“搭建一个可以运行的uvm测试平台”(5)连载中...

菜鸟
2021-01-26 10:05:59     打赏

  大家好,我是一哥,上章介绍了构成uvm测试平台的主要组件?最后,我们将一个典型的uvm平台进行最简化,从本章我们开始搭建一个可以运行的uvm测试平台。

  本节课的重要内容是事物级建模,建用户所需的transaction,以及创建用于产生事物的事物发生器sequence。

  在uvm验证平台中穿梭各个组件之间的基本信息单元是一个被称为transaction的数据对象,也就是我们前面所说的事物对象,就是transaction。

  验证工程师需要根据不同的项目对项目中的事务进行建模,事物对象的类需要从uvm sequence item这个基类进行扩展,为了事物在产生的时候可以自动的随机化,一般需要为它的类成员指定random属性。

  代码是如何实现的?

  首先,我们说事物类需要从uvm sequence item进行扩展,然后定义事物所具备的属性,那么这里使用一个简单的例子来说明。

  假定该事物有三个属性,sa代表的是原地址,da代表的是目标地址,vocalute则是传输的数据,不要忘了为他们指定random属性使它们在产生的时候可以随机化。

  接下来,使用了uvm提供的一些宏,那么这些宏的作用现在不必深入的了解,而只需要明白它是将当前所建立的事物类通知给uvm。告诉uvm,你需要为我做一些事情,那么具体的事情uvm会帮你完成。

  然后,为了保证事物在随机的时候不会没有限制,在这里为它添加约束,指定成员的随意条件以及随机范围,比如例子当中,限制sa的值只能在0-15之间随机,限制pillow的这个队列当中,最大的内容为四个,最小为两个。

  然后写构造函数,参数,name是实例化时为该对象指定的名字。

  当事物模型创建好了之后,需要为它创建对应的事物发生器,在uvm当中,这个事物发生器叫做sequence,在平台的运行过程当中,只有启动了某个sequence,才会产生相应的事物对象,创建对应的sequence需要注意sequence需要从uvm sequence扩展。sequence的作用是用来产生事物的,并且可以控制事物何时产生合何时结束。一般来说使用一种sequence来产生一种类型的事物,一种sequence产生多种事物这种情况比较复杂。Sequence中最重要的部分就是body任务,对事物的控制和事物的产生都是在这个任务中完成的,因此,写好body任务是关键。

  用张图来说明sequence与sequence item之间的关系,当一个sequence被启动之后,它会按照body函数当中的功能,依次产生多个相同类型的事物对象,可以将sequence看作是存储并且管理着一系列事物的仓库。

  下面我们来看一看代码是如何实现的:

  首先sequence需要从uvm sequence扩展,uvm sequence是一个带有参数的基类,该参数是指定sequence所产生的事物类型。

  这里,我们指定刚刚所创建的事物类my transaction,sequence在被启动之后所产生的事物对象的类型就是my transaction。与之前类似,这里使用uvm提供的宏,将该sequence注册到uvm当中,接着,完成该类的构造函数,然后就是sequence当中一个极为重要的任务body任务,这个任务需要验证工程师自己完成,里边所实现的功能,就是事物的产生以及对事物的控制,在智能代码中前后有两个if语句,这里先不用管,它的功能是控制验证平台何时结束。

  在来看看repeat语句当中的内容,repeat的语句中使用了uvm do这个uvm内建的宏,这个宏的作用是产生事物对象,并且是每调用一次产生一个事物对象,宏当中的参数iq是指向产生事物对象的指针,也就是说,我们可以通过iq来访问产生的事物对象,这个宏在这里被repeat了十次,所以说一共会产生十个事物。

  总的说,这个sequence的功能十分简单,当被启动之后产生十个事物对象,然后停止仿真。到这里我们就完成了事物建模以及产生事物的sequence。

  本章内容就介绍到这里!!!

  未完(待更).......





关键词: ic设计     微电子就业     集成电路     数字     验证     测试    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]