// Dadda-tree multiplier generated for N = 8 (final adder: ks).
// Scoring baseline only: correct at this N, NOT a parametric or proved entry.
module mul_n #(parameter int N = 8) (
  input  logic [N-1:0]   a, b,
  output logic [2*N-1:0] p
);
  logic pp1;
  logic pp2;
  logic pp3;
  logic pp4;
  logic pp5;
  logic pp6;
  logic pp7;
  logic pp8;
  logic pp9;
  logic pp10;
  logic pp11;
  logic pp12;
  logic pp13;
  logic pp14;
  logic pp15;
  logic pp16;
  logic pp17;
  logic pp18;
  logic pp19;
  logic pp20;
  logic pp21;
  logic pp22;
  logic pp23;
  logic pp24;
  logic pp25;
  logic pp26;
  logic pp27;
  logic pp28;
  logic pp29;
  logic pp30;
  logic pp31;
  logic pp32;
  logic pp33;
  logic pp34;
  logic pp35;
  logic pp36;
  logic pp37;
  logic pp38;
  logic pp39;
  logic pp40;
  logic pp41;
  logic pp42;
  logic pp43;
  logic pp44;
  logic pp45;
  logic pp46;
  logic pp47;
  logic pp48;
  logic pp49;
  logic pp50;
  logic pp51;
  logic pp52;
  logic pp53;
  logic pp54;
  logic pp55;
  logic pp56;
  logic pp57;
  logic pp58;
  logic pp59;
  logic pp60;
  logic pp61;
  logic pp62;
  logic pp63;
  logic pp64;
  logic s65;
  logic c66;
  logic s67;
  logic c68;
  logic s69;
  logic c70;
  logic s71;
  logic c72;
  logic s73;
  logic c74;
  logic s75;
  logic c76;
  logic s77;
  logic c78;
  logic s79;
  logic c80;
  logic s81;
  logic c82;
  logic s83;
  logic c84;
  logic s85;
  logic c86;
  logic s87;
  logic c88;
  logic s89;
  logic c90;
  logic s91;
  logic c92;
  logic s93;
  logic c94;
  logic s95;
  logic c96;
  logic s97;
  logic c98;
  logic s99;
  logic c100;
  logic s101;
  logic c102;
  logic s103;
  logic c104;
  logic s105;
  logic c106;
  logic s107;
  logic c108;
  logic s109;
  logic c110;
  logic s111;
  logic c112;
  logic s113;
  logic c114;
  logic s115;
  logic c116;
  logic s117;
  logic c118;
  logic s119;
  logic c120;
  logic s121;
  logic c122;
  logic s123;
  logic c124;
  logic s125;
  logic c126;
  logic s127;
  logic c128;
  logic s129;
  logic c130;
  logic s131;
  logic c132;
  logic s133;
  logic c134;
  logic s135;
  logic c136;
  logic s137;
  logic c138;
  logic s139;
  logic c140;
  logic s141;
  logic c142;
  logic s143;
  logic c144;
  logic s145;
  logic c146;
  logic s147;
  logic c148;
  logic g149;
  logic q150;
  logic g151;
  logic q152;
  logic g153;
  logic q154;
  logic g155;
  logic q156;
  logic g157;
  logic q158;
  logic g159;
  logic q160;
  logic g161;
  logic q162;
  logic g163;
  logic q164;
  logic g165;
  logic q166;
  logic g167;
  logic q168;
  logic g169;
  logic q170;
  logic g171;
  logic q172;
  logic g173;
  logic q174;
  logic g175;
  logic q176;
  logic g177;
  logic q178;
  logic g179;
  logic q180;
  logic G181;
  logic P182;
  logic G183;
  logic P184;
  logic G185;
  logic P186;
  logic G187;
  logic P188;
  logic G189;
  logic P190;
  logic G191;
  logic P192;
  logic G193;
  logic P194;
  logic G195;
  logic P196;
  logic G197;
  logic P198;
  logic G199;
  logic P200;
  logic G201;
  logic P202;
  logic G203;
  logic P204;
  logic G205;
  logic P206;
  logic G207;
  logic P208;
  logic G209;
  logic P210;
  logic G211;
  logic P212;
  logic G213;
  logic P214;
  logic G215;
  logic P216;
  logic G217;
  logic P218;
  logic G219;
  logic P220;
  logic G221;
  logic P222;
  logic G223;
  logic P224;
  logic G225;
  logic P226;
  logic G227;
  logic P228;
  logic G229;
  logic P230;
  logic G231;
  logic P232;
  logic G233;
  logic P234;
  logic G235;
  logic P236;
  logic G237;
  logic P238;
  logic G239;
  logic P240;
  logic G241;
  logic P242;
  logic G243;
  logic P244;
  logic G245;
  logic P246;
  logic G247;
  logic P248;
  logic G249;
  logic P250;
  logic G251;
  logic P252;
  logic G253;
  logic P254;
  logic G255;
  logic P256;
  logic G257;
  logic P258;
  logic G259;
  logic P260;
  logic G261;
  logic P262;
  logic G263;
  logic P264;
  logic G265;
  logic P266;
  logic G267;
  logic P268;
  logic G269;
  logic P270;
  logic G271;
  logic P272;
  logic G273;
  logic P274;
  logic G275;
  logic P276;
  logic G277;
  logic P278;
  assign pp1 = a[0] & b[0];
  assign pp2 = a[1] & b[0];
  assign pp3 = a[2] & b[0];
  assign pp4 = a[3] & b[0];
  assign pp5 = a[4] & b[0];
  assign pp6 = a[5] & b[0];
  assign pp7 = a[6] & b[0];
  assign pp8 = a[7] & b[0];
  assign pp9 = a[0] & b[1];
  assign pp10 = a[1] & b[1];
  assign pp11 = a[2] & b[1];
  assign pp12 = a[3] & b[1];
  assign pp13 = a[4] & b[1];
  assign pp14 = a[5] & b[1];
  assign pp15 = a[6] & b[1];
  assign pp16 = a[7] & b[1];
  assign pp17 = a[0] & b[2];
  assign pp18 = a[1] & b[2];
  assign pp19 = a[2] & b[2];
  assign pp20 = a[3] & b[2];
  assign pp21 = a[4] & b[2];
  assign pp22 = a[5] & b[2];
  assign pp23 = a[6] & b[2];
  assign pp24 = a[7] & b[2];
  assign pp25 = a[0] & b[3];
  assign pp26 = a[1] & b[3];
  assign pp27 = a[2] & b[3];
  assign pp28 = a[3] & b[3];
  assign pp29 = a[4] & b[3];
  assign pp30 = a[5] & b[3];
  assign pp31 = a[6] & b[3];
  assign pp32 = a[7] & b[3];
  assign pp33 = a[0] & b[4];
  assign pp34 = a[1] & b[4];
  assign pp35 = a[2] & b[4];
  assign pp36 = a[3] & b[4];
  assign pp37 = a[4] & b[4];
  assign pp38 = a[5] & b[4];
  assign pp39 = a[6] & b[4];
  assign pp40 = a[7] & b[4];
  assign pp41 = a[0] & b[5];
  assign pp42 = a[1] & b[5];
  assign pp43 = a[2] & b[5];
  assign pp44 = a[3] & b[5];
  assign pp45 = a[4] & b[5];
  assign pp46 = a[5] & b[5];
  assign pp47 = a[6] & b[5];
  assign pp48 = a[7] & b[5];
  assign pp49 = a[0] & b[6];
  assign pp50 = a[1] & b[6];
  assign pp51 = a[2] & b[6];
  assign pp52 = a[3] & b[6];
  assign pp53 = a[4] & b[6];
  assign pp54 = a[5] & b[6];
  assign pp55 = a[6] & b[6];
  assign pp56 = a[7] & b[6];
  assign pp57 = a[0] & b[7];
  assign pp58 = a[1] & b[7];
  assign pp59 = a[2] & b[7];
  assign pp60 = a[3] & b[7];
  assign pp61 = a[4] & b[7];
  assign pp62 = a[5] & b[7];
  assign pp63 = a[6] & b[7];
  assign pp64 = a[7] & b[7];
  assign s65 = pp7 ^ pp14;
  assign c66 = pp7 & pp14;
  assign s67 = pp8 ^ pp15 ^ pp22;
  assign c68 = (pp8 & pp15) | (pp22 & (pp8 ^ pp15));
  assign s69 = pp29 ^ pp36;
  assign c70 = pp29 & pp36;
  assign s71 = pp16 ^ pp23 ^ pp30;
  assign c72 = (pp16 & pp23) | (pp30 & (pp16 ^ pp23));
  assign s73 = pp37 ^ pp44;
  assign c74 = pp37 & pp44;
  assign s75 = pp24 ^ pp31 ^ pp38;
  assign c76 = (pp24 & pp31) | (pp38 & (pp24 ^ pp31));
  assign s77 = pp5 ^ pp12;
  assign c78 = pp5 & pp12;
  assign s79 = pp6 ^ pp13 ^ pp20;
  assign c80 = (pp6 & pp13) | (pp20 & (pp6 ^ pp13));
  assign s81 = pp27 ^ pp34;
  assign c82 = pp27 & pp34;
  assign s83 = s65 ^ pp21 ^ pp28;
  assign c84 = (s65 & pp21) | (pp28 & (s65 ^ pp21));
  assign s85 = pp35 ^ pp42 ^ pp49;
  assign c86 = (pp35 & pp42) | (pp49 & (pp35 ^ pp42));
  assign s87 = c66 ^ s67 ^ s69;
  assign c88 = (c66 & s67) | (s69 & (c66 ^ s67));
  assign s89 = pp43 ^ pp50 ^ pp57;
  assign c90 = (pp43 & pp50) | (pp57 & (pp43 ^ pp50));
  assign s91 = c68 ^ c70 ^ s71;
  assign c92 = (c68 & c70) | (s71 & (c68 ^ c70));
  assign s93 = s73 ^ pp51 ^ pp58;
  assign c94 = (s73 & pp51) | (pp58 & (s73 ^ pp51));
  assign s95 = c72 ^ c74 ^ s75;
  assign c96 = (c72 & c74) | (s75 & (c72 ^ c74));
  assign s97 = pp45 ^ pp52 ^ pp59;
  assign c98 = (pp45 & pp52) | (pp59 & (pp45 ^ pp52));
  assign s99 = c76 ^ pp32 ^ pp39;
  assign c100 = (c76 & pp32) | (pp39 & (c76 ^ pp32));
  assign s101 = pp46 ^ pp53 ^ pp60;
  assign c102 = (pp46 & pp53) | (pp60 & (pp46 ^ pp53));
  assign s103 = pp40 ^ pp47 ^ pp54;
  assign c104 = (pp40 & pp47) | (pp54 & (pp40 ^ pp47));
  assign s105 = pp4 ^ pp11;
  assign c106 = pp4 & pp11;
  assign s107 = s77 ^ pp19 ^ pp26;
  assign c108 = (s77 & pp19) | (pp26 & (s77 ^ pp19));
  assign s109 = c78 ^ s79 ^ s81;
  assign c110 = (c78 & s79) | (s81 & (c78 ^ s79));
  assign s111 = c80 ^ c82 ^ s83;
  assign c112 = (c80 & c82) | (s83 & (c80 ^ c82));
  assign s113 = c84 ^ c86 ^ s87;
  assign c114 = (c84 & c86) | (s87 & (c84 ^ c86));
  assign s115 = c88 ^ c90 ^ s91;
  assign c116 = (c88 & c90) | (s91 & (c88 ^ c90));
  assign s117 = c92 ^ c94 ^ s95;
  assign c118 = (c92 & c94) | (s95 & (c92 ^ c94));
  assign s119 = c96 ^ c98 ^ s99;
  assign c120 = (c96 & c98) | (s99 & (c96 ^ c98));
  assign s121 = c100 ^ c102 ^ s103;
  assign c122 = (c100 & c102) | (s103 & (c100 ^ c102));
  assign s123 = c104 ^ pp48 ^ pp55;
  assign c124 = (c104 & pp48) | (pp55 & (c104 ^ pp48));
  assign s125 = pp3 ^ pp10;
  assign c126 = pp3 & pp10;
  assign s127 = s105 ^ pp18 ^ pp25;
  assign c128 = (s105 & pp18) | (pp25 & (s105 ^ pp18));
  assign s129 = c106 ^ s107 ^ pp33;
  assign c130 = (c106 & s107) | (pp33 & (c106 ^ s107));
  assign s131 = c108 ^ s109 ^ pp41;
  assign c132 = (c108 & s109) | (pp41 & (c108 ^ s109));
  assign s133 = c110 ^ s111 ^ s85;
  assign c134 = (c110 & s111) | (s85 & (c110 ^ s111));
  assign s135 = c112 ^ s113 ^ s89;
  assign c136 = (c112 & s113) | (s89 & (c112 ^ s113));
  assign s137 = c114 ^ s115 ^ s93;
  assign c138 = (c114 & s115) | (s93 & (c114 ^ s115));
  assign s139 = c116 ^ s117 ^ s97;
  assign c140 = (c116 & s117) | (s97 & (c116 ^ s117));
  assign s141 = c118 ^ s119 ^ s101;
  assign c142 = (c118 & s119) | (s101 & (c118 ^ s119));
  assign s143 = c120 ^ s121 ^ pp61;
  assign c144 = (c120 & s121) | (pp61 & (c120 ^ s121));
  assign s145 = c122 ^ s123 ^ pp62;
  assign c146 = (c122 & s123) | (pp62 & (c122 ^ s123));
  assign s147 = c124 ^ pp56 ^ pp63;
  assign c148 = (c124 & pp56) | (pp63 & (c124 ^ pp56));
  assign g149 = pp1 & 1'b0;
  assign q150 = pp1 ^ 1'b0;
  assign g151 = pp2 & pp9;
  assign q152 = pp2 ^ pp9;
  assign g153 = s125 & pp17;
  assign q154 = s125 ^ pp17;
  assign g155 = c126 & s127;
  assign q156 = c126 ^ s127;
  assign g157 = c128 & s129;
  assign q158 = c128 ^ s129;
  assign g159 = c130 & s131;
  assign q160 = c130 ^ s131;
  assign g161 = c132 & s133;
  assign q162 = c132 ^ s133;
  assign g163 = c134 & s135;
  assign q164 = c134 ^ s135;
  assign g165 = c136 & s137;
  assign q166 = c136 ^ s137;
  assign g167 = c138 & s139;
  assign q168 = c138 ^ s139;
  assign g169 = c140 & s141;
  assign q170 = c140 ^ s141;
  assign g171 = c142 & s143;
  assign q172 = c142 ^ s143;
  assign g173 = c144 & s145;
  assign q174 = c144 ^ s145;
  assign g175 = c146 & s147;
  assign q176 = c146 ^ s147;
  assign g177 = c148 & pp64;
  assign q178 = c148 ^ pp64;
  assign g179 = 1'b0 & 1'b0;
  assign q180 = 1'b0 ^ 1'b0;
  assign G181 = g151 | (q152 & g149);
  assign P182 = q152 & q150;
  assign G183 = g153 | (q154 & g151);
  assign P184 = q154 & q152;
  assign G185 = g155 | (q156 & g153);
  assign P186 = q156 & q154;
  assign G187 = g157 | (q158 & g155);
  assign P188 = q158 & q156;
  assign G189 = g159 | (q160 & g157);
  assign P190 = q160 & q158;
  assign G191 = g161 | (q162 & g159);
  assign P192 = q162 & q160;
  assign G193 = g163 | (q164 & g161);
  assign P194 = q164 & q162;
  assign G195 = g165 | (q166 & g163);
  assign P196 = q166 & q164;
  assign G197 = g167 | (q168 & g165);
  assign P198 = q168 & q166;
  assign G199 = g169 | (q170 & g167);
  assign P200 = q170 & q168;
  assign G201 = g171 | (q172 & g169);
  assign P202 = q172 & q170;
  assign G203 = g173 | (q174 & g171);
  assign P204 = q174 & q172;
  assign G205 = g175 | (q176 & g173);
  assign P206 = q176 & q174;
  assign G207 = g177 | (q178 & g175);
  assign P208 = q178 & q176;
  assign G209 = g179 | (q180 & g177);
  assign P210 = q180 & q178;
  assign G211 = G183 | (P184 & g149);
  assign P212 = P184 & q150;
  assign G213 = G185 | (P186 & G181);
  assign P214 = P186 & P182;
  assign G215 = G187 | (P188 & G183);
  assign P216 = P188 & P184;
  assign G217 = G189 | (P190 & G185);
  assign P218 = P190 & P186;
  assign G219 = G191 | (P192 & G187);
  assign P220 = P192 & P188;
  assign G221 = G193 | (P194 & G189);
  assign P222 = P194 & P190;
  assign G223 = G195 | (P196 & G191);
  assign P224 = P196 & P192;
  assign G225 = G197 | (P198 & G193);
  assign P226 = P198 & P194;
  assign G227 = G199 | (P200 & G195);
  assign P228 = P200 & P196;
  assign G229 = G201 | (P202 & G197);
  assign P230 = P202 & P198;
  assign G231 = G203 | (P204 & G199);
  assign P232 = P204 & P200;
  assign G233 = G205 | (P206 & G201);
  assign P234 = P206 & P202;
  assign G235 = G207 | (P208 & G203);
  assign P236 = P208 & P204;
  assign G237 = G209 | (P210 & G205);
  assign P238 = P210 & P206;
  assign G239 = G215 | (P216 & g149);
  assign P240 = P216 & q150;
  assign G241 = G217 | (P218 & G181);
  assign P242 = P218 & P182;
  assign G243 = G219 | (P220 & G211);
  assign P244 = P220 & P212;
  assign G245 = G221 | (P222 & G213);
  assign P246 = P222 & P214;
  assign G247 = G223 | (P224 & G215);
  assign P248 = P224 & P216;
  assign G249 = G225 | (P226 & G217);
  assign P250 = P226 & P218;
  assign G251 = G227 | (P228 & G219);
  assign P252 = P228 & P220;
  assign G253 = G229 | (P230 & G221);
  assign P254 = P230 & P222;
  assign G255 = G231 | (P232 & G223);
  assign P256 = P232 & P224;
  assign G257 = G233 | (P234 & G225);
  assign P258 = P234 & P226;
  assign G259 = G235 | (P236 & G227);
  assign P260 = P236 & P228;
  assign G261 = G237 | (P238 & G229);
  assign P262 = P238 & P230;
  assign G263 = G247 | (P248 & g149);
  assign P264 = P248 & q150;
  assign G265 = G249 | (P250 & G181);
  assign P266 = P250 & P182;
  assign G267 = G251 | (P252 & G211);
  assign P268 = P252 & P212;
  assign G269 = G253 | (P254 & G213);
  assign P270 = P254 & P214;
  assign G271 = G255 | (P256 & G239);
  assign P272 = P256 & P240;
  assign G273 = G257 | (P258 & G241);
  assign P274 = P258 & P242;
  assign G275 = G259 | (P260 & G243);
  assign P276 = P260 & P244;
  assign G277 = G261 | (P262 & G245);
  assign P278 = P262 & P246;
  assign p[0] = q150 ^ 1'b0;
  assign p[1] = q152 ^ g149;
  assign p[2] = q154 ^ G181;
  assign p[3] = q156 ^ G211;
  assign p[4] = q158 ^ G213;
  assign p[5] = q160 ^ G239;
  assign p[6] = q162 ^ G241;
  assign p[7] = q164 ^ G243;
  assign p[8] = q166 ^ G245;
  assign p[9] = q168 ^ G263;
  assign p[10] = q170 ^ G265;
  assign p[11] = q172 ^ G267;
  assign p[12] = q174 ^ G269;
  assign p[13] = q176 ^ G271;
  assign p[14] = q178 ^ G273;
  assign p[15] = q180 ^ G275;
endmodule
