New techniques for functional testing of microprocessor based systems