如何使用timing borrow来手动解决timing violation问题
时间:10-02
整理:3721RD
点击:
timing borrow的原理大家应该都比较清楚;
想请问下,如果寄存器之间的path有violation,如何使用timing borrow来手动解决呢,直接用swap_cell或size_cell将寄存器替换成
latch吗?还是如何处理?
想请问下,如果寄存器之间的path有violation,如何使用timing borrow来手动解决呢,直接用swap_cell或size_cell将寄存器替换成
latch吗?还是如何处理?
如果已经是寄存器到寄存器之间,可以使用useful skew.
swap_cell/size_cell是替换不了的,因为工具会做一些简单的检查,告诉你两个cell的功能/timing arc不一致。
如果没有换成latch, 那必须和前段designer确认,确保功能正确,然后可以走function eco 的flow.
(1) 也就是说如果不通过前端,在icc中是不可以手动将DFF替换成Latch的 是吗?
(2) 你所说的 eco flow是指 place_eco_cells+route_zrt_eco吗?
1. 可以通过change_link直接换,前提是你要保证Function还是正确的。因为这样换过cell 后lec不会过。
2. Function eco flow指得是因为要fix一些功能上面的bug而出的eco file,一般前端rtl会改,后端的netlist也要改。每个公司的流程不一样,叫法也可能不一样。
通过change_lnik之后 lec一般都不能过吗?我只是将其中一个DFF替换成latch,功能应该没问题的;
time borrow首先必须design里面有latch,
人工换latch的方法没用过,需要和前端确认,功能不一定能保证的
DFF和latch完全不一样的,你怎么知道完全没问题
DFF和latch完全不一样?有点太绝对了吧,都可以锁存数据,一个是edge触发,一个是电平触发
太高深,没玩过。
这个区别还不够大吗?
会影响pipeline功能的,肯定是不能简单替换的,
latch是latch, flop是flop