I'm workin with Verilog and using ISE Compiler. My problem is RAM inferrention for a signal. ISE is impementing my signal in FF and I don't know why. The code:
Code:
reg [31:0] ct_tab_start_next_n [7:0];
always@(posedgeCLK)
if (ag_start) ct_tab_start_next_n [ct_dev_num]<= ag_secend_n;
else if (ag_go_to_next_block_addr)ct_tab_start_next_n [ct_dev_num] <= ag_start_block_n_addr;
else if (ag_go_to_next_block_n) ct_tab_start_next_n [ct_dev_num] <= ag_next_n;
else if (ag_go_to_next_block_m) ct_tab_start_next_n [ct_dev_num] <= ag_next_m;
I got this advise:
Code:
INFO:Xst:738 - HDL ADVISOR - 256 flip-flops were inferred for signal <ct_tab_start_next_n>. You may be trying to describe a RAM in a way that is incompatible with block and distributed RAM resources available on Xilinx devices, or with a specific template that is not supported. Please review th...
As you can see, compiler think that ct_tab_start_next_n is not defined properly for RAM implementation, where I don't see why! Can it be the matter of ISE (I know that it is not fault free)?
Try to rewrite your code as two independent parts: multiplexer for input data and storage to RAM.
Also check that you don't use reset for signal ct_tab_start_next_n.
Try to rewrite your code as two independent parts: multiplexer for input data and storage to RAM.
Also check that you don't use reset for signal ct_tab_start_next_n.
You are right, I needed to write a mux for input data. Thx for your advise! In other part of the project I'm using different addresses signal, so I needed too define another mux for addr too and one for write_enable signal: