Для того, чтобы операции выполнялись в одном такте, внутри always блока, обязательно использование неблокирующих присвоений (<=) будьте внимательны.
for(k=0; k<(ORDER/2); k=k+1) begin
gnrt2[k].add_dataa <= gnrt[2*k].mult_res;
gnrt2[k].add_datab <= gnrt[2*k+1].mult_res;
end