我们使用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更灵活。相关推荐

  1. 用C#调用Windows API向指定窗口发送按键消息

    为什么80%的码农都做不了架构师?>>>    用C#调用Windows API向指定窗口发送 一.调用Windows API. C#下调用Windows API方法如下: 1.引入 ...

  2. java监听某端口和ip_Java 通过Socket监听指定服务器(IP)的指定端口,及向指定服务器的指定端口发送信息...

    客户端:向指定端口发送信息 package com.jszc.lottery.modules.longpay.util; import java.io.BufferedReader; import j ...

  3. 用C#调用Windows API向指定窗口发送按键消息(转载)

    用C#调用Windows API向指定窗口发送按键消息 z 用C#调用Windows API向指定窗口发送 一.调用Windows API. C#下调用Windows API方法如下: 1.引入命名空 ...

  4. java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据 测试代码 public static void main(S ...

  5. 向指定的服务器端口发送信息,向指定服务器的指定端口发送UDP包

    //功能:读取文件文件,向指定服务器的指定端口发送UDP包, //2015.9.26 OK #include #include #include #include #include #include ...

  6. 【UVM基础】TLM常用数据接发送与数据接收实例

    文章目录 1.数据接发送(uvm_analysis_port) 2.数据接收(uvm_blocking_get_port) 3.连接发送和接收端口 在UVM中, 通常使用TLM( Transactio ...

  7. 微信公众号-根据openID给指定用户发送信息

    微信公众号-给指定用户发送信息 文章目录 微信公众号-给指定用户发送信息 前言 一.开通模板消息 二.项目使用步骤 1.引入库 2.直接上代码 controller service 其他一些封装的类 ...

  8. JAVA读取指定城市的天气预报信息及给指定手机号码发送验证码

    目录 一.读取指定城市的天气预报信息 1.概况 1.网址组成分析 2.URL类 3.编码表 4.API列表 2.代码 3.运行效果 二.给指定手机号码发送验证码 1.API列表 2.代码如下 3.实现 ...

  9. 利用API实现获取城市的天气预报信息和给指定手机号码发送验证码——基于Java

    文章目录 一.认识网址 二.获取城市的天气预报信息 三.给指定手机号码发送验证码 四.实现自定义短信内容的短信验证码发送 五.小结 六.参考资料 一.认识网址 网址的组成:协议://域名:端口号/虚拟 ...

最新文章

  1. 一对多和多对一的关系,用mybatis写
  2. Java数据结构——有序链表
  3. 运维与自动化运维发展概括
  4. SpringBoot整合Mybatis完整详细版
  5. tensorflow 之 最近用到的几个小操作tf.reshape,tf.convert_to_tensor,tf.where
  6. SAP CRM interaction center呼叫中心的一些性能问题的分析
  7. 020.day20 线程概述 多线程优缺点 线程的创建 线程常用方法 生命周期 多线程同步...
  8. 计算机二进制基础列式,计算机基础;十进制数100对应的二进制数、八进制数和十六进制数分别是...
  9. Linux网络编程“惊群”问题总结
  10. linux 字符下 上网,Linux下实现字符串截取方法总结(示例代码)
  11. 【实用工具】之VMware workstation 14中安装CentOS 7
  12. 最优化理论与凸优化到底是干嘛的?
  13. windows下安装yarn
  14. 2022春季苹果发布会将会发布什么?
  15. 七夕送女友什么礼物有意义、送女朋友实用的七夕礼物清单
  16. 测测是否适合学计算机,大学专业测评:测试自己适合什么专业
  17. 梯度下降法,二维空间三维空间 代码实现
  18. 图像特征提取(纹理特征)
  19. python 简单TCP通信实例 TCP断线自动重连 客户端服务端没有启动顺序
  20. linux学生入门,Linux入门之《Linux从入门到精通》

热门文章

  1. HBase WAL 解析
  2. 弗罗贝尼乌斯范数 matlab,【Frobenius norm(弗罗贝尼乌斯-范数)(F-范数)】
  3. 单片机篮球计数器c语言代码,基于单片机的篮球计数器.doc
  4. el-table表头取消全选框
  5. vue父子组件传值props
  6. H5 将html页面内容生成图片并上传至七牛
  7. (step4.3.6)hdu 2660(Accepted Necklace)
  8. tensorflow——cifar10 样例解析
  9. vue3使用provide/inject实现全局变量功能,部分摆脱vuex
  10. UnityShader学习教程之<顶点膨胀效果 局部变胖实现思路>