optimizing a gate level bcm to the end of the earth and back
at main 32 lines 828 B view raw
1/* 2 * BCD to 7-segment decoder (exact synthesis) 3 * 12 gates, 24 total gate inputs 4 * Method: exact_12gates 5 */ 6 7#include <stdint.h> 8 9uint8_t bcd_to_7seg(uint8_t bcd) { 10 // Extract individual bits 11 uint8_t A = (bcd >> 3) & 1; 12 uint8_t B = (bcd >> 2) & 1; 13 uint8_t C = (bcd >> 1) & 1; 14 uint8_t D = bcd & 1; 15 16 // Gate outputs 17 uint8_t g0 = (A | !D); 18 uint8_t g1 = (B ^ C); 19 uint8_t g2 = (C | !g0); 20 uint8_t g3 = (g0 ^ g1); 21 uint8_t g4 = !(A | g1); 22 uint8_t g5 = !(B & g3); 23 uint8_t g6 = (C | g3); 24 uint8_t g7 = (!D & g6); 25 uint8_t g8 = !(g4 & g5); 26 uint8_t g9 = (g3 | g7); 27 uint8_t g10 = !(g2 & g5); 28 uint8_t g11 = (g3 | !g9); 29 30 // Pack segment outputs (bit 6 = a, bit 0 = g) 31 return (g6 << 6) | (g5 << 5) | (g11 << 4) | (g9 << 3) | (g7 << 2) | (g10 << 1) | (g8 << 0); 32}