Uso de Docker para conducir a través del desarrollo FPGA Xilinx de código abierto

Hasta hace unos años, el desarrollo para FPGA requería el uso de herramientas patentadas bloqueadas, pero en los últimos años, la represa de código cerrado ha explotado y han aparecido herramientas FPGA de código abierto como Yosys, SimbiFlow e Icestorm. inundación. Sin embargo, configurar un entorno de construcción para estas nuevas y emocionantes herramientas puede ser todo un desafío, pero [Carlos Eduardo] decidió crear un kit de herramientas de código abierto para FPGA de Xilinx con Docker.

Su imagen solo tiene tres requisitos previos: Docker, Python 3 y OpenOCD (que se usa para cargar su FPGA con su archivo de bits personalizado). Una vez creada la imagen de Docker y todas las herramientas instaladas, [Carlos] lo guía a través del uso de Python, FuseSoc y SymbiFlow para construir su primer proyecto FPGA Xilinx de código abierto.

Además de facilitar la instalación, el uso de contenedores le permite crear el mismo entorno de desarrollo en Linux, Mac y Windows (usando WSL), lo que facilitará la vida de las computadoras que trabajan en múltiples sistemas. [Carlos’s] Dockerfile es único porque admite la popular serie Artix-7 de FPGA; para los FPGA de cuadrícula que han sido compatibles durante mucho más tiempo, ya existen archivos Docker en DockerHub. ¡Es más fácil que instalar la cadena de herramientas del vendedor!

Si cree que puede llegar el momento de profundizar en un programa FPGA, eche un vistazo a este resumen de las herramientas FPGA de código abierto de la Superconferencia 2019.

  • Víctor dice:

    Aquí hay otro (solo ~ 1GB) que incluye soporte para ICE40 y ECP5 y herramientas de código abierto de confirmación formal https://github.com/vmunoz82/eda_tools

  • Joel dice:

    Solución de muelle muy inteligente, =)
    Usé la instantánea de sesión de vaca qemu / kvm para entornos de compilación congelados y entregué en la máquina operativa un dispositivo USB a la VM (junto con un enlace Samba NFS para la ruta de compilación lenta). Para algunos proveedores, todavía solo admiten versiones basadas en win10.

    #Algo como:
    devInfo = $ (lsusb | grep -oE “^ Bus. * ID 1209: 2101. * InterBiometrics”)
    BusID = $ (eoo “$ devInfo” | cut -d ” -f2 | pero / s[^0-9]// g ‘| grep -o ‘[^0]. * ‘)
    DeviceID = $ (eoo “$ devInfo” | cut -d ” -f4 | pero / s[^0-9]// g ‘| grep -o ‘[^0]. * ‘)

    serialDevFlags = ””
    Si [ ! “$BusID” = “” ] && [ ! “$DeviceID” = “” ]

    luego
    serialDevFlags = “-usb -device usb-host, hostbus = $ BusID, hostaddr = $ DeviceID”
    fi

  • Greg A. dice:

    arriesgándome a exponer mi propia ignorancia 🙂

    el doctor apesta. requiere una raíz, y cualquier usuario que pueda dominar una base puede obtener una raíz fácilmente. sus interacciones con la pila en línea son complicadas y opacas y tienden a romper otros scripts. su bucle principal select () sondea activamente, consumiendo CPU cuando no pasa nada.

    También le gustan muchas cosas, por supuesto, y tiene muchas características que no necesito / quiero, pero que son indiscutiblemente interesantes.

    Cambié de docker a lxc hace unos meses y cada debilidad de docker es una fortaleza de lxc. contenedores reales sin privilegios, redes obvias y simples, y (no puedo creer que eso diferencie) un bucle select () que en realidad espera que suceda algo. y fue una transición bastante fácil desde la ventana acoplable, porque mis archivos de Docker eran solo una lista de paquetes para instalar …

    sólo, ya sabes, mi sexto un poquito.

    • Redhatter (VK4MSL) dice:

      > requiere una raíz

      Incorrecto … debes ser miembro del grupo de Docker.

      • Nuno dice:

        seguro, pero todas las demás preocupaciones se aplican:
        yo @ localhost: ~ $ docker run -v / tmp: / host-tmp –rm -it ubuntu: 20.04
        root @ 43a60583eb08: / # touch /host-tmp/hi_there_i_am_root.txt
        root @ 43a60583eb08: / # salir
        mi @ localhost: ~ $ ls -al /tmp/hi_there_i_am_root.txt
        -rw-r – r– 1 raíz raíz 0 5 de mayo 19:21 /tmp/hi_there_i_am_root.txt

    • Un dron dice:

      Docker + Docker-Hub, LXC + LXD, Jail + Warden, rkt, etc, etc … Todos tienen varias fortalezas y debilidades. Al igual que con tener una buena herramienta manual, es bueno tener a todos para elegir.

    • ScriptGiddy dice:

      Solo los Sith tratan con absolutos 🙂

  • Joel dice:

    OpenVZ (lxc) sigue siendo popular, y Docker no es adecuado para todos los casos de uso (aunque RancherVM es bastante bueno).
    Además, los invitados Linux KVM que utilizo para las versiones xilinx administran núcleos de virtualización mínimos, y esta configuración generalmente evita el uso excesivo de recursos del ejemplo de invitado.

    Pero tiene razón, en esa jerarquía de permisos maestros se colapsa rápidamente si se necesita acceso CUDA / GPU en un invitado de Docker. Puede que eso haya cambiado últimamente, pero dudo que le haya dado a nVidias algún truco a lo largo de los años.
    😉

  • Sjaak dice:

    Ojalá hubiera una alternativa de código abierto para viejos cplds como xc95xl.

    Utilizo estos cplds para conectar lógica de 5v en una computadora vieja como c64 y amiga. Xilinx proporciona una máquina virtual con las herramientas antiguas, pero esto funciona con un sistema operativo antiguo, sin embargo, las herramientas para programar el cpld utilizan un puerto paralelo o un cable Xilinx especial. Me pareció triste programarlos con un cable ft2232 general, pero eso no funciona (o no se puede compilar en / para la máquina virtual xilinx).

Fernando Román
Fernando Román

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *