An innovative approach for high-level synthesis of digital circuits with semi-concurrent self-checking abilities is introduced, achieving a compromise between redundancy and checking effectiveness. Attention is mainly focused on the data path, described as a general Sequencing Graph including linear paths as well as loops and branches. A reference architecture is defined; a technique allowing to reduce redundancy through resource sharing is then introduced, leading to synthesis of the self-checking architecture. An algorithm is proposed to simultaneously schedule and allocate the resources, while keeping error aliasing as reduced as possible. The desired checking periodicity is guarantee by the algorithm.