Describir: Error Detecting Codes, Self-Checking Circuits and Applications