ql-qlf: qlf_k6n10f: dsp: add simulation models

Signed-off-by: Paweł Czarnecki <pczarnecki@antmicro.com>
diff --git a/ql-qlf-plugin/qlf_k6n10f/cells_sim.v b/ql-qlf-plugin/qlf_k6n10f/cells_sim.v
index 1ee33ca..0a39e24 100644
--- a/ql-qlf-plugin/qlf_k6n10f/cells_sim.v
+++ b/ql-qlf-plugin/qlf_k6n10f/cells_sim.v
@@ -861,13 +861,13 @@
         {{(NBITS_ACC-NBITS_A-NBITS_B){mult[NBITS_A+NBITS_B-1]}}, mult[NBITS_A+NBITS_B-1:0]};
 
     wire [NBITS_ACC-1:0] a_xtnd = (unsigned_a) ?
-			      {{(NBITS_ACC-NBITS_A-NBITS_AF){1'b0}}, acc_fir, {a}} :
-			      {{(NBITS_ACC-NBITS_A-NBITS_AF){acc_fir[NBITS_AF-1]}}, acc_fir, {a[NBITS_A-1:0]}};
+			      { {(NBITS_ACC - NBITS_A - NBITS_AF){1'b0}}, acc_fir, {a} } :
+			      { {(NBITS_ACC - NBITS_A - NBITS_AF){acc_fir[NBITS_AF-1]}}, acc_fir, {a[NBITS_A-1:0]} };
 
     // Adder
     wire [NBITS_ACC-1:0] add_a = (subtract_i) ? (~mult_xtnd + 1) : mult_xtnd;
-    wire [NBITS_ACC-1:0] add_b = (feedback_i == 2'h0) ? acc :
-                                 (feedback_i == 2'h1) ? {{NBITS_ACC}{1'b0}} : a_xtnd;
+    wire [NBITS_ACC-1:0] add_b = (feedback_i == 3'h0) ? acc :
+                                 (feedback_i == 3'h1) ? {{NBITS_ACC}{1'b0}} : a_xtnd;
 
     wire [NBITS_ACC-1:0] add_o = add_a + add_b;
 
@@ -937,7 +937,6 @@
 
 endmodule
 
-(* blackbox *) // TODO: add sim model
 module dsp_t1_20x18x64 (
     input  [19:0] a_i,
     input  [17:0] b_i,
@@ -949,7 +948,7 @@
     input         clock_i,
     input         reset_i,
 
-    input  [1:0]  feedback_i,
+    input  [2:0]  feedback_i,
     input         load_acc_i,
     input         unsigned_a_i,
     input         unsigned_b_i,
@@ -967,9 +966,42 @@
     parameter [19:0] COEFF_2 = 20'd0;
     parameter [19:0] COEFF_3 = 20'd0;
 
+    dsp_t1_sim #(
+	.NBITS_ACC(64),
+	.NBITS_A(20),
+	.NBITS_B(18),
+	.NBITS_Z(38),
+	.NBITS_COEF(20),
+	.NBITS_AF(4)
+    ) dsp (
+	.a_i(a_i),
+	.b_i(b_i),
+	.z_o(z_o),
+	.dly_b_o(dly_b_o),
+
+	.acc_fir_i(acc_fir_i),
+	.feedback_i(feedback_i),
+	.load_acc_i(load_acc_i),
+
+	.unsigned_a_i(unsigned_a_i),
+	.unsigned_b_i(unsigned_b_i),
+
+	.clock_i(clock_i),
+	.reset_n_i(~reset_i),
+
+	.saturate_enable_i(saturate_enable_i),
+	.output_select_i(output_select_i),
+	.round_i(round_i),
+	.shift_right_i(shift_right_i),
+	.subtract_i(subtract_i),
+	.register_inputs_i(register_inputs_i),
+	.coef_0_i(coeff_0_i),
+	.coef_1_i(coeff_1_i),
+	.coef_2_i(coeff_2_i),
+	.coef_3_i(coeff_3_i)
+    );
 endmodule
 
-(* blackbox *) // TODO: add sim model
 module dsp_t1_10x9x32 (
     input  [ 9:0] a_i,
     input  [ 8:0] b_i,
@@ -981,7 +1013,7 @@
     input         clock_i,
     input         reset_i,
 
-    input  [1:0]  feedback_i,
+    input  [2:0]  feedback_i,
     input         load_acc_i,
     input         unsigned_a_i,
     input         unsigned_b_i,
@@ -999,4 +1031,38 @@
     parameter [9:0] COEFF_2 = 10'd0;
     parameter [9:0] COEFF_3 = 10'd0;
 
+    dsp_t1_sim #(
+	.NBITS_ACC(32),
+	.NBITS_A(10),
+	.NBITS_B(9),
+	.NBITS_Z(19),
+	.NBITS_COEF(10),
+	.NBITS_AF(2)
+    ) dsp (
+	.a_i(a_i),
+	.b_i(b_i),
+	.z_o(z_o),
+	.dly_b_o(dly_b_o),
+
+	.acc_fir_i(acc_fir_i),
+	.feedback_i(feedback_i),
+	.load_acc_i(load_acc_i),
+
+	.unsigned_a_i(unsigned_a_i),
+	.unsigned_b_i(unsigned_b_i),
+
+	.clock_i(clock_i),
+	.reset_n_i(~reset_i),
+
+	.saturate_enable_i(saturate_enable_i),
+	.output_select_i(output_select_i),
+	.round_i(round_i),
+	.shift_right_i(shift_right_i),
+	.subtract_i(subtract_i),
+	.register_inputs_i(register_inputs_i),
+	.coef_0_i(coeff_0_i),
+	.coef_1_i(coeff_1_i),
+	.coef_2_i(coeff_2_i),
+	.coef_3_i(coeff_3_i)
+    );
 endmodule