Hold is independent of frequency.
Hold violation was more priority.
Hold violations leads to the function failures. Setup violations also leads the function failures but due to increase the frequency we can reduce the setup violations.
Before the clock tree build, we need to fix the setup violations. we don't fix the hold violations.
Once the hold violations occurred before the clock tree, .so added the buffers in that path either in the clock or data path.
After the clock tree build,hold violations occurs. So we can added the more buffers in the clock or data path again for fixing hold violations.
Here unnecesarly two times buffering done in the clock or data path. Due to this increases the area, leakage power .
So we can't fix the hold violations before the clock tree build because of that the hold was independent of frequency.
Hold equation:
launch clock path + data path - capture clock path - hold time >= 0
in this equtation, there is no clock period. So it is independent of frequency.
Setup equation:
launch clock path + data path - capture clock path - clock period + setup time <= 0
please observe the setup and hold equations.
if I am wrong, please correct me.