我的硬件模型的UVM测试平台(约束随机验证)。我的黄金模型是用systemC和c ++编写的。我的情况是我的硬件结果与软件结果不匹配,但两者都可能是正确的。
作为一个例子,我的HW进行了一些内存管理(分配,释放资源),这会影响管道中的其他一些逻辑。取决于"何时" HW获得alloc或dealloc请求以及一些时间敏感的仲裁策略,它产生一些输出。在黄金模型中没有时间概念,在某些情况下,它的输出不会与HW匹配,但HW和黄金模型都可能是正确的。
验证此类方案的标准方法是什么?当黄金模型和硬件输出都正确但价值不同时,我不太确定分数登机是否有助于检查正确性。我是这个领域的新手。因此,任何建议/指示都将受到高度赞赏。
答案 0 :(得分:3)
UVM的目标之一是将测试抽象级别提高到超出硬件引脚摆动级别。如果您知道对于给定的随机刺激,输出是正确的,您需要将该知识放入记分板。您的监视器的工作是生成一个事务,删除大部分时间域信息,并将其发送到记分板进行处理。
以无序记分板的简单情况为例,您将数据包发送到DUT进行路由,但它们的顺序不同。您的参考模型可能会产生不同的排序,但所有进入的数据包必须最终在一段时间后出现。记分板必须检查是否收到了数据包而没有检查订购,或者它检查了设计要求所规定的排序。
答案 1 :(得分:1)
我喜欢Dave的答案,但是如果正确性逻辑过于复杂而无法放入测试平台,我也会看到使用不同的方法。
虽然这不是一个完美的检查器,但通过定义界面,您可以明确说明系统中允许的非确定性是什么。