AI Engine designs can experience simulator hangs. The following list includes some common causes:
- Insufficient input data for the specified number of iterations.
- Mismatched production and consumption rates in stream data.
- Cyclic dependencies with streams.
- Cascade streams or asynchronous buffers.
- Incorrect order of blocking protocol calls, such as, acquisition of asynchronous buffers or read/write from streams.
The aiesimulator option --hang-detect-time=<time_in_ns> checks for hang
situations on kernels and triggers an exit of the simulation after a specified
delay. It can detect lock stalls and stream stalls, whether it is circuit switched
or packet switched communication. By default, aiesimulator runs with –hang-detect-time=100000 (100000 ns). To turn off the hang detection,
set –hang-detect-time=-1.
Below are some examples of hang detection output.
Figure 1. Stream Stall Detection
Figure 2. Lock Stall Detection
Note: For larger designs, run
aiesimulator with a
hang detection value suitable for the design.