Colorlight i5 custom apio board

72 views
Skip to first unread message

Carlos Venegas

unread,
Jul 1, 2026, 5:45:47 PMJul 1
to fpga-wars-explora...@googlegroups.com
ENGLISH BELOW

Os he preparado un par de tutoriales rápidos, aunque ya he corregido bastantes placas gracias a lo que ha encontrado Joaquim podrían surgir otras y esto es una forma de que podáis vosotros adaptarlas y lanzar los PR.

Además de para corregir estos tutoriales valen como ejemplo de alta de nuevas ttarjetas, clonar las existentes y personalizarlas o modificar comportamientos en un momento dado.

Espero que os haya sido útil al menos para ver las posibilidades que ofrece el board editor en esta primera versión (hay muchas mejoras pendientes y todas las sugerencias que propongáis pero ya de inicio va a dar agilidad y robustez a la hora de añadir tarjetas).

En los próximos días publicaré varios vídeos sobre todas las nuevas carcterísticas para hacer más fácil el aterrizaje y uso de Icestudio.



¡Feliz hacking!

ENGLISH

I’ve put together a couple of quick tutorials for you. Although I’ve already fixed quite a few boards based on what Joaquim discovered, other issues might crop up; this way, you can adapt the boards yourselves and submit PRs.

Beyond just making fixes, these tutorials serve as examples for adding new boards, cloning and customizing existing ones, or modifying behaviors as needed.

I hope this has been useful—at least in showing the possibilities offered by the board editor in this initial version. While there are many pending improvements and we welcome all your suggestions, it already brings agility and robustness to the process of adding boards right from the start.

In the coming days, I’ll be publishing several videos covering all the new features to make getting started with and using Icestudio easier.


¡Happy hacking!

tutorial_icestudio_colorlight.docx
icestudio_colorlight_tutorial_en.docx

Jo mo

unread,
Jul 1, 2026, 8:29:00 PMJul 1
to FPGAwars: explorando el lado libre
Ola Carlos, thanks for this great tutorial !
Now it works fine for colorligth i5.


remark : remark: every time i reinstall icestudio on my windows 10 the icestudio folder is set to read only.
so the board editor is not able to write the modifications when i click save.
i am getting the error:
icestudio_2026-07-02_02.10.32.png

To solve this i have to set manually the permissions after each reinstallation.
Capture11.JPG
To avoid this error, do you think it is possible to set full permission at the installation of icestudio? 
if not, maybe we can add some more info about the manual solution in the "pink" error message

Jo mo

unread,
Jul 1, 2026, 10:00:19 PMJul 1
to FPGAwars: explorando el lado libre
A little question/remark Carlos,

Your tutorial explains well how to modify a board and share it with others doing a PR.

But if i want to make a change that is only good for me like:
- add folkloric pin names adapted to my own usage of the board. eg: like renaming pmod1-5  to VGAsync ... because i always use a vgapmod adapter on this pmod
i will clone the generic board and rename the pins, but i will not make a PR because this change will just not be good for others.

So the next time i install the new icestudio wip, all the board folder and files will be overwritten with the last "fpga generic boards" from github and i will loose my cloned and modified boards.

Do you think something simple can be done for that case?


This last year, for doing this, i was using a python script that i run after each icestudio instalation, that just copy my "specially modified" files, that i stored in a non icestudio folder, to the board folders

here is the script:
===============================================================================
@echo off
REM Script to copy boards.json, menu.json and the Polvo-ecp5-25k_(FT2232H) folder


REM 1. Run generator.py to update the pinout.JSON files
echo Updating JSON files with generator.py ...
python generator.py Polvo-ecp5-25k_(FT2232H)
python generator.py Polvo-ecp5-45k_(FT2232H)

REM 2. Copy boards.json to apio resources as well as menu.json, polvo25k & polvo45k folders to icestudio boards
set SOURCE1=boards.json
set DEST1=C:\Users\J\.icestudio\venv\Lib\site-packages\apio\resources

echo Copying %SOURCE1% to %DEST1% ...
copy /Y "%SOURCE1%" "%DEST1%"

REM 3. Copy menu.json, polvo25k and polvo45k folders to icestudio boards

set SOURCE2=menu.json
set DEST2=C:\Program Files\icestudio\package.nw\resources\boards

set SOURCE3=Polvo-ecp5-25k_(FT2232H)
set DEST3=C:\Program Files\icestudio\package.nw\resources\boards

set SOURCE4=Polvo-ecp5-45k_(FT2232H)
set DEST4=C:\Program Files\icestudio\package.nw\resources\boards


echo Copying %SOURCE2% to %DEST2% ...
copy /Y "%SOURCE2%" "%DEST2%"

echo Copying folder %SOURCE3% to %DEST3% ...
xcopy /E /I /Y "%SOURCE3%" "%DEST3%\%SOURCE3%"

echo Copying folder %SOURCE4% to %DEST4% ...
xcopy /E /I /Y "%SOURCE4%" "%DEST4%\%SOURCE4%"

echo Done!
pause
===============================================================================

Of course time to time, i have to update my archived files (boards.json, menu.json  ) to include the new fpga boards ( specially if i need to use some of this new boards).

i understand that being able to save such personal preferences can be complex. And personally, i am fine continuing using my python script! 
But if by some chances you see a simple solution to this, it may be useful for other people using icestudio.

Thanks again for this big job you did and have a good day.

Maximiliano Simonazzi

unread,
Jul 2, 2026, 1:00:15 AMJul 2
to FPGAwars: explorando el lado libre
Yo tengo mi placa con una ice40, azukar, ¿puedo hacer un PR para agregarla a las definiciones para incorporarla a icestudio? por otro lado ya mande el PR a apio para integrarla tambien ahi. Si queres verla esta en www.azukar.com.ar

Carlos Venegas

unread,
Jul 2, 2026, 1:11:17 AMJul 2
to fpga-wars-explora...@googlegroups.com
Great, Joaquim! You’ve actually hit on a point I didn't explain very well.

Developer mode and modifying the distribution's board files only really make sense if you clone the project from GitHub and run it from the working directory.

The idea is to make board integration easier; the user can then go to their console and submit a PR (Git commit).

Without developer mode, you could save the board file anywhere, but it wouldn't be functional—so you might ask, "What's the point?" Well, you could have your `.ice` file in a folder, with a `boards` subfolder inside it containing your custom board definition; *that* way, you actually *can* use it.

This will be incredibly useful for developing or debugging new boards, without needing to include them in the API or the Icestudio binary itself. I’ll make a demo video using Jesús's "icecream" board.

Your solution is also valid—especially if you want to tweak specific settings (like having the board write to SRAM instead of Flash)—but the downside is that any modifications would be lost whenever you reinstall Icestudio. That’s why I don’t recommend doing it that way.

There is one thing I haven't implemented yet—to avoid introducing more potential points of failure, even though the risk is low: adding a "Boards" folder in the same directory where iceHub collections are stored. That way, a user could clone a board they want to modify and save it there, ensuring the changes persist across installations.

This would also tie in with the planned expansion of iceHub to allow sharing individual boards and designs (`.ice` files).

If testing goes reasonably well, I’ll upload a few more improvements related to this later in the week. I’ve been sticking to the bare minimum of features we can solidly finalize for the package Juan needs for his university course.

Thanks a lot for the testing!

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/5db59071-c3cb-4de4-933a-e0f5a71971c4n%40googlegroups.com.

Carlos Venegas

unread,
Jul 2, 2026, 1:43:18 AMJul 2
to fpga-wars-explora...@googlegroups.com
Claro Maximiliano!! he buscado pero no he localizado el PR en apio ¿tienes la url?, mira ,podemos usarla para enseñar el proceso de subir una tarjeta, voy a hacer un ejemplo con la icecream de Jesús y si tu pudieras luego seguir el proceso y replicarlo sería ideal y así confirmamos con algo muy distinto si todo funciona.

La idea de este ejemplo era subir una tarjeta solo a icestudio (sin estar en Apio), el por qué es porque en Apio podría darse el caso de que el PR tardara en aceptarse, si no es una placa con muchos usuarios o sin poder hacer pruebas con ella podría quedarse atascado ó por desarrollo inicialmente al desarrollador le puede interesar tenerla solo en Icestudio. 

Esto es algo muy potente que hasta ahora  teníamos muy cojo , a partir de esta versión apio y icestudio trabajan más acoplados que nunca para sacar uno del otro lo mejor.

Voy a intentar hoy dejar hecho el tutorial y os aviso, el tutorial lo voy a integrar para que se actualice remotamente desde iceTutorial para probar también esa funcionalidad en real, si funciona bien activaré unas opciones en icestudio para que desde ahí los usuarios puedan añadir recursos (colecciones, vídeos...) que compartir con el resto de la comunidad.

Muchas gracias por invertir tiempo en esta fase de pruebas!

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.

Maximiliano Simonazzi

unread,
Jul 2, 2026, 7:15:18 AMJul 2
to FPGAwars: explorando el lado libre
Gracias por la respuesta Carlos.

Te dejo el link del PR en apio https://github.com/FPGAwars/apio-definitions/pull/29 , fue hecho el 24/06

Y si, lo que necesites conta conmigo, hacemos el tutorial sobre como hacer un PR con la nueva placa o como agregarla a icestudio directamente ;)

Saludos

Carlos Venegas

unread,
Jul 2, 2026, 9:09:33 AMJul 2
to fpga-wars-explora...@googlegroups.com
Gracias Maximiliano! voy a hablar con Zapta (la persona que está liderando Apio) y según lo que me diga de por qué está el PR atascado vemos como atacarlo.

y cuento contigo para la reproducción del alta de la placa en Icestudio.

Por cierto ¿que FPGA lleva? una ice40hx4k - 8k?

Maximiliano Simonazzi

unread,
Jul 2, 2026, 9:18:46 AMJul 2
to FPGAwars: explorando el lado libre
Si, lleva una ice40hx4k que al usar herramientas OS llega a 8k luts

Carlos García

unread,
Jul 9, 2026, 1:49:35 PM (12 days ago) Jul 9
to fpga-wars-explora...@googlegroups.com
Hola, estoy intentando crear un custom board para poder programar la 5A-75B mediante un DirtyJtag.

Tengo el siguiente comando que funciona bien y carga correctamente al ejecutarlo "a mano": openFPGALoader -c dirtyJtag --bitstream hardware.bit
Pero al usar Icestudio siempre intenta usar el ft2232, esto es lo que veo en la consola: openFPGALoader --force-terminal-mode --verify -c ft2232 -v --file-type bin _build/default/hardware.bit

He intentado modificar la configuración pero no consigo dar con el comando, ahora tengo esto:
Screenshot_20260709_194445.png
Con esto dice "upload successful" pero en realidad no funciona y no muestra nada en la consola.

A ver si me podéis echar "un cable" :)



Carlos Venegas

unread,
Jul 9, 2026, 1:56:07 PM (12 days ago) Jul 9
to fpga-wars-explora...@googlegroups.com
Como la estás dando de alta? la has clonado? la estás sobreescribiendo? has creado una nueva?

Carlos Venegas

unread,
Jul 9, 2026, 1:57:53 PM (12 days ago) Jul 9
to fpga-wars-explora...@googlegroups.com
Y por otro lado debes meter siempre primero  {APIO_CMD} build, en la caja de texto te debería quedar así en dos líneas, te pongo el ejemplo de la colorlight 7.0 por ft2232


{APIO_CMD} build
{APIO_CMD} raw -- openFPGALoader -c ft2232 --freq 30000000 -v --file-type bin "{BITSTREAM}"


Carlos Venegas

unread,
Jul 9, 2026, 1:59:40 PM (12 days ago) Jul 9
to fpga-wars-explora...@googlegroups.com
Carlos , acabo de darme cuenta que me dejé si actualizar los placeholders cuando estuve solucionando el tema de la Colorlight usa el patrón qu ete he pasado y mira si funciona y bájate la última wip, estos días estoy solucionando muchos bugs y añadiendo cosas  y con lo qu ehas puesto lo que tiene pinta que ocurre es que está ignorando tu comando.

Carlos García

unread,
Jul 9, 2026, 2:11:50 PM (12 days ago) Jul 9
to fpga-wars-explora...@googlegroups.com
Madre mía Carlos qué velocidad, solucionado efectivamente poniendo en el upload:
{APIO_CMD} build
{APIO_CMD} raw -- openFPGALoader -c dirtyJtag -v --file-type bin "{BITSTREAM}"

Lo que hice fue clonar la placa para hacer una custom sin modificar con el developer mode.
Aunque ya sabiendo el mecanismo lo tendré en cuenta por si puedo hacer algún PR y añadir pines que falten en alguna placa.

Muchísimas gracias!!!

Carlos Venegas

unread,
Jul 9, 2026, 2:25:07 PM (12 days ago) Jul 9
to fpga-wars-explora...@googlegroups.com
Culpa mía! que ando a tope solucionando bugs y no me paro a leer los placeholders, Demócrito que me ayuda mucho en los tests siempre encuentra cosas que digo ¡pero como no lo vi!

Lo ideal es lo que has hecho tu, placa nueva mejor clonar y hacer y luego ya hacer PR. En modo dev para modificar placas y hacer PR.

Ando dándole vueltas a la idea de Fernando de aglutinar una placa y múltiples programadores, en apio es más complicado porque habría que rehacer la arquitectura pero en icestudio podríamos montar ese wrapper que me parece super interesante.

El tema del dirtyJtag está muy guay yo lo he usado con la pico ¿con qué placa lo estás usando? ya nos contarás!


Reply all
Reply to author
Forward
0 new messages