method:
1、切换memory VT
2、切换path上cell的VT
3、插入negative latch
4、early clk
5、加长common path
6、减小net delay
一、首先需要确认出现这种violation的原因。两条path是否真的是同一条path。还是只是endpoint和startpoint点相同。
如果只是endpoint和startpoint相同,分path处理即可。参考:
设计中可能会同时发生setup和hold的violation么? - 知乎
二、如果确实是相同的path,可以参考上面的method:
1、如果是reg2ram的path,查看是否是memory所需要的setup time和hold time较大,如果是可以换memory VT;
2、ULVT相对于SVT来说,在不同的PVT和mode下,差异较小,可以尝试使用ULVT cell;
3、插入negative latch可以对后面一条path借半周期,更有利于后面path的hold timing;
4、early clk只是为了暴露问题,使工具有更大的effort修setup,去使用一些快速cell,比如ULVT;
5、增加common path可以减少capture path和launch path的delay差异
6、net delay差异较小。