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

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

3天内不再提示

自定义交易打印机助于提高调试效率增强生产力

星星科技指导员 来源:嵌入式计算设计 作者: Uzma Haque 2022-06-02 15:36 次阅读

众所周知的事实是,验证消耗了大约 70% 的产品周期时间,根据 2018 年进行的一项调查,验证工程师花费大约 44% 的时间进行调试。 SoC 复杂性的增加导致验证环境中使用的组件数量增加,这导致日志文件庞大,因为从这些组件中打印了一些信息。改进这些日志变得势在必行,因为它们是最常用的调试手段之一。这就需要开发一种定制打印机,它可以有效地打印有用的信息以进行调试。自定义事务打印机,称为 xaction_custom_printer,是一种自定义打印机,有助于提高调试效率,减少日志大小,提高可读性,从而提高整体生产力。

随着片上系统(SoC)设计面积和复杂性的增加,验证的责任和工作量巨大,成为整个SoC设计流程的瓶颈。因为验证就是检查设计的正确性,所以任何验证环境中最关键的部分之一就是预期输出计算。此类 SoC 的每个模块之上都有许多验证组件,每个设计验证组件通常由一个监视器组成。这些预期和实际输出由监视器观察,监视器直接/间接在日志中打印此信息。

如果实际输出与预期输出之间存在任何差异,则设计验证工程师会花费大量时间进行调试。尽管有冗长的机制,但验证工程师需要最少的消息进行调试,因为通常会有非常长的日志包含详尽的事务数据包。为了解决这个问题,开发了 xaction_custom_printer。

第 2 节解释了定制转换打印机如何解决验证工程师面临的问题以及对这个组件的需求。第 3 节展示了如何开发组件的基本思想。第 4 节显示了可以使用此自定义事务打印机的两种方式以及一些代码,以便更好地理解。第 5 节强调了自定义事务打印机相对于使用通用事务数据包的行、树和表格打印机的优势。

为什么我们需要自定义事务打印机?

在验证过程中,特别是在初始阶段,当 RTL 设计不成熟时,测试过程中可能会出现很多故障。工程师可以通过日志文件识别故障原因。通常情况下,工程师需要查看交易数据包以查看特定变量在特定时间戳的状态。理想情况下,日志文件中会打印数百个此类数据包以进行测试。

以任何协议的数据包为例,它包含很多信息,如地址、读地址、写数据、读数据、操作(读/写)和模式(单次/突发)。数据包中的这些变量中的至少一个可以具有数组。对于数组大小从几十到几百不等的情况,日志文件会变得非常庞大,这些数据包会打印多次。除此之外,调试过程还需要花费大量时间查看这些日志。在这些日志中,来自组件的转换数据包被非常频繁地打印出来,并在每次从组件调用它们时以不同的时间戳显示存储在其中的数据。为了调试,当使用 uvm_default_table_printer 时日志的数组大小很大时,用户需要在日志中来回切换。

SystemVerilog UVM包含一个 uvm_printer 类,它为打印各种格式的 uvm_objects 提供了一个接口。uvm_printer 的子类型实现不同的打印格式或策略。这些子类型包括 uvm_printer、uvm_line_printer、uvm_tree_printer、uvm_table_printer。我们已经开发了一个用户定义的打印机,它将致力于消除 uvm_table_printer 的缺点。

xaction_custom_printer 是从 uvm_printer 扩展而来的,打印机的输出格式看起来像是 uvm_table_printer 和 uvm_line_printer 的混合体,因此结合了两者的优点。xaction_custom_printer 简洁地显示数据包,以像表格打印机一样分区良好的方式显示变量的名称和值,并且在某种程度上类似于行式打印机的多行。

这台打印机的输出可以在一行中使用,直到某个预定义的字符,之后它会在不同的行中继续。这种类型的输出在数组很大的地方很容易阅读。如果在 uvm_table_printer 中打印了相同的数组,工程师将需要多次上下滚动日志。由于是单行,所以不需要上下多次。打印机的格式允许清楚地看到变量的名称和值,这是调试所需的全部内容。

这台打印机是如何开发的?

为了开发自定义打印机,所需的打印格式在 emit() 函数中进行了编程,该函数覆盖了父类 (uvm_printer) 的相同函数。此处显示了有关如何开发组件的基本思想的图示。

如何使用这台打印机?

用户只需要将文件包含在包或文件列表中即可包含在编译流程中,并且需要将其作为函数调用。有两种使用本打印机的方法。

默认打印机机制 - 用户可以将此打印机设置为 uvm_default_printer,如下图 2 所示,因此项目/SoC 中的所有打印都将以这种格式打印。

poYBAGKYaLKAfSz0AAGaQjTtthE661.png

图 2. 将自定义事务打印机设置为 uvm_default_printer

选择性打印机机制 - 用户只能通过在 sprint 中的交易项目的 convert2string 中传递打印机来为仅选定的块配置此打印机,如下面的图 3 所示。

poYBAGKYaLqAGJHeAAC1x8NlMAg139.png

图 3:为选定块使用 xaction_custom_printer 的方法

为了用这台打印机打印数据包,可以通过调用这个函数来完成,如下图4所示。

pYYBAGKYaMmAELv9AAB-irt80Ao957.png

图 4:使用 convert2string 打印交易项目的方法

用户还可以使用自定义事务打印机打印事务数据包,以便将数组打印在单独的行中,并将标量变量保持在同一行中。这种类型的交易数据包打印机制将帮助用户一次读取数组内容。5.5 节展示了这个交易包的外观示例

插图

这是一个例子来展示 xaction_custom_printer 相对于其他三个 uvm_printer 的优越性。在示例中,我们采用了一个通用数据包。以下变量用于解释此自定义打印机相对于默认打印机的优势。

poYBAGKYaNOANR-NAAJYdjFYjNk580.png

图 5:uvm_sequence_item 中的通用数据包(事务项)

1.1 使用行式打印机输出

poYBAGKYaNyAVddCAAD2D8KE_WI291.png

1.2 使用树形打印机输出

pYYBAGKYaOSAUIw2AADgzNgMx34707.png

5.3 使用台式打印机输出

pYYBAGKYaPGADNirAAF61mZ5L8U769.png

5.4 使用自定义打印机输出

定制打印机的优势

显示调试最需要的信息

减少日志大小

提高可读性

通过提高调试效率来节省时间

简洁的外观

Custom Transaction Printer 是我们在 eInfochips 开发的一个组件,旨在为验证工程师面临的问题之一提供解决方案。使用通用数据包示例显示了这款定制打印机相对于内置 uvm 打印机的优势。

审核编辑:郭婷

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

    关注

    38

    文章

    3743

    浏览量

    215659
  • 打印机
    +关注

    关注

    9

    文章

    724

    浏览量

    44828
收藏 人收藏

    评论

    相关推荐

    汉思新材料提供打印机打印头更优的金线包封用胶方案

    汉思新材料提供打印机打印头更优的金线包封用胶方案随着互联网络的飞速发展,打印机正向轻、薄、短、小、低功耗、高速度和智能化方向发展,应用的领域越来越宽广。打印机的发展
    的头像 发表于 01-11 10:25 159次阅读
    汉思新材料提供<b class='flag-5'>打印机</b><b class='flag-5'>打印</b>头更优的金线包封用胶方案

    条形码打印机,性价比较高的条码打印机,不干胶标签打印机

    打印机
    jf_47990939
    发布于 :2023年10月26日 14:03:11

    Android端自定义铃声 MobPush对安卓端自定义铃声的教程

    如何为APP推送设置独特的通知铃声呢?本次带来的是MobPush对安卓端自定义铃声的教程,快来看看吧~
    的头像 发表于 10-21 15:34 812次阅读
    Android端<b class='flag-5'>自定义</b>铃声 MobPush对安卓端<b class='flag-5'>自定义</b>铃声的教程

    单片机控制打印机打印乱码怎么解决?

    单片机控制打印机打印乱码
    发表于 10-17 06:08

    打印机打印时屏幕会闪是怎么回事?

    打印机打印时,屏幕会闪
    发表于 10-13 06:18

    微型打印机方案

    微型打印机方案(原理图+PCB+BOM表)
    发表于 09-21 07:50

    Harmony自定义页面请求与前端页面调试

    一、自定义页面请求响应 Web组件支持在应用拦截到页面请求后自定义响应请求能力。开发者通过onInterceptRequest()接口来实现自定义资源请求响应 。自定义请求能力可以用于
    发表于 09-20 17:55

    labview超快自定义控件制作和普通自定义控件制作

    labview超快自定义控件制作和普通自定义控件制作
    发表于 08-21 10:32 5次下载

    热敏打印机的设计实现

    热敏打印机是一种通过对热敏纸加热之后显示文字或图案的打印机
    的头像 发表于 07-21 14:32 2231次阅读
    热敏<b class='flag-5'>打印机</b>的设计实现

    教程 3:构建自定义配置文件

    教程 3:构建自定义配置文件
    发表于 07-06 18:49 0次下载
    教程 3:构建<b class='flag-5'>自定义</b>配置文件

    教程 2:自定义配置文件示例

    教程 2:自定义配置文件示例
    发表于 07-04 20:50 0次下载
    教程 2:<b class='flag-5'>自定义</b>配置文件示例

    煎饼打印机开源分享

    电子发烧友网站提供《煎饼打印机开源分享.zip》资料免费下载
    发表于 06-20 10:18 0次下载
    煎饼<b class='flag-5'>打印机</b>开源分享

    labview自定义控件

    labview自定义精美控件
    发表于 05-15 16:46 9次下载

    使用机器人打印机绘制草图

    另一个定义术语是:“个人制造”是指自己制造东西,而不是购买商业制造的物体,并使用计算机和3D打印机等数字技术来制造。到目前为止,个人制造主要集中在用户必须物理控制的手持工具上,激光切割机和3D打印机等机器使不需要手动干预的部分过
    的头像 发表于 05-15 15:43 417次阅读
    使用机器人<b class='flag-5'>打印机</b>绘制草图

    打印机

    打印机
    栈溢出工程师
    发布于 :2023年05月07日 19:33:47