hallovipin
Member level 1
Hi,
I created an SRAM of 8K*12 bits inside FPGA. When I am reading it following two info appear while synthesis.
1. Xst:3040 - The RAM <MRAM_int_ram> will be implemented as a BLOCK RAM, absorbing following register(s):
2. Xst: 3031 - HDL ADVISOR - The RAM <MRAM_int_ram_ren> will be implemented on LUTs either because you have described an asynchrous read or because of currently unsupported block RAM features.
Problem: Due to the second message my whole lookup tables have got exhausted as
ISE is trying to build RAM out of it.
I have taken all precautions to have a synchrous read : have a look on the part of my code
always @(posedge clk_adc) begin ///////////// Write RAM with ADC clock if(write_enable)
if(address_w==12'b111111111111)
begin
address_w<=12'b000000000000;
end
else begin
int_ram[address_w]<=adc_data_in;
address_w<=address_w+12'b000000000001;
end
end
always @(posedge clk) begin /////// Read RAM with main FPGA clock
if(address_r==12'b111111111110)begin
address_r<=12'b000000000000;
end
else begin
if(temp_sum>15'b00000010000000) ////////////////////////////// peak temp_sum<=15'b000000000000000;
if(int_ram[address_next]>int_ram[address_r])
neg_check=int_ram[address_next]-int_ram[address_r];
else
neg_check=0;
temp_sum<=temp_sum+neg_check;
address_r<=address_r+12'b000000000001;
address_next<=address_r+12'b000000000010;
end
end
Please ignore the completeness of the code as I have selectively found out that only this portion of the code is creating problem.
I created an SRAM of 8K*12 bits inside FPGA. When I am reading it following two info appear while synthesis.
1. Xst:3040 - The RAM <MRAM_int_ram> will be implemented as a BLOCK RAM, absorbing following register(s):
2. Xst: 3031 - HDL ADVISOR - The RAM <MRAM_int_ram_ren> will be implemented on LUTs either because you have described an asynchrous read or because of currently unsupported block RAM features.
Problem: Due to the second message my whole lookup tables have got exhausted as
ISE is trying to build RAM out of it.
I have taken all precautions to have a synchrous read : have a look on the part of my code
always @(posedge clk_adc) begin ///////////// Write RAM with ADC clock if(write_enable)
if(address_w==12'b111111111111)
begin
address_w<=12'b000000000000;
end
else begin
int_ram[address_w]<=adc_data_in;
address_w<=address_w+12'b000000000001;
end
end
always @(posedge clk) begin /////// Read RAM with main FPGA clock
if(address_r==12'b111111111110)begin
address_r<=12'b000000000000;
end
else begin
if(temp_sum>15'b00000010000000) ////////////////////////////// peak temp_sum<=15'b000000000000000;
if(int_ram[address_next]>int_ram[address_r])
neg_check=int_ram[address_next]-int_ram[address_r];
else
neg_check=0;
temp_sum<=temp_sum+neg_check;
address_r<=address_r+12'b000000000001;
address_next<=address_r+12'b000000000010;
end
end
Please ignore the completeness of the code as I have selectively found out that only this portion of the code is creating problem.