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.
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.
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)
- Subcritical
- Spartan 3
- Mensajes: 228
- 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/
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 136 veces
Ir a
- General
- ↳ Avisos
- ↳ Sobre la web
- ↳ Cajón de sastre
- ↳ Otros chips/placas
- ↳ ZX-EVO
- ↳ ReVerSE-U16
- ↳ FleaFPGA
- ↳ MSX Zemmix Neo
- ↳ Linchee Tang
- UnAmiga
- ↳ General
- ↳ Cores
- ↳ Arcades
- ↳ Atari 800XL
- ↳ CBS Colecovision
- ↳ Commodore 64
- ↳ Minimig A500/A600
- ↳ MIST AGA A1200
- ↳ MSX (MSX1FPGA)
- ↳ MSX2+ (One Chip MSX)
- ↳ Next186 PC-XT
- ↳ Nintendo Entertainment System (NES)
- ↳ Nintendo Gameboy
- ↳ PC-Engine (Turbografx)
- ↳ S80186 PC-XT con CGA
- ↳ Sega Master System
- ↳ Sega Megadrive
- ↳ Sinclair QL
- ↳ SPEC256 de Iñigo Ayo
- ↳ TS-Conf (ZX-EVO)
- ↳ ZX Spectrum
- ↳ Otros cores / En preparación
- ↳ Placa UnAmiga
- ↳ Firmware
- ↳ Hardware
- ↳ Desarrollo
- ↳ Accesorios
- ↳ Preguntas y peticiones
- ↳ Recursos en Internet
- ↳ In English
- ZXDOS y ZX-DOS+
- ↳ General
- ↳ Cores
- ↳ Arcades
- ↳ Amstrad CPC
- ↳ Atari 2600
- ↳ Atari 800
- ↳ C64
- ↳ Colecovision
- ↳ MSX (MSX1FPGA)
- ↳ MSX2+ (alias MSX3, ocm)
- ↳ Next186 PC-XT
- ↳ Nintendo NES
- ↳ Pong AY-3-8500
- ↳ Sega Master System
- ↳ Vectrex
- ↳ Videopac
- ↳ ZX Spectrum
- ↳ ZX Spectrum Next
- ↳ Otros cores / En preparación
- ↳ Placas ZX-DOS y ZX-DOS+
- ↳ Firmware
- ↳ Hardware
- ↳ Desarrollo
- ↳ Accesorios
- ↳ Preguntas y peticiones
- ↳ Recursos en Internet
- ↳ In English
- ZX-TRES, ZX-TRES+ y ZX-TRES++
- ↳ General
- ↳ Cores
- ↳ Placas ZX-TRES, ZX-TRES+ y ZX-TRES++
- ↳ Firmware
- ↳ Hardware
- ↳ Desarrollo
- ↳ Accesorios
- ↳ Preguntas y peticiones
- ↳ Recursos en Internet
- ↳ In English
- ZX Spectrum Next / N-GO
- ↳ General
- ↳ Cores
- ↳ Spectrum Next
- ↳ Spectrum ZX-Uno
- ↳ MSX1
- ↳ NES
- ↳ Placa ZX Spectrum Next
- ↳ Firmware
- ↳ Hardware
- ↳ Software de desarrollo
- ↳ Placa N-GO
- ↳ Firmware
- ↳ Hardware
- ↳ Software de desarrollo
- ↳ Accesorios
- ↳ Preguntas y peticiones
- ↳ Recursos en Internet
- Pano Logic
- ↳ General
- ↳ Documentación y howtos
- ↳ Cores
- ↳ In English
- MiST / Mistica FPGA16 / SiDi
- ↳ General
- ↳ Cores
- ↳ Menú de arranque
- ↳ Acorn Archimedes
- ↳ Acorn BBC Micro
- ↳ Acorn Electron
- ↳ Amstrad CPC
- ↳ Apogee BK-01 / Radio-86K
- ↳ Apple II+
- ↳ Apple Macintosh
- ↳ Atari 2600
- ↳ Atari 5200
- ↳ Atari 800
- ↳ Atari ST
- ↳ Bally Astrocade
- ↳ Chip8
- ↳ Commodore 16, Plus/4
- ↳ Commodore 64
- ↳ Commodore Amiga
- ↳ Commodore PET
- ↳ Commodore VIC-20
- ↳ ColecoVision
- ↳ Electronika BK0010 - BK0011M
- ↳ HT1080Z - School Computer / EACA VideoGenie / TRS-80 Model 1
- ↳ Jupiter Ace
- ↳ Laser 310
- ↳ Mattel Aquarius
- ↳ Microkey Primo
- ↳ MSX2+ (One Chip MSX)
- ↳ Nintendo Gameboy
- ↳ Nintendo NES
- ↳ Oric 1 / Atmos
- ↳ PC-Engine (consola TurboGrafx)
- ↳ SAM Coupè
- ↳ Sega Master System
- ↳ Sega Mega Drive (Genesis)
- ↳ Sinclair ZX Spectrum
- ↳ Sinclair QL
- ↳ Sinclair ZX80/ZX81
- ↳ Sinclair ZX81
- ↳ Specialist/MX
- ↳ Vector-06C
- ↳ Vectrex
- ↳ Videopac
- ↳ Videoton TV-Computer
- ↳ Arcade cores
- ↳ Cores en preparación
- ↳ Placa MiST - Mistica FPGA16 - SiDi
- ↳ Firmware
- ↳ Hardware
- ↳ Software de desarrollo
- ↳ Accesorios
- ↳ Preguntas y peticiones
- ↳ Recursos en Internet
- MiSTer
- ↳ General
- ↳ Cores
- ↳ Menú de arranque
- ↳ Acorn Archimedes
- ↳ Acorn BBC Micro
- ↳ Amstrad CPC
- ↳ ao486
- ↳ Apogee BK-01 / Radio-86K
- ↳ Apple II+
- ↳ Apple Macintosh Plus
- ↳ Atari 2600
- ↳ Atari 5200
- ↳ Atari 800
- ↳ ColecoVision
- ↳ Commodore 16, Plus/4
- ↳ Commodore 64
- ↳ Commodore Amiga
- ↳ Commodore PET
- ↳ Commodore VIC-20
- ↳ Electronika BK0010 - BK0011M
- ↳ Jupiter ACE
- ↳ Mattel Aquarius
- ↳ MSX2
- ↳ Multicomp
- ↳ Nintendo Gameboy
- ↳ Nintendo NES
- ↳ PC-Engine (consola TurboGrafx)
- ↳ SAM Coupè
- ↳ Sega Master System
- ↳ Sega Megadrive
- ↳ Sinclair QL
- ↳ Sinclair ZX Spectrum
- ↳ Specialist/MX
- ↳ TS-Conf
- ↳ Vector-06C
- ↳ Vectrex
- ↳ X68000
- ↳ Arcade cores
- ↳ Cores en preparación
- ↳ Placa MiSTer
- ↳ Firmware
- ↳ Hardware
- ↳ Software de desarrollo
- ↳ Accesorios
- ↳ Preguntas y peticiones
- ↳ Recursos en Internet
- ATLAS
- ↳ General
- ↳ V001&V002
- ↳ V003
- ↳ Cores
- ↳ Firmware/Framework
- Placas OpenFPGA - "FPGAWars"
- ↳ Alhambra
- ↳ Colorlight
- ↳ IceSugar
- ↳ ULX3
- ↳ Otras placas libres
- Xilinx
- ↳ Chips
- ↳ Placas entrenadoras
- ↳ ISE
- ↳ Vivado
- Altera / Intel
- ↳ Chips
- ↳ Placas entrenadoras
- ↳ Quartus
- Diseño con HDL
- ↳ General
- ↳ VHDL
- ↳ Verilog / SystemVerilog
- ↳ Otros lenguajes HDL