0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UVM中的uvm_do宏简析

芯片验证工程师 来源:芯片验证工程师 2023-06-09 09:36 次阅读

uvm_do宏及其变体提供了创建随机化发送transaction items或者sequence的方法。

`uvm_do

`uvm_do宏将uvm_sequenceuvm_sequence_item类型的变量作为参数。使用factory创建一个对象并赋值给指定的变量。

当driver从sequencer中请求一个uvm_sequence_item时,该uvm_sequence_item被随机化并提供给driver。

ea2caf74-0615-11ee-962d-dac502259ad0.png

class simple_seq_do extends uvm_sequence #(simple_item); 
...//ConstructorandUVMautomationmacros


virtual task body(); 
  `uvm_do(req) 
endtask : body 
endclass : simple_seq_do

上面的例子中,simple_seq_do的body使用uvm_do宏,发送了一个类型为simple_item的数据项。

ea51874a-0615-11ee-962d-dac502259ad0.png

类似地,下面的例子声明了一个sequence(simple_seq_sub_seqs),使用`uvm_do来执行前面定义的simple_seq_do类型的sequence。

class simple_seq_sub_seqs extends uvm_sequence #(simple_item); 
... // Constructor and UVM automation macros 
simple_seq_do seq_do; 
virtual task body(); 
`uvm_do(seq_do) 
endtask : body 
endclass : simple_seq_sub_seqs

`uvm_do_with

`uvm_do_with宏与`uvm_do类似。

第一个参数是从uvm_sequence_item派生出来的变量,包括uvm_sequence_item或者uvm_sequence 。

第 二 个 参 数 可 以 是 任 何 有 效 的inline constraints


在下面的例子中,sequence产生两个数据项,对addr和data的值有特定的约束。

class simple_seq_do_with extends uvm_sequence #(simple_item);
...//ConstructorandUVMautomationmacros
virtual task body();
  `uvm_do_with(req, { req.addr == 16'h0120; req.data == 16'h0444; } )
  `uvm_do_with(req, { req.addr == 16'h0124; req.data == 16'h0666; } )
endtask : body
endclass : simple_seq_do_with

如果约束条件只是用来将发送数据设置为特定的值,可以用用户定义的任务来代替宏。

class simple_seq_do_with extends uvm_sequence #(simple_item);


 task do_rw(int addr, int data);
   item= simple_item::create("item",,get_full_name());
   item.addr.rand_mode(0);
   item.data.rand_mode(0);
   item.addr = addr;
   item.data = data;


   start_item(item);
   randomize(item);
   finish_item(item);
 endtask


virtual task body();
 repeat (num_trans)
   do_rw($urandom(),$urandom());
endtask
...
endclass : simple_seq_do_with





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    18965
  • sequence
    +关注

    关注

    0

    文章

    23

    浏览量

    2807

原文标题:UVM中的uvm_do宏

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    IC验证之UVM常用汇总分析(四)

    OVM过时的用法,使用纯净的UVM环境:`define UVM_NO_DEPRECATED除了上述通用的外,针对不同的仿真工具需要定义不同的
    发表于 12-02 15:24

    IC验证"一个简单的UVM验证平台"是如何搭建的(六)

    :这个driver的功能非常简单,只是向rxd上发送256个随机数据,并将rx_dv信号置为高电平。当数据发送完毕后,将rx_dv信号 置为低电平。上述代码还出现了uvm_info。这个
    发表于 12-04 15:48

    数字IC验证之“什么是UVM”“UVM的特点”“UVM提供哪些资源”(2)连载...

    uvm的事物级建模方便了工程师对事物进行建模,uvm的tlm通信机制方便实现各个组件之间的数据通信,使用uvm提供的可以方便的进行各种操作,比如实现factory机制,file的o
    发表于 01-21 16:00

    数字IC验证之“构成uvm测试平台的主要组件”(4)连载...

    测试案例完成的。因此在构建env的时候,需要事先定义好配置接口,是env具有可配置性。  uvm不仅为验证工程师提供了测试平台的结构,而且在uvm的资源库当中。对于平台中的每一个组件啊都有一个对应
    发表于 01-22 15:33

    数字IC验证之“搭建一个可以运行的uvm测试平台”(5)连载...

    事物的控制,在智能代码前后有两个if语句,这里先不用管,它的功能是控制验证平台何时结束。  在来看看repeat语句当中的内容,repeat的语句中使用了uvm do这个uvm内建的
    发表于 01-26 10:05

    什么是uvmuvm的特点有哪些呢

    直观的印象,就是uvm验证平台,它是分层的结构。图中的每一个巨型框都代表着平台的一个构成元素。这些元素呢,我们称为平台组建,下面来简单的分析一下。从最底层上来看,agent 包含了driver,monitor和sequencer,其中driver ,monitor
    发表于 02-14 06:46

    请问一下在UVM的UVMsequences是什么意思啊

    UVM方法学,UVMsequences 是寿命有限的对象。UVM sequences从uvm_sequence_item基类扩展得到,uvm
    发表于 04-11 16:43

    谈谈UVMuvm_info打印

      uvm_info的定义如下:  `define uvm_info(ID,MSG,VERBOSITY) \  begin \  if (uvm_report_enabled(VER
    发表于 03-17 16:41

    UVMseq.start()和default_sequence执行顺序

      1. 问题  假如用以下两种方式启动sequence,方法1用sequence的start()方法启动seq1,方法2用UVM的default_sequence机制启动seq2。那么seq1
    发表于 04-04 17:15

    我的第一个UVM代码——Hello world

    Ctrl-V!) 几点说明: 为了使用UVM库里的函数和定义,需要先import uvm_pkg和include uvm_macros。 在testbench的顶层(module
    发表于 11-03 10:18

    UVM学习笔记(一)

    driver应该派生自uvm_driver,而uvm_driver派生自uvm_component。
    的头像 发表于 05-26 14:38 885次阅读
    <b class='flag-5'>UVM</b>学习笔记(一)

    UVM里的6个常见参数介绍分析

    UVM预先定义了六个详细程度; UVM_NONE到UVM_DEBUG。这些级别只不过是整数枚举值
    的头像 发表于 06-06 12:33 2827次阅读
    <b class='flag-5'>UVM</b>里的6个常见参数介绍分析

    UVMuvm_config_db机制背后的大功臣

    本次讲一下UVM中的uvm_config_db,在UVM中提供了一个内部数据库,可以在其中存储给定名称下的值,之后可以由其它TB组件去检索。
    的头像 发表于 06-20 17:28 798次阅读

    UVMuvm_config_db机制背后的大功臣

    本次讲一下UVM中的uvm_config_db,在UVM中提供了一个内部数据库,可以在其中存储给定名称下的值,之后可以由其它TB组件去检索。
    的头像 发表于 06-29 16:57 616次阅读

    一文详解UVM设计模式

    本篇是对UVM设计模式 ( 二 ) 参数化类、静态变量/方法/类、单例模式、UVM_ROOT、工厂模式、UVM_FACTORY[1]中单例模式的补充,分析静态类的使用,UVM中资源池的
    的头像 发表于 08-06 10:38 903次阅读
    一文详解<b class='flag-5'>UVM</b>设计模式