运行 C/RTL 协同仿真 - 2023.2 简体中文

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

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 简体中文

Flow Navigator中,确保 HLS 组件处于活动状态,或者在Component(组件)菜单中将其选中,在该工具中将其设为活动组件。当 HLS 组件为活动组件时,Flow Navigator支持运行 C 语言仿真、C 语言综合、C/RTL 协同仿真、封装与实现来构建和分析该 HLS 组件。要对 HLS 组件进行 C/RTL 协同仿真,请选中 Flow Navigator 的C/RTL COSIMULATION(C/RTL 协同仿真)标题下的Run(运行)。

在 HLS 组件上运行协同仿真需要一个或多个测试激励文件,您必须按 运行 C 语言仿真 中所述加载这些文件。运行协同仿真前,还必须配置 HLS 组件以支持 C/RTL 协同仿真。使用以下步骤来配置设计。

重要: 不支持对 C/C++ 测试激励文件(例如:std::random_device)中的随机输入测试矢量执行协同仿真。建议一次性生成随机值并保存到一个文件中,随后,C/C++ 测试激励文件可在协同仿真期间使用此文件。

配置仿真器

您可在运行仿真前使用Config Editor(配置编辑器)的C/RTL Co-Simulation(C/RTL 协同仿真)部分来配置仿真器,如下所示。

图 1. HLS 组件 RTL 协同仿真设置

这些配置命令允许您指定仿真的运行方式。协同仿真配置 中记述了所有这些配置命令。请参阅其中内容获取更详细的信息。C/RTL Co-Simulation的部分设置包括:

trace_level
即“转储追踪”;该设置可指定在执行仿真时,写入当前解决方案的 sim/Verilogsim/VHDL 目录的追踪文件输出级别。选项包括:
all
即“全部”;表示输出当前正保存到追踪文件的所有端口和信号波形数据。
port
即“端口”;表示仅为顶层端口输出波形追踪数据。
port_hier
即“端口层级”;表示完整端口层级的输出波形追踪数据。
none
即“无”;表示不输出追踪数据。
random_stall
即“随机停滞”,表示对每次数据发射都应用随机停滞。
wave_debug
即“波形调试”;表示在 RTL 仿真中启用所有进程的波形可视化。仅当使用 Vivado 逻辑仿真器时,才支持该选项。启用该选项将启动仿真器 GUI 以便您检查波形中仿真生成的数据流活动。如需了解有关该工具的更多信息,请参阅 Vivado Design Suite 用户指南:逻辑仿真(UG900)
disable_deadlock_detection
即“禁用死锁检测”;顾名思义,禁用死锁检测并在协同仿真中打开 协同仿真死锁检测
enable_dataflow_profiling
即“启用数据流剖析”;用于启用捕获剖析数据,以供显示在 数据流查看器 中。
Dynamic Deadlock Prevention
即“防止动态死锁”;表示在协同仿真期间,为数据流剖析启用自动 FIFO 通道大小调整,从而防止出现死锁。

运行 C/RTL 协同仿真

在配置文件中定义 C/RTL 协同仿真设置后,即可从Flow Navigator中选中Run开始仿真。您可在Output(输出)窗口中跟踪仿真进度。综合运行的转录文本所含顶层函数名为 <component-name>::co_simulation,如下所示。

提示: Vitis Unified IDE 中的仿真运行使用的是 vitis-run --mode hls --cosim 命令,如 vitis、v++ 和 vitis-run 命令 中所述。
图 2. 运行 C/RTL 协同仿真的 HLS 组件

完成综合后,应在转录文本底部显示Co_simulation finished successfully(协同仿真成功完成)消息。在Run命令下还会显示填充的Reports文件夹,如上图所示。协同仿真后可用的报告包括:

  • Summary(汇总):报告使用的命令行和结果的时间戳。
  • Cosimulation(协同仿真):显示设计的常规信息,显示协同仿真过程中使用的特定选项,并显示设计层级的性能和资源估算。如果启用 enable_dataflow_profiling,那么性能数据将反标注解回“Dataflow Viewer”(数据查看器)报告,如 数据流查看器 中所述。
    重要: 如果要计算 II,则必须确保在 RTL 仿真中至少有 2 项传输事务,如 撰写测试激励文件 中所述。
  • Timeline Trace(时间线轨迹):如 时间线轨迹查看器 中所述。
  • Wave Viewer(波形查看器):如 查看仿真波形 中所述。
  • Function Call Graph(函数调用计算图):显示协同仿真后的调用计算图,如 函数调用计算图 中所述。