1. A computer program product comprising: a non-transitory computer readable medium; a first program instruction for obtaining a first clock gating function; a second program instruction for modifying an original circuit design into a gated circuit design by introducing the first clock gating function to gate a state storage device; a third program instruction for generating a comparative circuit design in which one or more outputs of the original circuit design are compared with corresponding one or more outputs of the gated circuit design, whereby an output of the comparative circuit design is indicative of whether there is a difference in output values; a fourth program instructions for determining a counter-example negating equivalency between the original circuit design and the gated circuit design based on the comparative circuit design, whereby the counter-example indicating one or more executions of the gated circuit design in which different outputs are provided due to the first gating function; a fifth program instruction for determining a second gating function based on the first gating function and the counter-example; a sixth program instruction for modifying the gated circuit design to implement the second clock gating function to gate the state storage device instead of the first clock gating function, whereby a modified gated circuit design is determined; wherein said first, second, third, fourth, fifth and sixth program instructions are stored on said non-transitory computer readable media.