本文选自知识星球,同时星球还有分享自己编写的 20本+系统性的、编辑成册的笔记,高达56万字+,还有分享还有更多干货知识以及后端视频教程等,星球专属QQ群还有分享1.5G的后端教程和所有EDA的最新UG,欢迎加入星球进行查看。
《ICC2/FC/DC NXT –
Congestion Driven Restructuring(CDR)》
正如前面分享过的,如果设计里面AOI/OAI这类逻辑复杂、输入Pin密度比较高的Cell比较集中的话会造成连线交叉严重的问题,所以容易引起Congestion问题。
ICC2/FC里面的拥塞驱动的重构(Congestion Driven Restructuring, CDR)能识别出这些这些逻辑树并对其进行Reorder并且对它们的布局也会做优化,防止摆放的过于密集。这样能缓解Congestion,也会缩短连线长度。
如下图所示为示意图和使用CDR与否的Congestion和Cell density map,可见使用CDR之后都得到了改善。
具体实现方式:
默认FC/ICC2中CDR就是使能的,控制它的app option如下:
place.coarse.cong_restruct # 默认就是true
在开启状态下,工具会在logic_opto和initial_place的时候做一轮net的Restructure,如果想增加迭代的轮数去继续优化Congesiton,可以调整下面的app option:
place.coarse.cong_restruct_iterations #合理的值是1-3,次数越多自然运行时间越长
此外,如果不指定次数的话,还可以通过下面的app option去控制:
如果place.coarse.cong_restruct_strategy 设置成original的话,执行3轮迭代;
如果place.coarse.cong_restruct_strategy设置成embed的话,执行1轮迭代;
我们还可以通过app option place.coarse.cong_restruct_effort去控制工具的努力程度,可选值为:low, medium (default), high, ultra
我们还可以通过把app option place.coarse.cong_restruct_depth_aware设置为true去防止工具把Path的逻辑深度增加超过三级。增加超过三层逻辑的路径深度
此外DC NXT里面也可以做CDR:
Performing Congestion-Driven Restructuring
Congestion in the design can be caused by commutative and associative logic trees, such as OR trees, AND trees, and XOR trees. You can improve congestion by rewiring input signals of the logic trees with the congestion-driven restructuring feature.
To enable congestion-driven restructuring when you use the compile_ultra -spg command, use the placer_cong_restruct variable. The default is false.
To use the congestion-driven restructuring feature,
In NDM mode, use the variable as follows:
dcnxt_shell-topo> set_app_var placer_cong_restruct true
In Milkyway mode, use the set_icc2_options command with the variable as follows:
dcnxt_shell-topo> set_app_var placer_cong_restruct true
dcnxt_shell-topo> set_icc2_options -ref_libs "lib1.ndm lib2.ndm" \
-technology tech.tf
When you set the placer_cong_restruct variable to true,
The Design Compiler NXT tool performs restructuring of the net during the initial placement with the compile_ultra -spg command
Before invoking the IC Compiler II tool, Design Compiler NXT issues the following message:
Information: Congestion driven restructuring placement is enabled. (SPG-131)
After invoking the IC Compiler II tool, the following message is issued in the IC Compiler II log file:
Printing options for 'place.coarse.*' (non-default only)
place.coarse.cong_restruct: on
参考资料:ICC2 Implementation User Guide
FC Student Guide
星球简介
低功耗设计技术总结 - 3万字,129页 IR drop的分析与修复总结 - 4.3千字,20页 数字后端理论及实践-ICC干货笔记 - 11万字,423页 数字后端理论及实践-Innouvs教程(第4版)- 5.7万字,316页 ICC2教程-星球精编版 - 2万字,125页 数字后端理论及实践-Innouvs教程(第5版)- 11.8万字,635页 面试笔试题整理 面试笔试经验分享(第1版)- 1.6万字,48页 面试笔试题整理 面试笔试经验分享(第2版)- 2.3万字,87页 ICC2 ICC与Innovus的命令对照(第1版) Tcl与DesignCompiler教程(第1版)- 6.1万字,183页 DRC规则讲解、DRC的检查与修复(第1版)- 7.3千字,26页 Congestion的分析与修复专题(第1版)- 1.2万字,41页 Perl-Tk教程(第1版)- 1.6万字 73页 星球精华推文分类整理合集(第1版)- 1.8万字,75页 星球精华推文分类整理合集(第2版)- 4.4万字,160页 面试笔试题整理 面试笔试经验分享(第3版)- 2.7万字,96页 星球精华推文分类整理合集(第3版)- 6.6万字,240页 时序分析与sdc专题笔记(第1版) - 3.1万字,115页 星球精华推文分类整理合集(第4版)- 8.4万字,296页 面试笔试题整理 面试笔试经验分享(第4版)- 3.2万字,103页 更多教程、笔记持续更新中。。。