data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v
1: b"%Error: data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v:128: Cannot find file containing module: 'booth_code_25_bit'\nbooth_code_25_bit  x_pa_booth_code_25_bit0 (\n^~~~~~~~~~~~~~~~~\n        ... Looked in:\n             data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl,data/full_repos/permissive/418753455/booth_code_25_bit\n             data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl,data/full_repos/permissive/418753455/booth_code_25_bit.v\n             data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl,data/full_repos/permissive/418753455/booth_code_25_bit.sv\n             booth_code_25_bit\n             booth_code_25_bit.v\n             booth_code_25_bit.sv\n             obj_dir/booth_code_25_bit\n             obj_dir/booth_code_25_bit.v\n             obj_dir/booth_code_25_bit.sv\n%Error: data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v:143: Cannot find file containing module: 'booth_code_25_bit'\nbooth_code_25_bit  x_pa_booth_code_25_bit1 (\n^~~~~~~~~~~~~~~~~\n%Error: data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v:158: Cannot find file containing module: 'booth_code_25_bit'\nbooth_code_25_bit  x_pa_booth_code_25_bit2 (\n^~~~~~~~~~~~~~~~~\n%Error: data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v:173: Cannot find file containing module: 'booth_code_25_bit'\nbooth_code_25_bit  x_pa_booth_code_25_bit3 (\n^~~~~~~~~~~~~~~~~\n%Error: data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v:188: Cannot find file containing module: 'booth_code_25_bit'\nbooth_code_25_bit  x_pa_booth_code_25_bit4 (\n^~~~~~~~~~~~~~~~~\n%Error: data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v:203: Cannot find file containing module: 'booth_code_25_bit'\nbooth_code_25_bit  x_pa_booth_code_25_bit5 (\n^~~~~~~~~~~~~~~~~\n%Error: data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v:218: Cannot find file containing module: 'booth_code_25_bit'\nbooth_code_25_bit  x_pa_booth_code_25_bit6 (\n^~~~~~~~~~~~~~~~~\n%Error: data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v:233: Cannot find file containing module: 'booth_code_25_bit'\nbooth_code_25_bit  x_pa_booth_code_25_bit7 (\n^~~~~~~~~~~~~~~~~\n%Error: data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v:248: Cannot find file containing module: 'booth_code_25_bit'\nbooth_code_25_bit  x_pa_booth_code_25_bit8 (\n^~~~~~~~~~~~~~~~~\n%Error: data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v:263: Cannot find file containing module: 'booth_code_25_bit'\nbooth_code_25_bit  x_pa_booth_code_25_bit9 (\n^~~~~~~~~~~~~~~~~\n%Error: data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v:278: Cannot find file containing module: 'booth_code_25_bit'\nbooth_code_25_bit  x_pa_booth_code_25_bit10 (\n^~~~~~~~~~~~~~~~~\n%Error: data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v:293: Cannot find file containing module: 'booth_code_25_bit'\nbooth_code_25_bit  x_pa_booth_code_25_bit11 (\n^~~~~~~~~~~~~~~~~\n%Error: data/full_repos/permissive/418753455/E906_RTL_FACTORY/gen_rtl/fmau/rtl/pa_fmau_multiplier_24x24_partial.v:308: Cannot find file containing module: 'booth_code_25_bit'\nbooth_code_25_bit  x_pa_booth_code_25_bit12 (\n^~~~~~~~~~~~~~~~~\n%Error: Exiting due to 13 error(s)\n"
module pa_fmau_multiplier_24x24_partial(
  a,
  b,
  out0,
  out1
);


input   [23:0]  a;             
input   [23:0]  b;             
output  [49:0]  out0;          
output  [49:0]  out1;          




wire    [23:0]  a;             
wire    [23:0]  b;             
wire    [26:0]  data_for_code; 
wire    [49:0]  ex1_c0_0;      
wire    [49:0]  ex1_c0_1;      
wire    [49:0]  ex1_c0_2;      
wire    [49:0]  ex1_c1_0;      
wire    [49:0]  ex1_c1_1;      
wire    [50:0]  ex1_c2_0;      
wire    [49:0]  ex1_p0_0_0;    
wire    [49:0]  ex1_p0_0_1;    
wire    [49:0]  ex1_p0_0_2;    
wire    [49:0]  ex1_p0_0_3;    
wire    [49:0]  ex1_p0_0_cout; 
wire    [49:0]  ex1_p0_0_xor;  
wire    [49:0]  ex1_p0_1_0;    
wire    [49:0]  ex1_p0_1_1;    
wire    [49:0]  ex1_p0_1_2;    
wire    [49:0]  ex1_p0_1_3;    
wire    [49:0]  ex1_p0_1_cout; 
wire    [49:0]  ex1_p0_1_xor;  
wire    [49:0]  ex1_p0_2_0;    
wire    [49:0]  ex1_p0_2_1;    
wire    [49:0]  ex1_p0_2_2;    
wire    [49:0]  ex1_p0_2_3;    
wire    [49:0]  ex1_p0_2_cout; 
wire    [49:0]  ex1_p0_2_xor;  
wire    [49:0]  ex1_p0_3_0;    
wire    [49:0]  ex1_p0_3_1;    
wire    [49:0]  ex1_p1_0_0;    
wire    [49:0]  ex1_p1_0_1;    
wire    [49:0]  ex1_p1_0_2;    
wire    [49:0]  ex1_p1_0_3;    
wire    [49:0]  ex1_p1_0_cout; 
wire    [49:0]  ex1_p1_0_xor;  
wire    [49:0]  ex1_p1_1_0;    
wire    [49:0]  ex1_p1_1_1;    
wire    [49:0]  ex1_p1_1_2;    
wire    [49:0]  ex1_p1_1_3;    
wire    [49:0]  ex1_p1_1_cout; 
wire    [49:0]  ex1_p1_1_xor;  
wire    [50:0]  ex1_p2_0_0;    
wire    [50:0]  ex1_p2_0_1;    
wire    [50:0]  ex1_p2_0_2;    
wire    [50:0]  ex1_p2_0_3;    
wire    [50:0]  ex1_p2_0_cout; 
wire    [50:0]  ex1_p2_0_xor;  
wire    [49:0]  ex1_s0_0;      
wire    [49:0]  ex1_s0_1;      
wire    [49:0]  ex1_s0_2;      
wire    [49:0]  ex1_s1_0;      
wire    [49:0]  ex1_s1_1;      
wire    [50:0]  ex1_s2_0;      
wire    [1 :0]  h0;            
wire    [1 :0]  h1;            
wire    [1 :0]  h10;           
wire    [1 :0]  h11;           
wire    [1 :0]  h12;           
wire    [1 :0]  h2;            
wire    [1 :0]  h3;            
wire    [1 :0]  h4;            
wire    [1 :0]  h5;            
wire    [1 :0]  h6;            
wire    [1 :0]  h7;            
wire    [1 :0]  h8;            
wire    [1 :0]  h9;            
wire    [24:0]  mult_src;      
wire    [24:0]  multiplicand;  
wire    [49:0]  out0;          
wire    [49:0]  out1;          
wire    [24:0]  part_product0; 
wire    [24:0]  part_product1; 
wire    [24:0]  part_product10; 
wire    [24:0]  part_product11; 
wire    [24:0]  part_product12; 
wire    [24:0]  part_product2; 
wire    [24:0]  part_product3; 
wire    [24:0]  part_product4; 
wire    [24:0]  part_product5; 
wire    [24:0]  part_product6; 
wire    [24:0]  part_product7; 
wire    [24:0]  part_product8; 
wire    [24:0]  part_product9; 
wire    [12:0]  sign_not;      


parameter SRC0_WIDTH = 25;
parameter SRC1_WIDTH = 25;
parameter DST_WIDTH  = 50;

assign multiplicand[SRC0_WIDTH-1:0] = {1'b0,a[SRC0_WIDTH-2:0]};
assign mult_src[SRC1_WIDTH-1:0]     = {1'b0,b[SRC1_WIDTH-2:0]};

assign data_for_code[SRC1_WIDTH+1:0] = {mult_src[SRC1_WIDTH-1],mult_src[SRC1_WIDTH-1:0],1'b0};



booth_code_25_bit  x_pa_booth_code_25_bit0 (
  .A                   (multiplicand[24:0] ),
  .code                (data_for_code[2:0] ),
  .h                   (h0[1:0]            ),
  .product             (part_product0[24:0]),
  .sn                  (sign_not[0]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit1 (
  .A                   (multiplicand[24:0] ),
  .code                (data_for_code[4:2] ),
  .h                   (h1[1:0]            ),
  .product             (part_product1[24:0]),
  .sn                  (sign_not[1]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit2 (
  .A                   (multiplicand[24:0] ),
  .code                (data_for_code[6:4] ),
  .h                   (h2[1:0]            ),
  .product             (part_product2[24:0]),
  .sn                  (sign_not[2]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit3 (
  .A                   (multiplicand[24:0] ),
  .code                (data_for_code[8:6] ),
  .h                   (h3[1:0]            ),
  .product             (part_product3[24:0]),
  .sn                  (sign_not[3]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit4 (
  .A                   (multiplicand[24:0] ),
  .code                (data_for_code[10:8]),
  .h                   (h4[1:0]            ),
  .product             (part_product4[24:0]),
  .sn                  (sign_not[4]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit5 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[12:10]),
  .h                    (h5[1:0]             ),
  .product              (part_product5[24:0] ),
  .sn                   (sign_not[5]         )
);








booth_code_25_bit  x_pa_booth_code_25_bit6 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[14:12]),
  .h                    (h6[1:0]             ),
  .product              (part_product6[24:0] ),
  .sn                   (sign_not[6]         )
);








booth_code_25_bit  x_pa_booth_code_25_bit7 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[16:14]),
  .h                    (h7[1:0]             ),
  .product              (part_product7[24:0] ),
  .sn                   (sign_not[7]         )
);








booth_code_25_bit  x_pa_booth_code_25_bit8 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[18:16]),
  .h                    (h8[1:0]             ),
  .product              (part_product8[24:0] ),
  .sn                   (sign_not[8]         )
);








booth_code_25_bit  x_pa_booth_code_25_bit9 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[20:18]),
  .h                    (h9[1:0]             ),
  .product              (part_product9[24:0] ),
  .sn                   (sign_not[9]         )
);








booth_code_25_bit  x_pa_booth_code_25_bit10 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[22:20]),
  .h                    (h10[1:0]            ),
  .product              (part_product10[24:0]),
  .sn                   (sign_not[10]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit11 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[24:22]),
  .h                    (h11[1:0]            ),
  .product              (part_product11[24:0]),
  .sn                   (sign_not[11]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit12 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[26:24]),
  .h                    (h12[1:0]            ),
  .product              (part_product12[24:0]),
  .sn                   (sign_not[12]        )
);











assign  ex1_p0_0_0[DST_WIDTH-1:0] =  { {22{1'b0}},      sign_not[0],{2{!sign_not[0]}},part_product0[SRC0_WIDTH-1:0]};
assign  ex1_p0_0_1[DST_WIDTH-1:0] =  { {21{1'b0}},1'b1, sign_not[1],                  part_product1[SRC0_WIDTH-1:0], h0[1:0]};
assign  ex1_p0_0_2[DST_WIDTH-1:0] =  { {19{1'b0}},1'b1, sign_not[2],                  part_product2[SRC0_WIDTH-1:0], h1[1:0], { 2{1'b0}} };  
assign  ex1_p0_0_3[DST_WIDTH-1:0] =  { {17{1'b0}},1'b1, sign_not[3],                  part_product3[SRC0_WIDTH-1:0], h2[1:0], { 4{1'b0}} };      

assign  ex1_p0_1_0[DST_WIDTH-1:0] =  { {15{1'b0}},1'b1, sign_not[4],                  part_product4[SRC0_WIDTH-1:0], h3[1:0], { 6{1'b0}} };
assign  ex1_p0_1_1[DST_WIDTH-1:0] =  { {13{1'b0}},1'b1, sign_not[5],                  part_product5[SRC0_WIDTH-1:0], h4[1:0], { 8{1'b0}} }; 
assign  ex1_p0_1_2[DST_WIDTH-1:0] =  { {11{1'b0}},1'b1, sign_not[6],                  part_product6[SRC0_WIDTH-1:0], h5[1:0], {10{1'b0}} };    
assign  ex1_p0_1_3[DST_WIDTH-1:0] =  { { 9{1'b0}},1'b1, sign_not[7],                  part_product7[SRC0_WIDTH-1:0], h6[1:0], {12{1'b0}} };

assign  ex1_p0_2_0[DST_WIDTH-1:0] =  { { 7{1'b0}},1'b1, sign_not[8],                  part_product8[SRC0_WIDTH-1:0], h7[1:0], {14{1'b0}} }; 
assign  ex1_p0_2_1[DST_WIDTH-1:0] =  { { 5{1'b0}},1'b1, sign_not[9],                  part_product9[SRC0_WIDTH-1:0], h8[1:0], {16{1'b0}} };  
assign  ex1_p0_2_2[DST_WIDTH-1:0] =  { { 3{1'b0}},1'b1, sign_not[10],                 part_product10[SRC0_WIDTH-1:0],h9[1:0], {18{1'b0}} };
assign  ex1_p0_2_3[DST_WIDTH-1:0] =  { { 1{1'b0}},1'b1, sign_not[11],                 part_product11[SRC0_WIDTH-1:0],h10[1:0],{20{1'b0}} };

assign  ex1_p0_3_0[DST_WIDTH-1:0] =  {                  sign_not[12],                 part_product12[SRC0_WIDTH-1:0],h11[1:0],{22{1'b0}} }; 
assign  ex1_p0_3_1[DST_WIDTH-1:0] =  { {22{1'b0}},                                                                   h12[1:0],{26{1'b0}} };



assign ex1_p0_0_cout[DST_WIDTH-1:0] = (ex1_p0_0_0[DST_WIDTH-1:0]  &  ex1_p0_0_1[DST_WIDTH-1:0]) |
                                      (ex1_p0_0_1[DST_WIDTH-1:0]  &  ex1_p0_0_2[DST_WIDTH-1:0]) |
                                      (ex1_p0_0_0[DST_WIDTH-1:0]  &  ex1_p0_0_2[DST_WIDTH-1:0]) ;

assign ex1_p0_0_xor[DST_WIDTH-1:0]  = (ex1_p0_0_0[DST_WIDTH-1:0]  ^  ex1_p0_0_1[DST_WIDTH-1:0]) ^
                                      (ex1_p0_0_2[DST_WIDTH-1:0]  ^  ex1_p0_0_3[DST_WIDTH-1:0]);

assign ex1_s0_0[DST_WIDTH-1:0]      =  ex1_p0_0_xor[DST_WIDTH-1:0]^ {ex1_p0_0_cout[DST_WIDTH-2:0],1'b0};
assign ex1_c0_0[DST_WIDTH-1:0]      =  ex1_p0_0_xor[DST_WIDTH-1:0]& {ex1_p0_0_cout[DST_WIDTH-2:0],1'b0}|
                                     (~ex1_p0_0_xor[DST_WIDTH-1:0]&  ex1_p0_0_3[DST_WIDTH-1:0]);


assign ex1_p0_1_cout[DST_WIDTH-1:0] = (ex1_p0_1_0[DST_WIDTH-1:0]  &  ex1_p0_1_1[DST_WIDTH-1:0]) |
                                      (ex1_p0_1_1[DST_WIDTH-1:0]  &  ex1_p0_1_2[DST_WIDTH-1:0]) |
                                      (ex1_p0_1_0[DST_WIDTH-1:0]  &  ex1_p0_1_2[DST_WIDTH-1:0]) ;

assign ex1_p0_1_xor[DST_WIDTH-1:0]  = (ex1_p0_1_0[DST_WIDTH-1:0]  ^  ex1_p0_1_1[DST_WIDTH-1:0]) ^
                                      (ex1_p0_1_2[DST_WIDTH-1:0]  ^  ex1_p0_1_3[DST_WIDTH-1:0]);

assign ex1_s0_1[DST_WIDTH-1:0]      =  ex1_p0_1_xor[DST_WIDTH-1:0]^ {ex1_p0_1_cout[DST_WIDTH-2:0],1'b0};
assign ex1_c0_1[DST_WIDTH-1:0]      =  ex1_p0_1_xor[DST_WIDTH-1:0]& {ex1_p0_1_cout[DST_WIDTH-2:0],1'b0}|
                                     (~ex1_p0_1_xor[DST_WIDTH-1:0]&  ex1_p0_1_3[DST_WIDTH-1:0]);


assign ex1_p0_2_cout[DST_WIDTH-1:0] = (ex1_p0_2_0[DST_WIDTH-1:0]  &  ex1_p0_2_1[DST_WIDTH-1:0]) |
                                      (ex1_p0_2_1[DST_WIDTH-1:0]  &  ex1_p0_2_2[DST_WIDTH-1:0]) |
                                      (ex1_p0_2_0[DST_WIDTH-1:0]  &  ex1_p0_2_2[DST_WIDTH-1:0]) ;

assign ex1_p0_2_xor[DST_WIDTH-1:0]  = (ex1_p0_2_0[DST_WIDTH-1:0]  ^  ex1_p0_2_1[DST_WIDTH-1:0]) ^
                                      (ex1_p0_2_2[DST_WIDTH-1:0]  ^  ex1_p0_2_3[DST_WIDTH-1:0]);

assign ex1_s0_2[DST_WIDTH-1:0]      =  ex1_p0_2_xor[DST_WIDTH-1:0]^ {ex1_p0_2_cout[DST_WIDTH-2:0],1'b0};
assign ex1_c0_2[DST_WIDTH-1:0]      =  ex1_p0_2_xor[DST_WIDTH-1:0]& {ex1_p0_2_cout[DST_WIDTH-2:0],1'b0}|
                                     (~ex1_p0_2_xor[DST_WIDTH-1:0]&  ex1_p0_2_3[DST_WIDTH-1:0]);




assign ex1_p1_0_0[DST_WIDTH-1:0] = ex1_s0_0[DST_WIDTH-1:0];          
assign ex1_p1_0_1[DST_WIDTH-1:0] ={ex1_c0_0[DST_WIDTH-2:0],1'b0};    
assign ex1_p1_0_2[DST_WIDTH-1:0] = ex1_s0_1[DST_WIDTH-1:0];      
assign ex1_p1_0_3[DST_WIDTH-1:0] ={ex1_c0_1[DST_WIDTH-2:0],1'b0};
          
assign ex1_p1_1_0[DST_WIDTH-1:0] = ex1_s0_2[DST_WIDTH-1:0];    
assign ex1_p1_1_1[DST_WIDTH-1:0] ={ex1_c0_2[DST_WIDTH-2:0],1'b0};    
assign ex1_p1_1_2[DST_WIDTH-1:0] = ex1_p0_3_0[DST_WIDTH-1:0];
assign ex1_p1_1_3[DST_WIDTH-1:0] = ex1_p0_3_1[DST_WIDTH-1:0];    


assign ex1_p1_0_cout[DST_WIDTH-1:0] = (ex1_p1_0_0[DST_WIDTH-1:0]  &  ex1_p1_0_1[DST_WIDTH-1:0]) |
                                      (ex1_p1_0_1[DST_WIDTH-1:0]  &  ex1_p1_0_2[DST_WIDTH-1:0]) |
                                      (ex1_p1_0_0[DST_WIDTH-1:0]  &  ex1_p1_0_2[DST_WIDTH-1:0]) ;

assign ex1_p1_0_xor[DST_WIDTH-1:0]  = (ex1_p1_0_0[DST_WIDTH-1:0]  ^  ex1_p1_0_1[DST_WIDTH-1:0]) ^
                                      (ex1_p1_0_2[DST_WIDTH-1:0]  ^  ex1_p1_0_3[DST_WIDTH-1:0]);

assign ex1_s1_0[DST_WIDTH-1:0]      =  ex1_p1_0_xor[DST_WIDTH-1:0]^ {ex1_p1_0_cout[DST_WIDTH-2:0],1'b0};
assign ex1_c1_0[DST_WIDTH-1:0]      =  ex1_p1_0_xor[DST_WIDTH-1:0]& {ex1_p1_0_cout[DST_WIDTH-2:0],1'b0}|
                                     (~ex1_p1_0_xor[DST_WIDTH-1:0]&  ex1_p1_0_3[DST_WIDTH-1:0]);

assign ex1_p1_1_cout[DST_WIDTH-1:0] = (ex1_p1_1_0[DST_WIDTH-1:0]  &  ex1_p1_1_1[DST_WIDTH-1:0]) |
                                      (ex1_p1_1_1[DST_WIDTH-1:0]  &  ex1_p1_1_2[DST_WIDTH-1:0]) |
                                      (ex1_p1_1_0[DST_WIDTH-1:0]  &  ex1_p1_1_2[DST_WIDTH-1:0]) ;

assign ex1_p1_1_xor[DST_WIDTH-1:0]  = (ex1_p1_1_0[DST_WIDTH-1:0]  ^  ex1_p1_1_1[DST_WIDTH-1:0]) ^
                                      (ex1_p1_1_2[DST_WIDTH-1:0]  ^  ex1_p1_1_3[DST_WIDTH-1:0]);

assign ex1_s1_1[DST_WIDTH-1:0]      =  ex1_p1_1_xor[DST_WIDTH-1:0]^ {ex1_p1_1_cout[DST_WIDTH-2:0],1'b0};
assign ex1_c1_1[DST_WIDTH-1:0]      =  ex1_p1_1_xor[DST_WIDTH-1:0]& {ex1_p1_1_cout[DST_WIDTH-2:0],1'b0}|
                                     (~ex1_p1_1_xor[DST_WIDTH-1:0]&  ex1_p1_1_3[DST_WIDTH-1:0]);




assign ex1_p2_0_0[DST_WIDTH  :0] ={ex1_s1_0[DST_WIDTH-1],ex1_s1_0[DST_WIDTH-1:0]};          
assign ex1_p2_0_1[DST_WIDTH  :0] ={ex1_c1_0[DST_WIDTH-1:0],1'b0};    
assign ex1_p2_0_2[DST_WIDTH  :0] ={ex1_s1_1[DST_WIDTH-1],ex1_s1_1[DST_WIDTH-1:0]};      
assign ex1_p2_0_3[DST_WIDTH  :0] ={ex1_c1_1[DST_WIDTH-1:0],1'b0};

assign ex1_p2_0_cout[DST_WIDTH  :0] = (ex1_p2_0_0[DST_WIDTH  :0]  &  ex1_p2_0_1[DST_WIDTH  :0]) |
                                      (ex1_p2_0_1[DST_WIDTH  :0]  &  ex1_p2_0_2[DST_WIDTH  :0]) |
                                      (ex1_p2_0_0[DST_WIDTH  :0]  &  ex1_p2_0_2[DST_WIDTH  :0]) ;

assign ex1_p2_0_xor[DST_WIDTH  :0]  = (ex1_p2_0_0[DST_WIDTH  :0]  ^  ex1_p2_0_1[DST_WIDTH  :0]) ^
                                      (ex1_p2_0_2[DST_WIDTH  :0]  ^  ex1_p2_0_3[DST_WIDTH  :0]);

assign ex1_s2_0[DST_WIDTH  :0]      =  ex1_p2_0_xor[DST_WIDTH  :0]^ {ex1_p2_0_cout[DST_WIDTH-1:0],1'b0};
assign ex1_c2_0[DST_WIDTH  :0]      =  ex1_p2_0_xor[DST_WIDTH  :0]& {ex1_p2_0_cout[DST_WIDTH-1:0],1'b0}|
                                     (~ex1_p2_0_xor[DST_WIDTH  :0]&  ex1_p2_0_3[DST_WIDTH  :0]);


assign out0[DST_WIDTH-1:0] ={ex1_s2_0[DST_WIDTH-1:0]};          
assign out1[DST_WIDTH-1:0] ={ex1_c2_0[DST_WIDTH-2:0],1'b0};


endmodule
module pa_fmau_multiplier_24x24_partial(
  a,
  b,
  out0,
  out1
);



input   [23:0]  a;             
input   [23:0]  b;             
output  [49:0]  out0;          
output  [49:0]  out1;          




wire    [23:0]  a;             
wire    [23:0]  b;             
wire    [26:0]  data_for_code; 
wire    [49:0]  ex1_c0_0;      
wire    [49:0]  ex1_c0_1;      
wire    [49:0]  ex1_c0_2;      
wire    [49:0]  ex1_c1_0;      
wire    [49:0]  ex1_c1_1;      
wire    [50:0]  ex1_c2_0;      
wire    [49:0]  ex1_p0_0_0;    
wire    [49:0]  ex1_p0_0_1;    
wire    [49:0]  ex1_p0_0_2;    
wire    [49:0]  ex1_p0_0_3;    
wire    [49:0]  ex1_p0_0_cout; 
wire    [49:0]  ex1_p0_0_xor;  
wire    [49:0]  ex1_p0_1_0;    
wire    [49:0]  ex1_p0_1_1;    
wire    [49:0]  ex1_p0_1_2;    
wire    [49:0]  ex1_p0_1_3;    
wire    [49:0]  ex1_p0_1_cout; 
wire    [49:0]  ex1_p0_1_xor;  
wire    [49:0]  ex1_p0_2_0;    
wire    [49:0]  ex1_p0_2_1;    
wire    [49:0]  ex1_p0_2_2;    
wire    [49:0]  ex1_p0_2_3;    
wire    [49:0]  ex1_p0_2_cout; 
wire    [49:0]  ex1_p0_2_xor;  
wire    [49:0]  ex1_p0_3_0;    
wire    [49:0]  ex1_p0_3_1;    
wire    [49:0]  ex1_p1_0_0;    
wire    [49:0]  ex1_p1_0_1;    
wire    [49:0]  ex1_p1_0_2;    
wire    [49:0]  ex1_p1_0_3;    
wire    [49:0]  ex1_p1_0_cout; 
wire    [49:0]  ex1_p1_0_xor;  
wire    [49:0]  ex1_p1_1_0;    
wire    [49:0]  ex1_p1_1_1;    
wire    [49:0]  ex1_p1_1_2;    
wire    [49:0]  ex1_p1_1_3;    
wire    [49:0]  ex1_p1_1_cout; 
wire    [49:0]  ex1_p1_1_xor;  
wire    [50:0]  ex1_p2_0_0;    
wire    [50:0]  ex1_p2_0_1;    
wire    [50:0]  ex1_p2_0_2;    
wire    [50:0]  ex1_p2_0_3;    
wire    [50:0]  ex1_p2_0_cout; 
wire    [50:0]  ex1_p2_0_xor;  
wire    [49:0]  ex1_s0_0;      
wire    [49:0]  ex1_s0_1;      
wire    [49:0]  ex1_s0_2;      
wire    [49:0]  ex1_s1_0;      
wire    [49:0]  ex1_s1_1;      
wire    [50:0]  ex1_s2_0;      
wire    [1 :0]  h0;            
wire    [1 :0]  h1;            
wire    [1 :0]  h10;           
wire    [1 :0]  h11;           
wire    [1 :0]  h12;           
wire    [1 :0]  h2;            
wire    [1 :0]  h3;            
wire    [1 :0]  h4;            
wire    [1 :0]  h5;            
wire    [1 :0]  h6;            
wire    [1 :0]  h7;            
wire    [1 :0]  h8;            
wire    [1 :0]  h9;            
wire    [24:0]  mult_src;      
wire    [24:0]  multiplicand;  
wire    [49:0]  out0;          
wire    [49:0]  out1;          
wire    [24:0]  part_product0; 
wire    [24:0]  part_product1; 
wire    [24:0]  part_product10; 
wire    [24:0]  part_product11; 
wire    [24:0]  part_product12; 
wire    [24:0]  part_product2; 
wire    [24:0]  part_product3; 
wire    [24:0]  part_product4; 
wire    [24:0]  part_product5; 
wire    [24:0]  part_product6; 
wire    [24:0]  part_product7; 
wire    [24:0]  part_product8; 
wire    [24:0]  part_product9; 
wire    [12:0]  sign_not;      


parameter SRC0_WIDTH = 25;
parameter SRC1_WIDTH = 25;
parameter DST_WIDTH  = 50;

assign multiplicand[SRC0_WIDTH-1:0] = {1'b0,a[SRC0_WIDTH-2:0]};
assign mult_src[SRC1_WIDTH-1:0]     = {1'b0,b[SRC1_WIDTH-2:0]};

assign data_for_code[SRC1_WIDTH+1:0] = {mult_src[SRC1_WIDTH-1],mult_src[SRC1_WIDTH-1:0],1'b0};



booth_code_25_bit  x_pa_booth_code_25_bit0 (
  .A                   (multiplicand[24:0] ),
  .code                (data_for_code[2:0] ),
  .h                   (h0[1:0]            ),
  .product             (part_product0[24:0]),
  .sn                  (sign_not[0]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit1 (
  .A                   (multiplicand[24:0] ),
  .code                (data_for_code[4:2] ),
  .h                   (h1[1:0]            ),
  .product             (part_product1[24:0]),
  .sn                  (sign_not[1]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit2 (
  .A                   (multiplicand[24:0] ),
  .code                (data_for_code[6:4] ),
  .h                   (h2[1:0]            ),
  .product             (part_product2[24:0]),
  .sn                  (sign_not[2]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit3 (
  .A                   (multiplicand[24:0] ),
  .code                (data_for_code[8:6] ),
  .h                   (h3[1:0]            ),
  .product             (part_product3[24:0]),
  .sn                  (sign_not[3]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit4 (
  .A                   (multiplicand[24:0] ),
  .code                (data_for_code[10:8]),
  .h                   (h4[1:0]            ),
  .product             (part_product4[24:0]),
  .sn                  (sign_not[4]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit5 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[12:10]),
  .h                    (h5[1:0]             ),
  .product              (part_product5[24:0] ),
  .sn                   (sign_not[5]         )
);








booth_code_25_bit  x_pa_booth_code_25_bit6 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[14:12]),
  .h                    (h6[1:0]             ),
  .product              (part_product6[24:0] ),
  .sn                   (sign_not[6]         )
);








booth_code_25_bit  x_pa_booth_code_25_bit7 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[16:14]),
  .h                    (h7[1:0]             ),
  .product              (part_product7[24:0] ),
  .sn                   (sign_not[7]         )
);








booth_code_25_bit  x_pa_booth_code_25_bit8 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[18:16]),
  .h                    (h8[1:0]             ),
  .product              (part_product8[24:0] ),
  .sn                   (sign_not[8]         )
);








booth_code_25_bit  x_pa_booth_code_25_bit9 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[20:18]),
  .h                    (h9[1:0]             ),
  .product              (part_product9[24:0] ),
  .sn                   (sign_not[9]         )
);








booth_code_25_bit  x_pa_booth_code_25_bit10 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[22:20]),
  .h                    (h10[1:0]            ),
  .product              (part_product10[24:0]),
  .sn                   (sign_not[10]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit11 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[24:22]),
  .h                    (h11[1:0]            ),
  .product              (part_product11[24:0]),
  .sn                   (sign_not[11]        )
);








booth_code_25_bit  x_pa_booth_code_25_bit12 (
  .A                    (multiplicand[24:0]  ),
  .code                 (data_for_code[26:24]),
  .h                    (h12[1:0]            ),
  .product              (part_product12[24:0]),
  .sn                   (sign_not[12]        )
);











assign  ex1_p0_0_0[DST_WIDTH-1:0] =  { {22{1'b0}},      sign_not[0],{2{!sign_not[0]}},part_product0[SRC0_WIDTH-1:0]};
assign  ex1_p0_0_1[DST_WIDTH-1:0] =  { {21{1'b0}},1'b1, sign_not[1],                  part_product1[SRC0_WIDTH-1:0], h0[1:0]};
assign  ex1_p0_0_2[DST_WIDTH-1:0] =  { {19{1'b0}},1'b1, sign_not[2],                  part_product2[SRC0_WIDTH-1:0], h1[1:0], { 2{1'b0}} };  
assign  ex1_p0_0_3[DST_WIDTH-1:0] =  { {17{1'b0}},1'b1, sign_not[3],                  part_product3[SRC0_WIDTH-1:0], h2[1:0], { 4{1'b0}} };      

assign  ex1_p0_1_0[DST_WIDTH-1:0] =  { {15{1'b0}},1'b1, sign_not[4],                  part_product4[SRC0_WIDTH-1:0], h3[1:0], { 6{1'b0}} };
assign  ex1_p0_1_1[DST_WIDTH-1:0] =  { {13{1'b0}},1'b1, sign_not[5],                  part_product5[SRC0_WIDTH-1:0], h4[1:0], { 8{1'b0}} }; 
assign  ex1_p0_1_2[DST_WIDTH-1:0] =  { {11{1'b0}},1'b1, sign_not[6],                  part_product6[SRC0_WIDTH-1:0], h5[1:0], {10{1'b0}} };    
assign  ex1_p0_1_3[DST_WIDTH-1:0] =  { { 9{1'b0}},1'b1, sign_not[7],                  part_product7[SRC0_WIDTH-1:0], h6[1:0], {12{1'b0}} };

assign  ex1_p0_2_0[DST_WIDTH-1:0] =  { { 7{1'b0}},1'b1, sign_not[8],                  part_product8[SRC0_WIDTH-1:0], h7[1:0], {14{1'b0}} }; 
assign  ex1_p0_2_1[DST_WIDTH-1:0] =  { { 5{1'b0}},1'b1, sign_not[9],                  part_product9[SRC0_WIDTH-1:0], h8[1:0], {16{1'b0}} };  
assign  ex1_p0_2_2[DST_WIDTH-1:0] =  { { 3{1'b0}},1'b1, sign_not[10],                 part_product10[SRC0_WIDTH-1:0],h9[1:0], {18{1'b0}} };
assign  ex1_p0_2_3[DST_WIDTH-1:0] =  { { 1{1'b0}},1'b1, sign_not[11],                 part_product11[SRC0_WIDTH-1:0],h10[1:0],{20{1'b0}} };

assign  ex1_p0_3_0[DST_WIDTH-1:0] =  {                  sign_not[12],                 part_product12[SRC0_WIDTH-1:0],h11[1:0],{22{1'b0}} }; 
assign  ex1_p0_3_1[DST_WIDTH-1:0] =  { {22{1'b0}},                                                                   h12[1:0],{26{1'b0}} };



assign ex1_p0_0_cout[DST_WIDTH-1:0] = (ex1_p0_0_0[DST_WIDTH-1:0]  &  ex1_p0_0_1[DST_WIDTH-1:0]) |
                                      (ex1_p0_0_1[DST_WIDTH-1:0]  &  ex1_p0_0_2[DST_WIDTH-1:0]) |
                                      (ex1_p0_0_0[DST_WIDTH-1:0]  &  ex1_p0_0_2[DST_WIDTH-1:0]) ;

assign ex1_p0_0_xor[DST_WIDTH-1:0]  = (ex1_p0_0_0[DST_WIDTH-1:0]  ^  ex1_p0_0_1[DST_WIDTH-1:0]) ^
                                      (ex1_p0_0_2[DST_WIDTH-1:0]  ^  ex1_p0_0_3[DST_WIDTH-1:0]);

assign ex1_s0_0[DST_WIDTH-1:0]      =  ex1_p0_0_xor[DST_WIDTH-1:0]^ {ex1_p0_0_cout[DST_WIDTH-2:0],1'b0};
assign ex1_c0_0[DST_WIDTH-1:0]      =  ex1_p0_0_xor[DST_WIDTH-1:0]& {ex1_p0_0_cout[DST_WIDTH-2:0],1'b0}|
                                     (~ex1_p0_0_xor[DST_WIDTH-1:0]&  ex1_p0_0_3[DST_WIDTH-1:0]);


assign ex1_p0_1_cout[DST_WIDTH-1:0] = (ex1_p0_1_0[DST_WIDTH-1:0]  &  ex1_p0_1_1[DST_WIDTH-1:0]) |
                                      (ex1_p0_1_1[DST_WIDTH-1:0]  &  ex1_p0_1_2[DST_WIDTH-1:0]) |
                                      (ex1_p0_1_0[DST_WIDTH-1:0]  &  ex1_p0_1_2[DST_WIDTH-1:0]) ;

assign ex1_p0_1_xor[DST_WIDTH-1:0]  = (ex1_p0_1_0[DST_WIDTH-1:0]  ^  ex1_p0_1_1[DST_WIDTH-1:0]) ^
                                      (ex1_p0_1_2[DST_WIDTH-1:0]  ^  ex1_p0_1_3[DST_WIDTH-1:0]);

assign ex1_s0_1[DST_WIDTH-1:0]      =  ex1_p0_1_xor[DST_WIDTH-1:0]^ {ex1_p0_1_cout[DST_WIDTH-2:0],1'b0};
assign ex1_c0_1[DST_WIDTH-1:0]      =  ex1_p0_1_xor[DST_WIDTH-1:0]& {ex1_p0_1_cout[DST_WIDTH-2:0],1'b0}|
                                     (~ex1_p0_1_xor[DST_WIDTH-1:0]&  ex1_p0_1_3[DST_WIDTH-1:0]);


assign ex1_p0_2_cout[DST_WIDTH-1:0] = (ex1_p0_2_0[DST_WIDTH-1:0]  &  ex1_p0_2_1[DST_WIDTH-1:0]) |
                                      (ex1_p0_2_1[DST_WIDTH-1:0]  &  ex1_p0_2_2[DST_WIDTH-1:0]) |
                                      (ex1_p0_2_0[DST_WIDTH-1:0]  &  ex1_p0_2_2[DST_WIDTH-1:0]) ;

assign ex1_p0_2_xor[DST_WIDTH-1:0]  = (ex1_p0_2_0[DST_WIDTH-1:0]  ^  ex1_p0_2_1[DST_WIDTH-1:0]) ^
                                      (ex1_p0_2_2[DST_WIDTH-1:0]  ^  ex1_p0_2_3[DST_WIDTH-1:0]);

assign ex1_s0_2[DST_WIDTH-1:0]      =  ex1_p0_2_xor[DST_WIDTH-1:0]^ {ex1_p0_2_cout[DST_WIDTH-2:0],1'b0};
assign ex1_c0_2[DST_WIDTH-1:0]      =  ex1_p0_2_xor[DST_WIDTH-1:0]& {ex1_p0_2_cout[DST_WIDTH-2:0],1'b0}|
                                     (~ex1_p0_2_xor[DST_WIDTH-1:0]&  ex1_p0_2_3[DST_WIDTH-1:0]);




assign ex1_p1_0_0[DST_WIDTH-1:0] = ex1_s0_0[DST_WIDTH-1:0];          
assign ex1_p1_0_1[DST_WIDTH-1:0] ={ex1_c0_0[DST_WIDTH-2:0],1'b0};    
assign ex1_p1_0_2[DST_WIDTH-1:0] = ex1_s0_1[DST_WIDTH-1:0];      
assign ex1_p1_0_3[DST_WIDTH-1:0] ={ex1_c0_1[DST_WIDTH-2:0],1'b0};
          
assign ex1_p1_1_0[DST_WIDTH-1:0] = ex1_s0_2[DST_WIDTH-1:0];    
assign ex1_p1_1_1[DST_WIDTH-1:0] ={ex1_c0_2[DST_WIDTH-2:0],1'b0};    
assign ex1_p1_1_2[DST_WIDTH-1:0] = ex1_p0_3_0[DST_WIDTH-1:0];
assign ex1_p1_1_3[DST_WIDTH-1:0] = ex1_p0_3_1[DST_WIDTH-1:0];    


assign ex1_p1_0_cout[DST_WIDTH-1:0] = (ex1_p1_0_0[DST_WIDTH-1:0]  &  ex1_p1_0_1[DST_WIDTH-1:0]) |
                                      (ex1_p1_0_1[DST_WIDTH-1:0]  &  ex1_p1_0_2[DST_WIDTH-1:0]) |
                                      (ex1_p1_0_0[DST_WIDTH-1:0]  &  ex1_p1_0_2[DST_WIDTH-1:0]) ;

assign ex1_p1_0_xor[DST_WIDTH-1:0]  = (ex1_p1_0_0[DST_WIDTH-1:0]  ^  ex1_p1_0_1[DST_WIDTH-1:0]) ^
                                      (ex1_p1_0_2[DST_WIDTH-1:0]  ^  ex1_p1_0_3[DST_WIDTH-1:0]);

assign ex1_s1_0[DST_WIDTH-1:0]      =  ex1_p1_0_xor[DST_WIDTH-1:0]^ {ex1_p1_0_cout[DST_WIDTH-2:0],1'b0};
assign ex1_c1_0[DST_WIDTH-1:0]      =  ex1_p1_0_xor[DST_WIDTH-1:0]& {ex1_p1_0_cout[DST_WIDTH-2:0],1'b0}|
                                     (~ex1_p1_0_xor[DST_WIDTH-1:0]&  ex1_p1_0_3[DST_WIDTH-1:0]);

assign ex1_p1_1_cout[DST_WIDTH-1:0] = (ex1_p1_1_0[DST_WIDTH-1:0]  &  ex1_p1_1_1[DST_WIDTH-1:0]) |
                                      (ex1_p1_1_1[DST_WIDTH-1:0]  &  ex1_p1_1_2[DST_WIDTH-1:0]) |
                                      (ex1_p1_1_0[DST_WIDTH-1:0]  &  ex1_p1_1_2[DST_WIDTH-1:0]) ;

assign ex1_p1_1_xor[DST_WIDTH-1:0]  = (ex1_p1_1_0[DST_WIDTH-1:0]  ^  ex1_p1_1_1[DST_WIDTH-1:0]) ^
                                      (ex1_p1_1_2[DST_WIDTH-1:0]  ^  ex1_p1_1_3[DST_WIDTH-1:0]);

assign ex1_s1_1[DST_WIDTH-1:0]      =  ex1_p1_1_xor[DST_WIDTH-1:0]^ {ex1_p1_1_cout[DST_WIDTH-2:0],1'b0};
assign ex1_c1_1[DST_WIDTH-1:0]      =  ex1_p1_1_xor[DST_WIDTH-1:0]& {ex1_p1_1_cout[DST_WIDTH-2:0],1'b0}|
                                     (~ex1_p1_1_xor[DST_WIDTH-1:0]&  ex1_p1_1_3[DST_WIDTH-1:0]);




assign ex1_p2_0_0[DST_WIDTH  :0] ={ex1_s1_0[DST_WIDTH-1],ex1_s1_0[DST_WIDTH-1:0]};          
assign ex1_p2_0_1[DST_WIDTH  :0] ={ex1_c1_0[DST_WIDTH-1:0],1'b0};    
assign ex1_p2_0_2[DST_WIDTH  :0] ={ex1_s1_1[DST_WIDTH-1],ex1_s1_1[DST_WIDTH-1:0]};      
assign ex1_p2_0_3[DST_WIDTH  :0] ={ex1_c1_1[DST_WIDTH-1:0],1'b0};

assign ex1_p2_0_cout[DST_WIDTH  :0] = (ex1_p2_0_0[DST_WIDTH  :0]  &  ex1_p2_0_1[DST_WIDTH  :0]) |
                                      (ex1_p2_0_1[DST_WIDTH  :0]  &  ex1_p2_0_2[DST_WIDTH  :0]) |
                                      (ex1_p2_0_0[DST_WIDTH  :0]  &  ex1_p2_0_2[DST_WIDTH  :0]) ;

assign ex1_p2_0_xor[DST_WIDTH  :0]  = (ex1_p2_0_0[DST_WIDTH  :0]  ^  ex1_p2_0_1[DST_WIDTH  :0]) ^
                                      (ex1_p2_0_2[DST_WIDTH  :0]  ^  ex1_p2_0_3[DST_WIDTH  :0]);

assign ex1_s2_0[DST_WIDTH  :0]      =  ex1_p2_0_xor[DST_WIDTH  :0]^ {ex1_p2_0_cout[DST_WIDTH-1:0],1'b0};
assign ex1_c2_0[DST_WIDTH  :0]      =  ex1_p2_0_xor[DST_WIDTH  :0]& {ex1_p2_0_cout[DST_WIDTH-1:0],1'b0}|
                                     (~ex1_p2_0_xor[DST_WIDTH  :0]&  ex1_p2_0_3[DST_WIDTH  :0]);


assign out0[DST_WIDTH-1:0] ={ex1_s2_0[DST_WIDTH-1:0]};          
assign out1[DST_WIDTH-1:0] ={ex1_c2_0[DST_WIDTH-2:0],1'b0};


endmodule