This page describes how to use and contribute to the UltraZohm project and serves as a guideline on how to onboard new developers. The page mostly curates the documentation. You should start here and follow the steps one by one.
How to use the UltraZohm
The toolchain for the UltraZohm project consists of multiple tools. Please install all of them in the newest version, except for the Xilinx toolchain which is required in the specified version.
Community & git
The UltraZohm project is a community based open source project and the repository is hosted on Bitucket. We use Slack as our primary communication channel. Follow these steps to join the community and understand how git works.
Join the Slack channel by asking a community member for an invite or request access by mail (firstname.lastname@example.org)
Create a Bitbucket account on the bitbucket homepage
Ask for your Bitbucket account to be added as a User in Bitbucket in the Slack channel
Read Project structure to get familiar with the naming conventions and structure of the community
Complete the Atlassian git tutorials to familiarize yourself with the Bitbucket workflow and git:
Using and understanding how git and Bitbucket work are mandatory for working with the UltraZohm!
UltraZohm Setup & tutorials
The following steps set up your UltraZohm and provide tutorials to use different functions of the system.
Refer to System Overview to get a high level idea what the UltraZohm is about.
Refer to Platform Architecture to get a better understanding of the UltraZohm platform.
Follow the UltraZohm Setup guide to setup a local workspace.
Complete the UltraZohm Tutorials.
Your UltraZohm is now set up and ready to be used. Explore the documentation for more information. Some useful places to start:
How to contribute
Make your first contribution
These steps will grant you write access to the repository and you will make your first contribution to the UltraZohm project. Note that not every user is required to become a contributor, but everybody is encouraged to do so! Please complete the steps if you are planning to contribute to the project. You will make your first contribution by adding yourself to the list of List of contributors in the following steps.
Read Contribution Workflow to understand the UltraZohm workflow (git flow)
Read the UltraZohm specific documentation for Bitbucket
Request access to the contributor user group by asking in the Slack channel (see Project structure)
Create a new feature branch in Bitbucket with the name
Open the repository with the VS Code Remote Container
Build the documentation by invoking
make docs(see How to docs for reference)
Add your name to the
contributors.rstfile located at
Save the file and build the docs again, confirm that there are no warnings
Commit the changed file with a descriptive commit message (e.g., Added MaxMustermann to the contributors list)
Push your commit to the remote repository
The Continuous Integration will run. Do not worry, you can not break anything in this step! If there are errors, inspect the log or ask in the Slack channel
Create a pull-request and assign a maintainer as reviewer (ask in the Slack channel if you are not sure)
A maintainer will review your change, accept the PR, and merge it
You now contributed to the UltraZohm project for the first time!
Contribution to MPSoC Software
Contribution to MPSoC FPGA
Contributions to the FPGA can either be an IP-Core or structural changes to the default Vivado project.
Changes to the Vivado project (everything in
ultrazohm_sw/vivado) can not be merged into the project by creating a pull request! If you plan on changing the Vivado project you have to get in touch with the maintainers in Slack.
Refer to Altium.
The UltraZohm project uses a Xilinx Zynq UltraScale+ MPSoC.
A good starting point for the development of the Xilinx Zynq UltraScale+ MPSoC is Exploring Zynq® MPSoC
This book walks the reader through all the important aspects of the Xilinx software stack, the multi-processor processing system, and the powerful array of programmable hardware.
Useful documents include: