死锁检测 - 2023.2 简体中文

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

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

AI 引擎用户可能会遇到仿真器挂起。常见原因是对于所请求的计算图迭代次数,输入数据不足;串流数据的生成和耗用之间存在不匹配;与串流、级联串流或异步窗口之间存在周期依赖性,或者阻塞协议调用(获取异步窗口、读/写串流)顺序错误。

x86 仿真器将自动检测死锁,除非指定了 --disable-stop-on-deadlock 选项。如果检测到死锁,则停止仿真,并打印死锁诊断报告。

此外,在 x86simulator_output/simulator_state_post_analysis.dot 中会生成计算图。此 .dot 文件会对计算图中有关模块框图的描述进行解码,在此模块框图中会以红色高亮显示死锁中所涉及的代理。要将此文件转换为 .png 文件,必须使用 dot 程序,如下所示。

dot -Tpng x86simulator_output/simulator_state_post_analysis.dot > simulator_state_post_analysis.png
重要: x86 仿真中不含死锁并不意味着 SystemC 仿真中也没有死锁。X86 仿真并不会对时序和资源约束进行建模,因而可能导致死锁的因素更少。另一方面,如果 x86 仿真发生死锁,SystemC 仿真也会发生死锁,因此先修复 x86 仿真中的死锁再继续 SystemC 仿真是很有益的。
注释: 软件仿真或者含外部测试激励文件的用例不支持 --disable-stop-on-deadlock 选项。
Vitis IDE 中可直观显示死锁的文本描述:
图 1. “Analysis”视图中的死锁诊断