前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我眼中的UVM |06.如果我要写一个sequence

我眼中的UVM |06.如果我要写一个sequence

作者头像
用户10108023
发布2022-10-28 16:34:25
3880
发布2022-10-28 16:34:25
举报

06

我眼中的UVM

写在前面的话

嗨,屏幕前的你还好吗?我是不二鱼,一个不喜欢写技术博客的IC验证工程师,写这个系列,是需要很大的勇气的,因为,写得人很多,但写得好的不多,我也是如此。我一个菜鸡,敢写UVM(应该也不止UVM,我尽量把其他知识杂糅进去),我是疯了吗?至今能有比张强老师写得好的估计也没有,我之所以写,是为了促进自己进步,换了一个新的环境,使用UVM也是日常必备,所以,以写促学,写一写我眼中的UVM,我希望将自己在工作当中遇到的困惑和思考,和大家分享。也希望能和大家一起学习,相互成就,如有错误,欢迎私信我批评指正

在一个成熟的公司,大多数新项目都是继承于老项目,不管是验证环境,还是验证的case,都不是从0到1,从无到有,继承,修改,基本就是我的日常。

虽然都是继承,修改,我也在思考,如果让我从零开始写一个sequence,我该从哪里开始,它有什么组成部分,它必须包含什么,于是,有了这篇文章,希望对你有一点启发。

  1. 确定类名,继承于哪里,如
代码语言:javascript
复制
class fish_base_seq extends uvm_sequence

在实际的工作当中,seq基本都是hierarchical/layer sequence,多层嵌套,俄罗斯套娃在实际工作当中,屡见不鲜。所有的sequence都基于base_seq,base_seq一般都直接继承于uvm_sequence,在进行具体的seq构造时,都继承于base_seq。

如我们为了验证某个feature,新加了一个用于测试的、符合你要求的seq,只要的base_seq写得足够完善,那么你新加的seq,其实只是将base_seq里头的一些使能打开。在build_phase中使用set_type_override_by_type进行覆写。

代码语言:javascript
复制
virtual function void build_phase(uvm_phase phase)
super.build_phase(phase)
set_type_override_by_type(fish_base_seq::get_type(),fish_cold_reset_seq::get_type());
endfunction

base_seq的书写,我个人觉得对于一个项目而言,真的是太重要,对于个人能力也是一个很大的考验,也是最难的一个sequence,它必须基于你对协议的充分理解,它包括了所有你之后将要用到的特性,基本功能,而后续,你只需要用其中的一些功能,去构造你的验证seq。

2. 信号名,constraint

在这个部分,需要把所有你会用到的信号都列出来,进行限制,以便于后期进行随机化。

3. 工厂注册

代码语言:javascript
复制
uvm_object_utils_begin(fish_base_seq)
uvm_object_ulits_end

4. 声明p_sequencer

代码语言:javascript
复制
`uvm_object_utils_p_sequencer(fish_virtual_sequencer)

5. new

代码语言:javascript
复制
function new(string name="");
  super.new(name);
endfuntion:new

6. task

在base_seq中,会有很多很多你基于协议的理解,预先定义好的task,而base_seq的主要构成,就是这些task,在构造各种子类的时候,将会用到这些task,写好base_seq是最重要的,而task是base_seq的灵魂。

好了,今天的分享就到这里了,希望对你的学习有一点帮助。持续更新,欢迎关注。觉得有帮助的朋友,希望能够点个赞鼓励一下!!你的每个鼓励都是我持续创作的动力!

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

本文分享自 不二鱼 微信公众号,前往查看

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

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

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