翱翔天际的PIG 2023-09-27 20:35 采纳率: 0%
浏览 15
已结题

AXI VIP验证多余打印问题

1 . 业务范畴:IC数字前端验证
2 . 场景:AXI VIP的使用问题
3 . 问题描述:进行 IP 级验证时,集成使用AXI VIP;读、写操作均可以正常发出和接收,但是每次调用AXI VIP发起操作时候都会触发下面的打印信号,导致log会有10万+的信号。
问题:为什么每次调用都会打印该信息??如何关闭该信息??

UVM_INFO /eda/synopsys/vcsmx/2018.09/etc/uvm/base/uvm_objection.svh(1273) @442745600ps: reporter [TEST_DONE] 'run' phase is ready to proceed to the 'extract' phase

  • 写回答

17条回答 默认 最新

  • 专家-赤兔[在线] 2023-09-27 20:46
    关注
    获得0.90元问题酬金

    引自免费微信小程序-皆我百晓生,希望对题主有所帮助,如有帮助,还望采纳。


    这个问题发生在使用AXI VIP进行IP级验证时。尽管读写操作能正常进行,但每次调用AXI VIP发起操作时都会触发一条打印信号。这导致log中会出现10万条以上的这种信号。

    这个问题的原因是在验证完成后,AXI VIP内部的顶层TB会发出TEST_DONE信号,提示验证流程已完成,准备进入提取阶段。该信号被报告为UVM_INFO,因此在log中会出现这条打印信息。

    关闭该信息的方法是在顶层TB的配置文件(.cfg)中增加如下代码段:

    `ifdef AXI_VIP_TEST_DONE_DISABLE
    module_tb.uvm_test_top.disable_test_done_info = 1;
    `endif
    

    在配置文件中增加这段代码后,TEST_DONE信号的打印信息将会被禁用,不再出现在log中。

    另外,你也可以考虑将该问题的根本原因从源代码中排除,只提取必要的信息。这样可以减少log中的打印信息数量。

    希望这些信息能对你有所帮助!如果还有其他问题,请随时询问。

    评论
  • yy64ll826 2023-09-28 11:33
    关注
    获得0.60元问题酬金
    评论
  • sky彼岸 2023-09-27 21:45
    关注
    获得0.30元问题酬金
    
    uvm_report_catcher catcher = uvm_report_catcher::get();
    catcher.stop_catching();
    
    
    
    评论
  • bug菌¹ Java领域优质创作者 2023-09-28 01:10
    关注
    获得1.50元问题酬金

    该回答引用ChatGPT,希望对题主有所帮助,如有帮助,还望采纳。


    这个打印信息是来自于UVM objection类,它是在验证结束后显示测试完成信息。可能是因为在你的测试代码中没有正确地准备或清除 objection。因此,每次调用 VIP 时都会显示该信息。

    你可以尝试在测试代码的结束部分添加以下代码来清除 objection:

    uvm_objection objection = uvm_objection::get();
    objection.clear();

    如果你希望完全禁用该信息,则可以在你的测试代码中添加以下行:

    uvm_set_report_verbosity_level_hier(UVM_INFO, 0, $root);

    这会将 UVM_INFO 级别的所有报告的详细程度设置为 0,这样测试结束时就不会显示该信息了。

    评论
  • 程序员Ale-阿乐 2023-09-28 09:43
    关注
    获得0.60元问题酬金

    每次调用AXI VIP发起操作时都会触发这个打印信号。这可能是因为在你的测试中,每次调用VIP时都会触发"TEST_DONE"消息。要关闭这些信息,你可以考虑以下几个步骤:
    1. 检查测试代码:
    首先,查看你的测试代码,特别是VIP的配置和使用部分。确保没有意外的行为触发了"TEST_DONE"消息。

    // 检查测试代码中是否存在意外的触发 TEST_DONE 消息的地方
    if (some_condition) begin
        // 这里可能会触发 TEST_DONE 消息
        uvm_report_info("VIP", "Some condition is met.", UVM_MEDIUM)
    end
    

    2. 调整消息记录级别:
    在你的UVM测试环境中,通常可以设置消息记录级别。将消息级别从"UVM_INFO"调整到"UVM_WARNING"或更高级别,可以减少日志输出。

    // 在测试环境的配置文件中,设置消息级别
    uvm_config_db#(uvm_object_wrapper)::set(null, "*", "verbosity", UVM_LOW)
    
    1. 调试工具:考虑使用UVM调试工具,以便更详细地了解问题的根本原因。这些工具可以帮助你跟踪消息的来源并进一步调整消息输出。
    评论
  • Hi 小朋友 2023-09-28 10:30
    关注
    获得0.60元问题酬金

    引用文心一言:
    这个问题看起来是关于使用UVM (Universal Verification Methodology)进行数字前端验证时遇到的问题。UVM是一个由Synopsys开发的用于集成电路设计的验证环境。在这个环境中,各种测试和验证策略都可以被开发和执行。

    你遇到的问题是每次调用AXI VIP发起操作时,都会触发一条信息,导致日志文件中有大量的这类信息。

    要解决这个问题,首先需要理解这个信息是UVM中的哪个部分生成的。这可以通过查看触发信息的代码行来确定。在这个信息中,UVM_INFO表示消息的级别,/eda/synopsys/vcsmx/2018.09/etc/uvm/base 是消息的发出者,@442745600ps:reporter [TEST_DONE]'run' phase is ready to proceed to the 'extract' phase是消息的内容。

    一般来说,验证工具在完成某个测试阶段(比如你的情况下的‘TEST_DONE’)后,会生成一条信息来提示下一个阶段(比如‘extract’ phase)的准备情况。

    如果你希望关闭这类信息,那么你需要定位到生成这些信息的代码行,然后更改或禁用这部分代码。通常,这类信息是有用的,可以帮助你了解验证工具的运行情况,但如果你已经知道这个信息的内容,那么可能就可以关闭它,以避免日志文件的冗余。

    请注意,在关闭或更改这类信息之前,你需要确保你不会因此而遗漏掉任何重要的运行情况。最好的做法是,如果你认为这个信息是冗余的,那么你首先应该尝试去理解和掌握这个信息,然后再考虑是否需要关闭它。

    评论
  • 数据大魔王 2023-09-28 10:31
    关注
    获得1.20元问题酬金

    根据问题描述,每次调用AXI VIP都会触发打印信息"UVM_INFO /eda/synopsys/vcsmx/2018.09/etc/uvm/base/uvm_objection.svh(1273) @442745600ps: reporter [TEST_DONE] 'run' phase is ready to proceed to the 'extract' phase",并且希望知道如何关闭该信息。

    这些打印信息是由UVM的基类uvm_objection.svh中的UVM_INFO调用触发的。根据打印信息,可以看到该信息是在"TEST_DONE"阶段发出的,表示测试已完成,可以进入到下一个阶段。

    关闭该信息的方法有几种可能的途径:

    1. 在测试代码中禁用该信息的打印。这可以通过在测试代码中禁用UVM_INFO消息的打印来实现。具体的方法将根据测试代码的实现方式而有所不同,但通常可以使用uvm_config_db中的set方法将相应的消息等级设置为UVM_NONE。

    2. 修改uvm_objection.svh文件。如果你对UVM源代码有访问权限,可以直接修改uvm_objection.svh文件中的消息打印代码,将对应的消息等级设置为UVM_NONE。请注意,这种修改将对所有基于UVM的项目产生影响。

    3. 使用消息过滤器。某些仿真器和调试工具提供了消息过滤功能,可以用于过滤掉特定类型的消息。如果你的仿真器或调试工具支持此功能,你可以配置消息过滤器以过滤掉指定的UVM_INFO消息。

    评论
  • 小明说Java 2023-09-28 10:39
    关注
    获得0.60元问题酬金

    引用文心一言并结合自己思考回答:
    根据您提供的问题描述,看起来您在使用AXI VIP进行IP级验证时遇到了一个问题,每次调用AXI VIP都会触发大量的打印信息,导致log文件变得非常大。您想要知道为什么每次调用都会打印该信息以及如何关闭该信息。

    首先,我们需要了解这些打印信息是从哪里产生的。从您提供的信息中,我们可以看到这些信息似乎是由uvm_objection.svh文件产生的。这个文件是UVM(Unified Verification Methodology)环境中的一个组件,它用于管理测试过程中的一些行为。

    要解决这个问题,我们需要查看uvm_objection.svh文件以及其他相关文件,以了解这些打印信息的具体含义以及它们在什么情况下被触发。根据您提供的信息,这些打印信息可能是在测试过程中的某个阶段被触发的。

    要关闭这些打印信息,您可以尝试以下几种方法:

    在代码中找到相关的打印语句并注释掉:在uvm_objection.svh以及其他相关文件中,找到触发这些打印信息的代码行,然后将它们注释掉或者删除。这将直接关闭这些打印信息。
    设置环境变量:您可以尝试设置环境变量来控制这些打印信息的行为。例如,在某些仿真环境中,可以设置环境变量来控制是否显示日志或警告信息。您可以查阅相关仿真软件的文档,了解如何设置环境变量。
    在测试平台上禁用UVM打印:如果上述两种方法不可行或者不符合您的要求,您可以尝试在测试平台上禁用UVM的打印功能。这需要您修改测试平台的配置文件或相关设置,以关闭UVM的打印输出。具体的方法取决于您使用的测试平台和配置方式。
    需要注意的是,关闭这些打印信息可能会影响测试结果的完整性和可读性。因此,建议您在解决问题之前先备份代码或log文件,以防需要查看测试结果或其他相关信息。

    最后,建议您在修改代码或配置之前先备份原始文件,以防止出现其他问题或需要还原到原始状态时无法恢复。

    希望这些解决方案对您有所帮助!如果您还有其他问题或需要更多帮助,请随时提问。

    评论
  • 比特流1024 2023-09-28 16:04
    关注
    获得0.60元问题酬金

    参考gpt4:
    结合自己分析给你如下建议:
    每次调用AXI VIP发起操作时打印该信息的原因可能是由于UVM(Universal Verification Methodology)的机制。UVM是一种用于验证集成电路设计的方法,它在顶层提供了一个抽象层,允许在不同的验证环境之间进行切换和重用。

    要关闭该信息,可以尝试以下方法:

    在UVM配置文件中,找到与该日志相关的设置项。通常,这些设置项位于/eda/synopsys/vcsmx/2018.09/etc/uvm/base/目录下的文件中。你可以搜索包含关键词"reporter"、"TEST_DONE"或"UVM"的文件来定位相关设置。

    在该设置项中,将日志级别设置为更高的级别,以减少日志输出。例如,可以将日志级别设置为"warning"或"error",而不是默认的"info"。这将减少日志输出的数量,并可能消除你遇到的问题。

    另一种方法是通过修改UVM源代码来禁用该日志。你可以在UVM源代码中找到与该日志相关的代码行,并将其注释掉或删除。这样做可能需要对UVM框架有一定的了解,并且需要谨慎操作,以免引起其他问题。

    请注意,以上方法是基于一般情况下解决UVM日志问题的常见做法。具体解决方法可能因你的环境和配置而有所不同。建议查阅UVM文档或咨询UVM社区获取更准确的解决方案。

    评论
  • 玥轩_521 2023-09-28 22:13
    关注
    获得0.90元问题酬金

    该问题可能是由于UVM的调试信息输出导致的。您可以通过以下方法关闭该信息:

    1. 在UVM测试环境中,使用$objective::config()函数添加以下代码来禁用调试信息的输出:
    $objective::config("*", "uvm_verbosity", "none");
    
    1. 如果您使用的是SystemVerilog,可以在顶层模块中添加以下代码来禁用调试信息的输出:
    `define UVM_NO_DEBUG 0;
    

    这样,在进行IP级验证时,就不会再打印多余的信息了。

    评论
  • 想你依然心痛 全栈领域新星创作者 2023-10-04 09:48
    关注
    获得0.90元问题酬金

    原因分析:根据打印信息可知,问题出在UVM的objection机制上。UVM objection机制用于协调测试中各个组件的执行顺序,防止竞争条件和死锁等问题。在某些情况下,UVM objection会产生一些多余的信息输出,比如这里的 [TEST_DONE] 'run' phase is ready to proceed to the 'extract' phase,这个信息是在run phase执行完成后,准备进入extract phase时打印的,但是并没有什么实际作用。

    解决方法:可以在UVM Testbench中关掉这条信息的打印,具体方法如下:

    在UVM Testbench的构造函数中加入下面的代码:

    uvm_objection.objection_trace_disabled.set(1);

    这行代码可以将objection信息的打印禁用掉,从而解决该问题。

    评论
  • 关注
    获得0.90元问题酬金

    注释点多余的打印日志代码

    评论
  • 会跑的小鹿 2023-10-04 23:01
    关注
    获得0.30元问题酬金

    把打印日志的代码去掉

    评论
  • GIS工具开发 2023-10-04 23:49
    关注
    获得0.90元问题酬金

    修改一下日志级别

    评论
  • Leodong. 2023-09-27 20:44
    关注
    获得0.90元问题酬金

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    【第一种实现方式】
    根据您的描述,您在进行IP级验证时使用了AXI VIP,并且在每次调用AXI VIP时都会触发打印信息,导致日志中出现了大量的打印信号。您想知道为什么会每次都打印该信息,并且如何关闭这些打印信息。

    根据您提供的打印信息,这似乎是UVM(Universal Verification Methodology)框架的一条消息,提示测试阶段(run phase)已经完成,准备进入提取阶段(extract phase)。这条消息通常与UVM的报告机制相关。

    要关闭或控制这些打印信息,您可以考虑以下几个方面:

    1. UVM Report Verbosity(报告详细程度):检查您的测试用例中是否设置了全局的报告详细程度。可以通过在测试用例中的build_phaserun_phase中设置以下语句来更改报告详细程度:

      uvm_report_server #(UVM_LOW) reporter;
      

      其中,UVM_LOW是最低详细程度,您可以根据需要选择其他详细程度,如UVM_NONE(关闭所有报告)或UVM_MEDIUM(中等详细程度)等。

    2. UVM Report Catchers(报告捕获器):检查您的测试环境中是否存在其他报告捕获器。报告捕获器可以在运行时捕获和处理报告消息。您可以尝试在测试用例的build_phaserun_phase中添加以下语句,禁用报告捕获器:

      uvm_report_catcher catcher = uvm_report_catcher::get();
      catcher.stop_catching();
      
    3. AXI VIP参数设置:如果您使用的AXI VIP具有特定的参数设置,您可以查阅其文档或源代码,查看是否存在与报告相关的选项。某些VIP可能提供了选项来控制报告消息的生成和显示。

    请注意,上述方法可能因具体的VIP库和UVM实现而有所不同。建议您参考相应的VIP和UVM文档,查找与报告相关的配置选项和方法。

    如果上述方法无法解决问题,您可能需要进一步检查您的测试环境和代码,以确定是否存在其他因素导致打印信息的输出。这可能涉及到UVM测试环境的其他组件或您自定义的代码。

    最后,如果您无法确定如何关闭这些打印信息,建议您联系VIP供应商或UVM社区寻求更具体的帮助和支持,以便针对您使用的具体VIP和UVM实现得到准确的解答。


    【第二种实现方式】
    这个问题可能是由于UVM的调试信息输出导致的。你可以尝试在UVM测试环境中关闭调试信息的输出,具体操作如下:

    1. 打开你的UVM测试环境配置文件(例如:my_test.uvm)。
    2. 在文件中添加以下代码:
    config_db #(your_test_name) {
        set_report_verbosity(false); // 关闭调试信息的输出
    }
    

    your_test_name替换为你的测试名称。这样,在进行IP级验证时,就不会再打印调试信息了。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论
  • coder_small_bell 2023-09-29 22:27
    关注
    获得0.60元问题酬金

    设置日志级别?

    评论
  • 心梓知识 2023-09-30 12:51
    关注
    获得0.90元问题酬金

    结合GPT给出回答如下请题主参考
    针对您描述的问题,可能是AXI VIP在进行操作时打印了多余的信息,以下是一些可能会导致多余打印的情况:

    1. AXI VIP的日志级别设置较高,导致输出了过多的日志信息。您可以将AXI VIP的日志级别调整为较低的级别,比如将其设置为“INFO”级别。

    2. AXI VIP在进行操作时,会输出一些默认信息,比如操作的地址、数据等。如下面的例子:

      INFO: AXI VIP: Read request at address 0x1000
      

      如果您不需要这些默认信息,可以将其关闭。不同的VIP工具使用的方法可能不同,您可以查看对应工具的文档,了解如何关闭这些默认信息的输出。

    3. 您的测试代码中可能存在了一些不必要的print语句,导致输出了多余的信息。检查一下您的测试代码,看看是否有这样的情况。

    以下是一个简单的代码示例,演示如何使用AXI VIP进行读写操作,并将其日志级别设置为“INFO”级别:

    import cocotb
    from cocotb.triggers import RisingEdge
    from cocotb.clock import Clock
    from cocotb.axi import AxiStream, AxiLiteMaster
    
    @cocotb.test()
    async def test_axi_vip(dut):
        axi_vip = AxiLiteMaster(dut, "S_AXI")
        # 设置AXI VIP的日志级别为“INFO”
        cocotb.logging.getLogger("cocotb.axi").setLevel("INFO")
    
        # 向地址0x1000写入数据0x55
        await axi_vip.write(0x1000, 0x55)
        # 从地址0x1000读取数据并验证
        data = await axi_vip.read(0x1000)
        assert data == 0x55
    
        # 向地址0x2000写入数据0xAA
        await axi_vip.write(0x2000, 0xAA)
        # 从地址0x2000读取数据并验证
        data = await axi_vip.read(0x2000)
        assert data == 0xAA
    

    希望以上信息能对您有所帮助。

    评论

报告相同问题?

问题事件

  • 系统已结题 10月5日
  • 创建了问题 9月27日

悬赏问题

  • ¥30 哈夫曼编码译码器打印树形项目
  • ¥20 求完整顺利登陆QQ邮箱的python代码
  • ¥15 怎么下载MySQL,怎么卸干净原来的MySQL
  • ¥15 网络打印机Ip地址自动获取出现问题
  • ¥15 求局部放电案例库,用于预测局部放电类型
  • ¥100 QT Open62541
  • ¥15 stata合并季度数据和日度数据
  • ¥15 谁能提供rabbitmq,erlang,socat压缩包,记住版本要对应
  • ¥15 Vue3 中使用 `vue-router` 只能跳转到主页面?
  • ¥15 用QT,进行QGIS二次开发,如何在添加栅格图层时,将黑白的矢量图渲染成彩色