A hold violation means new data reaches the capturing flip-flop too early. Changing the clock period can't help, because the hold constraint has no period in it. The fix is to make the fast path slower: add delay to the short path, usually by inserting buffers (or pairs of inverters) into the wire.
The recipe:
- Find the shortfall: it's the negative hold slack,
th − (tcq(min) + tcd). - Add at least that much contamination delay to the failing path.
- Recheck setup. The buffers also add
tpdto that path, which might now break the setup constraint.
The paths most likely to need a hold fix are the ones with little or no logic, such as a direct flip-flop-to-flip-flop link in a shift register. Paths with plenty of logic usually have enough tcd already.
Don't add delay everywhere: only the paths that fail hold need it, and extra delay elsewhere just eats into setup slack.