首页 理论教育执行时钟树综合的核心命令:如何优化?

执行时钟树综合的核心命令:如何优化?

【摘要】:完成了上述设置后,就可以进行时钟树生成的3个核心命令。随后可以通过report_timing/report_constraint-all来检查各个scenario下的时序情况,通常而言,如果时钟树相关的设置没有大的问题,setup不会有较大的违例,但是由于之前一直将时钟网络视为零延时网络,会在初步时钟树生成后产生hold违例。

完成了上述设置后,就可以进行时钟树生成的3个核心命令。

1.clock_opt-no_clock_route-only_cts

运行这一步命令可以生成完整的时钟树,完成后应当根据具体的单元来计算时钟网络的延时,因此执行完后需要在所有的scenario下运行命令set_propagated clcok[all_clocks],并更新时钟延时update_clock_latency。

随后可以通过report_timing/report_constraint-all来检查各个scenario下的时序情况,通常而言,如果时钟树相关的设置没有大的问题,setup不会有较大的违例,但是由于之前一直将时钟网络视为零延时网络,会在初步时钟树生成后产生hold违例。如果某scenario下有较大程度的hold违例,就需要在后续步骤中进行hold修复,设置方法为set_fix_hold[all_hold_fix_clocks]。要注意的是没有大范围违例的scenario和时钟不需要设置fix_hold的属性,否则会加入过多的延时单元,增加芯片的congestion反而会导致时序的恶化。

2.clock_opt-no_clock_route-only_psyn

这一步命令用于对时钟树的优化,具体的优化选项可以根据实际情况进行添加,主要的选项有-area_recovery和-power等。随后可以再次运行report_con-straint-all来保证没有大的setup及hold违例。如果还有较大的违例,也可以采用psynopt来优化,如果还不行就要根据具体路径违例原因来处理了。

3.route_zrt_group-all_clock_nets

可以将所有的时钟网络完成布线,完成之后再报一次时序,如果没有问题就可以进入布线阶段。