UVM 使用start_item和finish_item指定sequencer发送item,比uvm_do_on更灵活。
我们使用uvm_do_on(item,sqr)是可以指定那个sequencer发送此。而且uvm_do系列宏第一个参数即可以是sequence也可以是transaction,当是sequence时使用start任务来启动sequence,当是transaction时使用start_item和finish_item来发送transaction。
1.uvm_do局限性:uvm_do系列宏封装的太好但是灵活性更差。比如场景:
要发送的transaction很复杂(有很多signal),我们需要精细化制定其中每个signal的值,并且我们还需要指定那个sequencer来发送此transaction给driver,此时使用uvm_do_on_with(item,sqr,{})宏的话就会很麻烦,因为其对item会做随机化,然后我们只能在约束{}中指定每个signal的值。这样会写一系列的长串代码。那么可不可以定制好item0之后使用item.copy(item0)呢,但是copy也只能在mid_do函数做,因为uvm_do_on_with(item,sqr,{})是会去new一个新的item,如果你在uvm_do_on_with之前去做那么new item之后item的值有不是item0中的值了。所以我们只能在uvm_do_on_with的内部随机之后去执行copy,uvm提供的虚函数mid_do就是在随机之后finish_item之前执行的,所以我们可以重载mid_do,在mid_do中对item进行赋值。但是如果我在一个virtual sequence中需要将item构造好之后发送给不同sequencer呢,这样你重写的copy只能有一个,对于不同的sequencer可能需要构造的值又不一样。所以这样做会越来越麻烦。(如果不想对transaction某个)
2.start_item,finish_item灵活性
我们可以直接调用start_item和finish_item来构造transaction并发送。但是我看的书籍和资料上都只是使用start_item(item)。对于上面需要指定sequencer的场景好像并不适用。但是实际上start_item的uvm源码中是给了sequencer这个参数的,只是其默认值设置为null。
经过试验,start_item是可以直接给定要发送item的sequencer的。方法有两种。
1.使用时需要先new一个item,然后在使用语句start_item(item,-1,sqr)。
2.使用时先用宏`uvm_create_on(item,sqr),然后在使用start_item(item)。这种方式不需要new一个item,因为`uvm_create_on(item,sqr)会自动去new一个item并和sqr绑定。
代码如下(其中px_tr包含了px_tr_img和px_tr_gain相同的部分):
UVM 使用start_item和finish_item指定sequencer发送item,比uvm_do_on更灵活。相关推荐
- 用C#调用Windows API向指定窗口发送按键消息
为什么80%的码农都做不了架构师?>>> 用C#调用Windows API向指定窗口发送 一.调用Windows API. C#下调用Windows API方法如下: 1.引入 ...
- java监听某端口和ip_Java 通过Socket监听指定服务器(IP)的指定端口,及向指定服务器的指定端口发送信息...
客户端:向指定端口发送信息 package com.jszc.lottery.modules.longpay.util; import java.io.BufferedReader; import j ...
- 用C#调用Windows API向指定窗口发送按键消息(转载)
用C#调用Windows API向指定窗口发送按键消息 z 用C#调用Windows API向指定窗口发送 一.调用Windows API. C#下调用Windows API方法如下: 1.引入命名空 ...
- java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据
全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据 测试代码 public static void main(S ...
- 向指定的服务器端口发送信息,向指定服务器的指定端口发送UDP包
//功能:读取文件文件,向指定服务器的指定端口发送UDP包, //2015.9.26 OK #include #include #include #include #include #include ...
- 【UVM基础】TLM常用数据接发送与数据接收实例
文章目录 1.数据接发送(uvm_analysis_port) 2.数据接收(uvm_blocking_get_port) 3.连接发送和接收端口 在UVM中, 通常使用TLM( Transactio ...
- 微信公众号-根据openID给指定用户发送信息
微信公众号-给指定用户发送信息 文章目录 微信公众号-给指定用户发送信息 前言 一.开通模板消息 二.项目使用步骤 1.引入库 2.直接上代码 controller service 其他一些封装的类 ...
- JAVA读取指定城市的天气预报信息及给指定手机号码发送验证码
目录 一.读取指定城市的天气预报信息 1.概况 1.网址组成分析 2.URL类 3.编码表 4.API列表 2.代码 3.运行效果 二.给指定手机号码发送验证码 1.API列表 2.代码如下 3.实现 ...
- 利用API实现获取城市的天气预报信息和给指定手机号码发送验证码——基于Java
文章目录 一.认识网址 二.获取城市的天气预报信息 三.给指定手机号码发送验证码 四.实现自定义短信内容的短信验证码发送 五.小结 六.参考资料 一.认识网址 网址的组成:协议://域名:端口号/虚拟 ...
最新文章
- 一对多和多对一的关系,用mybatis写
- Java数据结构——有序链表
- 运维与自动化运维发展概括
- SpringBoot整合Mybatis完整详细版
- tensorflow 之 最近用到的几个小操作tf.reshape,tf.convert_to_tensor,tf.where
- SAP CRM interaction center呼叫中心的一些性能问题的分析
- 020.day20 线程概述 多线程优缺点 线程的创建 线程常用方法 生命周期 多线程同步...
- 计算机二进制基础列式,计算机基础;十进制数100对应的二进制数、八进制数和十六进制数分别是...
- Linux网络编程“惊群”问题总结
- linux 字符下 上网,Linux下实现字符串截取方法总结(示例代码)
- 【实用工具】之VMware workstation 14中安装CentOS 7
- 最优化理论与凸优化到底是干嘛的?
- windows下安装yarn
- 2022春季苹果发布会将会发布什么?
- 七夕送女友什么礼物有意义、送女朋友实用的七夕礼物清单
- 测测是否适合学计算机,大学专业测评:测试自己适合什么专业
- 梯度下降法,二维空间三维空间 代码实现
- 图像特征提取(纹理特征)
- python 简单TCP通信实例 TCP断线自动重连 客户端服务端没有启动顺序
- linux学生入门,Linux入门之《Linux从入门到精通》
热门文章
- HBase WAL 解析
- 弗罗贝尼乌斯范数 matlab,【Frobenius norm(弗罗贝尼乌斯-范数)(F-范数)】
- 单片机篮球计数器c语言代码,基于单片机的篮球计数器.doc
- el-table表头取消全选框
- vue父子组件传值props
- H5 将html页面内容生成图片并上传至七牛
- (step4.3.6)hdu 2660(Accepted Necklace)
- tensorflow——cifar10 样例解析
- vue3使用provide/inject实现全局变量功能,部分摆脱vuex
- UnityShader学习教程之<顶点膨胀效果 局部变胖实现思路>