Skip to content

fermi-ad/xilinx-docker

Repository files navigation

xilinx-docker

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.

About the layered image approach

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.

Host OS Setup

This repository requires installation and configuration of Docker-CE (and other support tools such as python, xterm, ...) on your host machine.

Ubuntu Host Support

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.

Windows 10 Host Support

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.

Docker Image Recipe Overview

About Ubuntu Image Point Releases and Base Image Tarball Availability

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

Ubuntu Images

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

Xilinx User Images (Manual Tool Installation)

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

Xilinx Tool Images (Manual Tool Installation)

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

Xilinx User Images (Automated/Scripted Tool Installation)

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

Automated Image Build Times

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

Workflow overviews

The recipes in this repository support two separate development environment creation workflows.

Manual Xilinx Tool installation

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.

Manual Xilinx Tool installation quickstart

For the latest v2024.1 Xilinx Tools:

Automated Xilinx Tool installation

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.

Older v2021. Automated Tool Installation Example

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.

Automated Xilinx Tool installation quickstart (Older v2021.2)

For the latest v2021.2 Xilinx Tools:

About

No description, website, or topics provided.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published