Extracting Throughput and Latency Estimates using Python CLI - 2024.2 English - UG1702

Vitis Reference Guide (UG1702)

Document ID
UG1702
Release Date
2025-01-15
Version
2024.2 English

Average throughput for all the PLIOs are calculated and displayed at the end of AI Engine simulation. If you generate a VCD file during the simulation, it can also provide estimates for continuous throughput and latency.

Vitis IDE offers Python based APIs to extract these estimates. The following python code extracts throughput and latency including continuous throughput and latency into a csv file.

See Python API: Managing Vitis IDE Components for more details on using the Python CLI to create and manage components in the IDE.

See Latency and Throughput Estimates for more details on throughput and latency estimates after AI Engine simulation.

#vitis -s <this python file>
import vitis

#Create Vitis server for python front end
client = vitis.create_client()

#initialize vitis_analyzer summary obj
summary = client.get_vitis_analyzer("filter_latency/aiesimulator_output/default.aierun_summary")

#export Latency table as csv file
summary.export_aiesim_latency("latency.csv", overwrite=True)

#export Throughput shown in I/O and ports table
summary.export_aiesim_throughput("throughput.csv")

#export continuous throughput for each graph iteration for I/O port
summary.export_aiesim_continuous_throughput("PLIO_i_0", 4, "plio1.csv", overwrite=True,     is_cycle_interval=False, is_equal_time_interval=False,is_graph_iteration=True)

#export continuous throughput for a Kernel port
summary.export_aiesim_continuous_throughput("aie_dut.filter.filter_kernel_ins/sig_i", 4, "sig_i_throughput.csv", overwrite=True, is_cycle_interval=False, is_equal_time_interval=False, is_graph_iteration=True)

#export continuous latency for a Kernel port pair
summary.export_aiesim_continuous_latency("aie_dut.filter.filter_kernel_ins/sig_o", "aie_dut.filter.filter_kernel_ins/sig_i", 4, "sig_i_latency.csv", overwrite=True, is_cycle_interval=False)

plotdata = []
summary.get_aiesim_continuous_throughput("PLIO_i_0", 10, plotdata, True)
summary.get_aiesim_continuous_latency("PLIO_o_0", "PLIO_i_0",  10,  plotdata, False)

summary.get_aiesim_continuous_latency("aie_dut.filter.filter_kernel_ins/sig_o","aie_dut.filter.filter_kernel_ins/sig_i",  10,  plotdata, False)

# Close the client connection and terminate the vitis server
vitis.dispose()