我有一个测试台来测试我的VHDL设备(DUT),但是DUT调试输出的一部分是向控制台发送的ASSERT / REPORT消息,我想检查它的正确性,但是我不能更改DUT。我能想到的唯一方法是对输出日志文件进行后处理。
有什么方法可以在测试台中捕获控制台输出,因此我可以直接检查DUT输出吗?
答案 0 :(得分:1)
这是测试平台的一部分。但是,我不是使用Assert,而是使用OSVVM警报,日志和打印。 OSVVM既位于osvvm.org,也位于github。
我使用AffirmIf进行自我检查/结果检查,而不是断言。我使用AlertIf进行参数检查。
步骤1是获取OSVVM。获得代码后,请使用脚本进行编译。在Mentor或Aldec中,执行以下操作来运行脚本:
vlib osvvm
vmap osvvm osvvm
do $PATH_TO_OSVVM/osvvm.do $PATH_TO_OSVVM
使用VHDL-2008,并通过以下操作将所有OSVVM包含在程序中:
library osvvm;
context osvvm.OsvvmContext;
然后而不是:
assert Data /= expected report "..." severity error;
要做:
AffirmIf(Data = Expected, "...") ;
assert和AffirmIf / AlertIf都打印。但是,AffirmIf / AlertIf的优点在于,它在内部保留错误计数,并且在测试结束时通过执行以下操作可以使通过失败:
ReportAlerts;
OSVVM AffirmIf / AlertIf / Log / Print的下一个优点是,如果要将结果存储在文件中,只需执行以下操作:
TranscriptOpen("./results/Test1.txt");
如果要同时打印到屏幕和文件,请执行以下操作:
SetTranscriptMirror(TRUE);
那应该让您入门。我将其余的留给用户指南。首先查看AlertLog软件包用户指南和成绩单软件包用户指南。