Table of Contents
- Environment Setup
- Starting Up The Container
- Starting Up Xilinx ISE 14.7
Running ISE inside of a virtual machine ensures a great deal of compatibility. However, there is additional overhead due to the virtualized hardware. If instead, you can run ISE out of a lightweight container, then the ISE UI will be more responsive and the overall experience will be better.
To install Xilinx ISE 14.7 in a Docker container, you will need to extract the files from the Xilinx installation material. Check out this article on how to grab the files from Xilinx’s latest Win10 download.
You would need to install Docker on Mac OS X or Linux. Best way to get Docker onto your workstation is via the latest instructions from Docker itself:
Same story with Docker Compose:
For my docker container, I will be basing it on Ubuntu 20.10. I will also be making use of a folder from the host to provide the Xilinx ISE files.
# Using Ubuntu 20.20 base image FROM ubuntu:20.10 # Ensure that package installations won't prompt docker while building image ENV DEBIAN_FRONTEND=noninteractive RUN apt-get -y update # Install Java JRE/JDK RUN apt-get -y install openjdk-11-jre openjdk-11-jdk # Install build and cross-build environments. RUN apt-get -y install build-essential crossbuild-essential-armel crossbuild-essential-riscv64 crossbuild-essential-powerpc crossbuild-essential-arm64 crossbuild-essential-armhf crossbuild-essential-mips crossbuild-essential-mips64 # Tools for grabbing, decompressing, and extracting RUN apt-get -y install wget screen curl htop ncftp unzip unrar cabextract unshield # Graphical environment support. Mainly for the X11 bits RUN apt-get -y install xterm RUN apt-get -y install openssh-client openssh-server RUN apt-get -y install net-tools vim inetutils-ping EXPOSE 9922 22 COPY ./startup.sh /startup.sh RUN chmod 700 /startup.sh CMD ["/opt/startup.sh"]
This will build a Docker image that makes use of Ubuntu 20.10, installs various support packages. I include Java and the crossbuild tools since there is a possibility I might do some embedded code compilation. The other tools are for extraction of files from the ZIP/OVA/VMDK.
startup.sh referred to in the Dockerfile is:
#!/usr/bin/env bash /etc/init.d/ssh start while : do sleep 20 done
Basically, make sure
ssh is started up and then run in a loop until we are ready to make use of the instance.
It would be a good idea to add in ssh-keys as well, so you can login without too much trouble.
With the Dockerfile from above, you can configure the externally mounted folders as well as ports:
version: "3.9" services: xilinx: build: . ports: - "9980:80" - "9988:8080" - "9922:22" volumes: - "./installmedia:/installmedia" - "./runtime/opt:/opt" network_mode: bridge
I have some cruft there from debugging. But the expectation is that the
/opt folder in the container is actually a folder shared from the host. In this case, from the
./runtime/opt folder, which will contain the extracted Xilinx ISE
Starting Up The Container
If everything has been setup, the container should fire up and stay up when you start it using
docker-compose up -d
If this doesn’t work ,them you have some debugging to do. 🙂 But the files above are pretty straightforward.
Starting Up Xilinx ISE 14.7
With the way I have things setup above, the ISE application will run as a normal Linux application and expects an X11 environment to display on. If you are on a Linux system with a GUI, you are already halfway there.
# On the Host System xhost +localhost ssh -X ubuntu@localhost -p 9922 # After you are SSH'd in, you can then run ISE source /opt/Xilinx/14.7/ISE_DS/settings64.sh ise
Mac OS X
# On the Host System # Start XQuartz # From xquartz terminal xhost +localhost ssh -X ubuntu@localhost -p 9922 # After you are SSH'd in, you can then run ISE source /opt/Xilinx/14.7/ISE_DS/settings64.sh ise
The Xilinx ISE should show up on your host/laptop/etc. The
localhost assumes the Docker container is running on your laptop/desktop locally. If not, then use the IP address or hostname of the machine with the Docker container running.
If your Docker container’s port 9922 isn’t accessible for some reason, you can always tunnel out from the container to the host:
# On the machine with the Docker instance... could be the main host. # Run from the docker-compose folder you have put the config files in. # Start a shell in the container docker-compose exec xilinx bash # This will forward port 9922 on the host(HOSTIP) you want the UI to show up on. ssh -R9922:localhost:22 HOSTIP
Now, you can run the above commands replacing localhost with the remote host, if not on the same machine.
At this point, the only thing you need to add to the Dockerfile will be the
xilinx.lic file you will need to get from Xilinx, so you can run your copy of Xilinx ISE 14.7.
For Extracting Installation Media from Xilinx ISE 14.7 Downloads
You can check out this article on how to get the installation media from the Xilinx ISE 14.7 downloads.