¿Cómo eliminar el siguiente error al implementar FPGA de un programa que usa RAM usando el generador de bloques Xilinx?

Escribí un código que usa RAM (creado por el generador de bloques Xilinx). Su tamaño es 10X10 (total 100 datos).

Utilicé INSTANTIATION de la siguiente manera:

RAM1 RAM_NAME (                 
  .clka(clka), // input clka             
  .wea(wea), // input [0 : 0] wea                 
  .addra(addra), // input [6 : 0] addra                  
  .dina(dina), // input [7 : 0] dina               
  .douta(douta) // output [7 : 0] douta             
);

Puedo hacer síntesis, pero cuando estoy implementando diseño. Está dando error:

ERROR:NgdBuild:604 - logical block
'Leena/U0/xst_blk_mem_generator/gnativebmg.native_blk_mem_gen/valid.cstr/raml
oop[0].ram.r/s3a_init.ram/spram.ram' with type 'RAMB16BWE' could not be
resolved. A pin name misspelling can cause this, a missing edif or ngc file,
case mismatch between the block name and the edif or ngc file name, or the
misspelling of a type name. Symbol 'RAMB16BWE' is not supported in target
'spartan3e'.

¿Cuál es la causa del error anterior y cómo puedo corregirlo?

Respuestas (1)

El Spartan-3E de Xilinx solo es compatible con RAMB16, siendo RAMB16WE una primitiva de una arquitectura posterior (Spartan-3A, y quizás otros).

Lo más probable es que haya generado su IP con las opciones de proyecto incorrectas. Asegúrese de generar la IP para un Spartan-3E, no para un Spartan-3A o cualquier otra arquitectura.

En mi caso tuve 2 problemas pero tampoco eran el objetivo. Necesitaba una definición NET en mi archivo *.ucf para los pines faltantes. También me faltaba un archivo fuente que necesitaba uno de los otros que había traído.