首页 理论教育如何确认路径正确无误设置?

如何确认路径正确无误设置?

【摘要】:一方面要保证所有的时钟路径上保持为ideal net,包括clock/data混合路径。默认情况下会将属于不同时钟域的信号分为不同的group。完成place_opt后依然采用route_zrt_global-congestion true-exploration true检查电路congestion情况,使用report_constraint-all_violators检查时序情况。如果违例数量较多,还可以加大critical range,即增大路径优化的范围。设置critical range的方式为group_path-name main_clk-critical 0.5。要注意的是group命令只对当前scenario有效,如果违例的路径存在于多个scenario中,需要在每个scenario下逐个设置。

一方面要保证所有的时钟路径上保持为ideal net,包括clock/data混合路径。设计人员应当注意到,数据路径上的buffer tree是为了保证DRC参数符合要求的同时,实现更小的延时和面积,而时钟树的综合则是为了保证时钟延时的匹配,不保证绝对延时,因此两者的优化目标是有差别的。当然我们在前端设计时应尽量避免使用clock/data混合路径,但如果为了某些设计目标而不得不采用时需要特别地注意,应当首先保证它们在作为时钟路径时能够符合要求。

另一方面要注意的是在ICC综合优化时,是将路径分为不同的group来优化的。默认情况下会将属于不同时钟域的信号分为不同的group。这中间就有可能产生由于输入输出延时的设置,而导致输入或者输出部分的路径成为时序检查最恶劣的路径,从而导致优化时无法优化寄存器到寄存器之间的路径。为了解决该问题,通常会将端口相关的路径单独组成一组,相关的脚本如下:

随后便可以进行ICC布局综合与优化的核心命令:placeopt,主要的选项有以下几个。

-optimize_dft:可以执行扫描链重排序,使得扫描链的顺序可以根据物理上的位置关系重新排布。

-power:可以进行漏电的优化。

-area_recovery:可以在非关键路径上优化掉buffer单元

-congestion:使用更强大的消除congestion违例的算法

-spg:使用SPG综合的初步布局结果。完成place_opt后依然采用route_zrt_global-congestion true-exploration true检查电路congestion情况,使用report_constraint-all_violators检查时序情况。

如果时序检查后有较多违例的路径,设计人员一方面要查看report_constraint的结果,看违例路径主要集中在哪些时钟域下,如果集中在某些时钟域,特别是频率较高的时钟域内,则需要将其优化权重加大,ICC默认情况下所有的路径优化权重均为1。修改权重可采用命令group_path-name main_clk-weight 5。如果违例数量较多,还可以加大critical range,即增大路径优化的范围。在很多情况下,优化次关键路径(sub-critical path)反而可以取得较好的优化结果。设置critical range的方式为group_path-name main_clk-critical 0.5。

要注意的是group命令只对当前scenario有效,如果违例的路径存在于多个scenario中,需要在每个scenario下逐个设置。

之后可以采用psynopt命令来对congestion和timing进行优化,具体的命令选项可以根据实际情况来选择设置。

如果psynopt之后还是存在小面积的congestion违例,可以使用refineplace-ment-coordinate{X1 Y1 X2 Y2}来对指定坐标的区域进行布局上的优化,即优化中只会移动已有单元的位置,不会修改已有的数字电路网表。

如果优化后符合要求,即可将结果保留进行后续设计;如果不符合要求,可能还需要进一步优化甚至从布局开始迭代。