Until now, we focus on the timing of one-cycle-path or full-cycle-path. Sometimes, there may exist half-cycle-path in design. One example will be the launch flop is negedge triggered, while the capture flop is still posedge triggered.

We discussed the clock skew and how it affects STA in previous post. Equivalently, half-cycle-path can be modeled as one-cycle-path with clock skew δ = +T/2. It is obvious that hold time closure is easier while setup time closure is harder for half-cycle-path.

You may wonder what is the benefit of using half-cycle-path in the design.

Assuming transmitter wants to transfer 32B data to receiver, and the data is source synchronized, i.e., transmitter will forward the clock along with data to receiver. Such path will have large positive clock skew δ, thus setup time closure will be straightforward. However, hold time check may have violations.

To fix hold time in such case, there are 2 possible solutions:

  1. Add buffers in datapath, i.e., trading the setup time for hold time
  2. Make launch flop negedge triggered while capture flop posedge triggered, i.e., using half-cycle-path

Apparently, the 2nd solution is cleaner.

As a side note, since we forward multiple bits with the clock, data-to-data skew needs to be checked by STA and balanced in physical implementation.

In next post, we will discuss the sources of clock certainty.


  1. Still not clear on why half cycle path is useful?
    Clearly, half cycle path will have hold time violation then why is considered in first place?

    1. When you are launching data half-cycle late, you are far from the transition edge of capture clock. Hence, no hold violation possible.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.