VHDL断言 - 报告以外的操作

时间:2015-05-30 01:45:12

标签: vhdl

我希望在现有代码中为VHDL断言操作添加错误计数器。基本上,我的代码看起来像这样:

assert data = good_data
  report "Bad data" 
  severity error; 

我想在断言发生时添加这样的内容:

errors <= errors + 1;

现在我知道我可以通过将assert更改为if语句然后使用if语句嵌入报表语句和我的错误计数增量来实现此目的。但是我想知道是否还有从已经存在的断言声明中获得更多功能?

2 个答案:

答案 0 :(得分:4)

您可以使用VUnit VHDL测试框架https://github.com/LarsAsplund/vunit,其中checkcheck_equal过程包装断言并计算错误数。默认行为是暂停第一个错误,以便可以轻松调试。

我也相信OSVVM AlertLogPkg.vhd具有类似的功能。 VUnit附带OSVVM重新分发,因此您也可以从那里使用它。

如果你想自己滚动,只需创建一个procedure assert(cond : value; msg : string := "")来增加同一个包中的共享计数器变量。

答案 1 :(得分:3)

除了并发的断言语句之外,还有一个可以进入进程的顺序断言语句。确保您正在测试的灵敏度列表或具有敏感性条款的等待语句的目标。您可以执行任意数量的其他顺序语句(例如if语句,顺序信号赋值语句......)。

根据定义,断言语句是被动的 - 它们不会改变任何模型对象的值。