Hola, estoy haciendo un archivo de registro 8x32 en verilog, el sim se ve bien, pero cuando compilo en quartus lo hace
Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [31]" en el archivo de registro 8x32.v (21) Error (10029): controlador constante en registerfile8x32.v (32) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [30]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [29]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [28]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [27]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [26]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [25]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [24]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [23]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [22]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [21]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [20]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [19]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [18]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [17]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [16]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [15]" en registerfile8x32.v (21) Error (10028): No se pueden resolver varios controladores constantes para la red "rf [7] [14]" en registerfile8x32.v (21) Error: no se puede elaborar la jerarquía de usuarios de nivel superior Error: Análisis Quartus II & La síntesis no tuvo éxito. 21 errores, 4 advertencias Error: Memoria virtual pico: 300 megabytes. Error: Procesamiento finalizado: sábado 27 de octubre 19:20:08 2018 Error: tiempo transcurrido: 00:00:01 Error: Tiempo total de CPU (en todos los procesadores): 00:00:01 Error: la compilación completa de Quartus II no tuvo éxito. 23 errores, 4 advertencias
// Defino todos los parametros, entradas, salidas, regs,etc.
module registerfile8x32(addrsrc1_i,addrsrc2_i,addrdest_i,dest_i,
src1_o,src2_o,clk_i,rst_n_i,wr_i);
input [2:0] addrsrc1_i;
input [2:0] addrsrc2_i;
input [2:0] addrdest_i;
input [31:0] dest_i;
input clk_i,rst_n_i,wr_i;
output [31:0]src1_o;
output [31:0]src2_o;
reg [31:0] rf[7:0];
reg [31:0]src1_o;
reg [31:0]src2_o;
integer i; //Necesito este iterador para el bucle for, con el que lleno todos los reg de 0s.
// Esta parte de codigo es ASINCRONA, lo primero que miro es el reset, si esta a 0 reseteo todos
// los registros.
always@(negedge rst_n_i)
begin
if (rst_n_i == 0) // Miro si el reset esta a 0
begin
for(i=0; i<8; i=i+1) // Si lo está, lleno los registros de 0s.
rf[i]<= 32'b0;
end
end
// Positive edge clock y write enable.
// Esta parte del codigo es nuestra parte SINCRONA, con el reloj y el write enable.
always@(posedge clk_i or wr_i)
begin
if (wr_i) // Si write enable esta a 1
begin
rf[addrdest_i] <= dest_i; // Escribo en el registro de destino.
end
else if (!wr_i) // Si WE no esta activo, el registo mantiene el valor que ya tenia.
begin
rf[addrdest_i] <= rf[addrdest_i];
end
end
// Esta parte del codigo vuelve a ser ASINCRONA mira las direcciones de lectura
always@(addrsrc2_i or addrsrc1_i)
begin
src1_o <= rf[addrsrc1_i];
src2_o <= rf[addrsrc2_i];
end
endmodule