Esto llamó mi atención e investigando un poco acerca de esta tecnología vi que estaban subidas en docker hub, que viene a ser como un repositorio de imágenes Docker. El enlace es este: https://hub.docker.com/r/raetro/quartus y en él se explica cómo usarlas y cómo sintetizar un proyecto desde la línea de comandos, entre otras cosas.
Aunque acostumbrado a usar Quartus desde la interfaz gráfica y usando su ide lo echaba de menos, hasta que descubrí que podía usar las X de mi host para levantar la interfaz gráfica del Quartus del contenedor.
Quiero dar las gracias a Marcus Jordan (Boogermann) por crear estas imágenes de contenedores y que su trabajo sea visible por los compañeros del foro. Al tenerlas dockerizadas se solventa el problema que nos puede causar instalar Quartus de forma tradicional con ciertas librerias y versiones del sistema operativo.
Para quien no esté muy familiarizado con docker, los pasos que he seguido para ejecutar Quartus con su interfaz gráfica son los siguientes:
1. Instalar Docker en Linux, en este caso he usado una máquina virtual con Lubuntu 22.04. https://docs.docker.com/engine/install/ubuntu/
Dentro del apartado Install using the apt repository, sigo los pasos de los subapartados Set up the repository y Install Docker Engine
Tras ejecutar el hola mundo, si no queremos tener que poner sudo delante de nuestros comandos para ejecutar docker, nos vamos al final del la página en el apartado Next steps, Continue to Post-installation steps for Linux. Y ahí seguimos lo que pone en Manage Docker as a non-root user.
2. Elegir la imagen de Quartus correspondiente a la versión que quiero ejecutar
Miramos en el dockerhub de raetro: https://hub.docker.com/r/raetro/quartus
A fecha de hoy tenemos:
Supported tags, hardware and respective Dockerfile links
Cyclone® II, III, IV
13.0, 13.0sp1 v13.0.1.232 (sp1)
Cyclone® III, IV, V
13.1 v13.1.4.182
Cyclone® IV, V, 10LP and MAX® 10
17.0 v17.0.2.602
17.1 v17.1.1.593
18.1 v18.1.1.646
19.1 v19.1.0.670
20.1 v20.1.0.711
21.1, 21.1.1 v21.1.1.850
3. Ejecutamos un contenedor con la imagen docker de Quartus que le indiquemos
#damos permiso pare que el contenedor docker pueda usar el servidor X de nuestro host
xhost +
#ejecutamos quartus desde el contenedor de la imagen de quartus. Si es la primera vez que ejecutamos esa imagen, se descargará desde dockerhub
docker run --rm -v /$HOME/cores:/build -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix raetro/quartus:13.1 quartus
# --rm , con esto al salir de quartus se eliminará el contenedor creado
# -v /$HOME/cores:/build , con esto mapeamos el directorio /build del contenedor con un directorio lamado cores dentro de nuestro directorio de usuario, así todo lo que tengamos en nuestro host dentro de /$HOME/cores se verá en el /build del contenedor
# -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix , con esto usamos el servidor X de nuestro host
# raetro/quartus:13.1, nombre del contenedor
# quartus , el ejecutable a cargar
# si queremos ejecutar el contenedor de modo interactivo para terminal dentro de él sin ejecutar quartus, podemos poner el flag -it y quitar la llamada al ejecutable.
docker run --rm -it -v /$HOME/cores:/build -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix raetro/quartus:13.1
4. Ejemplos
Ejecutando Quartus 13.1 y sintetizando el core de Neogeo para MIST.

Aquí una captura del rbf generado desde el contenedor en mi directorio local /$HOME/cores

Ejecutando algo más moderno, Quartus 18.1. Como esta imagen no la tenía guardada, al hacer hacer docker run se me ha descargado.

Y esta última con el core de Amiga sintetizado para la Cyclone 10 del TC64v2.
