/*** * This code is a part of EvoApproxLib library (ehw.fit.vutbr.cz/approxlib) distributed under The MIT License. * When used, please cite the following article(s): M. Ceska, J. Matyas, V. Mrazek, and T. Vojnar, Designing Approximate Arithmetic Circuits with Combined Error Constraints. In: Proceeding of 25th Euromicro Conference on Digital System Design 2022 (DSD'22). Gran Canaria, 2022. * This file contains a circuit from a sub-set of pareto optimal circuits with respect to the pwr and mre parameters ***/ // MAE% = 0.44 % // MAE = 285 // WCE% = 4.13 % // WCE = 2709 // WCRE% = 125.00 % // EP% = 98.68 % // MRE% = 5.03 % // MSE = 172520 // PDK45_PWR = 0.142 mW // PDK45_AREA = 347.8 um2 // PDK45_DELAY = 0.91 ns module mul8u_2NDH ( A, B, Z ); input [7:0] A; input [7:0] B; output [15:0] Z; wire sig_18; wire sig_20; wire sig_21; wire sig_23; wire sig_24; wire sig_27; wire sig_31; wire sig_33; wire sig_36; wire sig_37; wire sig_39; wire sig_42; wire sig_43; wire sig_44; wire sig_45; wire sig_49; wire sig_50; wire sig_51; wire sig_52; wire sig_53; wire sig_54; wire sig_55; wire sig_56; wire sig_58; wire sig_59; wire sig_60; wire sig_63; wire sig_64; wire sig_65; wire sig_69; wire sig_73; wire sig_78; wire sig_79; wire sig_81; wire sig_84; wire sig_86; wire sig_91; wire sig_92; wire sig_93; wire sig_94; wire sig_99; wire sig_100; wire sig_103; wire sig_104; wire sig_112; wire sig_116; wire sig_121; wire sig_124; wire sig_125; wire sig_129; wire sig_131; wire sig_133; wire sig_134; wire sig_138; wire sig_143; wire sig_146; wire sig_147; wire sig_148; wire sig_149; wire sig_151; wire sig_153; wire sig_157; wire sig_161; wire sig_163; wire sig_164; wire sig_165; wire sig_166; wire sig_167; wire sig_168; wire sig_172; wire sig_173; wire sig_176; wire sig_179; wire sig_180; wire sig_181; wire sig_183; wire sig_187; wire sig_193; wire sig_197; wire sig_201; wire sig_202; wire sig_203; wire sig_206; wire sig_207; wire sig_208; wire sig_213; wire sig_216; wire sig_217; wire sig_218; wire sig_219; wire sig_220; wire sig_221; wire sig_222; wire sig_223; wire sig_224; wire sig_228; wire sig_230; wire sig_232; wire sig_233; wire sig_235; wire sig_238; wire sig_240; wire sig_248; wire sig_251; wire sig_253; wire sig_256; wire sig_257; wire sig_258; wire sig_259; wire sig_264; wire sig_266; wire sig_267; wire sig_269; wire sig_274; wire sig_275; wire sig_276; wire sig_281; wire sig_287; wire sig_289; wire sig_290; wire sig_292; wire sig_297; wire sig_302; wire sig_304; wire sig_309; wire sig_322; wire sig_330; wire sig_349; wire sig_350; wire sig_353; wire sig_354; wire sig_356; wire sig_357; wire sig_358; wire sig_359; wire sig_360; wire sig_361; wire sig_362; assign sig_18 = A[7] & B[5]; assign sig_20 = A[4] & B[7]; assign sig_21 = A[0] & B[7]; assign sig_23 = A[7] & B[1]; assign sig_24 = A[2] & B[5]; assign sig_27 = A[3] & B[5]; assign sig_31 = A[5] & B[7]; assign sig_33 = A[4] & B[4]; assign sig_36 = A[2] & B[6]; assign sig_37 = A[7] & B[3]; assign sig_39 = A[6] & B[4]; assign sig_42 = A[4] & B[3]; assign sig_43 = A[6] & B[2]; assign sig_44 = A[3] & B[4]; assign sig_45 = A[6] & B[6]; assign sig_49 = A[7] & B[2]; assign sig_50 = A[6] & B[3]; assign sig_51 = A[1] & B[7]; assign sig_52 = A[7] & B[0]; assign sig_53 = A[7] & B[4]; assign sig_54 = A[3] & B[6]; assign sig_55 = A[1] & B[6]; assign sig_56 = A[5] & B[6]; assign sig_58 = A[6] & B[7]; assign sig_59 = A[5] & B[2]; assign sig_60 = A[5] & B[4]; assign sig_63 = A[5] & B[5]; assign sig_64 = A[7] & B[6]; assign sig_65 = A[3] & B[7]; assign sig_69 = A[6] & B[1]; assign sig_73 = A[7] & B[7]; assign sig_78 = A[4] & B[5]; assign sig_79 = A[5] & B[3]; assign sig_81 = A[2] & B[7]; assign sig_84 = A[6] & B[5]; assign sig_86 = A[4] & B[6]; assign sig_91 = sig_23 | sig_43; assign sig_92 = sig_58 & sig_64; assign sig_93 = sig_64 ^ sig_58; assign sig_94 = sig_50 | sig_60; assign sig_99 = sig_37 ^ sig_39; assign sig_100 = sig_37 & sig_39; assign sig_103 = sig_99 ^ sig_63; assign sig_104 = sig_79 | sig_33; assign sig_112 = sig_42 | sig_36; assign sig_116 = sig_94 | sig_78; assign sig_121 = sig_79 & sig_39; assign sig_124 = sig_78 & sig_94; assign sig_125 = sig_73 ^ sig_92; assign sig_129 = sig_84 & sig_53; assign sig_131 = sig_53 ^ sig_84; assign sig_133 = sig_129 ^ sig_45; assign sig_134 = sig_31 & sig_133; assign sig_138 = sig_63 & sig_99; assign sig_143 = sig_24 | sig_44; assign sig_146 = sig_100 | sig_138; assign sig_147 = sig_143 | sig_55; assign sig_148 = sig_104 | sig_27; assign sig_149 = sig_124 & B[6]; assign sig_151 = sig_146 ^ sig_56; assign sig_153 = sig_133 ^ sig_31; assign sig_157 = sig_124 ^ sig_86; assign sig_161 = sig_49 | sig_116; assign sig_163 = sig_116 & sig_49; assign sig_164 = sig_103 ^ sig_163; assign sig_165 = sig_146 & sig_56; assign sig_166 = sig_153 & sig_18; assign sig_167 = sig_112 | sig_59; assign sig_168 = sig_151 ^ sig_20; assign sig_172 = sig_121 | sig_54; assign sig_173 = sig_93 & sig_166; assign sig_176 = sig_129 & B[6]; assign sig_179 = sig_131 ^ sig_168; assign sig_180 = sig_91 ^ sig_167; assign sig_181 = sig_168 & sig_131; assign sig_183 = sig_157 | sig_65; assign sig_187 = sig_103 & sig_163; assign sig_193 = sig_20 & sig_151; assign sig_197 = sig_18 ^ sig_153; assign sig_201 = sig_176 | sig_134; assign sig_202 = sig_93 ^ sig_166; assign sig_203 = sig_65 & sig_157; assign sig_206 = sig_165 | sig_193; assign sig_207 = sig_91 & sig_167; assign sig_208 = sig_197 & sig_181; assign sig_213 = sig_164 ^ sig_183; assign sig_216 = sig_197 ^ sig_181; assign sig_217 = sig_201 & sig_202; assign sig_218 = sig_149 | sig_203; assign sig_219 = sig_148 & sig_180; assign sig_220 = sig_36 | sig_51; assign sig_221 = sig_173 | sig_217; assign sig_222 = sig_202 ^ sig_201; assign sig_223 = sig_183 & sig_164; assign sig_224 = sig_180 ^ sig_148; assign sig_228 = sig_73 & sig_221; assign sig_230 = sig_206 & sig_216; assign sig_232 = sig_216 ^ sig_206; assign sig_233 = sig_187 | sig_223; assign sig_235 = sig_172 | sig_81; assign sig_238 = sig_125 ^ sig_221; assign sig_240 = sig_179 & sig_233; assign sig_248 = sig_208 | sig_230; assign sig_251 = sig_207 | sig_219; assign sig_253 = sig_179 ^ sig_233; assign sig_256 = sig_161 ^ sig_251; assign sig_257 = sig_222 ^ sig_248; assign sig_258 = sig_222 & sig_248; assign sig_259 = sig_235 & sig_256; assign sig_264 = sig_253 ^ sig_218; assign sig_266 = sig_218 & sig_253; assign sig_267 = sig_240 | sig_266; assign sig_269 = sig_161 & sig_251; assign sig_274 = sig_256 ^ sig_235; assign sig_275 = sig_232 & sig_267; assign sig_276 = sig_232 ^ sig_267; assign sig_281 = sig_222 & sig_275; assign sig_287 = sig_269 | sig_259; assign sig_289 = sig_224 | sig_220; assign sig_290 = sig_147 | sig_69; assign sig_292 = sig_258 | sig_281; assign sig_297 = sig_290 | sig_52; assign sig_302 = sig_213 & sig_287; assign sig_304 = sig_213 ^ sig_287; assign sig_309 = sig_297 | sig_21; assign sig_322 = sig_264 ^ sig_302; assign sig_330 = sig_264 & sig_302; assign sig_349 = sig_276 ^ sig_330; assign sig_350 = sig_276 & sig_330; assign sig_353 = sig_257 & sig_350; assign sig_354 = sig_275 | sig_350; assign sig_356 = sig_257 ^ sig_354; assign sig_357 = sig_292 | sig_353; assign sig_358 = sig_238 ^ sig_357; assign sig_359 = sig_322; assign sig_360 = sig_73 & sig_357; assign sig_361 = sig_228 | sig_360; assign sig_362 = sig_92 | sig_361; assign Z[0] = sig_151; assign Z[1] = sig_222; assign Z[2] = sig_143; assign Z[3] = sig_143; assign Z[4] = sig_290; assign Z[5] = sig_289; assign Z[6] = sig_309; assign Z[7] = sig_309; assign Z[8] = sig_289; assign Z[9] = sig_274; assign Z[10] = sig_304; assign Z[11] = sig_359; assign Z[12] = sig_349; assign Z[13] = sig_356; assign Z[14] = sig_358; assign Z[15] = sig_362; endmodule