Evolutionary Techniques Applied to Hardware Optimization Problems