在 Vitis HLS 流程中,验证可分为 2 个独立进程。
- 综合前确认,用于确认 C 语言程序是否正确实现了所需的功能。
- 综合后验证,用于验证生成的 RTL 代码是否按期望的方式来执行。
这两个进程都称为仿真:C 语言仿真和 C/RTL 协同仿真。
综合之前,应使用 C 语言仿真通过测试激励文件确认要综合的函数。C 语言测试激励文件包含一个 main()
顶层函数,用于调用函数以供 Vitis HLS 工程进行综合。测试激励文件还可包含其它函数。理想的测试激励文件具有以下功能特性:
- 测试激励文件可以自查,并确认要综合的函数的结果是否正确。
- 如果结果正确,测试激励文件将向
main()
返回 0 值。否则,测试激励文件应返回任何非零值。
在 Vitis HLS GUI 中,单击Run C Simulation(运行 C 语言仿真)工具栏按钮 即可打开C Simulation Dialog(C 语言仿真对话框),如下图所示。
图 1.
C Simulation Dialog对话框
C Simulation Dialog选项包括:
- Launch Debugger
- 即“启动调试器”;该选项用于编译 C 语言代码并自动打开Debug(调试)透视图。在Debug(调试)透视图中,可以使用Synthesis(综合)透视图按钮(左上方)从各窗口返回到Synthesis透视图。
- Build Only
- 即“仅构建”;该选项用于编译源代码和测试激励文件,但不运行仿真。该选项可用于测试编译进程,并解决构建出现的任何问题,然后再运行仿真。它会生成 csim.exe 文件,此文件可用于从命令外壳启动仿真。
- Clean Build
- 即“清除构建”;该选项用于在编译代码之前,从工程中移除所有现有的可执行文件和对象文件。
- Optimizing Compile
- 即“最优化编译”;默认情况下,使用调试信息编译设计,以便对编译进行分析和调试。编译设计时,Optimizing Compile(最优化编译)选项使用更高级别的最优化,但不会添加调试器所需的任何信息。这会增加编译时间,但会减少仿真运行时间。提示: Launch Debugger(启动调试器)选项与Optimizing Compile(最优化编译)选项互斥。在C Simulation Dialog对话框中选中上述任一选项都会禁用另一个选项。
- Enable Pre-Synthesis Control Flow Viewer
- 即“启用综合前控制流程查看器”;该选项可生成“综合前控制流程”报告,如 综合前控制流程 中所述。
- Input Arguments
- 即“输入实参”;该选项用于指定测试激励文件
main()
函数所需的任意输入。 - Do not show this dialog box again
- 即“不再显示此对话框”;该选项允许您禁用C Simulation Dialog对话框的显示。提示: 您可通过如下方式重新启用C Simulation Dialog对话框的显示:依次选中 (工程 > 工程设置),然后选择“Simulation Settings”(仿真设置)。
在此对话框中单击OK后,就会编译 C 语言代码并运行 C 语言仿真。运行仿真时,该控制台会显示来自测试激励文件的任何
printf
语句或者来自内核或 IP 的 hls::print
语句。仿真成功完成后,还会向控制台返回以下消息:INFO: [SIM 211-1] CSim done with 0 errors.
INFO: [SIM 211-3] *************** CSIM finish ***************
Finished C simulation.
仿真失败时,则返回错误:@E Simulation failed: Function 'main' returns nonzero value '1'.
ERROR: [SIM 211-100] 'csim_design' failed: nonzero return value.
INFO: [SIM 211-3] *************** CSIM finish ***************
如果选择了Launch Debugger(启动调试器)选项,该工具会自动切换至Debug(调试)布局视图,如下图所示。这样即可启动仿真,但是允许您逐步执行代码以便对该函数进行观察和调试。这是全功能调试环境:您可以单步进入和单步跳过代码、指定断点并观察和设置代码中的变量值。
图 2. C 语言调试环境
提示: 您可通过如下方式返回至Synthesis(综合)布局视图:依次选中 (窗口 > 综合)。