硬件仿真调试技巧 - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

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

由于硬件仿真中使用的是近似模型,因此仿真系统的行为可能与硬件不相符。以下列表提供了一些常见问题,以便检验您的应用在硬件仿真期间是否未能提供所期望的结果:

  1. 复查主机应用以确保正确捕获不同内核运行之间的事件依赖关系。此类问题可能导致出现意外行为。也有可能应用能够在硬件中通过测试,但在应用中存在逻辑错误,当条件产生些许变化时,在硬件上就可能触发此类逻辑错误。
  2. 如果您有 RTL 内核,请在调试模式下运行应用,确保内核仿真中没有“X”(未驱动的值)。这表示存在错误代码,可能在硬件中能正常运行,但在仿真中将运行失败并出现意外行为。如果内核是由 HLS 生成的,请确认所有变量都已初始化为相应的值。
  3. 确保硬件仿真中内核处理的数据量小于仿真在合理时间内能够完成的量。否则,可能导致应用永久运行或者“挂起”。在此案例中,在硬件仿真中运行应用时,请在主机应用控制台中查找 INFO: [Vitis-EM 22] 消息。检查在全局存储器上读取或写入的数量是否不断增加:
    1. 如果 RD/WR 数据量不断增加,这表明应用和硬件执行正在正常进行中。应用未挂起,但耗费较长时间才能完成。这可能是由于数据大小较大或者由于内核执行存储器读写的方式效率较低。应用和内核需进行最优化。
    2. 如果在连续消息中 RD/WR 数据量未增加,这表明仿真正在运行,但硬件中某处存在死锁,可能在内核内部或者在平台其余部分。复查位于内核边界处、互连(例如,sdx_memss)处以及其它位置的 AXI 传输事务,确认是否存在未完成的传输事务,或者是否内核正在生成任何传输事务。
  4. 以波形模式运行硬件仿真,同样复查时间线轨迹。通过观测内核的 AXI4-Lite 接口上的流量或者通过观测内核的输出中断来确认内核是否处于“已启动”和“已完成”状态。
  5. 复查 xrt.ini 文件[Emulation] 部分,启用相应的设置,这些设置有助于缩小应用或内核中的问题范围。