VHDL断言-报告以外的操作

VHDL断言-报告以外的操作,vhdl,Vhdl,我想在现有代码中为VHDL断言操作添加一个错误计数器。基本上,我有这样的代码: assert data = good_data report "Bad data" severity error; 我想添加这样的内容,以便在断言发生时触发: errors <= errors + 1; errors除了并发断言语句之外,还有一个顺序断言语句可以在进程中执行。确保您正在测试的内容在敏感度列表中,或者在带有敏感度子句的等待语句的目标中。您可以执行任意数量的其他顺序语句(例如,if语

我想在现有代码中为VHDL断言操作添加一个错误计数器。基本上,我有这样的代码:

assert data = good_data
  report "Bad data" 
  severity error; 
我想添加这样的内容,以便在断言发生时触发:

errors <= errors + 1;

errors除了并发断言语句之外,还有一个顺序断言语句可以在进程中执行。确保您正在测试的内容在敏感度列表中,或者在带有敏感度子句的等待语句的目标中。您可以执行任意数量的其他顺序语句(例如,if语句、顺序信号分配语句等)


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

您可以使用VUnit VHDL测试框架,该框架有
check
check_equal
程序包装断言并计算错误数。默认行为是在出现第一个错误时停止,以便可以轻松调试

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


如果您想自己滚动,只需创建一个
过程断言(cond:value;msg:string:=“”)
,该过程断言会在同一个包中增加一个共享计数器变量。

将断言语句添加到流程语句中,将要测试的内容放入敏感度列表中。尽可能地执行其他顺序语句。只是为了澄清。VUnit的断言类型功能比
check
check\u equal
更多。有关完整列表,请参阅。