вот другая реализация. Это простые делители - первый итерационный, а этот нет
// Fast Array Divider 8 bit to 4 bit
module fast_array_divider (a_in, d_in, q_out, r_out);
input [7:0] a_in;
input [3:0] d_in;
output [7:0] q_out; wire [7:0] q_out;
output [3:0] r_out; wire [3:0] r_out;
wire [12:1] a;
wire [4:1] d;
wire [8:1] q;
wire [8:5] r;
wire c_0_3, c_0_2, c_0_1, c_0_0;
wire s_0_3, s_0_2, s_0_1, s_0_0;
wire q1_inv;
restoring_array_divider array_0_0 ( a[2], d[1], c_0_1, q1_inv, c_0_0, s_0_0);
restoring_array_divider array_0_1 ( a[3], d[2], c_0_2, q1_inv, c_0_1, s_0_1);
restoring_array_divider array_0_2 ( a[4], d[3], c_0_3, q1_inv, c_0_2, s_0_2);
restoring_array_divider array_0_3 ( a[5], d[4], 1'b0, q1_inv, c_0_3, s_0_3);
assign q[1] = ( a[1] | !c_0_0 );
assign q1_inv=!q[1];
wire c_1_3, c_1_2, c_1_1, c_1_0;
wire s_1_3, s_1_2, s_1_1, s_1_0;
wire q2_inv;
restoring_array_divider array_1_0 ( s_0_1, d[1], c_1_1, q2_inv, c_1_0, s_1_0);
restoring_array_divider array_1_1 ( s_0_2, d[2], c_1_2, q2_inv, c_1_1, s_1_1);
restoring_array_divider array_1_2 ( s_0_3, d[3], c_1_3, q2_inv, c_1_2, s_1_2);
restoring_array_divider array_1_3 ( a[6], d[4], 1'b0, q2_inv, c_1_3, s_1_3);
assign q[2] = ( s_0_0 | !c_1_0 );
assign q2_inv=!q[2];
wire c_2_3, c_2_2, c_2_1, c_2_0;
wire s_2_3, s_2_2, s_2_1, s_2_0;
wire q3_inv;
restoring_array_divider array_2_0 ( s_1_1, d[1], c_2_1, q3_inv, c_2_0, s_2_0);
restoring_array_divider array_2_1 ( s_1_2, d[2], c_2_2, q3_inv, c_2_1, s_2_1);
restoring_array_divider array_2_2 ( s_1_3, d[3], c_2_3, q3_inv, c_2_2, s_2_2);
restoring_array_divider array_2_3 ( a[7], d[4], 1'b0, q3_inv, c_2_3, s_2_3);
assign q[3] = ( s_1_0 | !c_2_0 );
assign q3_inv=!q[3];
wire c_3_3, c_3_2, c_3_1, c_3_0;
wire s_3_3, s_3_2, s_3_1, s_3_0;
wire q4_inv;
restoring_array_divider array_3_0 ( s_2_1, d[1], c_3_1, q4_inv, c_3_0, s_3_0);
restoring_array_divider array_3_1 ( s_2_2, d[2], c_3_2, q4_inv, c_3_1, s_3_1);
restoring_array_divider array_3_2 ( s_2_3, d[3], c_3_3, q4_inv, c_3_2, s_3_2);
restoring_array_divider array_3_3 ( a[8], d[4], 1'b0, q4_inv, c_3_3, s_3_3);
assign q[4] = ( s_2_0 | !c_3_0 );
assign q4_inv=!q[4];
wire c_4_3, c_4_2, c_4_1, c_4_0;
wire s_4_3, s_4_2, s_4_1, s_4_0;
wire q5_inv;
restoring_array_divider array_4_0 ( s_3_1, d[1], c_4_1, q5_inv, c_4_0, s_4_0);
restoring_array_divider array_4_1 ( s_3_2, d[2], c_4_2, q5_inv, c_4_1, s_4_1);
restoring_array_divider array_4_2 ( s_3_3, d[3], c_4_3, q5_inv, c_4_2, s_4_2);
restoring_array_divider array_4_3 ( a[9], d[4], 1'b0, q5_inv, c_4_3, s_4_3);
assign q[5] = ( s_3_0 | !c_4_0 );
assign q5_inv=!q[5];
wire c_5_3, c_5_2, c_5_1, c_5_0;
wire s_5_3, s_5_2, s_5_1, s_5_0;
wire q6_inv;
restoring_array_divider array_5_0 ( s_4_1, d[1], c_5_1, q6_inv, c_5_0, s_5_0);
restoring_array_divider array_5_1 ( s_4_2, d[2], c_5_2, q6_inv, c_5_1, s_5_1);
restoring_array_divider array_5_2 ( s_4_3, d[3], c_5_3, q6_inv, c_5_2, s_5_2);
restoring_array_divider array_5_3 ( a[10], d[4], 1'b0, q6_inv, c_5_3, s_5_3);
assign q[6] = ( s_4_0 | !c_5_0 );
assign q6_inv=!q[6];
wire c_6_3, c_6_2, c_6_1, c_6_0;
wire s_6_3, s_6_2, s_6_1, s_6_0;
wire q7_inv;
restoring_array_divider array_6_0 ( s_5_1, d[1], c_6_1, q7_inv, c_6_0, s_6_0);
restoring_array_divider array_6_1 ( s_5_2, d[2], c_6_2, q7_inv, c_6_1, s_6_1);
restoring_array_divider array_6_2 ( s_5_3, d[3], c_6_3, q7_inv, c_6_2, s_6_2);
restoring_array_divider array_6_3 ( a[11], d[4], 1'b0, q7_inv, c_6_3, s_6_3);
assign q[7] = ( s_5_0 | !c_6_0 );
assign q7_inv=!q[7];
wire c_7_3, c_7_2, c_7_1, c_7_0;
wire s_7_3, s_7_2, s_7_1, s_7_0;
wire q8_inv;
restoring_array_divider array_7_0 ( s_6_1, d[1], c_7_1, q8_inv, c_7_0, s_7_0);
restoring_array_divider array_7_1 ( s_6_2, d[2], c_7_2, q8_inv, c_7_1, s_7_1);
restoring_array_divider array_7_2 ( s_6_3, d[3], c_7_3, q8_inv, c_7_2, s_7_2);
restoring_array_divider array_7_3 ( a[12], d[4], 1'b0, q8_inv, c_7_3, s_7_3);
assign q[8] = ( s_6_0 | !c_7_0 );
assign q8_inv=!q[8];
assign r[8:5]={s_7_3, s_7_2, s_7_1, s_7_0};
assign a[12:1]={a_in[0], a_in[1], a_in[2], a_in[3], a_in[4], a_in[5], a_in[6], a_in[7], 4'b0000};
assign d[4:1]={d_in[0], d_in[1], d_in[2], d_in[3]};
assign q_out[7:0]={q[1] ,q[2], q[3], q[4], q[5], q[6], q[7], q[8]};
assign r_out[3:0]={r[5], r[6], r[7], r[8]};
endmodule //fast_array_divider