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

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

3天内不再提示

在UVM环境中如何控制打印数组或队列元素的数据量

sanyue7758 来源:芯片验证日记 2023-12-20 10:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.问题的引入

在UVM验证环境的项目中,经常需要使用内置的print()函数或sprint()函数打印

uvm_sequence_item类或者uvm_transaction类,这些transaction或sequence_item的class中通常会包含多个列表()数组(array)和/或队列(queue),这些数组和队列通常又包含很多个元素变量。默认情况下,系统只会打印数组和队列开始的5个元素和最后的5个元素,原因如下图所示(begin_elements= 5; end_elements = 5)。

0c2d5256-9eda-11ee-8b88-92fbcf53809c.png

如果我们想要打印数组和队列的所有元素内容或者如何灵活控制,有什么办法吗?答案是肯定的,请看后面的内容。

2.默认打印的数量和样式

默认情况下,系统只会打印数组和队列开始的5个元素和最后的5个元素,如下图所示:

0c37f30a-9eda-11ee-8b88-92fbcf53809c.png

3.打印所有数量和格式

3.1具体实现的方法

在test的build_phase中,添加如下code:

uvm_default_printer.knobs.begin_elements = -1;//print all elements of arrays and queues
如下图所示:

0c521fbe-9eda-11ee-8b88-92fbcf53809c.png

3.2打印的数量和样式

0c67d854-9eda-11ee-8b88-92fbcf53809c.png

4.如何灵活控制打印的数量和格式

下文的例子是,打印数组和队列开始的2个元素和最后的3个元素。

4.1 具体实现的方法

在test的build_phase中,添加如下code:

uvm_default_printer.knobs.begin_elements = 2;
uvm_default_printer.knobs.end_elements=3;
如下图所示:

0c6c5352-9eda-11ee-8b88-92fbcf53809c.png

4.2 打印的数量和样式

0c74fb06-9eda-11ee-8b88-92fbcf53809c.png

5.uvm_default_printer

0c8b85ce-9eda-11ee-8b88-92fbcf53809c.png

0c91b7d2-9eda-11ee-8b88-92fbcf53809c.png

6.uvm_table_printer

0c99ac58-9eda-11ee-8b88-92fbcf53809c.png

7.uvm_printer

0ca3fd3e-9eda-11ee-8b88-92fbcf53809c.png

0cbd5c8e-9eda-11ee-8b88-92fbcf53809c.png

审核编辑:汤梓红

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

    关注

    3

    文章

    4406

    浏览量

    66837
  • UVM
    UVM
    +关注

    关注

    0

    文章

    183

    浏览量

    19942
  • 队列
    +关注

    关注

    1

    文章

    46

    浏览量

    11193
  • 数组
    +关注

    关注

    1

    文章

    420

    浏览量

    27114

原文标题:在UVM环境中,如何灵活地控制打印数组或队列元素的数据量

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ESP8266_RTOS3.0串口0传输大量数据丢包的原因?

    多个分段进入处理函数,后来使用example示例的uart_echo,发现接收可以完整接收,但是当把数据原样从串口0的tx输出时,数据中间出现多次中断丢包。 我发现用系统自带的打印
    发表于 07-09 06:32

    删除替换数组元素

    本帖最后由 samuergao 于 2014-11-21 14:01 编辑 曾经遇到想删除数组某个元素的问题,比如要删除或者替换一个数组中所有为10的
    发表于 07-01 16:24

    相同数组元素个数统计

    效率较低,当数据量非常大时,耗时较多。 2、利用一维数组排序函数,把相同的数组元素分组,然后再比较相邻元素是否相同。 3、连接一维
    发表于 04-08 12:58

    队列元素丢失问题

    求教:以字符串数组形式循环向队列插入元素队列输出时,元素丢失边少了,如向队列输入1、2、3、4
    发表于 05-22 20:32

    STM32如何通过UART使用printf打印数据

    STM32如何通过UART使用printf打印数据
    发表于 12-01 06:57

    为什么sprintf打印数据只能兼容8位的数据

    这个是因为sprintf打印数据只能兼容8位的数据 只能使用u8 uint8来写不能用来兼容其他数据所以将uint16_t ADC_Char[20]={0};改成u8 ADC_Ch
    发表于 12-15 08:27

    使用STM32H743单片机如何判断何时可以向打印机发送打印数据

    /* 如果数据量较大,可以定期调用get_port_status()检查打印机状态 */s=get_port_status();if(???)delay_ms(100);我使用STM32H743
    发表于 07-08 08:00

    LabVIEW队列使用详解

    为True时元素输出为队列元素组成的数组。返回元素为False时只输出信息,不获取
    发表于 09-05 00:07

    谈谈UVMuvm_info打印

    uvm_info的三个参数。  ID是作为message的标记(tag)。  MSG就是真正要打印的message文本。  VERBOSITY用于传递uvm\_verbosity枚举类型的数字。当
    发表于 03-17 16:41

    UART打印数据很慢是为什么?

    我把波特率设置为4800,然后把一个外设和我们的UART连接起来。外设向UART发送握手包,频率为10HZ,数据长度为10个字节。但是我发现一个混乱的现象是数据没有打印出来on time,40秒后
    发表于 04-17 06:11

    TencentOS-tiny中环形队列的实现

    ; 队尾指针(可变):永远指向此队列的最后一个数据元素队列数据存储方式有两种: ① 基于
    的头像 发表于 10-08 16:30 1820次阅读

    SystemVerilog队列

    队列是大小可变的有序集合,队列元素必须是同一个类型的。队列支持对其所有元素的访问以及
    的头像 发表于 10-31 10:09 5394次阅读

    如何用Verdi查看UVM环境的变量?

    我们常用的debug UVM的方法是通过打印log实现。有没有办法像 debug RTL代码一样将 UVM 变量拉到波形上看呢?答案是有的,下面让我们看看是怎么做到的。
    的头像 发表于 06-25 16:01 2847次阅读
    如何用Verdi查看<b class='flag-5'>UVM</b><b class='flag-5'>环境</b><b class='flag-5'>中</b>的变量?

    c语言在数组查找指定元素

    C语言是一种通用的编程语言,广泛应用于各种领域,包括嵌入式系统、操作系统、游戏开发等。C语言中,数组是一种非常重要的数据结构,用于存储一系列相同类型的元素。查找指定
    的头像 发表于 11-24 10:07 5574次阅读

    labview怎么查数组相同元素的个数

    要查找LabVIEW数组相同元素的个数,可以使用以下步骤: 创建一个包含要查找的数值的数组。这可以通过手动输入
    的头像 发表于 12-28 16:42 5959次阅读