blob: e7e7ea0f40cd5f5e64a8685ce16fcabe4e4ae8a8 [file] [log] [blame]
module ibex_poly16_mul (
a,
b,
r
);
input wire [15:0] a;
input wire [15:0] b;
output wire [31:0] r;
wire t1;
wire t2;
wire t3;
wire t4;
wire t5;
wire t6;
wire t7;
wire t8;
wire t9;
wire t10;
wire t11;
wire t12;
wire t13;
wire t14;
wire t15;
wire t16;
wire t17;
wire t18;
wire t19;
wire t20;
wire t21;
wire t22;
wire t23;
wire t24;
wire t25;
wire t26;
wire t27;
wire t28;
wire t29;
wire t30;
wire t31;
wire t32;
wire t33;
wire t34;
wire t35;
wire t36;
wire t37;
wire t38;
wire t39;
wire t40;
wire t41;
wire t42;
wire t43;
wire t44;
wire t45;
wire t46;
wire t47;
wire t48;
wire t49;
wire t50;
wire t51;
wire t52;
wire t53;
wire t54;
wire t55;
wire t56;
wire t57;
wire t58;
wire t59;
wire t60;
wire t61;
wire t62;
wire t63;
wire t64;
wire t65;
wire t66;
wire t67;
wire t68;
wire t69;
wire t70;
wire t71;
wire t72;
wire t73;
wire t74;
wire t75;
wire t76;
wire t77;
wire t78;
wire t79;
wire t80;
wire t81;
wire t82;
wire t83;
wire t84;
wire t85;
wire t86;
wire t87;
wire t88;
wire t89;
wire t90;
wire t91;
wire t92;
wire t93;
wire t94;
wire t95;
wire t96;
wire t97;
wire t98;
wire t99;
wire t100;
wire t101;
wire t102;
wire t103;
wire t104;
wire t105;
wire t106;
wire t107;
wire t108;
wire t109;
wire t110;
wire t111;
wire t112;
wire t113;
wire t114;
wire t115;
wire t116;
wire t117;
wire t118;
wire t119;
wire t120;
wire t121;
wire t122;
wire t123;
wire t124;
wire t125;
wire t126;
wire t127;
wire t128;
wire t129;
wire t130;
wire t131;
wire t132;
wire t133;
wire t134;
wire t135;
wire t136;
wire t137;
wire t138;
wire t139;
wire t140;
wire t141;
wire t142;
wire t143;
wire t144;
wire t145;
wire t146;
wire t147;
wire t148;
wire t149;
wire t150;
wire t151;
wire t152;
wire t153;
wire t154;
wire t155;
wire t156;
wire t157;
wire t158;
wire t159;
wire t160;
wire t161;
wire t162;
wire t163;
wire t164;
wire t165;
wire t166;
wire t167;
wire t168;
wire t169;
wire t170;
wire t171;
wire t172;
wire t173;
wire t174;
wire t175;
wire t176;
wire t177;
wire t178;
wire t179;
wire t180;
wire t181;
wire t182;
wire t183;
wire t184;
wire t185;
wire t186;
wire t187;
wire t188;
wire t189;
wire t190;
wire t191;
wire t192;
wire t193;
wire t194;
wire t195;
wire t196;
wire t197;
wire t198;
wire t199;
wire t200;
wire t201;
wire t202;
wire t203;
wire t204;
wire t205;
wire t206;
wire t207;
wire t208;
wire t209;
wire t210;
wire t211;
wire t212;
wire t213;
wire t214;
wire t215;
wire t216;
wire t217;
wire t218;
wire t219;
wire t220;
wire t221;
wire t222;
wire t223;
wire t224;
wire t225;
wire t226;
wire t227;
wire t228;
wire t229;
wire t230;
wire t231;
wire t232;
wire t233;
wire t234;
wire t235;
wire t236;
wire t237;
wire t238;
wire t239;
wire t240;
wire t241;
wire t242;
wire t243;
wire t244;
wire t245;
wire t246;
wire t247;
wire t248;
wire t249;
wire t250;
wire t251;
wire t252;
wire t253;
wire t254;
wire t255;
wire t256;
wire t257;
wire t258;
wire t259;
wire t260;
wire t261;
wire t262;
wire t263;
wire t264;
wire t265;
wire t266;
wire t267;
wire t268;
wire t269;
wire t270;
wire t271;
wire t272;
wire t273;
wire t274;
wire t275;
wire t276;
wire t277;
wire t278;
wire t279;
wire t280;
wire t281;
wire t282;
wire t283;
wire t284;
wire t285;
wire t286;
wire t287;
wire t288;
wire t289;
wire t290;
wire t291;
wire t292;
wire t293;
wire t294;
wire t295;
wire t296;
wire t297;
wire t298;
wire t299;
wire t300;
wire t301;
wire t302;
wire t303;
wire t304;
wire t305;
wire t306;
wire t307;
wire t308;
wire t309;
wire t310;
wire t311;
wire t312;
wire t313;
wire t314;
wire t315;
wire t316;
wire t317;
wire t318;
wire z0;
wire z1;
wire z2;
wire z3;
wire z4;
wire z5;
wire z6;
wire z7;
wire z8;
wire z9;
wire z10;
wire z11;
wire z12;
wire z13;
wire z14;
wire z15;
wire z16;
wire z17;
wire z18;
wire z19;
wire z20;
wire z21;
wire z22;
wire z23;
wire z24;
wire z25;
wire z26;
wire z27;
wire z28;
wire z29;
wire z30;
assign z30 = a[15] & b[15];
assign t1 = a[15] & b[12];
assign t2 = a[15] & b[13];
assign t3 = a[15] & b[14];
assign t4 = a[12] & b[15];
assign t5 = a[13] & b[15];
assign t6 = a[14] & b[15];
assign t7 = a[14] & b[14];
assign t8 = a[14] & b[12];
assign t9 = a[14] & b[13];
assign t10 = a[12] & b[14];
assign t11 = a[13] & b[14];
assign t12 = a[13] & b[13];
assign t13 = a[13] & b[12];
assign t14 = a[12] & b[13];
assign t15 = a[12] & b[12];
assign t16 = a[11] & b[11];
assign t17 = a[11] & b[8];
assign t18 = a[11] & b[9];
assign t19 = a[11] & b[10];
assign t20 = a[8] & b[11];
assign t21 = a[9] & b[11];
assign t22 = a[10] & b[11];
assign t23 = a[10] & b[10];
assign t24 = a[10] & b[8];
assign t25 = a[10] & b[9];
assign t26 = a[8] & b[10];
assign t27 = a[9] & b[10];
assign t28 = a[9] & b[9];
assign t29 = a[9] & b[8];
assign t30 = a[8] & b[9];
assign t31 = a[8] & b[8];
assign t32 = a[7] & b[7];
assign t33 = a[7] & b[4];
assign t34 = a[7] & b[5];
assign t35 = a[7] & b[6];
assign t36 = a[4] & b[7];
assign t37 = a[5] & b[7];
assign t38 = a[6] & b[7];
assign t39 = a[6] & b[6];
assign t40 = a[6] & b[4];
assign t41 = a[6] & b[5];
assign t42 = a[4] & b[6];
assign t43 = a[5] & b[6];
assign t44 = a[5] & b[5];
assign t45 = a[5] & b[4];
assign t46 = a[4] & b[5];
assign t47 = a[4] & b[4];
assign t48 = a[3] & b[3];
assign t49 = a[3] & b[0];
assign t50 = a[3] & b[1];
assign t51 = a[3] & b[2];
assign t52 = a[0] & b[3];
assign t53 = a[1] & b[3];
assign t54 = a[2] & b[3];
assign t55 = a[2] & b[2];
assign t56 = a[2] & b[0];
assign t57 = a[2] & b[1];
assign t58 = a[0] & b[2];
assign t59 = a[1] & b[2];
assign t60 = a[1] & b[1];
assign t61 = a[1] & b[0];
assign t62 = a[0] & b[1];
assign z0 = a[0] & b[0];
assign t63 = b[8] ^ b[12];
assign t64 = b[9] ^ b[13];
assign t65 = b[10] ^ b[14];
assign t66 = b[11] ^ b[15];
assign t67 = a[8] ^ a[12];
assign t68 = a[9] ^ a[13];
assign t69 = a[10] ^ a[14];
assign t70 = a[11] ^ a[15];
assign t71 = t70 & t66;
assign t72 = t70 & t63;
assign t73 = t70 & t64;
assign t74 = t70 & t65;
assign t75 = t67 & t66;
assign t76 = t68 & t66;
assign t77 = t69 & t66;
assign t78 = t69 & t65;
assign t79 = t69 & t63;
assign t80 = t69 & t64;
assign t81 = t67 & t65;
assign t82 = t68 & t65;
assign t83 = t68 & t64;
assign t84 = t68 & t63;
assign t85 = t67 & t64;
assign t86 = t67 & t63;
assign t87 = b[0] ^ b[4];
assign t88 = b[1] ^ b[5];
assign t89 = b[2] ^ b[6];
assign t90 = b[3] ^ b[7];
assign t91 = a[0] ^ a[4];
assign t92 = a[1] ^ a[5];
assign t93 = a[2] ^ a[6];
assign t94 = a[3] ^ a[7];
assign t95 = t94 & t90;
assign t96 = t94 & t87;
assign t97 = t94 & t88;
assign t98 = t94 & t89;
assign t99 = t91 & t90;
assign t100 = t92 & t90;
assign t101 = t93 & t90;
assign t102 = t93 & t89;
assign t103 = t93 & t87;
assign t104 = t93 & t88;
assign t105 = t91 & t89;
assign t106 = t92 & t89;
assign t107 = t92 & t88;
assign t108 = t92 & t87;
assign t109 = t91 & t88;
assign t110 = t91 & t87;
assign t111 = b[4] ^ b[12];
assign t112 = b[5] ^ b[13];
assign t113 = b[6] ^ b[14];
assign t114 = b[7] ^ b[15];
assign t115 = b[0] ^ b[8];
assign t116 = b[1] ^ b[9];
assign t117 = b[2] ^ b[10];
assign t118 = b[3] ^ b[11];
assign t119 = a[4] ^ a[12];
assign t120 = a[5] ^ a[13];
assign t121 = a[6] ^ a[14];
assign t122 = a[7] ^ a[15];
assign t123 = a[0] ^ a[8];
assign t124 = a[1] ^ a[9];
assign t125 = a[2] ^ a[10];
assign t126 = a[3] ^ a[11];
assign t127 = t126 & t118;
assign t128 = t126 & t115;
assign t129 = t126 & t116;
assign t130 = t126 & t117;
assign t131 = t123 & t118;
assign t132 = t124 & t118;
assign t133 = t125 & t118;
assign t134 = t125 & t117;
assign t135 = t125 & t115;
assign t136 = t125 & t116;
assign t137 = t123 & t117;
assign t138 = t124 & t117;
assign t139 = t124 & t116;
assign t140 = t124 & t115;
assign t141 = t123 & t116;
assign t142 = t123 & t115;
assign t143 = t122 & t114;
assign t144 = t122 & t111;
assign t145 = t122 & t112;
assign t146 = t122 & t113;
assign t147 = t119 & t114;
assign t148 = t120 & t114;
assign t149 = t121 & t114;
assign t150 = t121 & t113;
assign t151 = t121 & t111;
assign t152 = t121 & t112;
assign t153 = t119 & t113;
assign t154 = t120 & t113;
assign t155 = t120 & t112;
assign t156 = t120 & t111;
assign t157 = t119 & t112;
assign t158 = t119 & t111;
assign t159 = t115 ^ t111;
assign t160 = t116 ^ t112;
assign t161 = t117 ^ t113;
assign t162 = t118 ^ t114;
assign t163 = t123 ^ t119;
assign t164 = t124 ^ t120;
assign t165 = t125 ^ t121;
assign t166 = t126 ^ t122;
assign t167 = t166 & t162;
assign t168 = t166 & t159;
assign t169 = t166 & t160;
assign t170 = t166 & t161;
assign t171 = t163 & t162;
assign t172 = t164 & t162;
assign t173 = t165 & t162;
assign t174 = t165 & t161;
assign t175 = t165 & t159;
assign t176 = t165 & t160;
assign t177 = t163 & t161;
assign t178 = t164 & t161;
assign t179 = t164 & t160;
assign t180 = t164 & t159;
assign t181 = t163 & t160;
assign t182 = t163 & t159;
assign t183 = t73 ^ t76;
assign t184 = t97 ^ t100;
assign t185 = t15 ^ t18;
assign t186 = t129 ^ t132;
assign t187 = t134 ^ t158;
assign t188 = t145 ^ t148;
assign t189 = t169 ^ t172;
assign t190 = t2 ^ t5;
assign t191 = t21 ^ t23;
assign t192 = t31 ^ t34;
assign t193 = t37 ^ t39;
assign t194 = t47 ^ t50;
assign t195 = t53 ^ t55;
assign t196 = t183 ^ t78;
assign t197 = t192 ^ t193;
assign t198 = t194 ^ t195;
assign t199 = t184 ^ t102;
assign t200 = t185 ^ t191;
assign t201 = t186 ^ t187;
assign t202 = t188 ^ t150;
assign t203 = t189 ^ t174;
assign z28 = t190 ^ t7;
assign t204 = t198 ^ z0;
assign z4 = t110 ^ t204;
assign t205 = t200 ^ z28;
assign z24 = t196 ^ t205;
assign t206 = t197 ^ t199;
assign t207 = t197 ^ t86;
assign t208 = t202 ^ t205;
assign z20 = t207 ^ t208;
assign t209 = t142 ^ t204;
assign z8 = t206 ^ t209;
assign t210 = t196 ^ t198;
assign t211 = t201 ^ t206;
assign t212 = t208 ^ t210;
assign t213 = t211 ^ t212;
assign t214 = t200 ^ t201;
assign t215 = t110 ^ t182;
assign t216 = t209 ^ t214;
assign t217 = t215 ^ t207;
assign z12 = t217 ^ t216;
assign z16 = t213 ^ t203;
assign t218 = t74 ^ t77;
assign t219 = t84 ^ t85;
assign t220 = t13 ^ t14;
assign t221 = t98 ^ t101;
assign t222 = t108 ^ t109;
assign t223 = t130 ^ t133;
assign t224 = t140 ^ t141;
assign t225 = t146 ^ t149;
assign t226 = t156 ^ t157;
assign t227 = t170 ^ t173;
assign t228 = t19 ^ t22;
assign t229 = t180 ^ t181;
assign t230 = t29 ^ t30;
assign z29 = t3 ^ t6;
assign t231 = t35 ^ t38;
assign t232 = t45 ^ t46;
assign t233 = t51 ^ t54;
assign z1 = t61 ^ t62;
assign t234 = t228 ^ t220;
assign t235 = t230 ^ t231;
assign t236 = t232 ^ t233;
assign t237 = t223 ^ t226;
assign t238 = z29 ^ t234;
assign z25 = t218 ^ t238;
assign t239 = z1 ^ t236;
assign z5 = t222 ^ t239;
assign t240 = t219 ^ t235;
assign t241 = t235 ^ t221;
assign t242 = t224 ^ t239;
assign z9 = t241 ^ t242;
assign t243 = t225 ^ t238;
assign z21 = t240 ^ t243;
assign t244 = t218 ^ t236;
assign t245 = t237 ^ t241;
assign t246 = t243 ^ t244;
assign t247 = t245 ^ t227;
assign t248 = t234 ^ t237;
assign t249 = t222 ^ t240;
assign t250 = t242 ^ t248;
assign t251 = t249 ^ t229;
assign z17 = t247 ^ t246;
assign z13 = t251 ^ t250;
assign t252 = t10 ^ t12;
assign t253 = t79 ^ t81;
assign t254 = t103 ^ t105;
assign t255 = t127 ^ t151;
assign t256 = t135 ^ t137;
assign t257 = t153 ^ t155;
assign t258 = t16 ^ t8;
assign t259 = t175 ^ t177;
assign t260 = t24 ^ t26;
assign t261 = t28 ^ t32;
assign t262 = t40 ^ t42;
assign t263 = t44 ^ t48;
assign t264 = t56 ^ t58;
assign t265 = t252 ^ t258;
assign t266 = t261 ^ t260;
assign t267 = t262 ^ t263;
assign z2 = t264 ^ t60;
assign t268 = t253 ^ t83;
assign t269 = t254 ^ t107;
assign t270 = t255 ^ t257;
assign t271 = t256 ^ t139;
assign t272 = t259 ^ t179;
assign t273 = t265 ^ z30;
assign z26 = t71 ^ t273;
assign t274 = t267 ^ z2;
assign z6 = t269 ^ t274;
assign t275 = t266 ^ t268;
assign t276 = t266 ^ t95;
assign t277 = t271 ^ t274;
assign z10 = t276 ^ t277;
assign t278 = t143 ^ t273;
assign z22 = t275 ^ t278;
assign t279 = t265 ^ t269;
assign t280 = t270 ^ t275;
assign t281 = t277 ^ t279;
assign t282 = t280 ^ t281;
assign t283 = t267 ^ t270;
assign t284 = t71 ^ t167;
assign t285 = t278 ^ t283;
assign t286 = t284 ^ t276;
assign z14 = t282 ^ t272;
assign z18 = t286 ^ t285;
assign t287 = t9 ^ t11;
assign t288 = t72 ^ t75;
assign t289 = t80 ^ t82;
assign t290 = t96 ^ t99;
assign t291 = t104 ^ t106;
assign t292 = t1 ^ t4;
assign t293 = t128 ^ t131;
assign t294 = t136 ^ t138;
assign t295 = t144 ^ t147;
assign t296 = t152 ^ t154;
assign t297 = t17 ^ t20;
assign t298 = t168 ^ t171;
assign t299 = t176 ^ t178;
assign t300 = t25 ^ t27;
assign t301 = t33 ^ t36;
assign t302 = t41 ^ t43;
assign t303 = t49 ^ t52;
assign t304 = t57 ^ t59;
assign z27 = t287 ^ t292;
assign t305 = t296 ^ t295;
assign t306 = t297 ^ t300;
assign t307 = t298 ^ t299;
assign t308 = t301 ^ t302;
assign z3 = t303 ^ t304;
assign t309 = t288 ^ t289;
assign t310 = t290 ^ t291;
assign t311 = t293 ^ t294;
assign t312 = z27 ^ t306;
assign z23 = t309 ^ t312;
assign t313 = t308 ^ z3;
assign z7 = t310 ^ t313;
assign t314 = t305 ^ t308;
assign z19 = t312 ^ t314;
assign t315 = t306 ^ t311;
assign z11 = t313 ^ t315;
assign t316 = t305 ^ t311;
assign t317 = z23 ^ z7;
assign t318 = t316 ^ t307;
assign z15 = t318 ^ t317;
assign r = {1'b0, z30, z29, z28, z27, z26, z25, z24, z23, z22, z21, z20, z19, z18, z17, z16, z15, z14, z13, z12, z11, z10, z9, z8, z7, z6, z5, z4, z3, z2, z1, z0};
endmodule