AI 引擎 SystemC 仿真器 - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文

Versal® ACAP AI 引擎 SystemC 仿真器 (aiesimulator) 包含全局存储器(DDR 存储器)和片上网络 (NoC) 的建模,以及 AI 引擎阵列的建模。使用 SystemC 仿真目标完成应用编译后,即可调用 AI 引擎 SystemC 仿真器,如下所示。

aiesimulator –-pkg-dir=./Work
重要: 使用 AI 引擎仿真器需按 设置 Vitis 工具环境 所述进行设置。

各项配置和二进制文件都是由 AI 引擎编译器生成的,置于 Work 目录下(请参阅 编译 AI 引擎 graph 应用),并使用 --pkg-dir 选项来为仿真器指定这些配置和文件。graph 由 main 应用中所述的控制线程来进行初始化、运行和终止。AI 引擎编译器负责对该控制线程进行编译,并将 PS IP 封装文件直接加载到仿真器中。

默认情况下,graph.run() 选项会指定永续运行的 graph。AI 引擎编译器会生成代码,以通过永续 While 循环来执行数据流 graph,因此仿真也会永续运行。要创建终止程序用于调试,请在 graph 代码中指定 graph.run(<number_of_iterations>) 以将迭代的执行次数限制为指定次数。指定的迭代数可以是任意正整数。

注释: graph::run(-1) 可指定永续运行的 graph。

AI 引擎仿真器命令首先按 Work/config/scsim_config.json 文件中生成的编译器中指定的方式来配置仿真器。这包括加载 PL IP 块及其连接、配置 I/O 数据文件驱动程序以及配置 NoC 和全局存储器(DDR 存储器)连接。随后,它会执行指定的 PS 应用,最终退出仿真器。

AI 引擎仿真器具有可选 --profile 选项,该选项会在内核代码中启用 printfs 以将其显示在控制台上,并生成剖析信息。并且,--dump-vcd <filename> 选项还会在仿真持续期间生成值更改转储 (VCD)。随后,即可使用 --simulation-cycle-timeout <number-of-cycles> 在指定时钟周期数过后退出仿真。

重要: 如果不提供时钟周期数或者 graph.run() 的运行轮数,那么仿真会永久运行。您需要按两次Ctrl+c才能退出仿真器。
提示: 在相同设计上的不同仿真运行期间,您可能会观察到不同的周期计数。这是因为仿真器会等待数秒钟以便暂挂的传输事务(例如,DMA)全部完成。在此等待时间内,仿真器进程仍会计时,但可由操作系统进行上下文切换,因此每一轮运行的总周期数可能不同。要确保每一轮运行的总周期数相同,应使用 AI 引擎仿真器的 --simulation-cycle-timeout 选项在精确周期内停止仿真器。这样剖析报告上显示每一轮运行的总周期数都相同。
注释: 请勿在内核代码中包含 <iostream> 以启用 printfs。在内核代码中使用 #include <iostream> 会导致 x86 仿真器和 SystemC 仿真器都出现编译错误。