Fault Tolerant Architectures for On-Chip Networks