在ICC做完placement后大家是怎样一个分析步骤?
第一,我会先看最差的slack是多少?是不是它的级数在30级左右,这要反馈给前端,后端实现不了。
如果不是第一种情况,
第二,我会看floorplan合不合理,就是std cell是不是同属于同一个module的std cell很分散,这是要回去调整floorplan的。
第三,我会整体的分析timing,设置一堆group_path,有latch的timing问题,若是因为离root太近,我就加大它的uncertainty。
欢迎大家来补充,交流
自己顶
我也同樓主在此分享一下 placement 完該注意的事情:
1. Placement 完假如 timing constraint 沒有太大錯誤的話, 通常 timing violation 大約會是時鐘源週期的 10%上下吧. 至於邏輯級數超過 30 左右會不會不可行, 假設前端合成 timing 是 meet (純 cell delay 沒有 wire delay), 那會不會是 floorplan macro 造成 R to R 的分布太遠, 或是 adder 的強度太小之類.
2. Floorplan 有無問題, 可用 virtual route 再看 congestion map 分布就可以 debug route 線問題, 再配合 Hierarchy map 看看 module group 是不是分配到部隊的區域.
Place应该在物理综合中完成,Logic Level Optimization也只能在综合时做(DC其实默认做得很差的,可能只有Oasys Realtime这类综合器能做好。但DC2014起可以通过group_path干涉Logic Level的优化,留意刚完成Mapping后的Cost)。吃完物理综合的结果,P&R工具做时钟树前就是Fine Tune,没什么特别的用处。
您好,谢谢您的帮助1、其实,我觉得可能floorplan做得不好,这个自己是可以看出来的,经验不多,只有多尝试多摆几版。
2、但是关于timing constrainst,就是指SDC吧?我看了整个SDC文件,里面有:
creat_clock的声明
set_clock_latency2 -min [get_clocksXXX]
set_clock_latency2 -max [get_clocksXXX]
set_clock_transition 0.2 -rise/fall -min/max [get_clocksXXX]
还有多周期的和false_path的声明
还有set_input/output_delay -clock 0.2 [get_clocksXXX] [get_ports XXX]
还有set_load -pin_load -max 0.06[all_output]
set_load -pin_load -min 0.02[all_output]
set_driving_cell
set_case_analysis
当出现问题,我应该大概可以改哪些约束?可以稍微举几个例子吗?感谢
那就应该是在floorplan后需要用route_zrt_global -congestion_map_only true 去看一下map好坏再去做place吧
thanks for the info