This section shows you how to debug PL kernels in the Vivado logic simulator.
In the Vitis IDE, launch hardware emulation using Vitis -> Start/Stop Emulator.
Enable Show Waveform, and select Start.
Vivado XSIM starts in standalone mode. Parallelly, observe messages in the Vitis IDE Emulation Console.
Click Run in the Vivado XSIM GUI taskbar. Observe Linux bootup in the Vitis IDE Emulation Console.
Observe data in XSIM while Emulation Console messages update in the Vitis IDE GUI.
After processing completes, the Vivado XSIM Tcl Console shows the following messages:
Info: (I804) /IEEE_Std_1666/deprecated: the notify() function is deprecated use sc_event::notify() // Interrupt Monitor : interrupt for ap_done detected @ "117153000" // Interrupt Monitor : interrupt for ap_ready detected @ "117153000" // Interrupt Monitor : interrupt for ap_done detected @ "118292000" // Interrupt Monitor : interrupt for ap_ready detected @ "118292000" // Interrupt Monitor : interrupt for ap_done detected @ "118478000" // Interrupt Monitor : interrupt for ap_ready detected @ "118478000" $stop called at time : 157304 ns run: Time (s): cpu = 00:00:36 ; elapsed = 00:03:57 . Memory (MB): peak = 13910.660 ; gain = 135.137 ; free physical = 23585 ; free virtual = 54027
The following messages appear in the Vitis IDE DEBUG CONSOLE.
XAIEFAL: INFO: Resource group Avail is created. XAIEFAL: INFO: Resource group Static is created. XAIEFAL: INFO: Resource group Generic is created. Input memory virtual addr 0x0xffff7fb56000x Output memory virtual addr 0x0xffff7fb55000x Output memory virtual addr 0x0xffff7fb54000x run mm2s run s2mm graph run graph end After MM2S wait After S2MM_1 wait After S2MM_2 wait TEST PASSED
Observe the waveform in the Vivado XSIM GUI. The system contains one
mm2scompute unit and twos2mmcompute units. You can see them in the waveform viewer as follows:To group signals, right-click anywhere in the Name column, and select New Group. Add all the MM2S and S2MM-related signals to this group by dragging them correspondingly.
Zoom into the waveform window to locate transactions.
The
m_axi_gmemis the transaction level signal, which indicates theReadtransaction inmm2sandwritetransaction ins2mm.The
TDATAinmm2sshows the data read into the AI Engine module. To correlate with the number of iterations (seven) specified in the graph, observeTREADYgoing high when the AI Engine module is ready to read, andTVALIDgoing high for all read transactions.Similarly, in
s2mm_1, theTVALIDindicates valid data.TLASTgoes high at the end of each iteration and goes low at the start of the next iteration.Use this method to verify correct data movement to and from the AI Engine.