VHDL断言-报告以外的操作
我想在现有代码中为VHDL断言操作添加一个错误计数器。基本上,我有这样的代码:VHDL断言-报告以外的操作,vhdl,Vhdl,我想在现有代码中为VHDL断言操作添加一个错误计数器。基本上,我有这样的代码: assert data = good_data report "Bad data" severity error; 我想添加这样的内容,以便在断言发生时触发: errors <= errors + 1; errors除了并发断言语句之外,还有一个顺序断言语句可以在进程中执行。确保您正在测试的内容在敏感度列表中,或者在带有敏感度子句的等待语句的目标中。您可以执行任意数量的其他顺序语句(例如,if语
assert data = good_data
report "Bad data"
severity error;
我想添加这样的内容,以便在断言发生时触发:
errors <= errors + 1;
errors除了并发断言语句之外,还有一个顺序断言语句可以在进程中执行。确保您正在测试的内容在敏感度列表中,或者在带有敏感度子句的等待语句的目标中。您可以执行任意数量的其他顺序语句(例如,if语句、顺序信号分配语句等)
根据定义,断言语句是被动的——它们不会更改任何模型对象的值 您可以使用VUnit VHDL测试框架,该框架有check
和check_equal
程序包装断言并计算错误数。默认行为是在出现第一个错误时停止,以便可以轻松调试
我还相信OSVVMAlertLogPkg.vhd
也有类似的功能。VUnit随OSVVM重新分发,因此您也可以从那里使用它
如果您想自己滚动,只需创建一个过程断言(cond:value;msg:string:=“”)
,该过程断言会在同一个包中增加一个共享计数器变量。将断言语句添加到流程语句中,将要测试的内容放入敏感度列表中。尽可能地执行其他顺序语句。只是为了澄清。VUnit的断言类型功能比check
和check\u equal
更多。有关完整列表,请参阅。