Combined software and hardware techniques for the design of reliable IP processors