Use only one register for the internal round. The modules inside the generate block need not be replicate itself, use of these modules once, the input and output for every round should be a feedback register and perform the round operation using different approaches if possible.
generate
for(i=1;i<=9;i=i+1) begin: test
if(i<9)
begin
Key k_i (.rc(i),.k_in(key_out[i-1]),.k_out(key_out[i]));
MUX2_1 MUX_i (.A2(round_out[i-1]),.S(1'b1),.B(mux_out1[i]));
Sub_Bytes sb_i (.A(mux_out1[i]),.B1(sb[i]));
DFF_128 dff_i (.clk(clk),.D(sb[i]),.Q(df1[i]));
Shift_Rows sr_i (.clk(clk),.b_in(df1[i]),.b_out(sr[i]));
Mix_Column mc_i (.clk(clk),.c_in1(sr[i]),.c_out(mc[i]));
mux mux_i (.a1(sr[i]),.a2(mc[i]),.s(1'b1),.b(mc_sr[i]));
Sub_Key sk_i (.key_in(key_out[i]),.mc_sr_out(mc_sr[i]),.data_out(round_out1[i]));
Round_reg r_i(.clk(clk),.r_in(round_out1[i]),.r_out(round_out[i]));
end
else
begin
Key k_f (.rc(i),.k_in(key_out[i-1]),.k_out(key_out[i]));
MUX2_1 MUX_f (.A2(round_out[i-1]),.S(1'b1),.B(mux_out1[i]));
Sub_Bytes sb_f (.A(mux_out1[i]),.B1(sb[i]));
DFF_128 dff_f (.clk(clk),.D(sb[i]),.Q(df1[i]));
Shift_Rows sr_f (.clk(clk),.b_in(df1[i]),.b_out(sr[i]));
mux mux_f (.a1(sr[i]),.s(1'b0),.b(mc_sr[i]));
Sub_Key sk_f (.key_in(key_out[i]),.mc_sr_out(mc_sr[i]),.data_out(round_out1[i]));
Round_reg r_f (.clk(clk),.r_in(round_out1[i]),.r_out(cipher_out));
end
end
endgenerate