move bound到底如何使用呢
时间:10-02
整理:3721RD
点击:
(1) 想将一些cell靠近某个macro摆放,利用move bound;但问题是:在place之前并不知道哪些cell和这个macro距离比较近
(难道是在place之前用飞线查看吗)?
(2) cts之后 发现critical path (包含macro)上的cell离macro较远,然后将这些cell放到move bound中(靠近macro),那此时还需要重新placement,cts吗?
那重新cts/placements之后很有可能critical path上的cell 变了,不是之前放进move bound的中的这些cells。
1. 关键路径的寄存器在cts前需要严格限定位置,cts前后的时序相关性才会好(因为cts前工具会认为寄存器摆到哪里Clock Latency都不变,这显然是不合实际的)但对寄存器RP Block更适合
2. 如果想关键路径的组合单元靠近摆,我一般是通过调整Path Group,不用Move Bound。这样更自动化,也更直接。
3. 如果想非关键单元挪远点,腾出空间给关键路径,我会把非关键单元Group成一个Hierarchical Cell,把这个Hierarchical Cell丢到Move Bound
关于第三点的疑问(在place之后,cts之前)你是如何知道哪些cell是非关键路径上的?
bound对 timing优化的程度影响有限, 因为很多cell并不是你想放的地方工具就觉得好,
当有congestion等其他因素时,工具会通盘考虑,
修timing最好还是group path+weight,bound的作用可以试一试,但不是能保证能马上见效的
恩,多谢小编;
虽然还没实验,但是如果在place阶段之后设置了move bound,应该是可以并且需要重新 run command place_opt 的