[VHDL[GHDL][Yosys] Notición!! El VHDL está con nosotros!!

723 views
Skip to first unread message

Obijuan

unread,
Feb 10, 2017, 5:32:11 AM2/10/17
to FPGAwars: explorando el lado libre
Hola!

  La semana pasada, en la FOSSDEM de Bruselas, Tristan Gingold dió este taller:

https://fosdem.org/2017/schedule/event/fpga_oss_tutorial/

(Tiene vídeo)

Tristan es el autor del GHDL, un simulador de VHDL libre, basado en GCC, que muchos de la lista lo hemos estado usando desde hace años. Está muy madura.

Pues bien, Tristan ha creado un fron-end para Yosys, de manera que ya se puede cerrar el ciclo de diseño completo en VHDL

Todavía no he podido evaluar la herramienta. Me imagino que el front-end todavía estará un poco verde, y necesitará pruebas y sobre todo ejemplos, pero ya está ahí... :-)

Entre todos lograremos que la herramienta mejore.  Las FPGAs libres son imparables. Esto es un grandísimo impulso

¡¡Genial noticia para este viernes!!  :-)

Saludos, Obijuan

coleoptero jmag

unread,
Feb 10, 2017, 5:41:07 AM2/10/17
to fpga-wars-explora...@googlegroups.com
Si todos los viernes son así... vamos bien.

(ºLe.

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/7e1dc818-9907-4cad-8a09-9cf574d305fa%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--


_______________________________
Juan Manuel Amuedo González (coLe)
Twitter: @colepower
Blog de notas: http://www.scoop.it/t/barfablab
Google+: https://plus.google.com/102644965871851493149
Photos: http://picasaweb.google.com/coleoptero
Blog personal: http://dadoque.blogspot.com (desactualizado)
coleoptero_AT_gmail_IN_com
_______________________________

Juan José Luna Espinosa

unread,
Feb 10, 2017, 6:45:26 AM2/10/17
to fpga-wars-explora...@googlegroups.com
Gran noticia! Hay mogollón de código VHDL que está esperando ser aprovechado.

El 10 de febrero de 2017, 11:41, coleoptero jmag <coleo...@gmail.com> escribió:
Si todos los viernes son así... vamos bien.

(ºLe.
El 10 de febrero de 2017, 11:32, Obijuan <obijua...@gmail.com> escribió:
Hola!

  La semana pasada, en la FOSSDEM de Bruselas, Tristan Gingold dió este taller:

https://fosdem.org/2017/schedule/event/fpga_oss_tutorial/

(Tiene vídeo)

Tristan es el autor del GHDL, un simulador de VHDL libre, basado en GCC, que muchos de la lista lo hemos estado usando desde hace años. Está muy madura.

Pues bien, Tristan ha creado un fron-end para Yosys, de manera que ya se puede cerrar el ciclo de diseño completo en VHDL

Todavía no he podido evaluar la herramienta. Me imagino que el front-end todavía estará un poco verde, y necesitará pruebas y sobre todo ejemplos, pero ya está ahí... :-)

Entre todos lograremos que la herramienta mejore.  Las FPGAs libres son imparables. Esto es un grandísimo impulso

¡¡Genial noticia para este viernes!!  :-)

Saludos, Obijuan

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-lib...@googlegroups.com.
--


_______________________________
Juan Manuel Amuedo González (coLe)
Twitter: @colepower
Blog de notas: http://www.scoop.it/t/barfablab
Google+: https://plus.google.com/102644965871851493149
Photos: http://picasaweb.google.com/coleoptero
Blog personal: http://dadoque.blogspot.com (desactualizado)
coleoptero_AT_gmail_IN_com
_______________________________

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Salvador Eduardo Tropea

unread,
Feb 10, 2017, 7:13:52 AM2/10/17
to fpga-wars-explora...@googlegroups.com
¡Buenísimo!
Parece que pincharlo con este tema comienza a dar sus frutos ;-)

El 10/02/17 a las 07:32, Obijuan escribió:
> --
> 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
> <mailto:fpga-wars-explorando-el...@googlegroups.com>.
> Para publicar en este grupo, envía un correo electrónico a
> fpga-wars-explora...@googlegroups.com
> <mailto:fpga-wars-explora...@googlegroups.com>.
> <https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/7e1dc818-9907-4cad-8a09-9cf574d305fa%40googlegroups.com?utm_medium=email&utm_source=footer>.
> Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
Ing. Salvador Eduardo Tropea http://utic.inti.gob.ar/
INTI - Micro y Nanoelectrónica (CMNB) http://www.inti.gob.ar/
Unidad Técnica Sistemas Inteligentes Av. General Paz 5445
Tel: (+54 11) 4724 6300 ext. 6919 San Martín - B1650KNA
FAX: (+54 11) 4754 5194 Buenos Aires * Argentina




Juanma Rico

unread,
Feb 10, 2017, 10:17:18 AM2/10/17
to FPGAwars: explorando el lado libre
Bueno, como si no fuera suficiente con Verilog para los novatos como nosotros... ¡Que nos pilla el tren! jajajaja
¿Hay enlaces del proyecto para intentar descargarlo y probar?

Juanma Rico

unread,
Feb 10, 2017, 10:22:00 AM2/10/17
to FPGAwars: explorando el lado libre
Un poco de Google...

https://github.com/forflo/yodl

Salvador Eduardo Tropea

unread,
Feb 10, 2017, 10:28:08 AM2/10/17
to fpga-wars-explora...@googlegroups.com
Ojo! Yodl es otro frontend diferente, este es el GHDL:

https://github.com/tgingold/ghdlsynth-beta

El 10/02/17 a las 12:22, Juanma Rico escribió:
> Un poco de Google...
>
> https://github.com/forflo/yodl <https://github.com/forflo/yodl>
> --
> 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
> <mailto:fpga-wars-explorando-el...@googlegroups.com>.
> Para publicar en este grupo, envía un correo electrónico a
> fpga-wars-explora...@googlegroups.com
> <mailto:fpga-wars-explora...@googlegroups.com>.
> Visita este grupo en
> https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.
> Para ver esta conversación en el sitio web, visita
> https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/d5941072-8295-468f-96f4-4c44b66098b1%40googlegroups.com
> <https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/d5941072-8295-468f-96f4-4c44b66098b1%40googlegroups.com?utm_medium=email&utm_source=footer>.

Juanma Rico

unread,
Feb 10, 2017, 10:50:05 AM2/10/17
to FPGAwars: explorando el lado libre, salv...@inti.gob.ar

Sí, es cierto, una segunda búsqueda me dio uno como frontend de GHDL... estoy probando este: https://github.com/tgingold/ghdlsynth-beta

Pero en Win7 Yosys falla estrepitosamente.... :(



Me voy a tener que pasar a un Debian para probarlo en condiciones... :)

Auto Generated Inline Image 1

Jesús Arroyo

unread,
Feb 10, 2017, 11:36:08 AM2/10/17
to FPGAwars: explorando el lado libre
A lo mejor está basado en versiones más recientes de Yosys, así que te recomiendo compilar toda la toolchain (En linux claro :)

Juanma Rico

unread,
Feb 10, 2017, 11:59:23 AM2/10/17
to FPGAwars: explorando el lado libre
Sí, se necesita aplicar un parche a yosys y recompilar... en unos minutos sabré si funciona... :D

Carlos 47

unread,
Feb 10, 2017, 1:21:46 PM2/10/17
to fpga-wars-explora...@googlegroups.com
Teniendo a Verilog y VHDL ya "soportados", ¿En el futuro irán por System Verilog?

Se un poco de Verilog y VHDL, pero ¿que ventajas tiene SV sobre estos?

Saludos

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.

Obijuan

unread,
Feb 10, 2017, 2:32:09 PM2/10/17
to FPGAwars: explorando el lado libre
He conseguido completar casi todos los pasos, pero en el último momento, al compilar yosys, me ha dado este error en el linkado:


$ make
[100%] Building yosys
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `__gnat_install_SEH_handler'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `system__restrictions__abort_allowed'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `system__stack_usage__is_enabled'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `ada__calendar__delays__to_duration'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `__gnat_stack_usage_output_results'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `system__parameters__adjust_storage_size'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `system__multiprocessors__number_of_cpus'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `system__stack_usage__compute_result'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `system__stack_checking__operations__invalidate_stack_cache'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `_ada_ada__exceptions__is_null_occurrence'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `system__stack_usage__fill_stack'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `system__stack_usage__report_result'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `system__restrictions__run_time_restrictions'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `__gnat_stack_usage_results'
/usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/libgnarl-5.so: undefined reference to `system__stack_usage__initialize_analyzer'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Makefile:379: recipe for target 'yosys' failed
make: *** [yosys] Error 1

Lo pongo aquí como documentación para ver si a vosotros os pasa lo mismo. He puesto una issue en el repo de ghdlsynth para ver si Tristan sabe qué puede ser

Saludos, Obijuan



El viernes, 10 de febrero de 2017, 11:32:11 (UTC+1), Obijuan escribió:

Juanma Rico

unread,
Feb 10, 2017, 2:50:50 PM2/10/17
to FPGAwars: explorando el lado libre
A mi me ha pasado lo mismo... he hecho un pull y se me ha solucionado... pero ahora me ha saltado otro fallo...

Pdta: En la documentación falta un espacio en make install .libghdlsynth me he estado dando cabezazos pensando que se le había colado el punto... pero no, lo que le falta es un espacio (o eso parece porque también da error en este punto).

Juan Gonzalez Gomez

unread,
Feb 10, 2017, 3:15:47 PM2/10/17
to FPGA-WARS: explorando el lado libre
El error es justo en el último paso. Todo lo anterior ya consigo que vaya.

Lo de la librería libghdlsynth lo he solucionado invocando a estos objetivos:

make install.libghdlsynth.include
make install.libghdlsynth.static
make install.libghdlsynth.shared

Yo creo que se le ha olvidado incluir el objetivo install.libghdlsynth que depende de los otros.

El caso es que con eso se compila y se instala esa biblioteca sin problemas

Saludos, Obijuan


El 10 de febrero de 2017, 20:50, Juanma Rico <juan...@gmail.com> escribió:
A mi me ha pasado lo mismo... he hecho un pull y se me ha solucionado... pero ahora me ha saltado otro fallo...

Pdta: En la documentación falta un espacio en make install .libghdlsynth me he estado dando cabezazos pensando que se le había colado el punto... pero no, lo que le falta es un espacio (o eso parece porque también da error en este punto).

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Feb 10, 2017, 3:17:22 PM2/10/17
to FPGAwars: explorando el lado libre
Bueno... lo mismo, lo mismo, no...

Lo mio es más grave... no consigo pasar del 12% :(

juanma@angora:~/Proyectos/FPGA/VHDL/yosys$ make
[Makefile.conf] CONFIG := gcc
[Makefile.conf] ENABLE_GHDL := 1
[Makefile.conf] GHDL_DIR := /home/juanma/Proyectos/FPGA/VHDL/ghdl
[ 12%] Building frontends/ghdl/ghdl.o
frontends
/ghdl/ghdl.cc:31:23: fatal error: ghdlsynth.h: No existe el fichero o el directorio
 
#include "ghdlsynth.h"
                       
^
compilation terminated
.
Makefile:383: fallo en las instrucciones para el objetivo 'frontends/ghdl/ghdl.o'
make
: *** [frontends/ghdl/ghdl.o] Error 1
juanma@angora
:~/Proyectos/FPGA/VHDL/yosys$



Obijuan

unread,
Feb 10, 2017, 3:40:41 PM2/10/17
to FPGAwars: explorando el lado libre
No se te ha instalado la librería libghdlsynth con los comandos anteriores (al instalarla te copia el fichero ghdlsynth.h). En tu caso no lo está detectando

Ejecuta los comandos que te he pasado antes y asegúrate que el fichero
ghdlsynth.h te aparezca en el directorio /home/juanma/Proyectos/FPGA/VHDL/ghdl/include

Le acabo de enviar un pull-request para solucionar el problema de la instalacion. A ver si lo acepta :-)

Saludos, Obijuan

Juanma Rico

unread,
Feb 10, 2017, 3:49:11 PM2/10/17
to FPGAwars: explorando el lado libre
Sí, Juan, es eso mismo... ya va por el 66%... y subiendo...
A ver si se me reproduce tu error final.

Juan Gonzalez Gomez

unread,
Feb 10, 2017, 3:51:22 PM2/10/17
to FPGA-WARS: explorando el lado libre
Pull-request aceptado!  Ya funciona el comando make install.libghdlsynth  :-)

Ya no lo necesitas, pero si haces un pull ya te funcionará para la próxima

Suerte con la compilación!!! A ver si a tí te compila bien! Que tengo mucho sav!!!! :-)

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Democrito

unread,
Feb 10, 2017, 4:01:20 PM2/10/17
to FPGAwars: explorando el lado libre, ju...@iearobotics.com
Yo no tengo idea de estos temas, y seguramente estoy metiendo la pata. He visto que tiene un segundo github:


PD: Si es irrelevante hacer oídos sordos...

Juanma Rico

unread,
Feb 10, 2017, 4:05:34 PM2/10/17
to FPGAwars: explorando el lado libre, ju...@iearobotics.com
Ya ha llegado al 100% y no se completa, el mismo error que te sale a ti. :(
Voy a probar el pull... el punto por lo visto estaba bien puesto, pero no se me ocurrió mirar los objetivos del Make. :)

Juan Gonzalez Gomez

unread,
Feb 10, 2017, 4:21:09 PM2/10/17
to FPGA-WARS: explorando el lado libre
Si quieres juanma coméntalo en este issue que he abierto, para que tristan vea que le pasa a más gente





El 10/2/2017 22:05, "Juanma Rico" <juan...@gmail.com> escribió:
Ya ha llegado al 100% y no se completa, el mismo error que te sale a ti. :(
Voy a probar el pull... el punto por lo visto estaba bien puesto, pero no se me ocurrió mirar los objetivos del Make. :)

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Feb 10, 2017, 4:24:11 PM2/10/17
to FPGAwars: explorando el lado libre

Sí ha separado los proyectos (imagino que porque el front-end está en fase beta).
Quien lo quiera intentar compilar, hay que integrar los siguientes proyectos:

  1. https://github.com/tgingold/ghdlsynth-beta.git
  2. https://github.com/tgingold/ghdl.git
  3. https://github.com/cliffordwolf/yosys.git
Seguir las instrucciones del proyecto... antes hay que compilar el el front-end (1), luego compilar GHDL (2) y una vez parcheado (lo explica en 1) compilar yosys (3).



Juanma Rico

unread,
Feb 10, 2017, 4:31:22 PM2/10/17
to FPGAwars: explorando el lado libre
Comentado... ;)

Juanma Rico

unread,
Feb 10, 2017, 4:56:56 PM2/10/17
to FPGAwars: explorando el lado libre
Ya ha contestado tristan... Ha creado un Make para hacer el módulo de ghdlsynth a parte... ¡¡pero no tengo instalado el yosys-config!! :S
¡¡A compilarlo como sea!! :)

Juan Gonzalez Gomez

unread,
Feb 10, 2017, 5:07:16 PM2/10/17
to FPGA-WARS: explorando el lado libre
Yo si lo tengo, pero me sale este error:

$ make GHDL_PREFIX=/usr/local
yosys-config --exec --cxx --cxxflags --ldflags -o ghdl.so -shared ghdl/ghdl.cc -DYOSYS_ENABLE_GHDL -I/usr/local/include /usr/local/lib/libghdlsynth.so -Wl,-rpath,/usr/local/lib --ldlibs
/usr/bin/ld: /tmp/ghdl-dbd129.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/tmp/ghdl-dbd129.o: error adding symbols: Bad value

clang: error: linker command failed with exit code 1 (use -v to see invocation)
Makefile:11: recipe for target 'ghdl.so' failed
make: *** [ghdl.so] Error 1


Hay algún problema en como se ha compilado la libghdlsynth.so. No consigue linkarla



El 10 de febrero de 2017, 22:56, Juanma Rico <juan...@gmail.com> escribió:
Ya ha contestado tristan... Ha creado un Make para hacer el módulo de ghdlsynth a parte... ¡¡pero no tengo instalado el yosys-config!! :S
¡¡A compilarlo como sea!! :)

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Feb 10, 2017, 5:08:29 PM2/10/17
to FPGAwars: explorando el lado libre

Creo que el yosys que tengo actualmente en el sistema Debian es la tool-chain de Icestudio.

#yosys -V
Yosys 0.7 (git sha1 61f6811, gcc 6.2.0-10 -O2 -fdebug-prefix-map=/build/yosys-0DEyT5/yosys-0.7=. -fstack-protector-strong -fPIC -Os)

¿Puede ser? ¿No tiene compilado el binario de yosys-config esta versión de tool-chain?
Igual sería interesante que Apio o Icestudio pudieran mostrar todas estas versiones que utilizan.

Juanma Rico

unread,
Feb 10, 2017, 9:17:34 PM2/10/17
to FPGAwars: explorando el lado libre, ju...@iearobotics.com

¡¡Ya está!!
Tristan ha modificado el README.rd del proyecto y no ha recomendado integrarlo en yosys, ha puesto un Makefile para compilarlo como un módulo. Yo no disponía del yosys-config, así que he tenido que recompilarlo todo de nuevo, he usado este ejemplo en VHDL que viene preparado para la Icestick, lo he sintetizado... ¡Y ya está funcionnado en la IceZUM Alhambra!

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

--  Led positions
--
--  I         D3
--  r
--  D     D2  D5  D4
--  A
--            D1
--
entity leds
is
  port
(clk : in std_logic;
        led1
, led2, led3, led4, led5 : out std_logic);
end leds;



Explico un poco los pasos que he seguido por si alguien los quiere intentar replicar:

  1. Descargar el código de github de los tres proyectos.

    $ git clone https://github.com/tgingold/ghdlsynth-beta.git
    $ git clone https://github.com/tgingold/ghdl.git
    $ git clone https://github.com/cliffordwolf/yosys.git

  2. Compilar yosys.

    $ cd yosys
    /yosys $ make
    /yosys $ make test
    /yosys $ sudo make install

  3. Compilar ghdl.

    /yosys $ cd ../ghdl
    /ghdl $ ./configure --prefix=/usr/local /ghdl $ make
    /ghdl $ make install

  4. Compilar las bibliotecas compartidas de síntesis para ghdl.

    /ghdl $ make libghdlsynth.so
    /ghdl $ make install.libghdlsynth.shared

  5. Hecho esto compilar el módulo ghdl.so para yosys del proyecto ghdlsynth-beta.

    /ghdl $ cd ../ghdlsynth-beta
    /ghdlsynth-beta $ make GHDL_PREFIX=/usr/local

  6. Con el módulo ya creado podemos usarlo en yosys. Para ello probamos el ejemplo de icestick de los leds.
    Analizamos los ficheros con ghdl escritos en vhdl y ejecutamos yosys con la ayuda del módulo que acabamos
    crear (ghdl.so).

    /ghdlsynth-beta $ cd icestick
    /ghdlsynth-beta/icestick $  ghdl -a leds.vhdl
    /ghdlsynth-beta/icestick $  ghdl -a spin1.vhdl
    /ghdlsynth-beta/icestick $ yosys -m ../ghdl.so -p 'ghdl leds; synth_ice40 -blif leds.blif'

  7. A partir de aquí el proceso es el mismo que con Verilog.
    Emplazado y rutado con arachne-pnr, bitstream, conversor con icepack y descarga con iceprog.

    /ghdlsynth-beta/icestick $ arachne-pnr -d 1k -o leds.asc -p leds.pcf leds.blif
    /ghdlsynth-beta/icestick $ icepack leds.asc leds.bin
    /ghdlsynth-beta/icestick $ iceprog leds.bin

  8. ¡Y la iceZUM Alhambra con su primer sintetizado desde VHDL!

Pdta: Juan, posiblemente el error que te de sea porque necesites recompilar el yosys. Yo al no disponer del yosys-config lo tuve que recompilar desde los fuentes del github. Mi versión ha quedado así compilada


$ yosys -V
Yosys 0.7+98 (git sha1 e6cc67b4, gcc 6.3.0-5 -fPIC -Os)


Justo con la opción -fPIC de la que se queja tu compilación.

Juan Gonzalez Gomez

unread,
Feb 11, 2017, 2:29:15 AM2/11/17
to FPGA-WARS: explorando el lado libre
Gracias Juanma!!!

Ya lo tengo funcionando!!!  :-)  Tenía por ahí unos .o que no había limpiado de la compilación anterior

Dejo más información:

Para compilar el ghdl yo he usado el gnat5:

$ sudo apt install gnat-5

En las instrucciones de ghdl tenías que bajarte la toolchain de una web. Es más fácil con apt

El yosys lo tengo compilado con el clang 3.8.0, y también funciona bien

$ yosys -V
Yosys 0.7+98 (git sha1 e6cc67b, clang 3.8.0-2ubuntu4 -fPIC -Os)

Creo que es el momento de que la gente que sabe VHDL empiece a sintetizar ejemplos sencillos para ir encontrando bugs y reportándoselos a Tristan


Saludos, Obijuan


--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Obijuan

unread,
Feb 11, 2017, 4:32:20 AM2/11/17
to FPGAwars: explorando el lado libre
He hecho un "hola mundo" muy sencillo, que enciende el led0 de la Icezum Alhambra y pone los demas a 0


library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity led_on is
  port (led0, led1, led2, led3, led4, led5, led6, led7 : out std_logic);
end led_on;

architecture test of led_on is
begin

  -- Turn on the Led0
  led0 <= '1';

  -- Turn off the other leds
  (led1, led2, led3, led4, led5, led6, led7) <= std_logic_vector'("0000000");

end test;

Lo podéis descargar del fork que he hecho del ghdlsynth. Está en esta carpeta:

https://github.com/Obijuan/ghdlsynth-beta/tree/master/icezum/led_on

Para probarlo, una vez realizados todos los pasos que ha indicado Juanma, entráis en el directorio icezum/led_on

y ejecutais

$ make

y luego

$ make prog

para cargar en la Icezum

He hecho un pull-request a Tristan. Y si lo acepta, haré algún ejemplillo más

Juanma Rico

unread,
Feb 11, 2017, 4:42:23 AM2/11/17
to FPGAwars: explorando el lado libre
Perfecto. Gracias Juan.
Imagino que probaste todos loa ejemplos de Tristan. ¿tuviste problemas con alguno?
A mi los rotate*.vhdl no me funcionaron. Se quedaban "colgados" en la primera etapa del yosys sin ningún mensaje. ¿alguna idea de lo que puede estar pasando con este tipo de descripciones?

Juan Gonzalez Gomez

unread,
Feb 11, 2017, 4:47:33 AM2/11/17
to FPGA-WARS: explorando el lado libre
Todavía no los he probado todos.  Sí he visto que las señales de los ficheros .pcf tienen que estar en minúsculas. Si se ponen en mayúsculas no lo detecta. Es un tema de que VHDL no es sensible a mayúsculas y Verilog sí (todos los ejemplos que tenemos de la icezum tienen los .pcf con las señales en mayúsculas)

Voy a ir poco a poco haciendo más pruebas y subiendo ejemplos. Si encontramos fallos --> reporte inmediato a Tristan :-)

Saludos, Obijuan

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.

Juan Gonzalez Gomez

unread,
Feb 11, 2017, 5:06:01 AM2/11/17
to FPGA-WARS: explorando el lado libre
Pull-request aceptado!  Ya está el ejemplo "hola mundo" en el repo oficial de ghdlsynth :-)

https://github.com/tgingold/ghdlsynth-beta/tree/master/icezum/led_on

uuuuueeeeeeeee

Saludos, Obijuan

El 11 de febrero de 2017, 10:47, Juan Gonzalez Gomez <obijua...@gmail.com> escribió:
Todavía no los he probado todos.  Sí he visto que las señales de los ficheros .pcf tienen que estar en minúsculas. Si se ponen en mayúsculas no lo detecta. Es un tema de que VHDL no es sensible a mayúsculas y Verilog sí (todos los ejemplos que tenemos de la icezum tienen los .pcf con las señales en mayúsculas)

Voy a ir poco a poco haciendo más pruebas y subiendo ejemplos. Si encontramos fallos --> reporte inmediato a Tristan :-)

Saludos, Obijuan
El 11 de febrero de 2017, 10:42, Juanma Rico <juan...@gmail.com> escribió:
Perfecto. Gracias Juan.
Imagino que probaste todos loa ejemplos de Tristan. ¿tuviste problemas con alguno?
A mi los rotate*.vhdl no me funcionaron. Se quedaban "colgados" en la primera etapa del yosys sin ningún mensaje. ¿alguna idea de lo que puede estar pasando con este tipo de descripciones?

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-lib...@googlegroups.com.

Juanma Rico

unread,
Feb 11, 2017, 5:15:20 AM2/11/17
to FPGAwars: explorando el lado libre
Biennnnn!! Por mi parte hola mundo probado y funcionando :)

Juan Gonzalez Gomez

unread,
Feb 11, 2017, 5:36:47 AM2/11/17
to FPGA-WARS: explorando el lado libre
Genial!!!!  :-)  Acabo de migrar el Blink. He hecho un pull-request

https://github.com/Obijuan/ghdlsynth-beta/tree/master/icezum/blink

Saludos, Obijuan

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.

Juanma Rico

unread,
Feb 11, 2017, 7:01:13 AM2/11/17
to FPGAwars: explorando el lado libre, ju...@iearobotics.com

Blink probado y funcionando... :)

Juan, haciendo pruebas con el código de VHDL me he dado cuenta que si existe un pin en el fichero PCF que no está definido en entidad del fichero VHDL arachne da un error del tipo:

arachne-pnr -d 1k -o blink.asc -p blink.pcf blink.blif
seed: 1
device: 1k
read_chipdb +/share/arachne-pnr/chipdb-1k.bin...
supported packages: cb121, cb132, cb81, cm121, cm36, cm49, cm81, qn84, swg16tr, tq144, vq100
read_blif blink.blif...
prune...
read_pcf blink.pcf...
blink.pcf:9: fatal error: no port `sw1' in top-level module `blink'
Makefile:13: fallo en las instrucciones para el objetivo 'blink.asc'
make: *** [blink.asc] Error 1

A mi nunca me salió esto con Verilog y Apio... ¿Es esto normal o es solo cosa de como GHDL procesa VHDL?

Juan Gonzalez Gomez

unread,
Feb 11, 2017, 7:20:20 AM2/11/17
to FPGA-WARS: explorando el lado libre
Gracias por las pruebas! :-)

Ese error es normal.  Para que no ocurran errores hay que poner el parametro --warn-no-port en cada pin del .pcf

En los proximos ejemplos que migre lo probaré

Saludos, Obijuan


--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juan Gonzalez Gomez

unread,
Feb 11, 2017, 10:46:14 AM2/11/17
to FPGA-WARS: explorando el lado libre
Elejemplo del blink ya está mergeado :-)

Tristan está a tope

Saludos, Obijuan

Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-lib...@googlegroups.com.

Juanma Rico

unread,
Feb 11, 2017, 11:17:09 AM2/11/17
to FPGAwars: explorando el lado libre

¡Genial! Tenomos todos mucho SAV creo yo... :D

La cuestión es que para aprender VHDL estaba intentando hacer algo más complejo como una UART. Me he descargado un ejemplo muy sencillo de openCores pero mi falta de conocimientos me tiene atascado en este mensaje de error:

$ yosys -v 9 -m ghdl.so -p 'ghdl uart; synth_ice40 -blif uart.blif'
1. Executing GHDL.
annotate_concurrent_statements_list: cannot handle IIR_KIND_CONCURRENT_CONDITIONAL_SIGNAL_ASSIGNMENT (uartTx.vhd:94:5)

Si alguien con más experiencia en GHDL me pudiera dar una pista... :(

Juanma Rico

unread,
Feb 11, 2017, 1:33:52 PM2/11/17
to FPGAwars: explorando el lado libre
Me he pasado a un ejemplo más sencillo... un contador de 8 bits... y GHDL me entrega errores que no entiendo.
El fichero vhdl es este:



------------------------
-- Contador de 8 bits --
------------------------

library ieee
;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;


entity cnt8
is
    port
(rst, clk, ce, up : in std_logic;
          led7
, led6, led5, led4, led3, led2, led1, led0 : out std_logic);
end cnt8;

architecture simple of cnt8
is
begin
    process
(clk, rst)
        variable q
: unsigned (7 downto 0);
   
begin
       
if rst='1' then
            q
:= (others => '0');
       
elsif rising_edge(clk) then
           
if ce='1' then
               
if up='1' then    
                    q
:= q + 1;
               
else
                    q
:= q - 1;
               
end if;
           
end if;
       
end if;
       
-- Visualizar el contador.
       
(led7, led6, led5, led4, led3, led2, led1, led0) <= std_logic_vector(q);
   
end process;
end simple;


Y GHDL me entrega este error señalando la línea: q := (others => '0');

-- Running command `ghdl cnt8; synth_ice40 -blif cnt8.blif' --

1. Executing GHDL.
cnt8.vhdl:19:19:error: unhandled association form

El ejemplo lo he tomado de un seminario de Objuan... no creo que esté mal, es más seguro que está perfecto. :)
¿A alguien se le ocurre por qué se está quejando GHDL?

Gracias, saludos.

Juan Gonzalez Gomez

unread,
Feb 11, 2017, 1:52:47 PM2/11/17
to FPGA-WARS: explorando el lado libre
Seguramente (others => '0' ) no esté soportado todavia. Hay que preguntarle a tristan. Prueba con q:="00000000"

Saludos, Obijuan

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.

Juanma Rico

unread,
Feb 11, 2017, 1:59:35 PM2/11/17
to FPGAwars: explorando el lado libre

Bien... casi, pero aún da error...

Declarando 'q' unsigned:

1. Executing GHDL.
cnt8.vhdl:25:28:error: unhandled predefined IEEE operator "-"
../../src/ieee/numeric_std.v93:130:12:error:  declared here

Declarando 'q' signed:

1. Executing GHDL.
cnt8.vhdl:23:28:error: unhandled dyadic: IIR_PREDEFINED_IEEE_NUMERIC_STD_ADD_SGN_INT

Juan Gonzalez Gomez

unread,
Feb 11, 2017, 2:09:53 PM2/11/17
to FPGA-WARS: explorando el lado libre
Prueba de momento con el contador solo ascendente. Es el siguiente ejemplo que tenia pensado hacer e incluir en el repo de ghdlsynth. Me gusta ir pasito a pasito.

Hoy no estoy con el ordenador y no puedo hacer pruebas (sav a 1000!)

Saludos, Obijuan

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Feb 11, 2017, 2:26:04 PM2/11/17
to FPGAwars: explorando el lado libre

Bueno, yo te voy informando... espero el SAV no te suba demasiado... :)
Pero tengo malas noticias, el ascendente con este esquema de arquitectura, tampoco va.
En este caso se queda bloqueado sin mensajes de error (lo mismo me pasaba ayer con los ejemplos rotate*.vhdl de Tristan)

Sigo informando si hay alguna novedad.

Juanma Rico

unread,
Feb 11, 2017, 3:29:08 PM2/11/17
to FPGAwars: explorando el lado libre

Recojo ya los bártulos por hoy...
Pocas conclusiones (un pequeño bajón). Le definición de una variable no afecta en nada, se sintetiza el esquema y se puede descargar en la FPGA sin problemas.
En cuanto usas la variable en alguna línea (una suma o una simple asignación) el proceso que hace GHDL dentro de yosys se queda bloqueado en el primer paso y no sigue.

Espero tus pruebas Juan, yo empiezo a pensar que es una cuestion de mi compilación de la herramienta, a ver si tú que la compilaste con Clang en lugar de GCC has tenido más suerte y te funciona.

Saludos.

Juan Gonzalez Gomez

unread,
Feb 11, 2017, 6:17:58 PM2/11/17
to FPGA-WARS: explorando el lado libre
Hola Juanma! Ya he llegado a casa y me he puesto a probar.

Parece que hay un problema con los vectores. Al sacar un bit de un contador hacia el exterior se produce un segmentation fault. He aislado el problema en este programa:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity counter8 is
  port (clk : in std_logic;
        led0 : out std_logic);
end counter8;

architecture synth of counter8 is
  
begin

  process (clk)
    variable temp : unsigned (7 downto 0);
  begin
    if rising_edge(clk) then
      temp:= temp + 1;
      led0 <= temp(0);
    end if;
  end process;

end synth;

He puesto un issue a ver si es debido a que no está bien compilada la herramienta o bien se trata de un bug

https://github.com/tgingold/ghdlsynth-beta/issues/4

Esperemos que haya suerte y que Tristan lo pueda reproducir

Saludos, Obijuan



--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Feb 11, 2017, 8:26:50 PM2/11/17
to fpga-wars-explora...@googlegroups.com
Yo al llegar a casa lo he vuelto a compilar todo desde cero en un equipo distinto con GCC y gnat5 y sigue igual. Por probar algo lo acabo de dejar compilando con CLang... mañana por la mañana veremos... Probaré y comprobaré ese mismo ejemplo por si me diera algo distinto.

Saludos

Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-lib...@googlegroups.com.

--
Has recibido este mensaje porque estás suscrito a un tema del grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/fpga-wars-explorando-el-lado-libre/VQfQcVppMLg/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Avelino Herrera Morales

unread,
Feb 12, 2017, 3:38:16 AM2/12/17
to FPGAwars: explorando el lado libre
Hola chicos,

¡Qué gran trabajo están haciendo! Espero tener tiempo los próximos días para ponerme con este proyecto. ¿Han probado si ejemplos más simples de tipo RTL (sólo biestables D y circuitos combinacionales) funcionan?

Gracias de nuevo, chicos :-)

Juanma Rico

unread,
Feb 12, 2017, 4:54:19 AM2/12/17
to FPGAwars: explorando el lado libre

Nada, probado con Clang, vuelta a compliar, a crear el módulo y nada... incluso por probar de nuevo, lo he vuelto a integrar como frontend en yosys pero esta vez con gnat5 (la primera vez lo hice en otro equipo con gnat6) y nada...

Vuelve a quedarse en el 100% y lanza el error inicial.

Habrá que esperar... :(

Juanma Rico

unread,
Feb 12, 2017, 5:21:02 AM2/12/17
to FPGAwars: explorando el lado libre
Hola Avelino,

Sí, esos parecen funcionar siempre que no haya vectores de por medio (Obijuan ha integrado un par de ejemplos y funcionan).
Parece ser que el problema está relacionado con los vectores (yo pensaba que pasaba solo con las variables).
Obijuan lo ha restringido al proceso de extraer información de estos vectores hacia el exterior de la entidad.

He mirado el código del módulo y el de GHDL... pero imposible ver nada...  (y para colmo yo de ADA más bien nulo).
Habrá que esperar...

Avelino Herrera Morales

unread,
Feb 12, 2017, 5:43:41 AM2/12/17
to fpga-wars-explora...@googlegroups.com
¡Genial entonces! Podré probar los códigos vhdl que tengo en


Tengo un receptor uart, un multiplicador, un procesador de 16 bits, luces de belén usando un LFSR... Todos los diseños son RTL (biestables D y circuitos combinacionales), sin variables. Me he acostumbrado a implementarlos siempre así: alguna ventaja tiene q tener :-)

Gracias de nuevo, chicos. Están haciendo un trabajo increible 😎


--
Has recibido este mensaje porque estás suscrito a un tema del grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/fpga-wars-explorando-el-lado-libre/VQfQcVppMLg/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juan Gonzalez Gomez

unread,
Feb 12, 2017, 5:47:46 AM2/12/17
to FPGA-WARS: explorando el lado libre
La idea es ir probando ejemplos y reportando los errores encontrados. Es la forma de avanzar. El soporte de yosys para VHDL acaba de nacer, y está muy muy verde. Pero entre todos lo iremos madurando

Saludos, Obijuan

El 12 de febrero de 2017, 11:43, Avelino Herrera Morales <avelino...@gmail.com> escribió:
¡Genial entonces! Podré probar los códigos vhdl que tengo en


Tengo un receptor uart, un multiplicador, un procesador de 16 bits, luces de belén usando un LFSR... Todos los diseños son RTL (biestables D y circuitos combinacionales), sin variables. Me he acostumbrado a implementarlos siempre así: alguna ventaja tiene q tener :-)

Gracias de nuevo, chicos. Están haciendo un trabajo increible 😎

El 12 feb. 2017 10:21 a. m., "Juanma Rico" <juan...@gmail.com> escribió:
Hola Avelino,

Sí, esos parecen funcionar siempre que no haya vectores de por medio (Obijuan ha integrado un par de ejemplos y funcionan).
Parece ser que el problema está relacionado con los vectores (yo pensaba que pasaba solo con las variables).
Obijuan lo ha restringido al proceso de extraer información de estos vectores hacia el exterior de la entidad.

He mirado el código del módulo y el de GHDL... pero imposible ver nada...  (y para colmo yo de ADA más bien nulo).
Habrá que esperar...

El domingo, 12 de febrero de 2017, 9:38:16 (UTC+1), Avelino Herrera Morales escribió:
Hola chicos,

¡Qué gran trabajo están haciendo! Espero tener tiempo los próximos días para ponerme con este proyecto. ¿Han probado si ejemplos más simples de tipo RTL (sólo biestables D y circuitos combinacionales) funcionan?

Gracias de nuevo, chicos :-)

--
Has recibido este mensaje porque estás suscrito a un tema del grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/fpga-wars-explorando-el-lado-libre/VQfQcVppMLg/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-lib...@googlegroups.com.

--
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-lado-libre+unsubscribe@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Feb 12, 2017, 8:28:02 AM2/12/17
to FPGAwars: explorando el lado libre

Me he descargado el ChristmasLights de tu página para probar... pero no ha habido suerte Avelino, una de tus entidades (LFSR10) ha enviado un mensaje de error y el yosys se ha vuelto a bloquear. Para referencias futuras el error es este:

 Yosys 0.7+111 (git sha1 cdb6ceb8, clang 3.8.1-17 -fPIC -Os)

-- Running command `ghdl ChristmasLights; synth_ice40 -blif ChirtsmasLight.blif' --

1. Executing GHDL.
annotate_concurrent_statements_list: cannot handle IIR_KIND_CONCURRENT_CONDITIONAL_SIGNAL_ASSIGNMENT (LFSR10.vhd:31:8)

el ghdlsynth está verde... a ver si responde Tristan al tema de los vectore y podemos avanzar un poco más.

Saludos.

Obijuan

unread,
Feb 12, 2017, 11:15:46 AM2/12/17
to FPGAwars: explorando el lado libre
He hecho dos ejemplos más, muy sencillos:

Uno muestra el estado del pulsador sw1 de la icezum por el led0, y por el led7 el negado

Otro que hace un AND entre sw1 y sw2 y muestra el resultado por led0 y el negado por led7

https://github.com/Obijuan/ghdlsynth-beta/tree/master/icezum


He hecho un pull-request a Tristan

Todavía no hay noticias sobre el bug de los vectores

Obijuan

unread,
Feb 12, 2017, 11:34:12 AM2/12/17
to FPGAwars: explorando el lado libre
He hecho un ejemplo más sencillo para aislar el problema con los vectores:

Es el "hola mundo" que provoca un segmentation fault. Ya está reportado a Tristan (Pobrecillo, le estamos petando jajjajajajj)

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity vector is
  port (led0: out std_logic);
end vector;

architecture synth of vector is

signal v : std_logic_vector(7 downto 0);

begin
  v <= std_logic_vector'("10101010");
  led0 <= v(0);
end synth;

Juanma Rico

unread,
Feb 12, 2017, 1:51:31 PM2/12/17
to FPGAwars: explorando el lado libre

Probados con mi compilación. Bitstream en binario generado. Desgraciadamente no tengo la Icezum Alhambra aquí para descargarlo.

Juanma Rico

unread,
Feb 12, 2017, 1:59:11 PM2/12/17
to FPGAwars: explorando el lado libre

El "hola mundo segmentation fault" comprobado. Falla.
Pero es más grave Juan, si haces que el vector 'v' no sea más que un bit (std_logic) a mi al menos, me entra en un bucle y no deja de mostrar en pantalla este mensaje.

terminate called recursively

Y al final su segmentation fault correspondiente.
¿Con un bit a ti te funciona? Si lo confirmas puede ser una buena pista para Tristan: no está solo en los vectores, sino en el uso de variables y señales internas a la arquitectura de la entidad.

Saludos.

Juanma Rico

unread,
Feb 12, 2017, 2:15:16 PM2/12/17
to FPGAwars: explorando el lado libre

Ya está reportado con mi compilación... a ver si no es verdad que lo vamos a  petar y va a abandonar el proyecto... jejejeje :)

Juan Gonzalez Gomez

unread,
Feb 12, 2017, 3:28:56 PM2/12/17
to FPGA-WARS: explorando el lado libre
Me sale el mismo error que a tí con el ejemplo del bit

Parece que Tristan le está echando un vistazo   uuuuueeeeeeeeee

Saludos, Obijuan

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Julián Caro Linares

unread,
Feb 12, 2017, 3:39:25 PM2/12/17
to FPGAwars: explorando el lado libre
¡Es una noticia estupenda!

¡Ahora tengo que desempolvar mis conocimientos de VHDL y probar a ver que tal!

Juanma Rico

unread,
Feb 12, 2017, 7:03:16 PM2/12/17
to FPGAwars: explorando el lado libre, ju...@iearobotics.com

He hecho un pequeño avance... ya casi tenemos acorralado el bug. :)
En esta línea de código de ghdl.cc del módulo:

Wire *w = net_map.at(sig.id);

Parece que este índice sig.id (que se obtiene con otra función) se sale de rango. Poniendo -2 he conseguido que funcione el ejemplo para 1 bit, pero para los vectores sigue fallando, se lo he indicado a Tristan por si le sirve de ayuda... esperemos que no sea muy difícil de arreglar y lo arregle cuanto antes. :)

Saludos.


Juan Gonzalez Gomez

unread,
Feb 13, 2017, 3:40:19 AM2/13/17
to FPGA-WARS: explorando el lado libre
Bravo Juanma!!!!  El acorralador de bugs!!!!  :-)



--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Feb 13, 2017, 4:10:10 AM2/13/17
to FPGAwars: explorando el lado libre

jajajajaja ¡acorralador de bugs! :)

Tristan ha estado de acuerdo que ahí había un error y lo ha corregido, pero no ha sido suficiente, sigue sin ir.
Se ve que está más allá del C++, en el código ADA del proyecto GHDL... ahí ya entro en el lado oscuro... ahí un joven e inexperto padawan como yo no se atreve. Volvemos a estar a la espera. :)


Juanma Rico

unread,
Feb 14, 2017, 1:40:21 PM2/14/17
to FPGAwars: explorando el lado libre
Tristan dice que ha solucionado el problema en GHDL... ¡A probarlo! ¡Qué nervios! :)

Juan Gonzalez Gomez

unread,
Feb 14, 2017, 2:19:50 PM2/14/17
to FPGA-WARS: explorando el lado libre
Lo estoy probando ahora. Los mini-ejemplos que le enviamos ya sintetizan bien.  Sin embargo, sigue habiendo un problema con los vectores. He probado el mini-ejemplo del vector cambiando led0 <= v(0)  (que funciona) por led0 <= v(1)  y no funciona. Lo mismo con culquier índice distinto de 0.


library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity vector is
  port (led0: out std_logic);
end vector;

architecture synth of vector is

signal v : std_logic_vector(7 downto 0);

begin
  v <= std_logic_vector'("10101010");
  led0 <= v(1); --- led0 <= v(0) works ok
end synth;

Ahora se lo reporto

Saludos, Obijuan

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Feb 14, 2017, 2:27:55 PM2/14/17
to FPGAwars: explorando el lado libre
A mi me ocurre lo mismo... recompilé ghdl y ghdlsynth-beta y no iban los vectores (después de pelearme con los scripts testsuite).. estoy recompilando el yosys por si ese fuera el problema.


Juan Gonzalez Gomez

unread,
Feb 14, 2017, 3:01:07 PM2/14/17
to FPGA-WARS: explorando el lado libre
El enlace entre ghdl y yosys todavía está verde. Pero poco a poco se irá fortaleciendo :-)

Saludos, Obijuan

El 14 de febrero de 2017, 20:27, Juanma Rico <juan...@gmail.com> escribió:
A mi me ocurre lo mismo... recompilé ghdl y ghdlsynth-beta y no iban los vectores (después de pelearme con los scripts testsuite).. estoy recompilando el yosys por si ese fuera el problema.


--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Feb 16, 2017, 3:38:05 AM2/16/17
to FPGAwars: explorando el lado libre, ju...@iearobotics.com

Buenas,

Ayer Tristan cerró el issue. He descargado la corrección, he recompilado todo (el yosys con gcc) y me sigue sin ir. Solo me funciona la corrección que hizo para el no_vector, el resto de tests me sigue sin ir (incluso sus ejemplos rotate*.vhdl con el leds.vhdl). ¿Estoy haciendo algo mal?¿A alguien le ha llegado a funcionar?

Saludos

Obijuan

unread,
Feb 16, 2017, 5:33:00 AM2/16/17
to FPGAwars: explorando el lado libre
Hola,

No he probado todavía los otros ejemplos de tristan. Yo voy avanzando pasito a pasito. Según descubro un bug, lo reporto y espero a que lo corrija.
Ya tengo acorralado otro bug. La asignación entre vectores y salida ahora ya se puede hacer (bug anterior corregido) pero se hace en el orden inverso. El programa de prueba que he usado es este:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity vector is
  port (led0, led1, led2, led3, led4, led5, led6, led7: out std_logic);
end vector;

architecture synth of vector is

signal v : std_logic_vector(7 downto 0);

begin

  -- It works ok
  --(led7, led6, led5, led4, led3, led2, led1, led0) <= std_logic_vector'("10101010");

  -- It is assigned in reverse order (led7 should be MSB, but it is assigned
  -- the lsb. led0 should be the lsb, but is assigned as the MSB)
  v <= std_logic_vector'("10101010"
);
  led7 <= v(7);
  led6 <= v(6);
  led5 <= v(5);
  led4 <= v(4);
  led3 <= v(3);
  led2 <= v(2);
  led1 <= v(1);
  led0 <= v(0);

end synth;

La primera assignación (comentada) funciona perfecto. Asigna los bits en el orden correcto. Sin embargo, en la segunda (sin comentar), el orden de los bits está al revés

Saludos, Obijuan

Juanma Rico

unread,
Feb 16, 2017, 7:21:14 AM2/16/17
to FPGAwars: explorando el lado libre

Buenas Juan, he reproducido tu ejemplo y como siempre son muy esclarecedores. Lo he intentado sintetizar... efectivamente, parto con todas las líneas de la arquitectura comentadas y comienzo a descomentar y probar... en mi caso:
  • Descomento la primera y la primera asignación la hace correctamente. Descomento la segunda.
  • La segunda también la hace correctamente. Descomento la primera señal... falla.
    Parece que el error está al extraer del vector una componente, pero yo no puedo ni comprobar el orden, se bloquea al parsear.
  • Comento de nuevo la primera asignación... y sigue fallando.

Por aquello de que a ti te salen invertidos los bits hago un cambio (por probar) y modifico la definición del vector de tu ejemplo.

Y lo defino como: signal v : std_logic_vector(0 to 7);


¡Y en este caso yosys termina de parsear!.

Extrañado voy a comprobar el orden de los bits, descargo el binario en la IceZum Alhambra y... ¡se me ilumina en el orden correcto! (todo suponiendo que en el pcf el bit menos significativo (led0) de la Alhambra lo apuntamos al 95 de la FPGA).


Si a ti te ocurre lo mismo al cambiar la definición es posible que todo parta de esta línea de código en las variables de vectores. Sería una buena pista para Tristan.

Saludos.

Obijuan

unread,
Feb 16, 2017, 2:16:06 PM2/16/17
to FPGAwars: explorando el lado libre
Tristan ya ha solucionado el bug!  uuueeeeeeeeeeeeee

Obijuan

unread,
Feb 16, 2017, 2:20:46 PM2/16/17
to FPGAwars: explorando el lado libre
Tengo otro ejemplo más: un contador binario en vhdl que se muestra por los leds de la icezum

https://github.com/Obijuan/ghdlsynth-beta/tree/master/icezum/counter-8bits

Ya he hecho un pull-rquest a Tristan

El código es este:


library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity counter8 is
   port (clk : in std_logic;
   led0, led1, led2, led3, led4, led5, led6, led7 : out std_logic);
end counter8;

architecture synth of counter8 is

signal clk_6hz : std_logic;

begin

-- Presscaler
prescaler: process(clk)
variable timer : unsigned (20 downto 0):=(others=>'0');
begin
   if rising_edge(clk) then
     timer := timer + 1;
    clk_6hz <= timer(20);
   end if;
end process;

-- 8 bits counter
process (clk_6hz)
variable temp : unsigned (7 downto 0);
begin
   if rising_edge(clk_6hz) then
     temp:= temp + 1;

   -- Show the counter on the icezum Alhambra leds
   (led7, led6, led5, led4, led3, led2, led1, led0) <= temp;
end if;
end process;

end synth;

Y aunque es un simple contador binario, mola muchísimo verlo... Está hecho en VHDL y sintetizado con herramientas libres... esto es un sueño hecho realidad :-)

Juanma Rico

unread,
Feb 16, 2017, 2:59:08 PM2/16/17
to FPGAwars: explorando el lado libre

Pues algo debo estar haciendo mal. Acabo de probar y la arquitectura de sintetizado "synth" y no me parsea el yosys. Para que funcione tengo que poner el vector definido al contrario... y claro, parsea pero salen los leds al revés.
¿Tú has hecho algo especial?¿Has compilado de nuevo todo?

Por otra parte... Tristan ha creado unos scripts (testenv y testsuites) que no sé como diablos usarlos ni desde qué subdirectorio... ¿Tú los usas?

Saludos.


Juanma Rico

unread,
Feb 16, 2017, 3:07:43 PM2/16/17
to FPGAwars: explorando el lado libre
¡¡Cachis!! A mi no me va...

Tu ejemplo me genera un bin, pero lo descargo y el contador no se ve... están todas las luces encendidas... es como si el preescaler no funcionara... :(

Obijuan

unread,
Feb 16, 2017, 3:09:38 PM2/16/17
to FPGAwars: explorando el lado libre
Tienes que compilar el ghdl de nuevo, e instalarlo

Obijuan

unread,
Feb 16, 2017, 3:11:45 PM2/16/17
to FPGAwars: explorando el lado libre
y tambièn las bibliotecas de sìntesis de ghdl

Juanma Rico

unread,
Feb 16, 2017, 3:51:26 PM2/16/17
to FPGAwars: explorando el lado libre

¡¡Ahora sí!! Ya me funciona tu contador... muy guay. ¡Qué torpe soy! Había olvidado compilar las bibliotecas de síntesis... con razón solo me funcionaba en estas últimas pruebas lo correspondiente al código en C++ y me salían cosas tan dispares a ti... jajajaja, que torpe soy...

Bueno, ha llegado justo a tiempo, el SAV y la desesperación iban incrementándose... tenía que empezar a cerrar y no iba a tener la icezum para probar... menos mal que lo he calmado... :)

Muchas gracias Juan, saludos.

Juan José Luna Espinosa

unread,
Feb 16, 2017, 3:55:52 PM2/16/17
to fpga-wars-explora...@googlegroups.com
Una pregunta:

Cuando el soporte de VHDL esté más maduro, ¿se podrán hacer proyectos en Apio con ficheros Verilog y VHDL indistintamente? Por ejemplo usar un módulo VHDL ya hecho y usarlo en mi circuito en Verilog.

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Feb 17, 2017, 2:38:35 AM2/17/17
to FPGAwars: explorando el lado libre
Buenas Juan José, como nadie te responde permiteme que especule...
Sería como si programas una dll en C++ y quieres usarla importándola en Python.

En principio debería existir el estándar dll porque mezclar el código fuente de uno en otro no lo veo.

La pregunta es: ¿Existe ese estándar en FPGA entre fabricantes una vez sintetizado el código?

La respuesta: Con el secretismo que les caracteriza a los fabricantes... sospecho que no.

De todas formas es especular... he descubierto que desde VHDL Tristan puede exportar a Verilog la instancia (la cabecera)... igual la solución está en el software libre. :)

Saludos

Juan José Luna Espinosa

unread,
Feb 17, 2017, 2:46:20 AM2/17/17
to fpga-wars-explora...@googlegroups.com
Es que lo digo porque en el entorno de Xilinx sí se puede hacer (mezclar ficheros Verilog y VHDL)

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.

Jesús Arroyo

unread,
Feb 17, 2017, 3:15:57 AM2/17/17
to FPGAwars: explorando el lado libre
Buenas Juan José,

Estoy seguro de que en el futuro se puedan "mezclar" estos lenguajes con las herramientas libres. Seguramente haya más gente en la comunidad libre que trabaje en esta dirección. A alto nivel es sencillo gestionarlo. Habría que ver cómo hacerlo a bajo nivel, en Yosys. Quizá se pueda aplicar la generación del ".blif" a cada fichero de forma independiente, y a partir de ahí continuar con la síntesis como se hace normalmente.

Juan José Luna Espinosa

unread,
Feb 17, 2017, 3:23:43 AM2/17/17
to fpga-wars-explora...@googlegroups.com
Gracias por la explicación, es lo que pensaba.

El 17 de febrero de 2017, 9:15, Jesús Arroyo <jesus...@gmail.com> escribió:
Buenas Juan José,

Estoy seguro de que en el futuro se puedan "mezclar" estos lenguajes con las herramientas libres. Seguramente haya más gente en la comunidad libre que trabaje en esta dirección. A alto nivel es sencillo gestionarlo. Habría que ver cómo hacerlo a bajo nivel, en Yosys. Quizá se pueda aplicar la generación del ".blif" a cada fichero de forma independiente, y a partir de ahí continuar con la síntesis como se hace normalmente.



El viernes, 17 de febrero de 2017, 8:46:20 (UTC+1), Juan José Luna Espinosa escribió:
Es que lo digo porque en el entorno de Xilinx sí se puede hacer (mezclar ficheros Verilog y VHDL)
El 17 de febrero de 2017, 8:38, Juanma Rico <juan...@gmail.com> escribió:
Buenas Juan José, como nadie te responde permiteme que especule...
Sería como si programas una dll en C++ y quieres usarla importándola en Python.

En principio debería existir el estándar dll porque mezclar el código fuente de uno en otro no lo veo.

La pregunta es: ¿Existe ese estándar en FPGA entre fabricantes una vez sintetizado el código?

La respuesta: Con el secretismo que les caracteriza a los fabricantes... sospecho que no.

De todas formas es especular... he descubierto que desde VHDL Tristan puede exportar a Verilog la instancia (la cabecera)... igual la solución está en el software libre. :)

Saludos

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-lib...@googlegroups.com.

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.

Juan Gonzalez Gomez

unread,
Feb 17, 2017, 3:46:53 AM2/17/17
to FPGA-WARS: explorando el lado libre
Exacto!!!!

Llevará su tiempo, pero es viable. Esto es libre: ¡Tenemos las fuentes! ¡Todo se puede hacer! :-)

El roadmap sería algo como esto:

1) Trabajar en que vhdl esté maduro:  Ir haciendo ejemplos muy muy sencillos en VHDL para acorralar los bugs y que tristan los resuelva fácil y rápidamente
2) Recompilar las herramientas de vhdl (gdhl y ghdl-synth) para que sean multiplataforma
3) Integrarlas en Apio
4) Soporte en icestudio para vhdl
5) Cuanto vhdl esté al mismo nivel que verilog en cuanto a madurez, empezar su integración a nivel de netlist (.blif)

Llevará tiempo. Pero es muy motivador. Y lo haremos. Vaya que si lo haremos :-)

Somos comunidad. Somos libres. somos fuertes. Sólo depende de nosotros

Saludos, Obijuan

Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-lib...@googlegroups.com.

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Feb 17, 2017, 3:47:35 AM2/17/17
to FPGAwars: explorando el lado libre
Está claro que lo mio era pura especulación. ;)

Juan José Luna Espinosa

unread,
Feb 17, 2017, 3:55:26 AM2/17/17
to fpga-wars-explora...@googlegroups.com
¡¡Plas, plas, plas, plas!!

El 17 de febrero de 2017, 9:47, Juanma Rico <juan...@gmail.com> escribió:
Está claro que lo mio era pura especulación.  ;)
--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Obijuan

unread,
Feb 18, 2017, 12:36:36 AM2/18/17
to FPGAwars: explorando el lado libre
Otro bug acorralado:


library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity vector8_test1 is
  port (led7: out std_logic);
end vector8_test1;

architecture synth of vector8_test1 is


signal v : std_logic_vector(7 downto 0);

begin
  v(7) <= '1';
  led7 <= v(7);
end synth;

Lo que hace el circuito es encender un led, conectando el 1 a través de un vector
Reportado a Tristan

Al probarlo se genera el siguiente mensaje de error:

synth_assignment: cannot handle IIR_KIND_INDEXED_NAME (vector8_test1.vhdl:14:4)

Juanma Rico

unread,
Feb 18, 2017, 4:57:06 AM2/18/17
to FPGAwars: explorando el lado libre
¡¡Genial!! Esto va madurando... :)

Roland Coeurjoly

unread,
Dec 27, 2017, 1:52:10 PM12/27/17
to FPGAwars: explorando el lado libre
He intentado instalar las herramientas ghdlsynth pero me da error.

El error que me da Tristan lo atribuye a que la version de gcc que hay instalada es demasiado antigua.
La version que tengo es la siguiente.
gcc version 4.8.5 (Ubuntu 4.8.5-2ubuntu1~14.04.1)

Podría algún alma caritativa que le funcione el ghdlsynth y que halla sintetizado algun diseño en iCE40 comprobar que version de gcc tiene instalada?

Si no le doy la tabarra en github.

Saludo,

rcl

Roland Coeurjoly

unread,
Dec 27, 2017, 1:55:45 PM12/27/17
to FPGAwars: explorando el lado libre
Se comprueba con el siguiente comando:

gcc -v

Juanma Rico

unread,
Dec 27, 2017, 2:41:32 PM12/27/17
to fpga-wars-explora...@googlegroups.com
A mi me funcionaba en un Debian 9. Hoy ya no puedo, pero mañana por la tarde que tengo que ir al laboratorio te lo miro y te digo la versión exacta de gcc que uso en el equipo.

Saludos
Juan Manuel Rico

...

Juanma Rico

unread,
Dec 28, 2017, 3:19:54 PM12/28/17
to FPGAwars: explorando el lado libre

Perdona Roland,

Casi se me olvida... Cuando estaba probando el GHDL lo hice con la siguiente versión (te pongo todo lo que muestra el gcc por si te fuera útil, aunque imagino que lo que más te interesa está en la última línea):

juanma@angora:~/Proyectos/FPGAwars/VHDL/ghdl$ gcc -v

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 7.2.0-1' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.2.0 (Debian 7.2.0-1)

juanma@angora:~/Proyectos/FPGAwars/VHDL/ghdl$

Espero te sirva, saludos.
Juan Manuel Rico



Roland Coeurjoly

unread,
Dec 28, 2017, 3:23:56 PM12/28/17
to FPGAwars: explorando el lado libre
Gracias Juanma. Lo curioso es que he probado con esa version de gcc y me sigue dando error. He abierto un issue en ghdl.

https://github.com/ghdl/ghdl/issues/509

Juanma Rico

unread,
Dec 29, 2017, 2:06:36 AM12/29/17
to FPGAwars: explorando el lado libre
Buenas Roland,

Pues igual es una nueva actualización la que está dando los problemas y yo no me he enterado...

Debería haber actualizado los proyectos y haber probado para contestarte... a ver si este fin de semana hago un hueco y retomo el VHDL con yosys y ghdl para hacer una prueba rápida y ver que todo sigue igual. Echaré un vistazo a tu issue y te cuento.

Saludos
Juan Manuel Rico

1138-4EB

unread,
Dec 29, 2017, 11:44:38 PM12/29/17
to FPGAwars: explorando el lado libre
Buenas Roland, Juanma y cía,

Tal como he comentado en la issue, creo (a falta de confirmación por parte de Tristan) que el módulo de síntesis puede estar limitado al uso de gcc como backend. Esto quiere decir que no basta con tener gcc instalado, sino que debes descargar las fuentes de GCC (independientemente de la versión ejecutable que tengas en el sistema), compilar GCC, compilar GHDL y después compilar la librería compartida de síntesis. Lo que me ha llevado a esta conclusión es que:

- Juanma ha comprobado la versión de GCC desde el directorio '~/Proyectos/FPGAwars/VHDL/ghdl'. Lo cual es llamativo en sí, porque para mostrar la versión de GCC disponible en el sistema podría haber ejecutado el comando desde cualquier ubicación, y no desde esa en concreto.
- Tal como he reportado, puedes ver el log completo de una instalación satisfactoria de yosys + iverilog + GHDL + ghdlsynth, así como el script (shell) que lo generó. Es GCC 7.2.0 en Debian Sid.

Estamos realizando cambios significativos en GHDL 'de cara a la galería'. El más notable, es que se ha creado una nueva organización en GitHub, y el repositorio principal se ha movido de tgingold/ghdl a ghdl/ghdl. Aprovecho para recomendar a quienes tengáis copia local del repositorio que renombréis la URL del remote. Tened en cuenta que ghdlsynth-beta no está en la organización, aún, por lo que mantiene su URL.

Roland, en lo que afecta a este último detalle (y sobre lo que te respondí en el hilo), en principio podéis plantear preguntas sobre síntesis en cualquiera de los dos repositorios. Hemos añadido la etiqueta 'Backend: synth' para identificarlas en ghdl/ghdl. Por ello, por favor, haced explícito en el primer mensaje que se trata de una issue relacionada con la síntesis. Eso facilitará que se etiquete rápido y atraiga la atención de usuarios con conocimientos más específicos.

Por otro lado, recientemente se ha publicado una revisión completa de la documentación. Hay poco contenido realmente nuevo, pero se ha reestructurado, se ha añadido información que antes sólo estaba en ficheros de texto, y se ha completado con algunas opciones que aparecían en línea de comandos pero no estaban reflejadas en la documentación. En lo que respecta a este hilo, son interesantes estos contenidos:

http://ghdl.readthedocs.io/en/latest/building/Building.html
http://ghdl.readthedocs.io/en/latest/building/gcc/index.html
http://ghdl.readthedocs.io/en/latest/building/gcc/GNULinux-GNAT.html

Por último, las imágenes de docker que empezamos a utilizar internamente hace un año, y que introdujimos en el repositorio principal en verano, se han reestructurado por completo (ver ghdl/ghdl#489). Son tres las utilidades prácticas para el usuario final:

- En caso de querer compilar y/o instalar GHDL nativamente, disponemos de un listado de ficheros que definen explícitamente qué dependencias son necesarias: dist/linux/docker. Por ejemplo, para compilar GHDL en Ubuntu 16.04 con LLVM como backend se necesitan los paquetes indicados en las líneas 7 y 15 de dist/linux/docker/build/ubuntu16. Nótese que no me refiero a utilizar docker, sino a instalar los ficheros descritos ahí de forma nativa.
- Hay imágenes ready-to-use, que incluyen GHDL ya instalado, además de las dependencias mínimas. La virtud de estas imágenes es que se utilizan dentro del sistema de integración continua para ejecutar las test suites después de cada compilación. Esto quiere decir que las imágenes que se ponen a disposición de los usuarios están verificadas, ya que se ha comprobado que el funcionamiento es correcto. De no ser así, el proceso evita actualizarlas. Estas imágenes están disponibles en el repositorio con el mismo nombre en Dockerhub: hub.docker.com/r/ghdl/ghdl. También están disponibles las imágenes ghdl/build y ghdl/run, que son las utilizadas internamente para compilar GHDL y construir las anteriores (ver hub.docker.com/u/ghdl).
- Lo más interesante de disponer de una imagen de docker con GHDL preinstalado es que podemos olvidarnos de compatibilidad entre plataformas. Funciona exactamente igual en GNU/Linux, Windows, macOS, FreeBSD... Por ello, es una base útil para generar entornos de desarrollo portables. Por el momento hay dos imágenes de este tipo: hub.docker.com/r/ghdl/ext.
  - 'vunit' añade VUnit y, por lo tanto, Python (concretamente la versión 3.6), en sólo 128MB. Pensada principalmente para verificación en sistemas de integración continua (travis, drone, codefresh, jenkins...).
  - Sobre la anterior, en '
vunit-gtkwave' se añade GtkWave, requiriendo 223MB en total (principalmente debido a la inclusión de librerías gráficas). Pensada para su uso en escritorio, ya que requiere/utiliza el servidor X11 disponible.

En ghdl/ghdl#477 - Let's have some fun, podéis encontrar sendas demos (tanto comandos como screencast). Un detalle relevante de la primera es que se ejecuta en play-with-docker.com. En otras palabras: se puede utilizar GHDL directamente en una página web, sin necesidad de instalar nada.

También a partir de 'vunit, estamos preparando una imagen 'ide', que incluya una app basada en Vue.js (frontend), WaveDrom (o alternativa), y golang (backend). Ésta está pensada para ofrecer la misma funcionalidad que 'vunit-gtkwave', independientemente de que se utilice en escritorio o en un servidor remoto con acceso web (como play-with-docker). El objetivo principal: ejecutar un sola instancia en un equipo del aula/casa y que múltiples usuarios puedan aprender VHDL desde portátiles, tablets, móviles, etc. sin necesidad de instalar nada. Por el momento, el candidato para ser la base es hacdias/filemanager. De hecho, con la parametrización adecuada, ya se puede utilizar para trabajar con GHDL de forma gráfica en play-with-docker (a excepción de la visualización de waveforms, que todavía debe descargarse y visualizarse con gtkwave).

Tened en cuenta que actualmente no proveemos ninguna imagen con gcc como backend, ni tampoco con ghdlsynth. Esto es principalmente porque el tiempo de compilación es seis veces mayor, por lo que estamos discutiendo como gestionarlo. Asimismo, ghdlsynth es un proyecto interesante, pero no prioritario. La prioridad de Tristan es el desarrollo de GHDL, la del colectivo la paquetización para diferentes plataformas (deb, rpm, pkgbuild...), y la mía el IDE remoto. Dicho lo anterior, ya hay en una rama de mi fork un ejemplo funcional basado en Debian Sid, con GCC 7.2.0 y las últimas versiones de yosys e iverilog. Si hay demanda, se le puede solicitar a Tristan que active travis para ghdlsynth, y hacer un merge.

Saludos

Juanma Rico

unread,
Dec 30, 2017, 2:46:30 AM12/30/17
to fpga-wars-explora...@googlegroups.com
¡Unai! ¡Te echaba de menos en el grupo!
y yo preguntándome donde estabas... :)
Veo que a tope con GHDL y Yosys... 

Ahora sí que sí, contigo como guía este fin de semana me escapo y vuelvo a las pruebas con VHDL que las tenía muy olvidadas. ;)

Leo tu siempre completo mensaje y, cuando consiga terminar de leerlo sin que me estalle la única neurona que tengo, me pongo a ello... jejejeje

Un placer volver a leerte por aquí, de verdad. :)))

Por aclarar... lo de ver la versión de gcc en ese subdirectorio es porque me "pilló allí" intentando confirmar si este era el equipo donde hice las pruebas... hice copy-paste de la consola y no borré por simple vagancia ;)

Evidentemente gcc -v funciona desde cualquier subdirectorio siempre que esté en el PATH de búsqueda del sistema... siento si mi desidia al borrar ha llevado a confusión, nada más lejos de mi intención.  :)))

Estudiaré el mensaje y pobaré el contenedor que habéis creado a ver si consigo llegar a alguna conclusión útil. ;)))

Saludos
Juan Manuel Rico


1138-4EB

unread,
Dec 30, 2017, 4:49:06 AM12/30/17
to FPGAwars: explorando el lado libre
El sábado, 30 de diciembre de 2017, 8:46:30 (UTC+1), Juanma Rico escribió:
¡Unai! ¡Te echaba de menos en el grupo!
y yo preguntándome donde estabas... :)
Veo que a tope con GHDL y Yosys... 
 
Tengo una disponibilidad muy variable y decidí recentrar las contribuciones en VHDL y GHDL. He estado mirando Portainer también, donde he adquirido los conocimientos sobre lo que llaman 'full stack development' de aplicaciones web. Yosys en sí y la parte de síntesis la tengo un poco apartada, porque no dispongo aún de herramientas libres con las que desarrollar cómodamente. De ahí el enfoque en un IDE portable que pueda utilizar en mi día a día. También, yo soy uno de los que 'o 2018 o nada', que comentaba en otro hilo.
 
Ahora sí que sí, contigo como guía este fin de semana me escapo y vuelvo a las pruebas con VHDL que las tenía muy olvidadas. ;)
Leo tu siempre completo mensaje y, cuando consiga terminar de leerlo sin que me estalle la única neurona que tengo, me pongo a ello... jejejeje

En ese caso, aunque en ingles, no dejes de leer la descripción de la PR #489, las referencias y los comentarios en la misma. Creo que está razonablemente bien expuesto y mi intención es volcarlo directamente en la documentación. Cualquier sugerencia/crítica es bienvenida.
 
Un placer volver a leerte por aquí, de verdad. :)))

Igualmente :D. No dejo de revisar el grupo al menos mensualmente. Es una pena que estos grupos no tengan notificaciones de eventos indirectos como tiene GitHub, ya que muchas referencias me pasan desapercibidas. He visto hoy las ultimísimas contribuciones que hiciste en el hilo del Cold Boot, que tendré que revisar ;)
 
Por aclarar... lo de ver la versión de gcc en ese subdirectorio es porque me "pilló allí" intentando confirmar si este era el equipo donde hice las pruebas... hice copy-paste de la consola y no borré por simple vagancia ;)
Evidentemente gcc -v funciona desde cualquier subdirectorio siempre que esté en el PATH de búsqueda del sistema... siento si mi desidia al borrar ha llevado a confusión, nada más lejos de mi intención.  :)))

Tristan ha contestado y lo de la limitación de gcc fue una suposición incorrecta por mi parte: https://github.com/ghdl/ghdl/issues/509#issuecomment-354532921 Se puede utilizar ghdlsynth con cualquier backend. Por lo tanto, como comentes, es simplemente fortuito que estuvieras en ese subdirectorio.
 
Estudiaré el mensaje y pobaré el contenedor que habéis creado a ver si consigo llegar a alguna conclusión útil. ;)))

Te recomiendo que te crees en una cuenta en dockerhub (si no la tienes creada ya). Eso te permite crear 'sandboxes' en play-with-docker.com. Cada 'sandbox' dura 4h, pero puedes arrancar tantas como quieras (sólo abre otra pestaña del navegador). Dentro de cada 'sandbox' puedes crear tantas 'máquinas virtuales' como quieras, y dentro de cada una de ellas tantos contenedores docker como desees. En realidad, es como en la peli Origen, y puedes seguir haciéndolo hasta aburrirte... El único límite son los 4GB de ram que tiene cada sandbox. Esto te sirve para probar docker en general, no sólo para GHDL.

Sólo una consideración: las sanbox no son privadas. Puedes hacer git clone para descargar contenido, pero no hagas git push (ya que requerirá que introduzcas usuario y contraseña). Entonces, ¿cómo guardas los resultados de las pruebas que haces? Con hacdias/filemanager, ¡por supuesto! Si quieres probar esto, dimelo y te preparo un play-with-docker.com/?stack=entorno-de-pruebas-para-juanma.yml que te arranque un IDE listo para usar.

Roland Coeurjoly

unread,
Dec 30, 2017, 11:18:04 AM12/30/17
to FPGAwars: explorando el lado libre
Unai,

En Ubuntu 16.04 he conseguido compilar todo (iverilog, yosys, GHDL, ghdlsynth-beta).

En el comando make GHDL_PREFIX=prefix-used-to-configure-ghdl, se podría poner make GHDL_PREFIX=/usr/local/?

Si siguiendo las instrucciones de GHDL se instala ahí, yo creo que en las instrucciones de ghdlsynth tambien deberia indicar la misma ruta.

Ya estoy más cerca de encender un LED con herramientas libres.

Juan Gonzalez Gomez

unread,
Dec 30, 2017, 2:36:32 PM12/30/17
to FPGA-WARS: explorando el lado libre
¡Enhorabuena Roland!

En el repo dejé algunos ejemplos "hola mundo" para probar la síntesis:

Son muy básicos, pero la verdad es que es alucinante el sintetizar circuitos con herramientas libres

Todavía queda mucho por avanzar, pero poco a poco, entre todos, lo lograremos

¡Suerte!

Saludos, Obijuan




--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.

Salvador Eduardo Tropea

unread,
Jan 3, 2018, 12:05:50 PM1/3/18
to fpga-wars-explora...@googlegroups.com
Hola!

Estuve armando un paquete Debian del último yosys (hash 9804ebe), el
último GHDL (hash befe6fa) y libghdlsynth.
Luego compilé el ghdlsynth-beta y tuve un éxito limitado.
Sólo unos pocos tests de la suite pasan. Logré sintetizar cosas
sencillas para la IceZum, pero varios tests mueren con SIGSEGV.
Estoy usando Debian 9.3 (estable) y gnat-6.
El GHDL en si parece funcionar bien, lo mismo que el yosys, pero el
ghdlsynth-beta falla en algo.
¿Alguna idea?
Otro detalle: ¿Qué shell se usa para la test suite? mi bash no corre
esos scripts, tuve que modificarlos.

Saludos, Salvador

--
Ing. Salvador Eduardo Tropea http://utic.inti.gob.ar/
INTI - Micro y Nanoelectrónica (CMNB) http://www.inti.gob.ar/
Unidad Técnica Sistemas Inteligentes Av. General Paz 5445
Tel: (+54 11) 4724 6300 ext. 6919 San Martín - B1650KNA
FAX: (+54 11) 4754 5194 Buenos Aires * Argentina




Roland Coeurjoly

unread,
Jan 3, 2018, 12:11:28 PM1/3/18
to fpga-wars-explora...@googlegroups.com
Prueba con

En la carpeta de ghdlsynth-beta:
./configure --disable-werror

Se me olvidó ayer. Hoy lo añado en otro pull request

Por lo menos el fixed1 funciona

--
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-lado-libre+unsubscribe@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-lib...@googlegroups.com.

1138-4EB

unread,
Jan 3, 2018, 12:32:27 PM1/3/18
to FPGAwars: explorando el lado libre
El miércoles, 3 de enero de 2018, 18:05:50 (UTC+1), Salvador Eduardo Tropea escribió:
Otro detalle: ¿Qué shell se usa para la test suite? mi bash no corre
esos scripts, tuve que modificarlos.
 
¿Te refieres a la de GHDL o ghdlsynth? La primera en dash, ash o similares, aunque debería funcionar en bash. La segunda creo que no "se usa". Quiero decir, que cada cual lo ejecuta localmente, pero no hay ningun sistema CI. En cualquier caso, me extraña, porque creo que tanto Tristan como tú usáis Debian. ¿Qué modificaciones has tenido que hacer?
It is loading more messages.
0 new messages