The Vitis compiler is capable of creating very efficient implementations. In some cases, however, implementation issues can occur. One such case is if a write request is emitted before there is enough data available in the process to complete the write transaction. This can cause deadlock conditions when multiple concurrent kernels are affected by this issue and the write request of a kernel depends on the input read being completed.
To avoid these situations, a conservative mode is available on the adapter. In
principle, it delays the write request until it has all of the data necessary to
complete the write. This mode is enabled during compilation by applying the following
--advanced.param
option to the v++
compiler:
--advanced.param:compiler.axiDeadLockFree=yes
Because enabling this mode can impact performance, you might prefer to use this as a defensive programming technique where this option is inserted during development and testing and then removed during optimization. You might also want to add this option when the accelerator hangs repeatedly.