what I don't understand is that why t_skew will be "harmful" when
talking about T_hold?
Hold violation happens when the data launched by FF1 reaches FF2 "too earlier" than it is supposed to be.
Suppose a data was launched by FF1 on the clock edge at a time \$t\$. After a clock skew of say \$\Delta t\$, the same clock edge reached FF2 at \$t+\Delta t\$.
In this clock edge, FF2 has to capture the data launched by FF1 on the previous edge (ie., the clock edge just before \$t\$, not the one at \$t\$). Just like any flip-flop, FF2 also has a Hold time \$t_{hold}\$. So what \$t_{hold}\$ says is that, for a data to be properly captured by FF2, the data has to remain valid for \$t_{hold}\$ time after the clock edge appeared at FF2 (assuming setup has already met). Now imagine, if the data launched by FF1 at \$t \$ has already 'traveled' through the combinational path and reached FF2 within this time window. This will now corrupt the "previous" data which is supposed to be the data captured by FF2 in this clock edge at \$t+\Delta t\$. FF2 is now said to be driven to metastability This is called Hold violation.
Intuitively, in the above scenario, the probability of Hold violation could have been reduced:
- If combinational delay between FF1 and FF2 was higher, because the data launched by FF1 now arrives a bit late at FF2.
- If clock skew \$\Delta t\$ was lower, because the clock edge appears a bit early at FF2.
The same idea can be analyzed mathematically if you write down the equation for satisfying Hold at FF2 -
$$t_{Clk-Q-FF1}+t_{combi}\ge t_{hold}+\Delta t$$
$$\implies (t_{Clk-Q-FF1}+t_{combi}-t_{hold})\ge \Delta t \tag 1$$
As you can see, for a constant value at the LHS, if the RHS increases, then the chances of violating this equality condition increases. Hence the conclusion - if the clock skew increases, it is 'bad' for hold timing.