A critical combinational path between FF_A and FF_B has a setup violation of -2ns. The subsequent path from FF_B to FF_C has a positive setup slack of +5ns. To fix the violation on the first path using "useful skew" without introducing new violations, how should the clock tree be modified?
Delaying the clock to the capture flop (FF_B) increases the required time for the FF_A -> FF_B path, improving its setup slack by +2ns (fixing the -2ns violation). However, delaying the clock to FF_B also means FF_B launches data later, which degrades the setup slack of the FF_B -> FF_C path by -2ns. Since FF_B -> FF_C had +5ns of slack, it will reduce to +3ns, remaining safe. Thus, delaying the clock to FF_B by 2ns perfectly balances the timing.