Example 2: Hamming distance (multi-function) ============================== Continuing from our initial example, we now delve into a more complex scenario involving multiple functions using the Hamming distance kernel, sourced from the `Vitis HLS Introductory Examples github repository `_. This tutorial setup includes HLS source files (hamming_window.c, hamming_window.h), and testbench files (hamming_window_test.c), along with a similar hls.tcl script configuration as previously described. Run RealProbe -------------------- To integrate RealProbe and override the default Vitis HLS functions, execute the following command: .. code-block:: make realprobe Deploy on FPGA -------------------- After RealProbe has been run, a directory named ``FPGA`` is created in your project directory. This folder contains all files necessary for on-board execution, including an automatically generated Jupyter Notebook which captures the RealProbe results but excludes the software implementation for functional verification. Navigate to the ``FPGA`` directory on the Synestia Pynq-Z2 FPGA Jupyter server and execute the notebook commands using ``Shift + Enter``. RealProbe Output Results -------------------- Upon running the RealProbe output section in the notebook, observe the following performance metrics: .. image:: ../img/ex2_realprobe_out.png :alt: Compare with Co-sim results -------------------- The operation as captured by RealProbe resulted in a total of 950 cycles. In contrast, the Co-simulation report, accessible at ``$project_name/$solution_name/sim/report/$topmodule_name_cosim.rpt``, records a slightly lower count of 892 cycles. .. image:: ../img/ex2_cosim_rpt.png :alt: This discrepancy highlights a -6.5% difference between the Co-simulation and actual on-FPGA results. This example shows RealProbe for accurate performance analysis, especially when dealing with complex multi-function FPGA designs.