死锁检测 - 2022.1 简体中文

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

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

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

您可在 x86simulator 上使用 --stop-on-deadlock 选项以检测此类死锁。该选项会启用 x86simulator 以自动检测各类死锁、停止仿真并打印消息,声明由于检测到死锁而提前终止仿真。以 --stop-on-deadlock 选项调用 x86simulator 后,x86simulator 会检测死锁并生成死锁诊断报告。

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

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