module DW_squarep_inst( inst_a, inst_b, inst_tc, accum_inst ); parameter inst_width = 8; parameter inst_verif_en = 3; // level 3 is the most aggressive // verification mode for simulation // Square and accumulate using DW_squarep input [inst_width-1 : 0] inst_a; input [2*inst_width-1 : 0] inst_b; input inst_tc; output [2*inst_width-1 : 0] accum_inst; wire [2*inst_width-1 : 0] part_prod1, part_prod2, part_sum1, part_sum2; // Instance of DW_squarep DW_squarep #(inst_width,inst_verif_en) U1 ( .a(inst_a), .tc(inst_tc), .out0(part_prod1), .out1(part_prod2) ); // Instance of DW01_csa DW01_csa #(2*inst_width) U2 ( .a(part_prod1), .b(part_prod2), .c(inst_b), .ci(1'b0), .sum(part_sum1), .carry(part_sum2) ); // Instance of DW01_add DW01_add #(2*inst_width) U3 ( .A(part_sum1), .B(part_sum2), .CI(1'b0), .SUM(accum_inst) ); endmodule