使用 C 语言仿真验证代码 - 2022.1 简体中文

Vitis 高层次综合用户指南 (UG1399)

Document ID
UG1399
Release Date
2022-06-07
Version
2022.1 简体中文

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对话框的显示:依次选中Project > Project Settings(工程 > 工程设置),然后选择“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(综合)布局视图:依次选中Window > Synthesis(窗口 > 综合)。