Surviving the Design of Microprocessor and Multimicroprocessor Systems: Lessons Learned