Using Infrastructure IPs to support SW-based Self-Test of Processor Cores