Ideally setup and hold violation should not be present on same timing path (F2F path).
(BUT THERE CAN BE SITUATION WHERE BOTH SETUP slack & HOLD slack are negative)
But if such a situation happens we will never be able to fix these violations and the design will fail.
The reason is that when we will try fixing the hold violation by buffering the datapath, we will start eating up the setup slack. Thus the hold fixing is possible only when we have a +ve setup slack. If both hold and setup slack are negative then we would be left with only one way to fix it.
1) buffer datapath for hold fix
2) slow the clock frequency for setup fix --- (this is not a valid fix, but we are left with no other option).
Ideally for such a scenario the RTL should be fixed because this is a bottle neck situation and cannot be fixed without RTL modification.
--
Shobhit
1 more point.
When there are many combo paths between two flops.
The for setup analysis, the timing tool picks up the largest delay path & for hold analysis the tool picks up the smallest delay path.
--
Shobhit