Python Automated ILA Capture via JTAG or Subprocess
I am aiming to create a fast way to receive ILA data for processing in Python. I have a debug core hooked up to the output of a data converter. This core will gather N samples via AXI Stream. I want to export those N samples to my client computer.
From my Python script, I am calling a bash script and a tcl script to start Vivado Hardware Manager, run an ILA capture, and export the data to a CSV. The CSV is then parsed in Python to a numpy for further analysis.
The current implementation is very slow, since Vivado and the HW Manager has to be started for each set of ILA captures.
I can get around using the Vivado HW Manager by issuing the JTAG commands directly from my Python script to arm, trigger, and capture data from the ILA core.
I can keep an instance of Vivado HW Manager open in a separate subprocess and send commands to that subprocess from the main Python instance.
Is Solution #1 feasible? Where can I find documentation for the ILA-related JTAG commands?
Is there a better way to execute Solution #2?
What other solutions are available to address the Current Problem?