评估 FIFO 深度以打破死锁 - 2023.2 简体中文

AI 引擎工具和流程用户指南 (UG1076)

Document ID
UG1076
Release Date
2023-12-04
Version
2023.2 简体中文

系统发生死锁时,在设计中添加 FIFO 可能有用。在简单的系统中,您可从设计推断 FIFO 大小,并执行手动静态分析。但您无从知晓 main_init()main() 以及 kernel 开始时耗费的精确时钟周期数。

该工具会从 AI 引擎仿真起为您计算这些 FIFO 长度。您可以使用 aiecompiler 搭配 --evaluate-fifo-depth 标志编译计算图。该选项会在所有相关路径上生成无限 FIFO。

完成代码编译后,利用 aiesimulator 运行独立 AI 引擎仿真。接近仿真开始时,您将收到如下警告:
[CRITICAL WARNING]: Design was compiled with --evaluate-fifo-depth option, before deploying the design on hardware compile without --evaluate-fifo-depth option.
  1. 打开 Vitis Unified IDE 并打开仿真 run_summary
  2. 记录 Estimated FIFO 列,并对特定信号线使用 fifo_depth 约束来应用建议的 FIFO 数。
注释: 此功能对于 AI 引擎机器学习设计不可用。
图 1. Vitis Unified IDE
在“Estimated FIFO (Words)”列中会给出估算的 FIFO 深度。您可在计算图中使用以下语法搭配这些值来插入含指定长度的 FIFO:
fifo_depth(net) = value;
其中,net 是您要在其中插入 FIFO 的连接。