我希望在现有代码中为VHDL断言操作添加错误计数器。基本上,我的代码看起来像这样:
assert data = good_data
report "Bad data"
severity error;
我想在断言发生时添加这样的内容:
errors <= errors + 1;
现在我知道我可以通过将assert更改为if语句然后使用if语句嵌入报表语句和我的错误计数增量来实现此目的。但是我想知道是否还有从已经存在的断言声明中获得更多功能?
答案 0 :(得分:4)
您可以使用VUnit VHDL测试框架https://github.com/LarsAsplund/vunit,其中check
和check_equal
过程包装断言并计算错误数。默认行为是暂停第一个错误,以便可以轻松调试。
我也相信OSVVM AlertLogPkg.vhd
具有类似的功能。 VUnit附带OSVVM重新分发,因此您也可以从那里使用它。
如果你想自己滚动,只需创建一个procedure assert(cond : value; msg : string := "")
来增加同一个包中的共享计数器变量。
答案 1 :(得分:3)
除了并发的断言语句之外,还有一个可以进入进程的顺序断言语句。确保您正在测试的灵敏度列表或具有敏感性条款的等待语句的目标。您可以执行任意数量的其他顺序语句(例如if语句,顺序信号赋值语句......)。
根据定义,断言语句是被动的 - 它们不会改变任何模型对象的值。