Escribí un código verilog para un registro de 4 por 9 bits:
module reg_file(input rst,
input clk,
input wr_en,
input rd_en,
input [1:0]rd0_addr,
input [1:0]rd1_addr,
input [1:0]wr_addr,
input [8:0]wr_data,
output reg [8:0]rd0_data,
output reg [8:0]rd1_data);
reg [8:0]mem[3:0];
integer i;
always @(posedge rst or negedge clk)
begin
if (rst) begin
for (i=0; i<4; i=i+1)
mem[i]=0;
end
else if (wr_en) begin
mem[wr_addr]=wr_data;
end
else (rd_en) begin
assign rd0_data = mem[rd0_addr];
assign rd1_data = mem[rd1_addr];
end
end
endmodule
pero utilizando iverilog para verificar si hay algún problema, dice:
26: syntax error
27: Syntax in assignment statement l-value.
30: syntax error
Parece que no entiendo por qué recibo estos errores, ¿puede alguien ayudarme?
También necesito encontrar vectores de prueba para probar todos los resultados posibles del archivo de registro. ¿Alguien tiene alguna sugerencia sobre la mejor manera de hacerlo?