协调检查记分板

时间:2014-05-27 15:00:48

标签: system-verilog uvm

我在代码中解决问题时遇到了一些问题,希望你能帮助我。

我有两个模块AB。模块AB发出请求,并在多个周期后BA发送多周期响应。 A最多可以容纳8个等待回复的请求,B的回复不一定会回来订购。这就是我们使用ID识别返回数据的原因。

要验证此行为,我有一个包含多个检查器的记分板。我做的其中一项检查是,用于请求的ID是否是免费的。为此,我保留一个关联数组,其中待处理的ID待响应,并根据需要插入,检查和删除项目。我从两个接口和监视器控制它,一个用于请求,另一个用于响应。响应监视器,响应超过一个周期,等待它有所有数据将事务发送到记分板,在那里我更新我的结构。

A看到它实际上从B获得有效响应时,问题就出现了,释放ID并将其用于新请求。在我的一些模拟中发生了这种情况,并且由于在所有响应完成之前我都没有收到该事务,因此阻止A正在执行一个带有ID的新请求我不知道&## 39;在我从监视器上获得完整的交易之前,使用是合法的。

关于如何解决这个问题的任何想法?谢谢!

1 个答案:

答案 0 :(得分:1)

在您看到B的响应的周期中,为什么不将请求从A移动到另一个关联数组中,该数组表示已启动的响应。这样你就可以在原始数组中有一个空闲插槽来处理来自A的新请求,但现在你将拥有新的第二个数组来处理已经开始的多周期响应。