Buenas,
Lo fundamental para añadir una nueva placa en Icestudio es que esté soportada en Apio (
https://github.com/FPGAwars/apio), que es lo que Icestudio utiliza actualmente como "back-end". La parte de síntesis y rutado (verilog --> bitstream) es común para todas las iCE40 soportadas por Icestorm. La parte crítica es el programador, que es el software que descarga el bitstream en la placa.
Actualmente Apio utiliza estos programadores:
https://github.com/FPGAwars/apio/blob/develop/apio/resources/programmers.json:
- iceprog: utilizado por todas las placas con FTDI. Se programan desde el puerto serie conectadas a un ordenador con cualquier sistema operativo. Ej: iCEstick, IceZUM Alhambra, ...
- icoprog: utilizado para las placas HAT de la Raspberry Pi. Concretamente se ha probado para la icoBoard.
- litterbox: utilizado para la placa CatBoard, aunque como es un script de Python externo a la toolchain no está integrado completamente en Icestudio.
Concretamente las placas de Olimex iCE40 necesitan un Arduino con un firmware específico para descargar el bitstream por SPI. Depués de conectar el Arduino, mediante un programa llamado "iceprogduino" descargan el bitstream a la FPGA de la Olimex a través del puerto serie del ordenador, pasando por el Arduino. En este punto la integración con Apio y Icestudio es sencilla. Para dar soporte out-of-the-box se podría hacer una release de la toolchain-icestorm incluyendo este nuevo programador en el paquete.
Además habría que tener en cuenta que los drivers para conectar con el Arduino no son generalmente los mismos que los del FTDI.
Así que si alguno se anima a hacer el proceso, validar iceprogduino en Linux, Windows, Mac, resolver la parte de drivers y probar con pequeños hacks en Apio, Icestudio lo incluiremos en las siguientes versiones.
Un saludo.