Fault-tolerance techniques for soft-core processors using the trace interface