我正在尝试创建一个自测试VHDL测试平台,在该平台中,我需要对调用vsim命令的命令行/ shell的状态为真或假(1或0)进行传达,以传达该设备的总体通过/失败状态测试平台。
我的模拟器工具是modelsim。有没有办法做到这一点?
答案 0 :(得分:1)
您可以使用report
语句。
如果您将仿真状态声明为:
signal simulation_status : std_logic;
然后您可以使用:
report "simulation status = " & std_logic'image(simulation_status);
当然,您要等到模拟结束后再报告状态,在测试平台中,您可以创建一个合适的过程来这样做:
process
begin
wait for 1000 ns; -- until the end of your simulation
report "simulation status = " & std_logic'image(simulation_status);
wait;
end process;
默认情况下,report
的严重性为note
,但是您也可以使用warning
,error
和failure
,例如:
report "simulation status = " & std_logic'image(simulation_status) severity failure;
达到严重程度为report
的{{1}}时,它将停止模拟。
答案 1 :(得分:1)
执行此操作的通常方法是onbreak
命令。在手册中搜索exit
命令,该示例提供了示例。基本上,您调用onbreak
,执行run -all
,然后代码中的断言失败将使您返回tcl并以给定的错误代码退出。
但是,这不是一个好主意。它是特定于模拟器的,几乎没有报告和控制权。更好的解决方案是从您的测试台创建一个日志文件,然后将其与一个或多个已知的优质黄金日志文件进行比较。这很容易编写脚本,可以使您更好地相信测试台确实做了一些事情,而不是在不应完成的时候错误地退出了。
答案 2 :(得分:0)
vsim支持增强的退出命令,因此只需使用exit -force -error_number即可返回错误代码。
批处理文件示例:
vsim -c ...-执行“退出-force -code 3”
如果%ERRORLEVEL%EQU 3转到xxxx:
答案 3 :(得分:0)
VHDL-2008标准未定义如何使用stop(code)
和finish(code)
随附的代码。由模拟器供应商决定。我知道的唯一会返回该值的模拟器就是GHDL。
如果将VUnit与Modelsim或任何其他受支持的模拟器一起使用,您将获得针对各种不同错误情况(VHDL声明,PSL声明,模拟器崩溃,如空指针解引用等)的期望退出代码)。在EdaPlayground上可以找到完整的VHDL错误案例示例。
您也可以将VUnit与SystemVerilog和UVM一起使用,以实现here所示的相同目的。请注意,UVM不提供此类错误检测功能on its own。
免责声明:我是VUnit的作者之一。