微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > UVM验证平台中自动对比

UVM验证平台中自动对比

时间:10-02 整理:3721RD 点击:
在验证平台里面实现自动对比的功能,在reference_model和scoreboard里面各自定义了端口,
reference_model里面负责把transaction包发给scoreboard,但是现在发现scoreboard里面
的端口不能正常接收transaction。在scoreboard里面,有两个并行运行的while(1)语句,分别
如下:








现在只有一个while(1)语句里的actual_port能正常接收数据,原因在哪里,请求解答

scb中用analysis_port比较常见一点,使用write函数更加合适,可以用vcs的gui 跟一下,很快就可以定位到问题了

你是说,1. 在scb里面,用analysis_port而不是uvm_blocking_get_port是吧。
2. 用write函数,是写出去的啊,我目前scb里面要用get来接收数据。
请对1和2做一下详细解释,多谢

用put/get也可以。我觉得你需要检查一下,数据源是否ready

这两种用法都是可以的,不过一般在scb可能会选择Analysis_port(简称AP)吧,AP是以广播的形式传递的,只要在ref_model中是用ap_port.write(tr)。然后在scb中实现一个write(trans_type tr)的函数即可。AP的方式没有延时,不会阻塞,相对比较简单。blocking的方式会有阻塞,而且一般是一对一的连接,更加适合在处理或者驱动数据的Components之间一对一的传输数据,上层传递过来的数据没有被获取的时候是不能够再put新的数据的。

如何识别数据源是否ready ?

你好,之前你回复的帖子中有这样一句话:只要在ref_model中是用ap_port.write(tr)。然后在scb中实现一个write(trans_type tr)的函数即可。

后一句没看明白,我们在scb中不是要接收来自ref_model的数据吗,应该用get函数才对啊,怎么还要用到

write函数呢?

这个就是AP端口的用法,需要接受数据的组件就例化一个ap端口,然后实现write函数即可,VMM和UVM中都有这个用法,具体的你可以查一下说明。

是因为对于analysis_port来说,analysis_port.write(xxx)会调用与之连接的analysis_imp的write()方法,所以imp接口的write函数必须要实现

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top