Do you need traceable, repeatable build environments for your Xilinx Development Tools?
This repository provides a collection of recipes and tools that enable Xilinx FPGA-based embedded development workflows in docker-ce containers. Use the container recipes to build docker containers from scratch (not using existing base containers) that run Xilinx FPGA Development Tools.
Docker images are layered (generically) as follows:
-
[Base OS Image]
--> [User OS Image]
--> [Xilinx Tool Image]
-
The
[Base OS Image]
contains a basic root filesystem that supports package management and command line interaction. -
The
[User OS Image]
contains all dependencies and configurations to install and use of Xilinx tools in the container. -
The
[Xilinx Tool Image]
contains the complete installation of the Xilinx development tool.
This repository requires installation and configuration of Docker-CE (and other support tools such as python, xterm, ...) on your host machine.
The recipes, tools and documentation in this repository were previously developed using an Ubuntu-based Host OS, but are now developed primarily under Redhat 8.x/9.x.
While Linux is the preferred Host OS environment for leveraging the content in this repository, Docker-CE can be configured to run on Windows 10. There are some limitations that can impact usability in a Windows environment, including lack of native EXT-based filesystem support which poses challenges using Petalinux and Yocto tools in Docker containers on a Windows Host.
While the content in this repository has been developed primarily targeting an Ubuntu-based Host, some of recipes, tools and documentation have been reworked to provide example workflows that can be used in a Windows 10 environment.
Windows 10 adaptation of recipes, tools and documentation can be found in the ./recipes-windows/ folder.
Ubuntu provides Base Image tarballs for each point release during active standard support for an LTS release. See: ubuntu-base/releases.
Interim/older point releases for an LTS version are periodically removed from the Ubuntu image archive so there is no guaranteed availability of point release base images. This makes the base image tarball a poor choice for creating and maintaining base docker images for long-term development environment maintenance, unless you keep your own archive of these base release images.
Recipes have been added to this repository to offer the option of creating and using the release ISO installer for point releases as the base for docker image creation. See: old-releases.ubuntu.com/releases
These are the Base Ubuntu OS Images used for tool installations. There are two sizes listed based on if the image is generated from a base tarball release or an iso installer image. Note: Base tarball releases will not be included going forward, since Canonical is no longer providing these for older releases.
Ubuntu Release | Base ISO Image | Base Image |
---|---|---|
20.04.5 | 974MB | N/A |
20.04.4 | 946MB | N/A |
20.04.3 | 909MB | N/A |
20.04.1 | 267MB | 72.9MB |
18.04.5 | 670MB | 63.2MB |
18.04.2 | 243MB | 88.3MB |
18.04.1 | 238MB | 83.5MB |
16.04.4 | 203MB | 112MB |
16.04.3 | 210MB | 120MB |
These user images include a tool-compatible Ubuntu OS installation and all (known) base Xilinx tool dependencies for that release. Xilinx tools are installed and configured manually by each user to create the final user image.
Image sizes in this table reflect images created from the Base ISO Image.
User Image Sizes:
Xilinx Release | Ubuntu Release | User Image |
---|---|---|
v2024.1 | 20.04.4 | 2.98GB |
v2023.2 | 20.04.4 | 2.98GB |
v2023.1 | 20.04.4 | 2.97GB |
v2022.2 | 20.04.4 | 2.84GB |
v2022.1 | 18.04.5 | 2.69GB |
v2021.2 | 18.04.5 | 2.63GB |
v2021.1 | 20.04.1 | 2.80GB |
v2021.1 | 18.04.5 | 2.63GB |
v2020.2 | 20.04.1 | 2.11GB |
v2020.2 | 18.04.2 | 2.31GB |
v2020.1 | 18.04.2 | 2.31GB |
v2019.2 | 18.04.2 | 2.31GB |
v2019.1 | 18.04.1 | 2.26GB |
These user images include a tool-compatible Ubuntu OS installation with tool specific dependencies and the complete suite of Xilinx tools for that tool release pre-instaled.
New ISO Based Images:
Xilinx Release | Ubuntu Release | Petalinux + Vitis |
---|---|---|
v2024.1 | 20.04.4 | 170GB |
v2023.2 | 20.04.4 | 184GB |
v2023.1 | 20.04.4 | 184GB |
v2022.2 | 20.04.4 | 154GB |
v2022.1 | 18.04.5 | 144GB |
v2021.2 | 18.04.5 | 136GB |
These user images include a tool-compatible Ubuntu OS installation with tool specific dependencies and the Xilinx tool pre-installed. Xilinx tool installation is automated to support offline/archival and automation of development environment creation. These images are slightly larger (by default) than the manually created counterparts due to the storage used for intermediate build staging during creation of these images. These recipes are provided as examples and can further be optimized for size before deployment in your environment if necessary.
New ISO Based Images:
Xilinx Release | Ubuntu Release | Petalinux | Vivado | Vitis | SDK |
---|---|---|---|---|---|
v2024.1 | 20.04.4 | 14.4GB | [][] | [][] | N/A |
v2023.2 | 20.04.4 | 15.6GB | [][] | [][] | N/A |
v2023.1 | 20.04.4 | 15.6GB | [][] | [][] | N/A |
v2022.2 | 20.04.4 | 15.6GB | [][] | [][] | N/A |
v2022.1 | 20.04.4 | 15.6GB | [][] | [][] | N/A |
v2021.2 | 18.04.5 | 15.6GB | 80.9GB | 123GB | N/A |
v2021.1 | 18.04.5 | 15.3GB | 41.2GB | 88.7GB | N/A |
v2020.2 | 18.04.2 | 12.4GB | 70.6GB | 80.5GB | N/A |
v2020.1 | 18.04.2 | 10.9GB | 52.2GB | 71.5GB | N/A |
v2019.2 | 18.04.2 | 18.7GB | 41.2GB | 56.6GB | N/A |
Base RootFS Release Based Images:
Xilinx Release | Ubuntu Release | Petalinux | Vivado | Vitis | SDK |
---|---|---|---|---|---|
v2020.1 | 18.04.2 | 10.9GB | 52.3GB | 71.3GB | N/A |
v2019.2 | 18.04.2 | 18.4GB | 40.9GB | 55.2GB | N/A |
v2019.1 | 18.04.1 | 16.5GB | 35.2GB | N/A | 9.96GB |
v2018.3 | 16.04.4 | 15.9GB | 43.4GB | N/A | 10.6GB |
v2018.2 | 16.04.3 | 16.2GB | 40.3GB | N/A | 10.4GB |
These build times are approximate, rounded to the nearest minute and reflect one particular build machine configuration. Note: v2020.x and earlier builds were performed on an i7-5820k based machine Note: v2021.x and later build were performed on a ryzen9-5950x based machine
Xilinx Release | User Image | Petalinux | Vivado | Vitis | SDK |
---|---|---|---|---|---|
v2021.2 | 4 min | 05 min | 1 hr 12 min | 2 hr, 01 min | N/A |
v2021.1 | 7 min | 10 min | 0 hr 49 min | 2 hr, 57 min | N/A |
v2020.2 | 9 min | 7 min | 2 hr 13 min | 2 hr, 45 min | N/A |
v2020.1 | 6 min | 5 min | 54 min | 2 hr, 25 min | N/A |
v2019.2 | 6 min | 9 min | 39 min | 55 min | N/A |
v2019.1 | 6 min | 8 min | 27 min | N/A | 4 min |
v2018.3 | 5 min | 11 min | 26 min | N/A | 4 min |
v2018.2 | 5 min | 13 min | 25 min | N/A | 4 min |
The recipes in this repository support two separate development environment creation workflows.
The goal of this workflow is to quickly setup and start using Xilinx tools in Docker containers.
This workflow consists of:
- Scripted creation of the base OS with tool dependencies pre-installed.
- Manual installation of Xilinx Tools.
- Committing changes to local repository to create a new images including the Xilinx tools pre-installed.
For the latest v2024.1 Xilinx Tools:
- Build a base Ubuntu Docker Image
- Build an Ubuntu User Image
- Manually install the Xilinx Tools
Note: Automated installation examples are not being maintained for newer tools due to execution time making it impractical to spin up docker containers with tool installation on the fly
It is recommended to generate images with manual tool installations and cache these images for CI/CD workflows.
Please refer to older tools (v2021.2) for examples on automating tool installation. The goal of the automated workflow is to automate creation of docker containers with Xilinx tools pre-installed. This workflow requires the pre-generation of installation dependencies (configuration files) used by the automated image build. The pre-generation of dependencies is a semi-automated, scripted process but does require user interaction during the process.
This workflow consists of:
- Dependency Generation
- Scripted generation of OS configuration dependencies used in the automated scripting of Xilinx tool installation.
- This requires user input and generates OS and Xilinx installer configuration files.
- Automated Image Build
- Scripted createion of the nase OS with tool dependencies pre-installed.
- Scripted installation of Xilinx Tools.
- Results in a Docker image stored in the local repository.
For the latest v2021.2 Xilinx Tools:
- Build a base Ubuntu Docker Image for 18.04.5
- Build an Ubuntu User Image
- Generate install configurations and dependencies
- Build Docker images with Xilinx Tools pre-installed