UVM scoreboard实现自动数据比对


前言

在运用UVM搭建验证环境的时候,有没有什么办法可以不编写数据比对的函数,在scoreboard中实现数据比对。本文主要记录一下如何在scoreboard中,不用自己编写数据比对的函数,实现数据的自动比对。


一、Scoreboard Implementation

Scoreboard 的具体实现如下图所示,只需要定义一个带参数类型的数据类型,将需要比对的数据包类型作为参数传进去,然后将需要比对的数据接口分别接上即可。
在这里插入图片描述

二、Scoreboard Transaction Source: Monitor

在monitor中将数据收集起来,通过analysis_port的write任务,将数据包送到scoreboard中去。
在这里插入图片描述

三、Embed Monitor in Agent

将monitor嵌入到agent中,agent中通过is_active这个变量,控制实现两种模式。
在这里插入图片描述

四、UVM Agent Example

UVM Agent的具体实现。
在这里插入图片描述

五、Using UVM Agent in Environment

在env层,实现agent和scoreboard端口的连接。
在这里插入图片描述

六、Scoreboard: Multi-Stream

多数据流时,scoreboard的具体实现。
在这里插入图片描述
在这里插入图片描述


总结

本文主要总结了UVM中,scoreboard的具体实现,数据流的传递,以及多数据流时数据的比对。

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的UVM评分板(Scoreboard)的示例,用于检查接收到的事务与期望的结果是否匹配: ```verilog class my_scoreboard extends uvm_scoreboard; `uvm_component_utils(my_scoreboard) // Declare analysis port for receiving transactions uvm_analysis_port #(my_transaction) analysis_port; // Override the build_phase to connect the analysis port virtual function void build_phase(uvm_phase phase); super.build_phase(phase); // Connect the analysis port to the scoreboard's analysis_export analysis_port = new("analysis_port", this); endfunction // Override the write method to check received transactions virtual function void write(my_transaction txn); super.write(txn); // Check the received transaction against expected results if (txn.result == txn.expected_result) `uvm_info("SCOREBOARD", $sformatf("Transaction %0d passed", txn.transaction_id), UVM_MEDIUM) else `uvm_error("SCOREBOARD", $sformatf("Transaction %0d failed", txn.transaction_id)) endfunction endclass ``` 在上面的示例中,`my_scoreboard`是一个UVM评分板,它用于检查接收到的`my_transaction`类型的事务与期望的结果是否匹配。在`build_phase`中,评分板创建了一个分析端口(`analysis_port`)并将其连接到评分板的`analysis_export`。 评分板的`write`方法被重写以检查接收到的事务。在该方法中,评分板比较事务的`result`字段与`expected_result`字段,如果它们匹配,则打印一条通过的信息;否则,打印一条失败的信息。 以上是一个简单的UVM评分板示例,它展示了如何在UVM中创建和使用评分板来检查接收到的事务与期望的结果是否匹配。具体实现中,你需要根据你的需求进行适当的修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值