A program notation is introduced together with a technique for translating programs in that notation into transistor diagrams for CMOS integrated circuits. A number of restrictions are imposed on the programs ensuring every circuit thus obtained to be restoring. The program notation caters to hierarchical design. It is shown how the observance of the restrictions can be checked for each level of the hierarchy separately. The techniques discussed in this paper may be viewed as a modest step towards silicon compilation.