diseño de ram síncrono de puerto único 32x32 usando verilog in vivado hls

0

en el código verilog a continuación:

module mem_try(
     clk, 
     addr,    
     data_in, 
     rd,
     wr,  
     data_out
    );

      parameter addr_length=32,data_width=32,ram_depth= 1 << addr_length;
      input [data_width-1:0]data_in;
      input clk,rd,wr;
      input [addr_length-1:0]addr;
      output reg [data_width-1:0]data_out;
      reg[data_width-1:0]ram[ram_depth-1:0];//ram variable decalaration 
      assign write_only =wr&~rd ;
      assign read_only =~wr&rd ;

      always@(posedge clk) begin

      if(write_only) begin
         ram[addr]<=data_in;
      end


      if(read_only) begin    
        data_out<=ram[addr];
      end

      end         
endmodule

Después de la síntesis obtengo el siguiente error:

[Synth 8-3331] design mem_try has unconnected port addr[31](30 more like this)

y se forma un ram de distribución.

¿Alguien puede señalar el error y cómo se puede inferir un bram ?

    

1 respuesta

0

Parece que deberías poder inferir una RAM de bloque con eso. No estoy seguro si esa lógica de lectura / escritura exclusiva hará tropezar algo. Recomendaría establecer el ancho de la dirección mucho más pequeño, tal vez entre 8 y 16, de lo contrario el sintetizador no será feliz.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas