But before in initial block I initialize them with numbers.I even display and check them ...
Code:
initial begin
//Initial
k=0;
for (k = 0; k < 96; k = k + 1)
begin
data_i_p_buffer[k]=1;
data_q_p_buffer[k]=2;
end
for (k = 0; k < 128; k = k + 1)
begin
data_i_buffer[k]=0;
data_q_buffer[k]=0;
end
end
when simulating accumulator you need to define initial value. If it is unknown then all results are unknown. If it is hardware it may or may not start as zeros anyway.
But before in initial block I initialize them with numbers.I even display and check them ...
Code:
initial begin
//Initial
k=0;
for (k = 0; k < 96; k = k + 1)
begin
data_i_p_buffer[k]=1;
data_q_p_buffer[k]=2;
end
for (k = 0; k < 128; k = k + 1)
begin
data_i_buffer[k]=0;
data_q_buffer[k]=0;
end
end
But before in initial block I initialize them with numbers.I even display and check them ...
Code:
initial begin
//Initial
k=0;
for (k = 0; k < 96; k = k + 1)
begin
data_i_p_buffer[k]=1;
data_q_p_buffer[k]=2;
end
for (k = 0; k < 128; k = k + 1)
begin
data_i_buffer[k]=0;
data_q_buffer[k]=0;
end
end
You are using a blocking assignment for temp_i_mult_result?
If temp_i_mult_result is in an edge sensitive always block (i.e. implementing flip-flops) then you should be using a non-blocking assignment (<=). I've noticed in some previous code you posted that you always seem to use blocking assignments.
If this code is in a combinational always block then the initial value of temp_i_mult_result may or may not be indeterminate depending on the FPGA used even if you fix the simulation by adding temp_i_mult_result to an initial block.