Ejecutar Quartus con Docker de manera gráfica en GNU/Linux

Cuestiones generales sobre uso de Quartus y diseño digital con él (las cuestiones que sean específicas de UnAmiga, dirigirlas a "Desarrollo" del foro UnAmiga)
Responder
delgrom
PLA
Mensajes: 31
Registrado: 17 Ago 2018, 22:52

Ejecutar Quartus con Docker de manera gráfica en GNU/Linux

Mensaje por delgrom » 16 Jun 2023, 10:59

Hace un tiempo que vi en el github de raetro https://github.com/raetro/sdk-docker-fpga todas las versiones de Quartus II listas para crearlas en contenedores Docker.

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.

Imagen


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

Imagen

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.

Imagen

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

Imagen

Avatar de Usuario
Subcritical
Spartan 3
Mensajes: 225
Registrado: 24 Ago 2018, 14:52

Re: Ejecutar Quartus con Docker de manera gráfica en GNU/Linux

Mensaje por Subcritical » 18 Jun 2023, 19:26

Diós que útil, muchisimas grácias Delgrom, yo sigo intentando el core de Jamie porque es interesante ver su implementación de MCGA.
Y usa un Docker mal configurado.
Se ha desentendido de su código dado que he pedido ayuda al mismo desarrollador y no me la ha proporcionado.

https://www.jamieiles.com/80186/
80x86-20180307.tar.xz.zip
(814.84 KiB) Descargado 132 veces

Responder

Volver a “Quartus”