UVM平台,想在scoreboard 中调用功能覆盖率的task怎么写
时间: 2024-03-05 19:48:35 浏览: 93
利用matalb 生成c 模型并在uvm中调用
3星 · 编辑精心推荐
在 UVM 中,可以通过 Scoreboard 中的 `post_write` task 或函数来收集功能覆盖率。
以下是一个简单的示例:
```verilog
class my_scoreboard extends uvm_scoreboard;
// ...
virtual task post_write(input uvm_tlm_generic_payload gp);
super.post_write(gp);
if (gp.get_coverage() != null) begin
// 如果存在覆盖率对象,则调用相应的覆盖率记录器
gp.get_coverage().sample();
end
endtask
// ...
endclass
```
在上述示例中,`post_write` task 中通过 `gp.get_coverage()` 获取到覆盖率对象,然后调用 `sample()` 方法对覆盖率进行采样。
具体的覆盖率记录器的实现可以根据需要使用不同的工具库实现,例如 VCS 中可以使用 `cov_db` 库,Modelsim 中可以使用 `vcoverage` 库。
需要注意的是,在调用 `sample()` 方法之前,需要确保相应的覆盖率对象已经被创建并且已经与 Scoreboard 相关联。通常情况下,可以在 Scoreboard 的 `build_phase` 阶段中创建覆盖率对象并将其与 Scoreboard 相关联。
阅读全文