UVM验证平台中的scoreboard

来源:互联网 发布:家用榨油机 知乎 编辑:程序博客网 时间:2024/06/05 00:12

scoreboard主要用于比较reference modelDUT输出是否一致,并给出比较结果。

一个简单的scoreboard如下:


6~7行分别定义了两个端口,一个事exp_port,用于从reference modelap获得期望的数据;

另外一个端口是act_export,用于从monitorap获得实际DUT的输出数据。

 

main_phase中使用fork开启了两个进程,其中一个用于从reference model中获得数据,另一个用于从monitor中获得数据。一般来说,同样一组数据,经过DUT处理后会存在延迟,但是在reference model中部会(除非刻意这么做)。

scoreboard的角度看,reference model中的数据总是先到达,所以在33行中把reference model的数据先放入一个队列中。

由于DUT的输出后到达,所以当36行接收到DUT的输出后,先查看队列中是否有记录,如果没有记录,则说明reference model没有数据输出,而DUT输出了,这是不期望的结果,52行给出错误信息。如果队列中有记录,则从38行从队列中弹出第一个数据,并把此数据与DUT的输出比较,这里比较用到了compare函数,这里之所以可以用这个函数比较,是因为在定义transaction时使用了一些列的uvm_field_*宏。compare会逐字段比较get_actualtmp_tran,如果所有的字段都一样,那么返回1,否则返回0.

★:scoreboard中一般使用一个队列来暂存从reference model中得到的期望数据。


0 0