A program product comprising a computer-readable storage medium for converting between an asynchronous circuit design and a synchronous circuit design, the program product comprising a computer-readable storage medium operative by a computer and storing control instructions operative on the computer, which when executed cause the computer to perform:
- identifying a synchronous design comprising multiple clock domains;
- generating a synchronous netlist of the synchronous design;
- and
- converting the synchronous netlist to an asynchronous design, the converting including determining a repeating period that corresponds to a least common multiple of all clock cycle times.