完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我是一哥,上章介绍了构成uvm测试平台的主要组件?最后,我们将一个典型的uvm平台进行最简化,从本章我们开始搭建一个可以运行的uvm测试平台。
本节课的重要内容是事物级建模,建用户所需的transaction,以及创建用于产生事物的事物发生器sequence。 在uvm验证平台中穿梭各个组件之间的基本信息单元是一个被称为transaction的数据对象,也就是我们前面所说的事物对象,就是transaction。 验证工程师需要根据不同的项目对项目中的事务进行建模,事物对象的类需要从uvm sequence item这个基类进行扩展,为了事物在产生的时候可以自动的随机化,一般需要为它的类成员指定random属性。 代码是如何实现的? 首先,我们说事物类需要从uvm sequence item进行扩展,然后定义事物所具备的属性,那么这里使用一个简单的例子来说明。 接下来,使用了uvm提供的一些宏,那么这些宏的作用现在不必深入的了解,而只需要明白它是将当前所建立的事物类通知给uvm。告诉uvm,你需要为我做一些事情,那么具体的事情uvm会帮你完成。 然后,为了保证事物在随机的时候不会没有限制,在这里为它添加约束,指定成员的随意条件以及随机范围,比如例子当中,限制sa的值只能在0-15之间随机,限制pillow的这个队列当中,最大的内容为四个,最小为两个。 然后写构造函数,参数,name是实例化时为该对象指定的名字。 当事物模型创建好了之后,需要为它创建对应的事物发生器,在uvm当中,这个事物发生器叫做sequence,在平台的运行过程当中,只有启动了某个sequence,才会产生相应的事物对象,创建对应的sequence需要注意sequence需要从uvm sequence扩展。sequence的作用是用来产生事物的,并且可以控制事物何时产生合何时结束。一般来说使用一种sequence来产生一种类型的事物,一种sequence产生多种事物这种情况比较复杂。Sequence中最重要的部分就是body任务,对事物的控制和事物的产生都是在这个任务中完成的,因此,写好body任务是关键。 下面我们来看一看代码是如何实现的: 首先sequence需要从uvm sequence扩展,uvm sequence是一个带有参数的基类,该参数是指定sequence所产生的事物类型。 在来看看repeat语句当中的内容,repeat的语句中使用了uvm do这个uvm内建的宏,这个宏的作用是产生事物对象,并且是每调用一次产生一个事物对象,宏当中的参数iq是指向产生事物对象的指针,也就是说,我们可以通过iq来访问产生的事物对象,这个宏在这里被repeat了十次,所以说一共会产生十个事物。 总的说,这个sequence的功能十分简单,当被启动之后产生十个事物对象,然后停止仿真。到这里我们就完成了事物建模以及产生事物的sequence。 本章内容就介绍到这里!!! 未完(待更)....... |
|
相关推荐
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
双目视觉处理系统开发实例-基于米尔安路国产DR1M90开发板
704 浏览 0 评论
1507 浏览 0 评论
基本FPGA或者树莓派或者其它微处理器(尽量压缩成本且完成项目)DFB激光器稳频
2048 浏览 1 评论
3152 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1314 浏览 0 评论
2457 浏览 58 评论
6265 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-23 21:41 , Processed in 0.302213 second(s), Total 33, Slave 27 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191