Hola,
Ya está liberada una nueva versión de la colección iceFF de biestables para Icestudio: version 0.3.0:
También está actualizada la documentación:
Se ha cambiado el verilog de los biestables para que no aparezca el error " 'q' has already been declared in this scope" al realizar la verificación
Las nuevas versión de la toolchain usan un standard Verilog más moderno que da error al introducir algunas construcciones más antiguas
El código anterior del biestable D del sistema era:
reg q = INI;
always @(posedge clk)
q <= d;
Icestudio añade la definición del módulo, donde todas las señales son de tipo wire. Es decir, que la salida q ya está definida como cable
Esto es perfectamente válido en los anteriores estándares de verilog. Al añadir reg q se modifica la semántica de la salida q para que ahora pase a ser la de una variable
Como esta construcció ya no es válida en los estándares verilog más modernos, el nuevo código es el siguiente:
reg qi = INI;
always @(posedge clk)
qi <= d;
assign q = qi;
Se define la variable qi que es la que se usa para almacenar el valor del biestable, y luego se conecta a la salida q (que es un cable)
En los ejemplos de la colección todavía hay componentes que usan biestables antiguos y dan error en la verificación. En cuanto tenga actualizados el resto de colecciones los modificaré
Si detectais algún problema no dudéis en enviar un pull-request
Lo siguiente que voy a actualizar es la colección iceReg, de registros, (junto con su documentación)
Muchas gracias a todos por las pruebas y la detección de este bug. Entre todos, poco a poco, vamos mejorando la herramienta
Saludos, Obijuan