第二段:sequence/sequencer的调用

16 篇文章 43 订阅
订阅专栏

   

简绍:

        transaction/sequence_item/sequence/sequencer 这几个东西对刚接触的人来说比较绕,刚开始看这个部分的时候我头都是大的,满屏幕的sequence sequencer 还有base,傻傻分不清楚,后来想了想,只要把sequence_base跟sequence理解成一个整体,把sequencer_base和sequencer理解成一个整体就好了。

        虽然这几个东西名字很像,但他们背后其实是有两套逻辑。

        对于sequence,它的本质是一个从object拓展出来的transaction,sequence是sequence_item的子类,也就是一个普通payload的加强版。

                preview

        对于sequencer,它的本质是一个从object扩展出来的component,它本身跟sequence_item没什么关系,要类比起来,它跟driver这种component更像,它跟driver可以理解成是同事。

                      

        打个比方,sequence_item是一个子弹,sequence是弹夹,它的作用是装子弹,而sequencer是一把枪,它的作用是把子弹射出去,driver也是一把枪。

        接下来就到了第二步,展开来看,sequence这个弹夹是怎么装子弹的。

        我们建立一个sequence类后,最主要要做的事情是建立一个函数来装子弹,如下所示:               

task body();
jelly_bean_transaction jb_tx;//这是个sequence_item
jb_tx = jelly_bean_transaction::type_id::create(.name("jb_tx"), .contxt(get_full_name()));
start_item(jb_tx);
assert(jb_tx.randomize());
finish_item(jb_tx);

        这篇总结的目的只有一个,理解从start_item到finish_item背后的逻辑。

        1)基础用法: 在sequence中合成激励数据,然后通过start函数启动body函数,我们在body函数中通过uvm_do(或者start_item,finish_item或者send)将激励发送出去,之后就通过fifo在drive拿到数据,然后波形化。

        2)项目升级用法:

        在tc中的csim通过start启动tb_mac的sequence的body(sequence的嵌套),

        然后设置发送激励参数,再次调用start进入主sequence的body函数,通过pack组装报文,send发出,进入driver中。

        3)底层原理分析:

       

调用start后,就会进入下图内容。

        在uvm第二章给我们介绍了最简单的uvm_do相应的宏,方便我们发送激励,在官方源码中,详细解释了这个宏主要下图几件事:

       

        从描述可以看到,start_item到finish_item的过程调用了两个东西,一个是sequencer,一个是parent_seq,parent_seq是眼下这个sequence的父类sequence,那说到底还是个sequence,也就是说儿子把父亲做的事情先做一遍,那不重要,我们不用管它。就看sequencer的调用好了,一看发现这就是一个wait-send-再wait的通信过程。Wait中定义了很多指针和队列,用来存储start函数放入的数据。

       

        我们在通过sequence_item来构造子弹的时候,系统帮我们实现声明了一把可以用的枪,这个枪就是sequencer_base,如果我们只是构造这个子弹,那么这个子弹和枪之间没有关系,但当我们通过sequence(弹夹)调用start_item的时候,系统就会为我们把子弹和枪联系起来。建立了这种联系后,我们后面才能调用枪(sequencer)的那三个通信函数。

        最后总结整个流程:

               a. 我们在声明sequence_item这个子弹和sequence这个弹夹的时候,系统都给我们预留了一把枪的位置。

                b. 当我们实现sequence(弹夹)的时候,具体而言是在sequence类中的start_item函数内,系统帮我们把子弹,弹夹和枪联系了起来。

                c. 在sequence类的ramdomize函数中实例化出具体的子弹。

               d. 在sequence类的finish_item函数中把实例化的子弹发送出去。

               

        Response的使用:sequence机制提供了一个机制,根据driver对tansaction的反应决定时候就接下来发送transaction(反馈机制),具有阻塞的功能,同时在pre_body函数中使用use_repinse_handler中重载,$cast(rsp,response),防止环境卡死。

【UVM基础】sequencesequencer 理解
悟已往之不谏 知来者之可追
02-16 2404
sequencesequencer 的理解~
sequencer和sequence
qq_44455456的博客
12-05 1478
sequencer、sequence
sequence机制
SsyPuKoo的博客
04-20 1418
New 与 ::Type_id::create的区别(详见工厂机制) UVM推荐使用内置方法 :: type_id :: create() ,而不是直接调用构造函数new()创建组件或事务对象。create方法在内部调用factory机制以查找所请求创建的类型,然后调用构造函数new()以实际创建一个对象而无需更改任何代码。 sequence_item,sequencesequencer,driver之间的关系 sequence_item(封装):只对数据进行封装,不...
【IC验证】怎么在sequence调用agent中的函数以及如何快速实验你的想法?
weixin_48573306的博客
11-21 1046
最近略忙,今天就给大家表演个胸口碎……码一段代码。 通过本篇文章主要想送给广大验证初学者和爱好者2件礼物:“一条鱼”和“一只鱼竿”。希望大家连吃带拿,开开心心地。 “一条鱼”就是题目中的那个问题本身:“UVM中怎么在sequence调用agent中的函数”。这个问题很多同学猛的听到可能还是会有一些懵,反应不出一个优雅的解决方法。 “一只鱼竿”就是当你遇到这样一个问题的时候,怎么快速写一段代码验证你的想法是不是可以实现,也就是Jerry今天带你解决这个问题的过程。 好了,我们开车~ 众所周知,在UVM中
【UVM基础】6、sequencesequencer相关宏
托马斯的博客
08-03 1524
sequencesequencer相关宏
sequence 和索引函数调用
cuangaoma6999的博客
12-10 137
-------------------------------------------重新编译索引alter index index_name rebuild;drop sequence sys_tempidcreate se...
(18)UVM sequencer和sequence
数字IC小白的日常修炼
11-18 909
UVM sequencer和sequence 文章目录UVM sequencer和sequence一、概述二、sequence和item发送实例 一、概述 了解了sequencer与driver之间传递sequence item的握手过程,同时也掌握了sequence与item之间的关系。 接下来需要就sequence挂载到sequencer的常用方法做出总结,大家可以通过对这些常用方法和宏的介绍,了解到它们不同的使用场景。 面对多个sequence如果需要同时挂载到sequencer时,那就面临着仲裁的
UVM——sequence机制(六)
思想开化的冰块博客
12-15 3741
sequence机制(下)一、sequence的启动方式细节二、常见sequence/item发送的方法和宏三、sequence的仲裁机制四、sequencesequencer的占用或失效六、Sequence的层次化virtual_sequencevirtual sequencer sequence机制(五)已经了解到sequencer与driver之间的传递sequence item的握手过程,同时也掌握了sequence与item之间的关系。接下来,我们需要就sequence挂载到sequencer上
UVM中的sequence
weixin_44915807的博客
10-14 3005
sequence基础 1. 如果将激励放在driver的main_phase中,是可行的,但是如果要对激励作修改,那么扩展性较差,所以我们将激励改为放在sequence中去写。 driver就负责驱动激励就好了,而具体是什么样的激励,应该由sequence去完成。 2. 当定义完一个sequence后,可以使用start任务将其启动。 my_sequence my_seq; my_seq = my_sequence::type_id::create("my_seq"); my_seq.start(seque
UVM——sequence机制(五)
思想开化的冰块博客
12-15 4330
sequence机制【上】一、sequence的执行流程二、sequence和item三、Sequence 和 Driver3.1.Driver有哪些操作3.2.Sequence有哪些操作3.3.使用get()和put()完成通信3.4.response机制:Driver->Sequence的反馈 一、sequence的执行流程 控制和产生一系列的激励,并通过sequencer将激励发送给driver的机制。如果按照交通道路的车流来打比方,sequence就是道路,sequence item是道路上行
sequence机制(数据激励的产生、配置方式)——UVM
weixin_42705678的博客
12-30 3253
一、关于sequence机制 1.1 为什么使用sequence机制 sequence机制的目的是为了将激励的产生功能从driver中剥离出来。这样在不同的测试用例中,就可以将不同的sequence设置成sequencer的main_phase的default_sequence,当sequencer执行到main_phase时,发现有default_sequence,那么它就启动sequence。这样就可以在不改变driver的情况下完成不同的激励驱动。 1.2 如何理解sequence uvm_seq
UVM
weixin_44766553的博客
02-23 783
UVM-sequencesequencer的使用 转载自https://blog.csdn.net/wonder_coole/article/details/90665876
(六)UVM的sequencesequencer及启动
一个粉尘的成长博客
02-16 1539
uvm学习
【UVM基础】5、sequencesequencer、item、driver
托马斯的博客
08-02 1682
sequencesequencer、item、driver
UVM学习笔记之sequence
qq_14847459的博客
12-04 310
1. 为什么使用sequence 2. 启动sequence 3. sequence的仲裁
关于UVM中的sequence(五)
weixin_45857247的博客
12-25 796
8、sequence的进阶应用 嵌套的sequence 假设一个产生CRC错误包的sequence如下: 另外一个产生长包的sequence如下: 现在要写一个新的sequence,它可以交替产生上面的两种包。那么在新的sequence里面可以这样写: 似乎这样写起来显得特别麻烦。产生的两种不同的包中,第一个约束条件有两个,第二个约束条件有三个。但是假如约束条 件有十个呢?如果整个验证平台中有30个测试用例都用到这样的两种包,那就要在这30个测试用例的sequence中加入这些代码,这
UVM基础-SequenceSequencer(二)
qq_57502075的博客
11-12 1841
在上篇博客中,讲了sequencer和driver之间传递sequence item的握手过程,也讲了sequence和item之间的关系,下面我们来讲讲sequencesequencer之间的关系,以及当多个sequence挂载到sequencer时冲裁这么处理。
UVM基础-SequenceSequencer(一)
qq_57502075的博客
11-09 2557
对于IC验证的新晋工程师进入到一个公司,大概率不会让你上来就写验证环境,以及验证环境的修改。但是会让你一上来就写一些sequence,以及一些test。因此,sequence这一部分是很重要的。
sequence的启动方式和sequence内部函数的调用
zyj0oo0的博客
09-27 3837
1,default_sequence 的方式启动 2,通过start函数直接启动
Exception in thread "main" java.lang.NoClassDefFoundError: de/regnis/q/sequence/line/QSequenceLineRAData
最新发布
04-30
具体来说,"Exception in thread "main" java.lang.NoClassDefFoundError: de/regnis/q/sequence/line/QSequenceLineRAData"错误表示在程序的主线程中发生了一个找不到名为"de/regnis/q/sequence/line/...
写文章

分类专栏

  • 工具教程 7篇
  • AI智能 8篇
  • 海狗文学 10篇
  • 算法使用 20篇
  • FPGA 3篇
  • UVM理论 16篇
  • 流量管理 3篇
  • 雷达原理 6篇

最新评论

  • 均值算法详细教程(个人总结版)

    专注定位: wi​ 是权重那么,Wi的和是1么?

  • 预编码算法(个人总结)

    普通网友: 大佬的文章写的太精辟了 让我深刻了解了这篇文章的精髓 谢谢大佬分享,希望继续创作优质博文。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • 深入解读 ChatGPT 的基本原理(个人总结版)

    m0_53108158: 答主答主,结尾少字啦~

  • 排序算法教程(个人总结版)

    普通网友: 干货满满,实用性强,博主的写作风格简洁明了,让人一目了然。文章涵盖了很多实用的知识点。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • 最小二乘法算法(个人总结版)

    猫头虎: 🌈🐅🔖👽 作为初学者,我真心推荐这篇博客,每个部分都值得细读。猫头虎等待新文章!💻

大家在看

  • 闲鱼API接口有哪些常用的API呢?
  • 【代码】约瑟夫问题——c++解决代码
  • Java项目中引入达梦数据库依赖驱动并且操作链接数据库
  • WebGl 实现图片平移、缩放和旋转 45
  • 【开源免费】基于SpringBoot+Vue.JS母婴商城系统 (JAVA毕业设计)

最新文章

  • 系统项目管理师----高级----前情调研
  • git 个人常见错误备注
  • 退出感言:再见CSDN,迎接新的起点
2024
08月 1篇
06月 7篇
05月 35篇
2022年3篇
2021年13篇
2020年15篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃辣椒的年糕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家松原人物玻璃钢雕塑价格商丘玻璃钢卡通雕塑价格黑龙江步行街玻璃钢雕塑制作东莞玻璃钢蜗牛雕塑电话惠州番禺玻璃钢人物雕塑郑州玻璃钢雕塑施工柳州玻璃钢雕塑价格延安公园玻璃钢雕塑玻璃钢西瓜雕塑哪里好青海仿真人物玻璃钢雕塑定做信阳景观玻璃钢仿铜雕塑欧式玻璃钢卡通雕塑销售厂家阳泉玻璃钢花盆南京佛像玻璃钢雕塑高档的玻璃钢雕塑斑马郑州欧式玻璃钢雕塑张家口玻璃钢仿铜雕塑价格芜湖玻璃钢雕塑定制异形玻璃钢雕塑定制长岭玻璃钢雕塑厂家昭通玻璃钢仿真雕塑汕尾杭州户外玻璃钢花盆多少钱周口校园玻璃钢景观雕塑定做价格广场标识玻璃钢仿铜雕塑报价玻璃钢雕塑工程销售企业潍城玻璃钢造型雕塑品牌景观玻璃钢雕塑商场秋冬美陈四川节庆商场美陈销售企业天水玻璃钢动物雕塑厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化