Flip-Flop use 2 latches to capture data on edge. So, latch delay is smaller, but leak current higher. For ex: if you use Flip-Flop, your data must be stable before clock rising edge. but, if you use latch, data change can be delay until before falling edge. ( if it is a HIGH transparent latch). Usually, we will use latch under such situation: Flip-Flop + latch + Flip-Flop, we dont like to use latch+latch+ latch Except timing borrow, latch also can fix big hold time issue.
time borrowing:指的是两段时序路径之间的borrowing,具体如下解释; 一般,当两个latch串联时,比如latcha和latchb,latcha高电平有效,latchb低电平有效, 一个时钟周期,假如高电平先来; 那么如果在时钟下降沿之前latcha的q端数据到达latchb的d端,那么setup满足,为正值,如果在第二个上升沿之前latcha的q端数据到达latchb的d端,那么setup仍然满足,此时发生了timing borrowing,setup报告为0; 如果在第二个上升沿之后才到达, 那么setup违反,为负值; 因此,最大的可以借到的时间是半个周期。