Hola Jesús, me he hecho un pequeño diseño en icestudio con tu verilog original para la alhambra ii (ice40hx4k).
Lo que he hecho es esto:
module main_v480f30 #(
parameter AW = 0
) (
input clk,
input [7:0] ramin,
input [15:0] aram,
input wrm,
output [7:0] rmout
);
assign rmout = ramout;
endmodule
He hecho una prueba probando con una memoria de 16 bits de direcciones (en el código para icestudio es cambiar el parámetro por defecto AW a 16 y ha funcionado perfectamente.
La versión de yosys que uso en icestudio wip es Yosys 0.33+103 (git sha1 11ffd7df4) que es bastante más nuevo que el que tienes instalado por lo que me imagino que has dado con algún antiguo bug de yosys que ya debe de estar resuelto. Te recomiendo que lo actualices porque se han mejorado muchas cosas.
Adjunto el .ice por si alguien tiene curiosidad de probar tu ram asíncrona, me ha parecido muy interesante la verdad, nunca las he puesto en práctica y tiene buena pinta.
El test simplemente mete una constante para el dato a escribir y una constante para la dirección a escribir/leer el dato, con el botón 1 de la alhambra guarda el dato en la dirección indicada y se muestra por los leds.
Por otro lado quería aprovechar a hacerte una pregunta, porque no me queda claro, en la sentencia:
RAM[aram[(AW-1):0]]
¿aram[(AW-1):0]. no es redundante a poner sólo aram? o tiene algún objetivo que optimice o elimine algún tipo de imprecisión en la síntesis?
Muchas gracias Jesús!