首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UVM终端测试机制

UVM终端测试机制
EN

Stack Overflow用户
提问于 2022-05-07 02:10:50
回答 2查看 179关注 0票数 0
代码语言:javascript
复制
task mabu_scoreboard::main_phase(uvm_phase phase);
forever begin
    # 1ns;
    if(extip_rd_req_cnt - extip_rd_rsp_cnt >= `MABU_READ_OST_NUM) begin
        hit_rd_max_outstanding = 1;
        `uvm_info(get_type_name(),"reach read outstanding threshold!",UVM_NONE);
    end else begin
        hit_rd_max_outstanding = 0;
    end

    if(extip_wr_req_cnt - extip_wr_rsp_cnt >= `MABU_WRITE_OST_NUM) begin
        hit_wr_max_outstanding = 1;
        `uvm_info(get_type_name(),"reach write outstanding threshold!",UVM_NONE);
    end else begin
        hit_wr_max_outstanding = 0;
    end
end  endtask

forever循环是在一个耗时的阶段(main_phase)执行的.由于main_phase不提出异议,测试可以被正确终止吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-08 20:11:57

在启动一个耗时的UVM阶段时,必须至少提出一项反对意见,以防止该阶段被终止。终止一个阶段意味着执行该阶段的所有uvm_component的进程将被终止。

在记分板示例中,我们必须假设其他组件对main_phase提出异议,否则forever循环将永远不会完成其第一次迭代。对于需要为整个测试执行的进程,最好使用run_phase

在UVM测试平台中出现任何类型的延迟,除了生成时钟之外,都是一种糟糕的做法。UVM测试平台应该是基于事务的,唯一的延迟应该是生成时钟。具有1ns轮询延迟的forever循环尤其不利于性能。一个更好的方法是阻止等待事件。

票数 1
EN

Stack Overflow用户

发布于 2022-05-07 10:38:43

是的,这是正确的。由于记分板中的main_phase不调用raise_objection,记分板不会阻止测试结束。

大多数testbench组件不会引起反对。对于您的测试(从uvm_test扩展而来的类)来说,在其耗时的阶段提出异议是很常见的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72148959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档