I've got this question multiple times- How do we fix timing violations on paths that have at least one node which is both setup critical and hold critical simultaneously. To answer that question, one must realize that (generally speaking) for the same PVT and same RC corner, there cannot be paths where all nodes are simultaneously setup and hold critical.
Let's take an example:
Now, if we buffer at node C, path from B to C which was already setup critical will start violating.
|Buffering at C|
If we buffer at Node A, the path from A to D which was already setup critical would start violating.
What shall we do here now? Any suggestions? Thoughts? I'd like to hear from you and I'll post the right answer (at least one of the right answers soon!). Just like always, looking forward to engage in the comments section below.