Design of self-checking unidirectional combinational circuits with low area overhead