UltraZohm Setup


  • Installed Xilinx toolchain (Vivado and Vitis)

  • Installed Java

  • Vivado license

  • Installed git

  • Bitbucket account

  • (Optional) Sourcetree


  • Setup the physical connections of the UltraZohm

  • Clone the UltraZohm Repositories

  • Generate the bitstream with Vivado

  • Generate the Vitis workspace

  • Program the UltraZohm

  • Debug the UltraZohm

  • Connect the Javascope to the UltraZohm

Clone the UltraZohm Repositories

  • Create a folder ultrazohm

  • Use git bash / terminal to clone the repositories

git clone https://bitbucket.org/ultrazohm/ultrazohm_sw.git

After executing the git clone commands, the following directory structure exists.


Generate the bitstream with Vivado

Open the block design

To generate the bitstream in Vivado, open Vivado by double-clicking it.

  • Open the project in File -> Project -> Open

  • Choose the file ~/ultrazohm/ultrazohm_sw/vivado/project/ultrazohm.xpr

  • The project initializes

  • Check if a valid Vivado license exists in Help -> Manage License -> View License Status

  • Click Open Block Design

  • The Block Design is opened (takes several minutes)

../../_images/1_open_project.png ../../_images/2_open_xpr.png ../../_images/3_init_project.png ../../_images/4_project_opened.png ../../_images/5_check_license.png ../../_images/6_license_manager.png ../../_images/7_open_block_design.png ../../_images/8_opened_block_design.png

Generate Bitstream

  • Click on Generate Bitstream

  • Click Yes to launch synthesis and implementation

  • Choose the number of CPU jobs/cores that should be used by Vivado (leave a few unused, e.g., for your OS etc.)

  • Launch the run(s) by clicking Ok

  • The bitstream is generated. This takes 20 to 60 minutes, depending on your PC!

  • Open the implemented design after the bitstream generation is completed


More CPU jobs decrease the time Vivado needs to generate the bitstream. However, Vivado requires more RAM for a higher number of jobs. If you run out of RAM and your OS writes to the disk (paging file or swap), decrease the number of jobs!

../../_images/1_gen_bitstream.png ../../_images/2_impl_results.png ../../_images/3_launch_run.png ../../_images/4_starts.png ../../_images/5_generated.png ../../_images/6_open_design.png

Export Bitstream

  • Export the bitstream in File -> Export -> Export Hardware

  • Choose Fixed

  • Choose Include bitstream

  • Choose the path to which the bitstream will be exported

  • Path: ~/ultrazohm/ultrazohm_sw/vitis/vivado_exported_xsa

  • Override the existing file

  • Vivado exports the file

../../_images/1_export.png ../../_images/2_export_fixed.png ../../_images/3_inc_bitstream.png ../../_images/4_choose_path.png ../../_images/5_path.png ../../_images/6_next.png ../../_images/7_override.png ../../_images/8_finish.png ../../_images/9_load.png

Export Bitstream tcl-script

A TCL script can be added to the Vivado icons to automate the process of exporting the bitstream since it is a common task.

  • Tools -> Custom Commands -> Customize Commands

  • Click on the plus and enter a name, e.g., export_xsa

  • Click on Source Tcl file

  • Path: ~/ultrazohm/ultrazohm_sw/tcl_scripts/vivado_export_xsa.tcl

  • Click ok


Generate the Vitis workspace

  • See pictures below for all steps!

  • Navigate to ~/ultrazohm/ultrazohm_sw/vitis/software/Baremetal/src/uz

  • Copy the file default_uz_global_configuration.h (same folder)

  • Rename the file to uz_global_configuration.h


Do not rename the file directly! Copy the file and rename the copy!


You probably have to adjust the UltraZohm version in uz_global_configuration.h by setting the define UZ_HARDWARE_VERSION to your version (e.g., 2U, 3U, 4U, …)

  • Open Vitis or launch Vitis from Vivado (Tools -> Launch Vitis IDE)

  • Choose the workspace

  • Path: ~/ultrazohm_sw/vitis/workspace

  • Open the XSCT Console in Vitis: Windows -> Show view... -> XSCT Console

  • Type the following commands

cd [getws]
source {../../tcl_scripts/vitis_generate_UltraZohm_workspace.tcl}
  • The script runs for several minutes

  • The script displays generate_UltraZohm_workspace.tcl script finished…

../../_images/1_launch_vitis_vivado.png ../../_images/2_workspace.png ../../_images/4_xstc_console.png


If the XSCT console is still not visible, press the restore button.

../../_images/5_build_workspace.png ../../_images/6_sucess.png


After the script has finished and the workspace has been build, restart Vitis by clicking on File -> Restart . This is recommended, because otherwise the pre-defined debug configurations are not visible. This is only necessary after the initial build of the workspace. For subsequent uses of the workspace, the debug configurations will be visible without additional steps.


Physical Setup of the UltraZohm

  • Connect the UltraZohm to the grid

  • Connect the Ethernet to your PC

  • Connect the USB (JTAG) to your PC

  • For UltraZohm Carrier Board 3v00: Plug an external stop or the external stop dummy into the front panel

  • For UltraZohm Carrier Board Rev04: An external stop / dummy is not required

  • Turn on the UltraZohm

  • All four LEDs are turned on


Program (Debug)

  • Click on the red-marked windows to see the design perspective in Vitis.

  • Click the arrow next to the debug-icon and choose Debug Configurations .

  • Choose the appropriate debug config. If the debug configurations are not visible, follow the advice here .


There are two different debug configurations:

  • To debug the code and use breakpoints, click on the debug-icon (red) and select the Debug-UltraZohm config.

  • To run the code and ignore all breakpoints, click on the run-icon (green) and select the Run-UltraZohm config.

  • Click on Debug .

  • After the first debug run, it is sufficient to click the debug-icon.

  • Start all processors (click on the play button).

../../_images/1_vitis_show_design.png ../../_images/2_debug.png ../../_images/3_start_debug.png


  • Setup the network settings of the Ethernet adapter, which is connected to the UltraZohm

  • See GUI

  • Go to the folder

  • Start the Javascope