Added docker to ease compilation

This commit is contained in:
Philip Smart
2021-05-07 10:30:02 +01:00
parent f9c8772704
commit f81cef78ed
12 changed files with 839 additions and 2 deletions

View File

@@ -0,0 +1,173 @@
#########################################################################################################
##
## Name: Dockerfile.13.0.1
## Created: June 2020
## Author(s): Philip Smart
## Description: A Docker build script to create an Ubuntu 16.04 OS with Quartus Prime 13.0.1
##
## Credits:
## Copyright: (c) 2019 Philip Smart <philip.smart@net2net.org>
##
## History: August 2019 - Initial module written.
## June 2020 - Need to use a CPLD MAX series device which is only supported in
## Quartus 13.
##
#########################################################################################################
## This source file is free software: you can redistribute it and#or modify
## it under the terms of the GNU General Public License as published
## by the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## This source file is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program. If not, see <http://www.gnu.org/licenses/>.
#########################################################################################################
# Ubuntu 16.04 as the base.
FROM ubuntu:xenial
# Maintainer!
MAINTAINER Philip Smart <philip.smart@net2net.org>
# Set build time environment variables.
ENV DEBIAN_FRONTEND=noninteractive
# Set constants for the build, more simpler to adjust these than the script if you want to change Quartus version.
# Uncomment one of the QUARTUS= arguments below depending on wether your using the LITE or STANDARD version of Quartus.
ARG TARGET_DOWNLOAD_DIR=/tmp/
ARG INSTALLATION_DIR=/opt/altera
ARG ALTERA_DOWNLOAD_SITE=http://download.altera.com/akdlm/software/acdsinst
ARG QUARTUS_VERSION_INSTALLER=/13.0sp1/232/ib_installers/
#ARG QUARTUS_VERSION_UPDATE=/13.0.1/232/update/
#ARG QUARTUS=QuartusSetup-13.0.1.232.run
ARG QUARTUS=QuartusSetupWeb-13.0.1.232.run
#ARG QUARTUS_UPDATE=QuartusSetup-13.0.1.232.run
ARG QUARTUS_PROGRAMMER=QuartusProgrammerSetup-13.0.1.232.run
ARG QUARTUS_HELP=QuartusHelpSetup-13.0.1.232.run
ARG QUARTUS_LINUX_SUPPORT_BIN=linux-socfpga-13.02-RC10-bin.tar.gz
ARG QUARTUS_LINUX_SUPPORT_SRC=linux-socfpga-13.02-RC10-src.bsx
ARG QUARTUS_DEVICE_FILES="arria_web-13.0.1.232.qdz cyclonev-13.0.1.232.qdz cyclone_web-13.0.1.232.qdz cyclone-13.0.1.232.qdz max-13.0.1.232.qdz"
# Base Ubuntu install, add necessary packages for Quartus, command line editting and web-browser.
RUN dpkg --add-architecture i386
RUN apt-get update
RUN apt-get install --no-install-recommends -y \
ca-certificates \
libstdc++6:i386 \
libc6:i386 \
libx11-dev:i386 \
libxext-dev:i386 \
libxau-dev:i386 \
libxdmcp-dev:i386 \
libfreetype6:i386 \
libxtst6:i386 \
libxi6:i386 \
fontconfig:i386 \
expat:i386 \
lib32ncurses5-dev \
libc6:i386 \
libcrypto++9v5 \
libfontconfig1 \
libglib2.0-0 \
libncurses5:i386 \
libsm6 \
libsm6:i386 \
libssl-dev \
libstdc++6:i386 \
libxext6:i386 \
libxft2:i386 \
libxrender1 \
libzmq3-dev \
libxext6:i386 \
libxrender-dev:i386 \
locales \
make \
openjdk-8-jdk \
pkg-config \
unixodbc-dev \
wget \
xauth \
xvfb \
net-tools \
x11-apps \
aptitude \
vim \
sudo \
firefox
# Setup environment defaults.
RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ENV EXEC_DIR ${INSTALLATION_DIR}
#
# UNCOMMENT PRODUCTION OR DEVELOPMENT ACCORDING TO REQUIREMENTS.
#
# PRODUCTION CYCLE, fetch files from Altera as needed.
RUN echo "Fetching ${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS}"
RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS}
#RUN echo "Fetching ${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_UPDATE}"
#RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_UPDATE}/${QUARTUS_UPDATE}
RUN echo "Fetching ${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_PROGRAMMER}"
RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_PROGRAMMER}
RUN echo "Fetching ${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_HELP}"
RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_HELP}
RUN echo "Fetching ${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_LINUX_SUPPORT_BIN}"
RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_LINUX_SUPPORT_BIN}
RUN echo "Fetching ${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_LINUX_SUPPORT_SRC}"
RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_LINUX_SUPPORT_SRC}
RUN for DEVICE_FILE in ${QUARTUS_DEVICE_FILES}; \
do \
echo "Fetching ${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${DEVICE_FILE}"; \
wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${DEVICE_FILE}; \
done
# DEVELOPMENT CYCLE, quartus files cached locally.
#COPY ./files/13.0/*.qdz ${TARGET_DOWNLOAD_DIR}
#COPY ./files/13.0/*.run ${TARGET_DOWNLOAD_DIR}
# Install Quartus.
RUN chmod +x ${TARGET_DOWNLOAD_DIR}${QUARTUS}
#RUN chmod +x ${TARGET_DOWNLOAD_DIR}${QUARTUS_UPDATE}
RUN chmod +x ${TARGET_DOWNLOAD_DIR}${QUARTUS_PROGRAMMER}
RUN chmod +x ${TARGET_DOWNLOAD_DIR}${QUARTUS_HELP}
RUN ${TARGET_DOWNLOAD_DIR}${QUARTUS} --mode unattended --installdir ${INSTALLATION_DIR}/ #--accept_eula 1
#RUN ${TARGET_DOWNLOAD_DIR}${QUARTUS_UPDATE} --mode unattended --installdir ${INSTALLATION_DIR}/ #--accept_eula 1
RUN ${TARGET_DOWNLOAD_DIR}${QUARTUS_PROGRAMMER} --mode unattended --installdir ${INSTALLATION_DIR}/ #--accept_eula 1
RUN ${TARGET_DOWNLOAD_DIR}${QUARTUS_HELP} --mode unattended --installdir ${INSTALLATION_DIR}/ #--accept_eula 1
# Copy the license file, this would be a dummy for the Lite version or a genuine one for the Standard version coded to the host
# MAC Address.
COPY ./files/license.dat ${INSTALLATION_DIR}/
# Copy quartus config files to enable the license.
COPY ./files/quartus2.* /root/.altera.quartus/
COPY ./files/quartus_web_rules_file.txt /root/.altera.quartus/
# Copy the Arrow USB Blaster and setup the udev rules to detect and mount USB-Blaster I and II devices.
COPY ./files/libjtag_hw_arrow.so ${INSTALLATION_DIR}/quartus/linux64/
COPY ./files/70-usb.rules /etc/udev/rules.d/
# Setup necessary environment variables.
RUN echo "export PATH=\$PATH:${INSTALLATION_DIR}/quartus/bin:${INSTALLATION_DIR}/qprogrammer/bin" >> /root/.bashrc
RUN echo "export LM_LICENSE_FILE=${INSTALLATION_DIR}/license.dat" >> /root/.bashrc
# Clean up, removing unnecessary installation files.
RUN rm -rf ${TARGET_DOWNLOAD_DIR}/* ${INSTALLATION_DIR}/uninstall ${INSTALLATION_DIR}/logs/*
# Add the current user into the image.
ARG user_uid
ARG user_gid
ARG user_name
RUN groupadd -g $user_uid $user_name
RUN adduser --uid $user_uid --gid $user_gid --disabled-password --gecos $user_name --home /home/$user_name $user_name
# Start Quartus
CMD ${EXEC_DIR}/quartus/bin/quartus --64bit

View File

@@ -0,0 +1,168 @@
#########################################################################################################
##
## Name: Dockerfile.13.1.1
## Created: June 2020
## Author(s): Philip Smart
## Description: A Docker build script to create an Ubuntu 16.04 OS with Quartus Prime 13.1
##
## Credits:
## Copyright: (c) 2019 Philip Smart <philip.smart@net2net.org>
##
## History: August 2019 - Initial module written.
## June 2020 - Need to use a CPLD MAX series device which is only supported in
## Quartus 13.
##
#########################################################################################################
## This source file is free software: you can redistribute it and#or modify
## it under the terms of the GNU General Public License as published
## by the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## This source file is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program. If not, see <http://www.gnu.org/licenses/>.
#########################################################################################################
# Ubuntu 16.04 as the base.
FROM ubuntu:xenial
# Maintainer!
MAINTAINER Philip Smart <philip.smart@net2net.org>
# Set build time environment variables.
ENV DEBIAN_FRONTEND=noninteractive
# Set constants for the build, more simpler to adjust these than the script if you want to change Quartus version.
# Uncomment one of the QUARTUS= arguments below depending on wether your using the LITE or STANDARD version of Quartus.
ARG TARGET_DOWNLOAD_DIR=/tmp/
ARG INSTALLATION_DIR=/opt/altera
ARG ALTERA_DOWNLOAD_SITE=http://download.altera.com/akdlm/software/acdsinst
ARG QUARTUS_VERSION_INSTALLER=/13.1/162/ib_installers/
ARG QUARTUS_VERSION_UPDATE=/13.1.0/162/update/
ARG QUARTUS=QuartusSetup-13.1.0.162.run
#ARG QUARTUS=QuartusLiteSetup-13.1.0.162.run
ARG QUARTUS_UPDATE=QuartusSetup-13.1.0.162.run
ARG QUARTUS_PROGRAMMER=QuartusProgrammerSetup-13.1.0.162.run
ARG QUARTUS_HELP=QuartusHelpSetup-13.1.0.162.run
ARG QUARTUS_DEVICE_FILES="arria-13.1.0.162 arriav-13.1.0.162 arriavgz-13.1.0.162 arria_web-13.1.0.162 cyclone-13.1.0.162 cyclonev-13.1.0.162 cyclone_web-13.1.0.162 max-13.1.0.162 max-17.1.0.590 max_web-13.1.0.162 stratixv-13.1.0.162"
# Base Ubuntu install, add necessary packages for Quartus, command line editting and web-browser.
RUN dpkg --add-architecture i386
RUN apt-get update
RUN apt-get install --no-install-recommends -y \
ca-certificates \
libstdc++6:i386 \
libc6:i386 \
libx11-dev:i386 \
libxext-dev:i386 \
libxau-dev:i386 \
libxdmcp-dev:i386 \
libfreetype6:i386 \
libxtst6:i386 \
libxi6:i386 \
fontconfig:i386 \
expat:i386 \
lib32ncurses5-dev \
libc6:i386 \
libcrypto++9v5 \
libfontconfig1 \
libglib2.0-0 \
libncurses5:i386 \
libsm6 \
libsm6:i386 \
libssl-dev \
libstdc++6:i386 \
libxext6:i386 \
libxft2:i386 \
libxrender1 \
libzmq3-dev \
libxext6:i386 \
libxrender-dev:i386 \
locales \
make \
openjdk-8-jdk \
pkg-config \
unixodbc-dev \
wget \
xauth \
xvfb \
net-tools \
x11-apps \
aptitude \
vim \
sudo \
firefox
# Setup environment defaults.
RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ENV EXEC_DIR ${INSTALLATION_DIR}
#
# UNCOMMENT PRODUCTION OR DEVELOPMENT ACCORDING TO REQUIREMENTS.
#
# PRODUCTION CYCLE, fetch files from Altera as needed.
RUN echo "Fetching ${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS}"
RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS}
#RUN echo "Fetching ${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_UPDATE}"
#RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_UPDATE}/${QUARTUS_UPDATE}
RUN echo "Fetching ${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_PROGRAMMER}"
RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_PROGRAMMER}
RUN echo "Fetching ${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_HELP}"
RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_HELP}
RUN for DEVICE_FILE in ${QUARTUS_DEVICE_FILES}; \
do \
echo "Fetching ${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${DEVICE_FILE}"; \
wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${DEVICE_FILE}; \
done
# DEVELOPMENT CYCLE, quartus files cached locally.
#COPY ./files/13.1/*.qdz ${TARGET_DOWNLOAD_DIR}
#COPY ./files/13.1/*.run ${TARGET_DOWNLOAD_DIR}
# Install Quartus.
RUN chmod +x ${TARGET_DOWNLOAD_DIR}${QUARTUS}
#RUN chmod +x ${TARGET_DOWNLOAD_DIR}${QUARTUS_UPDATE}
RUN chmod +x ${TARGET_DOWNLOAD_DIR}${QUARTUS_PROGRAMMER}
RUN chmod +x ${TARGET_DOWNLOAD_DIR}${QUARTUS_HELP}
RUN ${TARGET_DOWNLOAD_DIR}${QUARTUS} --mode unattended --installdir ${INSTALLATION_DIR}/ #--accept_eula 1
#RUN ${TARGET_DOWNLOAD_DIR}${QUARTUS_UPDATE} --mode unattended --installdir ${INSTALLATION_DIR}/ #--accept_eula 1
RUN ${TARGET_DOWNLOAD_DIR}${QUARTUS_PROGRAMMER} --mode unattended --installdir ${INSTALLATION_DIR}/ #--accept_eula 1
RUN ${TARGET_DOWNLOAD_DIR}${QUARTUS_HELP} --mode unattended --installdir ${INSTALLATION_DIR}/ #--accept_eula 1
# Copy the license file, this would be a dummy for the Lite version or a genuine one for the Standard version coded to the host
# MAC Address.
COPY ./files/license.dat ${INSTALLATION_DIR}/
# Copy quartus config files to enable the license.
COPY ./files/quartus2.* /root/.altera.quartus/
COPY ./files/quartus_web_rules_file.txt /root/.altera.quartus/
# Copy the Arrow USB Blaster and setup the udev rules to detect and mount USB-Blaster I and II devices.
COPY ./files/libjtag_hw_arrow.so ${INSTALLATION_DIR}/quartus/linux64/
COPY ./files/70-usb.rules /etc/udev/rules.d/
# Setup necessary environment variables.
RUN echo "export PATH=\$PATH:${INSTALLATION_DIR}/quartus/bin:${INSTALLATION_DIR}/qprogrammer/bin" >> /root/.bashrc
RUN echo "export LM_LICENSE_FILE=${INSTALLATION_DIR}/license.dat" >> /root/.bashrc
# Clean up, removing unnecessary installation files.
RUN rm -rf ${TARGET_DOWNLOAD_DIR}/* ${INSTALLATION_DIR}/uninstall ${INSTALLATION_DIR}/logs/*
# Add the current user into the image.
ARG user_uid
ARG user_gid
ARG user_name
RUN groupadd -g $user_uid $user_name
RUN adduser --uid $user_uid --gid $user_gid --disabled-password --gecos $user_name --home /home/$user_name $user_name
# Start Quartus
CMD ${EXEC_DIR}/quartus/bin/quartus --64bit

View File

@@ -0,0 +1,158 @@
#########################################################################################################
##
## Name: Dockerfile.17.1.1
## Created: August 2019
## Author(s): Philip Smart
## Description: A Docker build script to create an Ubuntu 16.04 OS with Quartus Prime 17.1.1
##
## Credits:
## Copyright: (c) 2019 Philip Smart <philip.smart@net2net.org>
##
## History: August 2019 - Initial module written.
##
#########################################################################################################
## This source file is free software: you can redistribute it and#or modify
## it under the terms of the GNU General Public License as published
## by the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## This source file is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program. If not, see <http://www.gnu.org/licenses/>.
#########################################################################################################
# Ubuntu 16.04 as the base.
FROM ubuntu:xenial
# Maintainer!
MAINTAINER Philip Smart <philip.smart@net2net.org>
# Set build time environment variables.
ENV DEBIAN_FRONTEND=noninteractive
# Set constants for the build, more simpler to adjust these than the script if you want to change Quartus version.
# Uncomment one of the QUARTUS= arguments below depending on wether your using the LITE or STANDARD version of Quartus.
ARG TARGET_DOWNLOAD_DIR=/tmp/
ARG INSTALLATION_DIR=/opt/altera
ARG ALTERA_DOWNLOAD_SITE=http://download.altera.com/akdlm/software/acdsinst
ARG QUARTUS_VERSION_INSTALLER=/17.1std/590/ib_installers/
ARG QUARTUS_VERSION_UPDATE=/17.1std.1/593/update/
#ARG QUARTUS=QuartusSetup-17.1.0.590-linux.run
ARG QUARTUS=QuartusLiteSetup-17.1.0.590-linux.run
ARG QUARTUS_UPDATE=QuartusSetup-17.1.1.593-linux.run
ARG QUARTUS_PROGRAMMER=QuartusProgrammerSetup-17.1.0.590-linux.run
ARG QUARTUS_HELP=QuartusHelpSetup-17.1.0.590-linux.run
ARG QUARTUS_DEVICE_FILES="arria_lite-17.1.0.590.qdz cyclone10lp-17.1.0.590.qdz cyclone-17.1.0.590.qdz cyclonev-17.1.0.590.qdz max10-17.1.0.590.qdz max-17.1.0.590.qdz"
# Base Ubuntu install, add necessary packages for Quartus, command line editting and web-browser.
RUN dpkg --add-architecture i386
RUN apt-get update
RUN apt-get install --no-install-recommends -y \
ca-certificates \
libstdc++6:i386 \
libc6:i386 \
libx11-dev:i386 \
libxext-dev:i386 \
libxau-dev:i386 \
libxdmcp-dev:i386 \
libfreetype6:i386 \
fontconfig:i386 \
expat:i386 \
lib32ncurses5-dev \
libc6:i386 \
libcrypto++9v5 \
libfontconfig1 \
libglib2.0-0 \
libncurses5:i386 \
libsm6 \
libsm6:i386 \
libssl-dev \
libstdc++6:i386 \
libxext6:i386 \
libxft2:i386 \
libxrender1 \
libzmq3-dev \
libxext6:i386 \
libxrender-dev:i386 \
locales \
make \
openjdk-8-jdk \
pkg-config \
unixodbc-dev \
wget \
xauth \
xvfb \
net-tools \
x11-apps \
vim \
firefox
# Setup environment defaults.
RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ENV EXEC_DIR ${INSTALLATION_DIR}
#
# UNCOMMENT PRODUCTION OR DEVELOPMENT ACCORDING TO REQUIREMENTS.
#
# PRODUCTION CYCLE, fetch files from Altera as needed.
RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS}
RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_UPDATE}/${QUARTUS_UPDATE}
RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_PROGRAMMER}
RUN wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${QUARTUS_HELP}
RUN for DEVICE_FILE in ${QUARTUS_DEVICE_FILES}; \
do \
echo "Fetching ${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${DEVICE_FILE}"; \
wget -q --directory-prefix=${TARGET_DOWNLOAD_DIR} ${ALTERA_DOWNLOAD_SITE}/${QUARTUS_VERSION_INSTALLER}/${DEVICE_FILE}; \
done
# DEVELOPMENT CYCLE, quartus files cached locally.
#COPY ./files/17.1/*.qdz ${TARGET_DOWNLOAD_DIR}
#COPY ./files/17.1/*.run ${TARGET_DOWNLOAD_DIR}
# Install Quartus.
RUN chmod +x ${TARGET_DOWNLOAD_DIR}${QUARTUS}
RUN chmod +x ${TARGET_DOWNLOAD_DIR}${QUARTUS_UPDATE}
RUN chmod +x ${TARGET_DOWNLOAD_DIR}${QUARTUS_PROGRAMMER}
RUN chmod +x ${TARGET_DOWNLOAD_DIR}${QUARTUS_HELP}
RUN ${TARGET_DOWNLOAD_DIR}${QUARTUS} --mode unattended --installdir ${INSTALLATION_DIR}/ --accept_eula 1
RUN ${TARGET_DOWNLOAD_DIR}${QUARTUS_UPDATE} --mode unattended --installdir ${INSTALLATION_DIR}/ --accept_eula 1
RUN ${TARGET_DOWNLOAD_DIR}${QUARTUS_PROGRAMMER} --mode unattended --installdir ${INSTALLATION_DIR}/ --accept_eula 1
RUN ${TARGET_DOWNLOAD_DIR}${QUARTUS_HELP} --mode unattended --installdir ${INSTALLATION_DIR}/ --accept_eula 1
# Copy the license file, this would be a dummy for the Lite version or a genuine one for the Standard version coded to the host
# MAC Address.
COPY ./files/license.dat ${INSTALLATION_DIR}/
# Copy quartus config files to enable the license.
COPY ./files/quartus2.* /root/.altera.quartus/
COPY ./files/quartus_web_rules_file.txt /root/.altera.quartus/
# Copy the Arrow USB Blaster and setup the udev rules to detect and mount USB-Blaster I and II devices.
COPY ./files/libjtag_hw_arrow.so ${INSTALLATION_DIR}/quartus/linux64/
COPY ./files/70-usb.rules /etc/udev/rules.d/
# Setup necessary environment variables.
RUN echo "export PATH=\$PATH:${INSTALLATION_DIR}/quartus/bin:${INSTALLATION_DIR}/qprogrammer/bin" >> /root/.bashrc
RUN echo "export LM_LICENSE_FILE=${INSTALLATION_DIR}/license.dat" >> /root/.bashrc
# Clean up, removing unnecessary installation files.
RUN rm -rf ${TARGET_DOWNLOAD_DIR}/* ${INSTALLATION_DIR}/uninstall ${INSTALLATION_DIR}/logs/*
#
# Add the current user into the image.
ARG user_uid
ARG user_gid
ARG user_name
RUN groupadd -g $user_uid $user_name
RUN adduser --uid $user_uid --gid $user_gid --disabled-password --gecos $user_name --home /home/$user_name $user_name
# Start Quartus
CMD ${EXEC_DIR}/quartus/bin/quartus --64bit

View File

@@ -0,0 +1,13 @@
===
# USB-Blaster
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE="0666", SYMLINK+="usbblaster/%k"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6002", MODE="0666", SYMLINK+="usbblaster/%k"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6003", MODE="0666", SYMLINK+="usbblaster/%k"
# USB-Blaster II
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6010", MODE="0666", SYMLINK+="usbblaster2/%k"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6810", MODE="0666", SYMLINK+="usbblaster2/%k"
===
# Arrow-USB-Blaster
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="0666", SYMLINK+="usbblasterarrow/%k"

Binary file not shown.

View File

@@ -0,0 +1 @@
# Place your license in this file.

View File

@@ -0,0 +1,4 @@
[General 17.1]
LICENSE_FILE = /opt/altera/license.dat
WAIT_FOR_LICENSE = off

View File

@@ -0,0 +1,172 @@
[17.1]
Registry_version=27
Altera_Foundation_Class\quartusQuartus_Prime_17.1_Lite_EditionDialogGeometry=@ByteArray(\x1\xd9\xd0\xcb\0\x1\0\0\0\0\f\x17\0\0\x6\xb8\0\0\xe\xf5\0\0\a\xc8\0\0\f\x17\0\0\x6\xb8\0\0\xe\xf5\0\0\a\xc8\0\0\0\0\0\0)
Toolbar\Large_icons=true
Quartus_UI_Framework\startup_failed=No
Messages\id_column_in_quartus_12_1_and_later=true
General\Check_for_New_Info_Message_at_Startup=Yes
General\Confirm_Before_Connect_to_Internet=No
General\Current_Message_Release_Number=0
General\TalkForward_Message_URL=
General\quartusShow_welcome_screen=true
General\quartusClose_welcome_screen_after_project_load=true
General\Tooltip_enable=true
General\Tooltip_interval=5
General\Tooltip_hide_interval=1
Chip_Viewer\Tooltip_enable=true
Chip_Viewer\Tooltip_interval=5
Chip_Viewer\Tooltip_hide_interval=1
Logical_Floorplan\Tooltip_enable=true
Logical_Floorplan\Tooltip_interval=5
Logical_Floorplan\Tooltip_hide_interval=1
Atom_Property_Editor\Tooltip_enable=true
Atom_Property_Editor\Tooltip_interval=5
Atom_Property_Editor\Tooltip_hide_interval=1
RTL_Viewer\Tooltip_enable=true
RTL_Viewer\Tooltip_Interval=5
RTL_Viewer\Tooltip_Hide_Interval=1
State_Machine_Viewer\Tooltip_enable=true
State_Machine_Viewer\Tooltip_Interval=5
State_Machine_Viewer\Tooltip_Hide_Interval=1
Pin_Planner\Tooltip_enable=true
Pin_Planner\Tooltip_interval=5
Pin_Planner\Tooltip_hide_interval=1
Altera_Foundation_Class\quartusOptionsDialogGeometry="@ByteArray(\x1\xd9\xd0\xcb\0\x1\0\0\0\0\x3;\0\0\x1r\0\0\b\xb2\0\0\x4\x91\0\0\x3;\0\0\x1r\0\0\b\xb2\0\0\x4\x91\0\0\0\x2\0\0)"
Altera_Foundation_Class\quartusSelect_FileFileDialogGeometry=@ByteArray(\x1\xd9\xd0\xcb\0\x1\0\0\0\0\b\x8a\0\0\x1y\0\0\v\x4\0\0\x3/\0\0\b\x8a\0\0\x1y\0\0\v\x4\0\0\x3/\0\0\0\x2\0\0)
Quartus_UI_Framework\quartussld_bnlqmdiGeometry=@ByteArray(\x1\xd9\xd0\xcb\0\x1\0\0\0\0\x2p\0\0\0W\0\0\x6.\0\0\x2\xc4\0\0\x2p\0\0\0m\0\0\x6.\0\0\x2\xc4\0\0\0\x2\0\0)
Quartus_UI_Framework\quartussld_bnlqmdiState=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\0\0\0\x3\xbf\0\0\x2\x1f\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x4\0\0\0\0\0\0\0\x2\0\0\0&\0L\0\x65\0\x66\0t\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x10\0\x46\0\x65\0\x65\0\x64\0\x62\0\x61\0\x63\0k\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0(\0R\0i\0g\0h\0t\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x2\0\0\0\x1\0\0\0$\0T\0o\0p\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x3\0\0\0\x1\0\0\0*\0\x42\0o\0t\0t\0o\0m\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
Quartus_UI_Framework\quartussld_atcqmdiGeometry=@ByteArray(\x1\xd9\xd0\xcb\0\x1\0\0\0\0\0\xf7\0\0\0Z\0\0\x4\x16\0\0\x2\xc7\0\0\0\xf7\0\0\0p\0\0\x4\x16\0\0\x2\xc7\0\0\0\x2\0\0)
Quartus_UI_Framework\quartussld_atcqmdiState=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\0\0\0\x3 \0\0\x2\x1f\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x4\0\0\0\0\0\0\0\x2\0\0\0&\0L\0\x65\0\x66\0t\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x10\0\x46\0\x65\0\x65\0\x64\0\x62\0\x61\0\x63\0k\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0(\0R\0i\0g\0h\0t\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x2\0\0\0\x1\0\0\0$\0T\0o\0p\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x3\0\0\0\x1\0\0\0*\0\x42\0o\0t\0t\0o\0m\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
Altera_Foundation_Class\quartusOpen_ProjectFileDialogGeometry=@ByteArray(\x1\xd9\xd0\xcb\0\x1\0\0\0\0\x2\xc9\0\0\x1\r\0\0\x5\x43\0\0\x2\xc3\0\0\x2\xc9\0\0\x1\r\0\0\x5\x43\0\0\x2\xc3\0\0\0\x2\0\0)
Quartus_UI_Framework\quartusQuartus_Primedock_widget0=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget0Area=8
Quartus_UI_Framework\quartusQuartus_Primedock_widget0Floating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget0Pinned=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget0Minimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget0Closed=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget1=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget1Area=1
Quartus_UI_Framework\quartusQuartus_Primedock_widget1Floating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget1Pinned=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget1Minimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget1Closed=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget2=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget2Area=1
Quartus_UI_Framework\quartusQuartus_Primedock_widget2Floating=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget2Pinned=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget2Minimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget2Closed=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget3=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget3Area=8
Quartus_UI_Framework\quartusQuartus_Primedock_widget3Floating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget3Pinned=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget3Minimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget3Closed=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget4=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget4Area=1
Quartus_UI_Framework\quartusQuartus_Primedock_widget4Floating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget4Pinned=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget4Minimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget4Closed=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget5=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget5Area=1
Quartus_UI_Framework\quartusQuartus_Primedock_widget5Floating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget5Pinned=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget5Minimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget5Closed=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget6=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget6Area=8
Quartus_UI_Framework\quartusQuartus_Primedock_widget6Floating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget6Pinned=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget6Minimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget6Closed=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget7=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget7Area=8
Quartus_UI_Framework\quartusQuartus_Primedock_widget7Floating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget7Pinned=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget7Minimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget7Closed=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget8=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget8Area=8
Quartus_UI_Framework\quartusQuartus_Primedock_widget8Floating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget8Pinned=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget8Minimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget8Closed=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget11=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget11Area=2
Quartus_UI_Framework\quartusQuartus_Primedock_widget11Floating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget11Pinned=true
Quartus_UI_Framework\quartusQuartus_Primedock_widget11Minimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widget11Closed=false
Quartus_UI_Framework\current_project=
Quartus_UI_Framework\quartussys_sscqmdiState=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\0\0\0\x2\xb3\0\0\x1\xfa\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x4\0\0\0\0\0\0\0\x2\0\0\0&\0L\0\x65\0\x66\0t\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x10\0\x46\0\x65\0\x65\0\x64\0\x62\0\x61\0\x63\0k\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0(\0R\0i\0g\0h\0t\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x2\0\0\0\x1\0\0\0$\0T\0o\0p\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x3\0\0\0\x1\0\0\0*\0\x42\0o\0t\0t\0o\0m\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
Quartus_UI_Framework\quartussys_qgqmainGeometry="@ByteArray(\x1\xd9\xd0\xcb\0\x1\0\0\0\0\x2\xb5\0\0\0\xe3\0\0\b,\0\0\x4\x18\0\0\x2\xb5\0\0\0\xf9\0\0\b,\0\0\x4\x18\0\0\0\x2\0\0)"
Quartus_UI_Framework\quartussys_qgqmainState=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x3\0\0\0\0\0\0\x1W\0\0\x2\x16\xfc\x2\0\0\0\x4\xfb\0\0\0\"\0P\0r\0o\0j\0\x65\0\x63\0t\0 \0N\0\x61\0v\0i\0g\0\x61\0t\0o\0r\x1\0\0\0O\0\0\x1/\0\0\0\x94\0\xff\xff\xff\xfb\0\0\0\n\0T\0\x61\0s\0k\0s\x1\0\0\x1\x84\0\0\0\xe1\0\0\0n\0\xff\xff\xff\xfb\0\0\0\x16\0N\0o\0\x64\0\x65\0 \0\x46\0i\0n\0\x64\0\x65\0r\x2\0\0\0\0\0\0\0\x10\0\0\x1+\0\0\x1'\xfb\0\0\0\f\0S\0t\0\x61\0t\0u\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x64\0\xff\xff\xff\0\0\0\x1\0\0\x1\x62\0\0\x2\x16\xfc\x2\0\0\0\x1\xfb\0\0\0\x14\0I\0P\0 \0\x43\0\x61\0t\0\x61\0l\0o\0g\x1\0\0\0O\0\0\x2\x16\0\0\0\xc8\0\xff\xff\xff\0\0\0\x3\0\0\x5x\0\0\0\x9d\xfc\x2\0\0\0\x5\xfb\0\0\0\x16\0T\0\x63\0l\0 \0\x43\0o\0n\0s\0o\0l\0\x65\0\0\0\0\0\xff\xff\xff\xff\0\0\0K\0\xff\xff\xff\xfb\0\0\0\x1c\0\x43\0h\0\x61\0n\0g\0\x65\0 \0M\0\x61\0n\0\x61\0g\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x92\0\xff\xff\xff\xfb\0\0\0\x32\0L\0o\0g\0i\0\x63\0 \0L\0o\0\x63\0k\0 \0R\0\x65\0g\0i\0o\0n\0s\0 \0W\0i\0n\0\x64\0o\0w\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x81\0\xff\xff\xff\xfb\0\0\0\x30\0\x44\0\x65\0s\0i\0g\0n\0 \0P\0\x61\0r\0t\0i\0t\0i\0o\0n\0s\0 \0W\0i\0n\0\x64\0o\0w\0\0\0\0\0\xff\xff\xff\xff\0\0\0\x81\0\xff\xff\xff\xfb\0\0\0\x10\0M\0\x65\0s\0s\0\x61\0g\0\x65\0s\x1\0\0\x2k\0\0\0\x9d\0\0\0\x9d\0\xff\xff\xff\0\0\x2\xb3\0\0\x2\x16\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x5\0\0\0\0\0\0\0\x1\0\0\0&\0L\0\x65\0\x66\0t\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0(\0R\0i\0g\0h\0t\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x2\0\0\0\x4\0\0\0$\0T\0o\0p\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\b\0\x46\0i\0l\0\x65\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x10\0S\0t\0\x61\0n\0\x64\0\x61\0r\0\x64\x1\0\0\x1\x81\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x10\0\x46\0\x65\0\x65\0\x64\0\x62\0\x61\0\x63\0k\x1\0\0\x4\xb5\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x2\0\0\0\x3\0\0\0\x1e\0U\0t\0i\0l\0i\0t\0y\0 \0W\0i\0n\0\x64\0o\0w\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x18\0\x41\0p\0p\0l\0i\0\x63\0\x61\0t\0i\0o\0n\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x14\0P\0r\0o\0\x63\0\x65\0s\0s\0i\0n\0g\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x3\0\0\0\x1\0\0\0*\0\x42\0o\0t\0t\0o\0m\0 \0\x42\0u\0t\0t\0o\0n\0 \0T\0o\0o\0l\0\x62\0\x61\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
Quartus_UI_Framework\quartusQuartus_Primedock_widgetProject_Navigator=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetProject_NavigatorArea=1
Quartus_UI_Framework\quartusQuartus_Primedock_widgetProject_NavigatorFloating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetProject_NavigatorPinned=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetProject_NavigatorMinimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetProject_NavigatorClosed=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetTasks=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetTasksArea=1
Quartus_UI_Framework\quartusQuartus_Primedock_widgetTasksFloating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetTasksPinned=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetTasksMinimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetTasksClosed=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetIP_Catalog=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetIP_CatalogArea=2
Quartus_UI_Framework\quartusQuartus_Primedock_widgetIP_CatalogFloating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetIP_CatalogPinned=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetIP_CatalogMinimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetIP_CatalogClosed=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetNode_Finder=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetNode_FinderArea=1
Quartus_UI_Framework\quartusQuartus_Primedock_widgetNode_FinderFloating=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetNode_FinderPinned=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetNode_FinderMinimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetNode_FinderClosed=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetTcl_Console=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetTcl_ConsoleArea=8
Quartus_UI_Framework\quartusQuartus_Primedock_widgetTcl_ConsoleFloating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetTcl_ConsolePinned=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetTcl_ConsoleMinimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetTcl_ConsoleClosed=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetStatus=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetStatusArea=1
Quartus_UI_Framework\quartusQuartus_Primedock_widgetStatusFloating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetStatusPinned=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetStatusMinimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetStatusClosed=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetChange_Manager=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetChange_ManagerArea=8
Quartus_UI_Framework\quartusQuartus_Primedock_widgetChange_ManagerFloating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetChange_ManagerPinned=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetChange_ManagerMinimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetChange_ManagerClosed=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetLogic_Lock_Regions_Window=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetLogic_Lock_Regions_WindowArea=8
Quartus_UI_Framework\quartusQuartus_Primedock_widgetLogic_Lock_Regions_WindowFloating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetLogic_Lock_Regions_WindowPinned=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetLogic_Lock_Regions_WindowMinimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetLogic_Lock_Regions_WindowClosed=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetDesign_Partitions_Window=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetDesign_Partitions_WindowArea=8
Quartus_UI_Framework\quartusQuartus_Primedock_widgetDesign_Partitions_WindowFloating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetDesign_Partitions_WindowPinned=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetDesign_Partitions_WindowMinimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetDesign_Partitions_WindowClosed=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetMessages=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetMessagesArea=8
Quartus_UI_Framework\quartusQuartus_Primedock_widgetMessagesFloating=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetMessagesPinned=true
Quartus_UI_Framework\quartusQuartus_Primedock_widgetMessagesMinimized=false
Quartus_UI_Framework\quartusQuartus_Primedock_widgetMessagesClosed=false
Quartus_UI_Framework\sys_sscqsingleton_attach_state=false
Quartus_UI_Framework\sys_qgqsingleton_attach_state=true
Task_Manager_Window\Task_Manager_File=tmwq_tasks_compile.tmf
Task_Manager_Window\Task_Manager_Expanded_Nodes=0
UNB\Filters\count=0
UNB\Filters\selection%20index=0
UNB\column_settings\node_found=23
Tcl_Toolbar\tcl_console_command_history=@Invalid()

View File

@@ -0,0 +1,79 @@
#!/bin/bash -x
#########################################################################################################
##
## Name: run_quartus.sh
## Created: August 2019
## Author(s): Philip Smart
## Description: A shell script to start the Quartus Prime Docker image.
##
## Credits:
## Copyright: (c) 2019 Philip Smart <philip.smart@net2net.org>
##
## History: August 2019 - Initial module written.
##
#########################################################################################################
## This source file is free software: you can redistribute it and#or modify
## it under the terms of the GNU General Public License as published
## by the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## This source file is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program. If not, see <http://www.gnu.org/licenses/>.
#########################################################################################################
# Configurable parameters. The MAC_ADDRESS is needed if you are using a licensed Quartus as it uses the hostid which is the mac address.
# Set a default for the X-Display if the environment hasnt set it.
#
MAC_ADDR="02:50:dd:72:03:01"
PROJECT_DIR_HOST=/srv/
PROJECT_DIR_IMAGE=/srv/
DISPLAY=${DISPLAY:-192.168.15.210:0}
VERSION=$1
INSTANCE=$2
UUID=`id -u`
UGID=`id -g`
USERNAME=`whoami`
HOMEDIR=/home/${USERNAME}
ALTERAHOME=/srv/altera
QUARTUSHOME=${ALTERAHOME}/${VERSION}
if [ "${VERSION}" = "17.1.1" -o "X${VERSION}" = "X" ]; then
VERSION=17.1.1
elif [ "${VERSION}" != "13.0.1" -a "${VERSION}" != "13.1" ]; then
echo "Unknown QuartusII version:$1"
fi
# In order to get X-Forwarding from the container, we need to update the X Authorities and bind the authorisation file inside the virtual machine.
XSOCK=/tmp/.X11-unix
XAUTH=/tmp/.docker.xauth
NLIST=`xauth nlist $DISPLAY | sed -e 's/^..../ffff/'`
if [ "${NLIST}" != "" ]; then
echo ${NLIST} | xauth -f $XAUTH nmerge -
fi
chmod 777 $XAUTH
# Run the Ubuntu hosted Quartus Prime service.
#--volume ${QUARTUSHOME}:/opt/altera \
docker run --rm \
--mac-address "${MAC_ADDR}" \
--env DISPLAY=${DISPLAY} \
--ipc=host \
--env XAUTHORITY=${XAUTH} \
-u ${UUID}:${UGID} \
--privileged \
--volume /dev:/dev \
--volume ${HOMEDIR}:${HOMEDIR} \
--volume ${PROJECT_DIR_HOST}:${PROJECT_DIR_IMAGE} \
--volume ${XAUTH}:${XAUTH} \
--volume ${XSOCK}:${XSOCK} \
--volume /sys:/sys:ro \
--name quartus${VERSION}${INSTANCE} \
quartus-ii:${VERSION} &
# Bring up a terminal session for any local changes.
sleep 5
docker exec -it quartus${VERSION}${INSTANCE} bash

View File

@@ -0,0 +1,69 @@
#!/bin/bash -x
#########################################################################################################
##
## Name: run_quartus.sh
## Created: August 2019
## Author(s): Philip Smart
## Description: A shell script to start the Quartus Prime Docker image.
##
## Credits:
## Copyright: (c) 2019 Philip Smart <philip.smart@net2net.org>
##
## History: August 2019 - Initial module written.
##
#########################################################################################################
## This source file is free software: you can redistribute it and#or modify
## it under the terms of the GNU General Public License as published
## by the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## This source file is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program. If not, see <http://www.gnu.org/licenses/>.
#########################################################################################################
# Configurable parameters. The MAC_ADDRESS is needed if you are using a licensed Quartus as it uses the hostid which is the mac address.
# Set a default for the X-Display if the environment hasnt set it.
#
MAC_ADDR="02:50:dd:72:03:01"
PROJECT_DIR_HOST=/srv/quartus
PROJECT_DIR_IMAGE=/srv/quartus
DISPLAY=${DISPLAY:-192.168.15.210:0}
VERSION=$1
if [ "${VERSION}" = "17.1.1" -o "X${VERSION}" = "X" ]; then
VERSION=17.1.1
elif [ "${VERSION}" != "13.0.1" -a "${VERSION}" != "13.1" ]; then
echo "Unknown QuartusII version:$1"
fi
# In order to get X-Forwarding from the container, we need to update the X Authorities and bind the authorisation file inside the virtual machine.
XSOCK=/tmp/.X11-unix
XAUTH=/tmp/.docker.xauth
NLIST=`xauth nlist $DISPLAY | sed -e 's/^..../ffff/'`
if [ "${NLIST}" != "" ]; then
echo ${NLIST} | xauth -f $XAUTH nmerge -
fi
chmod 777 $XAUTH
# Run the Ubuntu hosted Quartus Prime service.
docker run --rm \
--mac-address "${MAC_ADDR}" \
--env DISPLAY=${DISPLAY} \
--ipc=host \
--env XAUTHORITY=${XAUTH} \
--privileged \
--volume /dev:/dev \
--volume ${PROJECT_DIR_HOST}:${PROJECT_DIR_IMAGE} \
--volume ${XAUTH}:${XAUTH} \
--volume ${XSOCK}:${XSOCK} \
--volume /sys:/sys:ro \
--name quartus${VERSION} \
quartus-ii-${VERSION} &
# Bring up a terminal session for any local changes.
sleep 5
docker exec -it quartus${VERSION} bash