相关阅读
Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm=1001.2014.3001.5482
目录
面积优化简介
在综合时执行optimize_netlist -area命令
高强度面积优化
面积优化简介
从Design Compiler:什么是代价函数(Cost Function)?一文中,已经简单介绍了面积优化的过程,对于DC Expert,可以使用set_max_area命令定义面积约束;对于DC Ultra、Design Compiler Graphical和Design Compiler NXT,则可以使用optimize_netlist -area命令进行面积优化,综合工具会在不影响时序/设计规则约束的情况下减小设计的面积(该功能由2013版本引入)。
下面是在DC Expert中综合时,综合报告中有关面积改善阶段的部分,如果未定义面积约束,Design Compiler会执行一系列有限的单元降级和面积清理(cleanup)步骤。
Beginning Area-Recovery Phase (cleanup) ----------------------------- TOTAL ELAPSED WORST NEG SETUP DESIGN TIME AREA SLACK COST RULE COST ENDPOINT --------- --------- --------- --------- --------- ------------------------- 0:00:02 963.8 0.00 0.0 0.0 0:00:02 963.8 0.00 0.0 0.0 0:00:02 960.3 0.00 0.0 0.0 0:00:02 960.3 0.00 0.0 0.0Beginning Area-Recovery Phase (max_area 3) ----------------------------- TOTAL ELAPSED WORST NEG SETUP DESIGN TIME AREA SLACK COST RULE COST ENDPOINT --------- --------- --------- --------- --------- ------------------------- 0:00:02 441.7 0.00 0.0 0.0 0:00:02 441.7 0.00 0.0 0.0在本文的后续部分,将不再讨论DC Expert而专注于optimize_netlist -area命令,下面是使用该命令的报告。
Beginning Area Optimization ----------------------------- TOTAL ELAPSED WORST NEG SETUP DESIGN LEAKAGE TIME AREA SLACK COST RULE COST ENDPOINT POWER --------- --------- --------- --------- --------- ------------------------- --------- 0:00:02 441.7 0.00 0.0 0.0 992147.3750 0:00:03 439.6 0.00 0.0 0.0 990467.1875在进行面积优化时,Design Compiler默认会忽略在时序组上设置的权重,以尽可能减少对时序的影响,除非将optimize_area_ignore_path_group_weights变量(默认值为true)设置为false(该功能由2017版本引入)。
在综合时执行optimize_netlist -area命令
从Design Compiler NXT 2019版本开始,可以将optimize_netlist -area命令嵌入综合过程中,嵌入式的optimize_netlist -area命令运行速度比单独运行该命令更快(提升约4%)。要启用该功能,可以将2019版本引入的compile_optimize_netlist_area变量设置为true,此时Design Compiler在全量综合和增量综合(对综合命令没有要求)时会在最后阶段进行嵌入式的面积优化,如下所示。
Beginning Area Optimization ----------------------------- TOTAL ELAPSED WORST NEG SETUP DESIGN LEAKAGE TIME AREA SLACK COST RULE COST ENDPOINT POWER --------- --------- --------- --------- --------- ------------------------- --------- 0:00:04 242.5 0.00 0.0 0.0 3417148.7500 0:00:04 237.6 0.00 0.0 0.0 3344969.75002019版本引入的compile_optimize_netlist_area_in_incremental变量的默认值为default,表示增量综合时是否进行嵌入式的面积优化遵循compile_optimize_netlist_area变量的设置。但如果用户将compile_optimize_netlist_area_in_incremental变量显式设置为true或false,则以显式设置的为准。
当在综合过程中进行了嵌入式的面积优化后,后续的第一个optimize_netlist -area命令会被忽略,并出现以下信息,除非指定-force选项。
Information: Skipping "optimize_netlist -area" command as area optimization was done as part of previous compile. Any subsequent "optimize_netlist -area" will work as normal. (OPT-1724)嵌入式面积优化的结果质量(QoR)与单独运行该命令有最多±0.2%的微小差异,这是因为嵌入式的面积优化是作为综合的一部分执行的,不涉及数据库的重新加载。
高强度面积优化
从Design Compiler NXT 2019版本开始,在使用嵌入式的面积优化的基础上(实验结果表明,尽管手册中似乎没有提到这一点),可以以运行时间为代价,启用高强度面积优化,将2019版本引入的compile_high_effort_area变量设置为true(默认值为false)即可,该功能启用时日志文件中没有特定的提示消息,但会执行额外的面积改善迭代。
2019版本引入的compile_high_effort_area_in_incremental变量的默认值为default,表示增量综合时是否进行嵌入式的面积优化遵循compile_high_effort_area变量的设置。但如果用户将compile_high_effort_area_in_incremental变量显式设置为true或false,则以显式设置的为准。
当compile_high_effort_area变量被设置为true,且用户没有显式设置compile_optimize_netlist_area变量设置为false,compile_optimize_netlist_area变量会在综合时自动被设置为true并进行嵌入式的面积优化。