altera bell labs bill gates cadence design systems electronic design automation espresso heuristic logic minimizer field-programmable gate array finite state machine george boole ibm karnaugh map lattice semiconductor logic optimization magma design automation mentor graphics programmable logic array programmable logic device quartus ii register transfer level synopsys synplicity vhdl verilog very-large-scale integration xilinx