From 9c770d5ea0a2c22464845dd711c0756ccd1d9175 Mon Sep 17 00:00:00 2001 From: David Lynch <david.lynch@unimelb.edu.au> Date: Tue, 21 Sep 2021 14:06:05 +1000 Subject: [PATCH] // Initial Commit --- Vagrantfile | 75 ++++++++++++++++++++ quartus-free/51-usbblaster.rules | 7 ++ quartus-free/base_modelsim-ase.desktop | 9 +++ quartus-free/base_modelsim-ase.sh | 1 + quartus-free/base_quartus.desktop | 9 +++ quartus-free/base_quartus.sh | 10 +++ quartus-free/modelsim-ase.desktop | 9 +++ quartus-free/modelsim-ase.sh | 1 + quartus-free/quartus.desktop | 9 +++ quartus-free/quartus.sh | 10 +++ run.sh | 7 ++ scripts/sddm_fix.sh | 11 +++ scripts/setup_dependencies.sh | 68 ++++++++++++++++++ scripts/setup_host.sh | 7 ++ scripts/setup_quartus.sh | 96 ++++++++++++++++++++++++++ 15 files changed, 329 insertions(+) create mode 100644 Vagrantfile create mode 100644 quartus-free/51-usbblaster.rules create mode 100644 quartus-free/base_modelsim-ase.desktop create mode 100644 quartus-free/base_modelsim-ase.sh create mode 100644 quartus-free/base_quartus.desktop create mode 100644 quartus-free/base_quartus.sh create mode 100644 quartus-free/modelsim-ase.desktop create mode 100644 quartus-free/modelsim-ase.sh create mode 100644 quartus-free/quartus.desktop create mode 100644 quartus-free/quartus.sh create mode 100644 run.sh create mode 100644 scripts/sddm_fix.sh create mode 100644 scripts/setup_dependencies.sh create mode 100644 scripts/setup_host.sh create mode 100644 scripts/setup_quartus.sh diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000..2d9c3f4 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,75 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +Vagrant.configure("2") do |config| + config.vm.define "focal", primary: true do |focal| + focal.vm.box = "ubuntu/focal64" + focal.vm.synced_folder ".", "/shared", + owner: "vagrant", group: "vagrant" + focal.vm.provider "virtualbox" do |vb| + vb.gui = true + vb.name = "Quartus_Ubuntu" + vb.memory = "8192" + vb.customize ["modifyvm", :id, "--vram", "128"] + vb.customize ["modifyvm", :id, "--graphicscontroller", "vmsvga"] + vb.customize ["modifyvm", :id, "--accelerate3d", "on"] + vb.customize ["modifyvm", :id, "--audioin", "on"] + vb.customize ["modifyvm", :id, "--audioout", "on"] + vb.customize ["modifyvm", :id, "--audiocontroller", "hda"] + disk_image = File.join(File.dirname(File.expand_path(__FILE__)), + 'ubuntu_20_04.vdi') + unless File.exist?(disk_image) + vb.customize ['createhd', + '--filename', disk_image, + '--size', 160 * 1024] + end + vb.customize ['storageattach', :id, + '--storagectl', 'SCSI', + '--port', 2, '--device', 0, + '--type', 'hdd', + '--medium', disk_image] + vb.customize ['storageattach', :id, + '--storagectl', 'IDE', + '--port', '0', '--device', '1', + '--type', 'dvddrive', + '--medium', 'emptydrive'] + end + + focal.vm.provision "shell", inline: <<-SHELL + parted /dev/sdc mklabel msdos + parted /dev/sdc mkpart primary 100 100% + partprobe + mkfs.xfs /dev/sdc1 + mkdir /workspace + echo `blkid /dev/sdc1 | awk '{print$2}' | sed -e 's/"//g'` \ + /workspace xfs noatime,nobarrier 0 0 >> /etc/fstab + mount /workspace + chown -R vagrant:vagrant /workspace + chmod 777 -R /workspace + SHELL + + focal.vm.provision "shell", + inline: "apt-get update" + + focal.vm.provision "shell", + inline: "/bin/bash /shared/scripts/setup_host.sh" + + focal.vm.provision "shell", + inline: "apt remove -y gdm3" + + focal.vm.provision "shell", + inline: "apt-mark hold gdm3" + + focal.vm.provision "shell", + inline: "apt install -y kde-full || :" + + focal.vm.provision "shell", + inline: "/bin/bash /shared/scripts/sddm_fix.sh" + + focal.vm.provision "shell", + inline: "sudo apt update && sudo apt -y full-upgrade && sudo apt -y autoremove || :" + + focal.vm.provision "shell", + inline: "cat /root/.profile | grep PATH >> /home/vagrant/.profile || :" + end +end diff --git a/quartus-free/51-usbblaster.rules b/quartus-free/51-usbblaster.rules new file mode 100644 index 0000000..fd2912d --- /dev/null +++ b/quartus-free/51-usbblaster.rules @@ -0,0 +1,7 @@ +# USB Blaster +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6002", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6003", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c" +# USB Blaster II +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6010", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6810", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c" diff --git a/quartus-free/base_modelsim-ase.desktop b/quartus-free/base_modelsim-ase.desktop new file mode 100644 index 0000000..23e9355 --- /dev/null +++ b/quartus-free/base_modelsim-ase.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Name=ModelSim-Intel FPGA Starter Edition +Comment=ModelSim simulation software for Intel FPGAs +Exec=_alteradir/modelsim_ase/bin/vsim -gui -l /dev/null +Icon=_alteradir/modelsim_ase/modesim.gif +Terminal=false +Type=Application +Categories=Development diff --git a/quartus-free/base_modelsim-ase.sh b/quartus-free/base_modelsim-ase.sh new file mode 100644 index 0000000..b056e9d --- /dev/null +++ b/quartus-free/base_modelsim-ase.sh @@ -0,0 +1 @@ +export PATH=$PATH:_alteradir/modelsim_ase/bin diff --git a/quartus-free/base_quartus.desktop b/quartus-free/base_quartus.desktop new file mode 100644 index 0000000..62194b2 --- /dev/null +++ b/quartus-free/base_quartus.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Name=Quartus Prime Lite +Comment=Quartus Prime Lite design software for Intel FPGAs +Exec=_alteradir/quartus/bin/quartus --64bit +Icon=_alteradir/quartus/adm/quartusii.png +Terminal=false +Type=Application +Categories=Development diff --git a/quartus-free/base_quartus.sh b/quartus-free/base_quartus.sh new file mode 100644 index 0000000..14159e0 --- /dev/null +++ b/quartus-free/base_quartus.sh @@ -0,0 +1,10 @@ +export PATH=$PATH:_alteradir/quartus/bin:_alteradir/quartus/sopc_builder/bin + +# Detect if a 64bit machine and activate quartus +# depending on it. +if [ `uname -m` = "x86_64" ] ; then + QUARTUS_64BIT='1' +else + QUARTUS_64BIT='0' +fi +export QUARTUS_64BIT diff --git a/quartus-free/modelsim-ase.desktop b/quartus-free/modelsim-ase.desktop new file mode 100644 index 0000000..8dacc87 --- /dev/null +++ b/quartus-free/modelsim-ase.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Name=ModelSim-Intel FPGA Starter Edition +Comment=ModelSim simulation software for Intel FPGAs +Exec=/workspace/intelFPGA/20.1/modelsim_ase/bin/vsim -gui -l /dev/null +Icon=/workspace/intelFPGA/20.1/modelsim_ase/modesim.gif +Terminal=false +Type=Application +Categories=Development diff --git a/quartus-free/modelsim-ase.sh b/quartus-free/modelsim-ase.sh new file mode 100644 index 0000000..7b2a421 --- /dev/null +++ b/quartus-free/modelsim-ase.sh @@ -0,0 +1 @@ +export PATH=$PATH:/workspace/intelFPGA/20.1/modelsim_ase/bin diff --git a/quartus-free/quartus.desktop b/quartus-free/quartus.desktop new file mode 100644 index 0000000..6bfc9bc --- /dev/null +++ b/quartus-free/quartus.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Version=1.0 +Name=Quartus Prime Lite +Comment=Quartus Prime Lite design software for Intel FPGAs +Exec=/workspace/intelFPGA/20.1/quartus/bin/quartus --64bit +Icon=/workspace/intelFPGA/20.1/quartus/adm/quartusii.png +Terminal=false +Type=Application +Categories=Development diff --git a/quartus-free/quartus.sh b/quartus-free/quartus.sh new file mode 100644 index 0000000..02a38c8 --- /dev/null +++ b/quartus-free/quartus.sh @@ -0,0 +1,10 @@ +export PATH=$PATH:/workspace/intelFPGA/20.1/quartus/bin:/workspace/intelFPGA/20.1/quartus/sopc_builder/bin + +# Detect if a 64bit machine and activate quartus +# depending on it. +if [ `uname -m` = "x86_64" ] ; then + QUARTUS_64BIT='1' +else + QUARTUS_64BIT='0' +fi +export QUARTUS_64BIT diff --git a/run.sh b/run.sh new file mode 100644 index 0000000..8d0aa82 --- /dev/null +++ b/run.sh @@ -0,0 +1,7 @@ + #!/bin/bash +set -x + +script_dir=$(cd $(dirname ${BASH_SOURCE[0]}) && pwd) + +vagrant up +vagrant reload diff --git a/scripts/sddm_fix.sh b/scripts/sddm_fix.sh new file mode 100644 index 0000000..e663ffd --- /dev/null +++ b/scripts/sddm_fix.sh @@ -0,0 +1,11 @@ + #!/bin/bash +set -x + +script_dir=$(cd $(dirname ${BASH_SOURCE[0]}) && pwd) + +touch /etc/sddm.conf +echo "[General]" >> /etc/sddm.conf +echo "InputMethod=" >> /etc/sddm.conf +echo "[Users]" >> /etc/sddm.conf +echo "RememberLastUser=false" >> /etc/sddm.conf +echo "HideUsers=ubuntu" >> /etc/sddm.conf diff --git a/scripts/setup_dependencies.sh b/scripts/setup_dependencies.sh new file mode 100644 index 0000000..0bab1a0 --- /dev/null +++ b/scripts/setup_dependencies.sh @@ -0,0 +1,68 @@ + #!/bin/bash +set -x + +script_dir=$(cd $(dirname ${BASH_SOURCE[0]}) && pwd) + +read -d '' PACKAGES <<EOT +linux-image-generic +bc +libtool-bin +gperf +bison +flex +texi2html +texinfo +help2man +gawk +libtool +build-essential +automake +libncurses5-dev +libncurses6 +libglib2.0-dev +libfdt-dev +device-tree-compiler +qemu-user-static +binfmt-support +multistrap +git +lib32z1 +lib32stdc++6 +libssl-dev +kpartx +dosfstools +nfs-common +zerofree +u-boot-tools +rpm2cpio +curl +libsdl1.2-dev +libpixman-1-dev +libc6-dev +chrpath +socat +zlib1g-dev +zlib1g:i386 +unzip +rsync +python3-pip +python3 +gcc-multilib +xterm +net-tools +libidn11 +libxft2 +libxft2:i386 +libxrender1:i386 +libxtst6:i386 +libxi6:i386 +EOT +set -e + +sudo apt-get update +sudo dpkg --add-architecture i386 +sudo apt-get update +sudo add-apt-repository -y ppa:ubuntu-toolchain-r/ppa +sudo apt update +sudo apt-get install -y $PACKAGES +sudo apt full-upgrade -y diff --git a/scripts/setup_host.sh b/scripts/setup_host.sh new file mode 100644 index 0000000..7a456a8 --- /dev/null +++ b/scripts/setup_host.sh @@ -0,0 +1,7 @@ + #!/bin/bash +set -x + +script_dir=$(cd $(dirname ${BASH_SOURCE[0]}) && pwd) + +source /shared/scripts/setup_dependencies.sh +source /shared/scripts/setup_quartus.sh diff --git a/scripts/setup_quartus.sh b/scripts/setup_quartus.sh new file mode 100644 index 0000000..73d3a87 --- /dev/null +++ b/scripts/setup_quartus.sh @@ -0,0 +1,96 @@ + #!/bin/bash +set -x + +script_dir=$(cd $(dirname ${BASH_SOURCE[0]}) && pwd) + +pkgbase=quartus-free +pkgname=(${pkgbase} ${_components[@]}) +# Keep dot in _patchver +_mainver=20.1; _patchver=.1; _buildver=720 +# Latest HLS compiler was only released with Pro numbering +#_promain=20.3; _propatch=.0; _probuild=158; _prover=${_promain}${_propatch}.${_probuild} +pkgver=${_mainver}${_patchver}.${_buildver} +#arch=('x86_64') + +tar_file=Quartus-lite-${pkgver}-linux.tar + +_base_url="https://download.altera.com/akdlm/software/acdsinst" +source=("${_base_url}/${_mainver}std${_patchver}/${_buildver}/ib_tar/${tar_file}") + + + +if [ -f "/shared/${tar_file}" ] +then + echo "Extracting Quartus, this may take some time..." + tar -xvf /shared/${tar_file} -C /workspace +else + echo "Downloading Quartus, this may take some time..." + wget $source -P /workspace + echo "Extracting Quartus, this may take some time..." + tar -xvf /workspace/${tar_file} -C /workspace +fi + +_alteradir="/workspace/intelFPGA/${_mainver}" + +if [ -d $_alteradir ] +then + echo "$_alteradir exists" +else + echo "$_alteradir does not exist: creating..." + mkdir /workspace/intelFPGA + mkdir $_alteradir +fi + +sudo chmod a+x /workspace/components/*.run +sudo chown -R vagrant:vagrant /workspace/* + + + +install_command="/workspace/components/QuartusLiteSetup-${pkgver}-linux.run \ + --disable-components modelsim_ae \ + --mode unattended \ + --unattendedmodeui none \ + --accept_eula 1 \ + --installdir "${_alteradir}"" +echo "Installing Quartus, this may take some time..." +`runuser -l vagrant -c "${install_command}"` + + +# Cleanup +echo "Cleaning up" +rm -r /workspace/components + +if [ -f "/workspace${tar_file}" ] +then + echo "Removing Tar file" + rm /workspace/$tar_file +fi + + # Copy over base files +\cp -f /shared/quartus-free/base_quartus.sh /shared/quartus-free/quartus.sh +\cp -f /shared/quartus-free/base_quartus.desktop /shared/quartus-free/quartus.desktop +\cp -f /shared/quartus-free/base_modelsim-ase.sh /shared/quartus-free/modelsim-ase.sh +\cp -f /shared/quartus-free/base_modelsim-ase.desktop /shared/quartus-free/modelsim-ase.desktop + + + # Replace altera directory in integration files +sed -i "s,_alteradir,${_alteradir},g" /shared/quartus-free/quartus.sh +sed -i "s,_alteradir,${_alteradir},g" /shared/quartus-free/quartus.desktop +sed -i "s,_alteradir,${_alteradir},g" /shared/quartus-free/modelsim-ase.sh +sed -i "s,_alteradir,${_alteradir},g" /shared/quartus-free/modelsim-ase.desktop + +# Fix modelsim startup code for Linux Kernel >=4.0 +# see https://wiki.archlinux.org/index.php/Altera_Design_Software +sed -i 's,linux_rh60,linux,g' "${_alteradir}/modelsim_ase/vco" + +# Suppress spurious warning about linux-gate.so.1 +sed -i '/msg_system/a suppress = 3116' "${_alteradir}/modelsim_ase/modelsim.ini" + +# Install integration files +install -D -m755 /shared/quartus-free/quartus.sh "/etc/profile.d/quartus.sh" +install -D -m644 /shared/quartus-free/quartus.desktop "/usr/share/applications/quartus.desktop" +install -D -m644 /shared/quartus-free/51-usbblaster.rules "/etc/udev/rules.d/51-usbblaster.rules" +install -D -m755 /shared/quartus-free/modelsim-ase.sh "/etc/profile.d/modelsim-ase.sh" +install -D -m644 /shared/quartus-free/modelsim-ase.desktop "/usr/share/applications/modelsim-ase.desktop" + +echo "Finished Installing Quartus" -- GitLab