前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UVM(八)之transaction及field_automation

UVM(八)之transaction及field_automation

作者头像
瓜大三哥
发布2018-02-26 14:51:29
2K0
发布2018-02-26 14:51:29
举报
文章被收录于专栏:瓜大三哥瓜大三哥瓜大三哥

UVM(八)之transaction及field_automation

uvm_sequence_item派生自uvm_transaction,而uvm_transaction派生自uvm_objection。TLM是Transaction Level Modeling的缩写,所谓的transaction level是相对DUT中各个module之间pin级别的通信来说的。通俗点说,DUT中各个module之间通信是以bit为单位的,而transaction level则是以包为单位的。

每个transaction包含了我们关心的一些数据。如对于一个my_transaction,里面包含了一个mac帧,这个帧里面包含premble,sfd,目的地址,源地址,帧类型,帧的数据内容及fcs校验和等。sequence产生出transaction,通过sequencer把此transaction转交给driver,driver根据此transaction的形式之后传递给reference model或者scoreboard,由他们进行相应的处理。transaction就是这样在真个验证平台中流动的信息单元。

field_automation机制

通常会有如下定义的transaction:

这里需要注意的是每个成员变量前都有rand修饰符。transaction是流动在验证平台中的信息单元,reference model的行为与其接收到的信息单元是有直接关系的,相对应的就是DUT接收到了不同的激励。因此能够随机产生信息单元可以最大程度上验证DUT的功能。在定义transaction时,在成员变量前加上rand修饰符,这样在调用此类的randomize函数时,行营的字段就可以随机的取得一个值。

对于这样的一个transaction,经常会用到打印,这就需要自己写print函数:

如在scoreboard中要比较reference model和monitor收集过来的两个transaction是否一致,这个就需要自己写compare函数:

可以看出,这样写起来将会相当费时间的,而且对于这些常用给的操作,如果transaction的定义换一下,那么这些所有的函数或者任务就需要重新写,这种代价是相当大的,自己考虑一下,这些事情的通性就是简单,重复,那么有没有什么办法简化一下呢?那么这就是field_automation机制。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜大三哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档