ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Design Compiler:Early Data Flow(Early Data Check Manager与Low-Effort Flow)

Design Compiler:Early Data Flow(Early Data Check Manager与Low-Effort Flow)

相关阅读

Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm=1001.2014.3001.5482


目录

使用Early Data Check Manager

使用Low-Effort Flow

物理数据检查

逻辑数据检查

SDC约束检查


在设计周期的早期迭代中,设计数据可能是不完整的、错误的或不一致的。这会阻碍你对设计进行实现、探索等工作。拓扑模式的Design Compiler NXT在2022版本推出了Early Data Flow,允许用户执行数据检查,并指定综合工具如何处理这些检查。该功能可以改善运行时间,但可能会对结果质量(QoR)产生一定影响。

Early Data Flow由Early Data Check Manager和Low-Effort Flow组成,其中Early Data Check Manager允许用户在设计周期的早期阶段检查设计中的问题,Low-Effort Flow则可以关闭高强度优化过程,降低引擎的努力等级,在结果质量(QoR)与运行时间之间取得平衡。

使用Early Data Check Manager

使用set_early_data_check_policy命令即可启动Early Data Check Manager,set_early_data_check_policy命令的BNF范式(有关BNF范式,可以参考以往文章)为:

set_early_data_check_policy [-checks checks] -policy [error | tolerate | repair | strict | lenient] //注:-policy选项的error, tolerate, repair参数只有在指定-checks选项时可以使用(即无法当做全局策略设置)

Design Compiler提供了一套检查项,每个检查项支持一些策略(在error、tolerate、repair之中选择若干),用户需要首先在set_early_data_check_policy -policy strict和set_early_data_check_policy -policy lenient命令之中选择其一执行(不指定-checks选项即设置全局策略),strict表示检查项被设置为其所支持的最高严重级别策略(即按照error、tolerate、repair的顺序尝试设置),lenient表示检查项被设置为其所支持的最低严重级别策略(即按照repair、tolerate、error的顺序尝试设置),随后用户可以指定-checks选项以设置各检查项的策略(覆盖之前的全局策略),工具将出现以下提示表明开启了Early Data Check Manager。

Information: Early data checks are enabled. (DCT-453)

使用report_early_data_checks命令可以报告所有检查项设置的策略、出现次数以及支持的策略,如下所示。

dcnxt_shell-topo> report_early_data_checks **************************************** Report : report_early_data_checks Design : TOP Version: W-2024.09-SP2 Date : Fri Dec 12 00:18:06 2025 **************************************** Check Applied Policy Fail Count Supported Policies ------------------------------------------------------------------------------------------------ ldc_busBitBlasted error 0 error,repair ldc_busWidthMismatch error 0 error,repair ldc_missingLogicalPins error 2 error,repair ldc_missingLogicalReference error 0 error,repair ldc_missingPhysicalCells tolerate 0 tolerate ldc_missingPhysicalPins tolerate 0 tolerate ldc_pinDirectionMismatch tolerate 1 tolerate ldc_pinNameSynonym error 0 error,repair ldc_unconnectedInterfacePins error 0 error,repair pdc_blockedPins tolerate 0 tolerate pdc_emptyRegions tolerate 0 error,tolerate pdc_groupsOverlap tolerate 0 error,tolerate pdc_ignoreSpecialpgNets tolerate 1 tolerate,repair pdc_macroOutsideCore tolerate 0 error,repair,tolerate pdc_macrosOverlap tolerate 0 error,repair,tolerate pdc_physicalOnlyCells tolerate 0 error,tolerate pdc_placerOverUtil tolerate 0 error,tolerate pdc_regionOutsideCore tolerate 0 error,tolerate pdc_voltageAreaOverUtil tolerate 3 error,tolerate ------------------------------------------------------------------------------------------------

使用remove_early_data_check_records命令即可重置所有检查项的出现次数。

使用Low-Effort Flow

在Design Compiler:简化性能、功耗和面积(PPA)的优化设置(set_qor_strategy命令)一文中,我们了解了如何使用set_qor_strategy命令设置应用变量,其中-mode选项可用于指定目标模式,默认为balanced,在Early Data Flow中需要将其设置为early_design,如下所示,此时工具会自动关闭PPA相关的高强度优化设置,如表1所示,并在综合时将物理数据检查项的全局策略设置为lenient,该设置的优先级低于set_early_data_check_policy命令。

dcnxt_shell-topo> set_qor_strategy -mode early_design -stage synthesis

表1 Low-Effort Flow设置的变量

变量名目标值
compile_timing_high_effort_tnsfalse
compile_enhanced_tns_optimization _in_incrementalfalse
compile_high_effort_areafalse
compile_prefer_muxfalse
compile_enable_total_power_optimizationfalse
compile_optimize_netlist_area_in_incrementalfalse
compile_final_drc_fixnone
placer_congestion_effortauto
placer_enable_enhanced_routerfalse
timing_enable_multiple_clocks_per_regfalse
spg_icc2_rc_correlationfalse

物理数据检查

在之前的版本中,compile_ultra或compile_ultra -check_only命令可以对物理数据进行检查,并产生警告或错误,例如当宏单元被发现放置在核心区域外时,会产生PDC-029警告或PDC-028错误,Early Data Check Manager拓展了更多检查项,这些检查项被命名为pdc_**,如表2所示。

表2 物理数据检查项

检查项支持的策略描述提示信息
pdc_groupsOverlaperror、tolerate检查bound与电压域是否发生重叠PDC-024、PDC-025、PDC-026、PDC-027
pdc_regionOutsideCoreerror、tolerate检查bound与电压域是否位于核心区域外PDC-022、PDC-023
pdc_emptyRegionserror、tolerate检查是否存在空的bound或电压域PDC-020、PDC-021
pdc_physicalOnlyCellserror、tolerate检查物理仅有单元是否超过阈值PDC-033、PDC-034
pdc_blockedPinstolerate检查在全局布线中阻塞布线的实例(通过report_congestion命令)PDC-035
pdc_voltageAreaOverUtilerror、tolerate检查电压域是否过度利用,可能导致布局问题PDC-037、PDC-038
pdc_placerOverUtilerror、tolerate检查布局器是否处于过度利用状态PDC-039、PDC-040
pdc_macroOutsideCoreerror、tolerate、repair检查是否有宏单元位于核心区域外PDC-028、PDC-029、PDC-032
pdc_macrosOverlaperror、tolerate、repair检查是否有宏单元发生重叠PDC-031、PDC-031a、PDC-032
pdc_ignoreSpecialpgNetserror、tolerate忽略特殊的电源/地线网

需要注意的是,如果检查项的策略是repair,则需要调用IC Compiler II Link,需要工具处于Milkyway模式且使用了set_icc2_options命令或工具处于NDM模式,否则会出现下面的警告。

Warning: The repair policy is ignored due to absense of NDM reference libraries. (DCT-424)

逻辑数据检查

从2023版本开始,除了物理数据,Design Compiler还支持逻辑数据检查,这是原本来自于DC Explorer的功能,它是一款用于RTL早期探索和快速综合预测的工具。

这些检查项被命名为ldc_**,如表3所示。

表3 逻辑数据检查项

检查项支持的策略描述提示信息
ldc_missingLogicalReferenceerror、repair逻辑库中缺失单元(库单元vs叶单元)或缺少模块(顶层模块vs子模块)LINK-5、LINK-909、LINK-919、DESH-017
ldc_missingLogicalPinserror、repair库单元缺失引脚(库单元vs叶单元)或模块缺失引脚(顶层模块vs子模块)LINK-1、LINK-5、LINK-902、LINK-903、LINK-911、DESH-017
ldc_busWidthMismatcherror、repair位宽不匹配(库单元vs叶单元或顶层模块vs子模块)LINK-3、LINK-5、LINK-903、LINK-904、LINK-911、DESH-017
ldc_unconnectedInterfacePinserror、repair引脚未连接(库单元vs叶单元或顶层模块vs子模块)DESH-017
ldc_pinNameSynonymerror、repair由于别名(Synonym)导致的引脚名称不匹配(库单元vs叶单元或顶层模块vs子模块)LINK-1、LINK-5、LINK-901、DESH-017
ldc_busBitBlastederror、repair由于位拆分(Bit-Blast)导致的引脚名称不匹配(库单元vs叶单元或顶层模块vs子模块),将enable_bit_blasted_bus_linking变量设置为true也可以修复该问题LINK-1、LINK-5、LINK-912、DESH-017

如果检查项的策略是repair,可以使用report_design_mismatch命令报告有哪些被修复的逻辑数据问题,如下所示,但修复可能导致验证或形式验证失败。

dcnxt_shell-topo> report_design_mismatch **************************************** Report : design mismatches Design : top Version: W-2024.09-SP2 Date : Sat Dec 13 22:08:01 2025 **************************************** Number of missing pins on logical library cells : 1 Design Object Type Mismatch ----------------------------------------------------------------------- top U1 cell 'BOG_IN' pin on 'U1' cell in 'top' design is missing from the 'AND4X4_HVT' reference. Number of unconnectable nets due to missing pins : 1 Design Object Type Mismatch ----------------------------------------------------------------------- top BOG_IN net Unable to connect 'BOG_IN' net to the 'BOG_IN' pin of 'U1' cell in 'top' design. Number of linker anchor cells : 1 Design Object Type Mismatch ----------------------------------------------------------------------- top U1_SNPBSBIT_BOG_IN cell Linker anchor cell inserted for unconnectable pin on 'U1' cell.

在2024版本中,新增了三个检查项,如表4所示。

表4 逻辑数据检查项

检查项支持的策略描述提示信息
ldc_missingPhysicalCellstolerate逻辑库存在单元,但物理库中不存在PSYN-024、PSYN-039
ldc_missingPhysicalPinstolerate单元引脚存在于逻辑库,但不存在于物理库PSYN-024、PSYN-039、PSYN-200
ldc_pinDirectionMismatchtolerate单元引脚逻辑库与物理库中的引脚方向不一致PSYN-024、PSYN-039、PSYN-058

关于逻辑数据的详细修复方式,可以参考DC Explorer User Guide。

SDC约束检查

在Design Compiler:SDC相关运行时间问题的报告和修复一文中,我们了解了如何通过2018版本引入的sdc_runtime_analysis_enable变量以及check_timing -sdc_runtime命令报告关于SDC约束复杂性的反馈信息,在2025版本中,Design Compiler将其引入了Early Data Check Manager。

这些检查项被命名为sdc_**,如表5所示。

表5SDC约束检查检查项

检查项支持的策略描述提示信息
sdc_duplicateClockstolerate、repair当大量周期和波形相同的时钟到达同一个时钟引脚,综合工具在优化时会将这些时钟逐一考虑,导致运行时间显著增加TIM-612
sdc_infeasiblePathstolerate、repair当设计中存在不可行路径时TIM-604
sdc_highFanoutNetstolerate、repair如果设计中存在高扇出线网,且这些网络未使用set_ideal_network和set_dont_touch_network等命令约束,综合时对这些线网进行缓冲可能会增加运行时间TIM-606
sdc_missingTimingExceptionstolerate、repair如果设计中出现很高的WNS,可能的原因之一就是缺少多周期(set_multicycle_path)或虚假路径约束(set_fasle_path),在这种情况下优化设计可能会增加运行时间TIM-608
sdc_unusedClockstolerate、repair设计中有些时钟并未被实际使用,但仍然存在于数据库中,这会成为综合工具额外运行时间的来源TIM-601
sdc_noPathExiststolerate、repair约束可能被施加在实际上不存在的时序路径上,这会导致综合工具运行时间变长TIM-610
sdc_multipleClocksOnPortstolerate、repair当输入/输出端口被大量时钟约束时,综合工具为了优化会增加运行时间TIM-607
sdc_multipleClocksOnPintolerate、repair多时钟交互(多个时钟到达同一个触发器的时钟引脚)可能导致运行时间显著上升TIM-099、TIM-605、TIM-613、TIM-614、
sdc_overConstrainingtolerate、repair当大量存在严格约束的时序组共享同一个时钟驱动时,优化可能会显著增加运行时间TIM-603

可以使用report_sdc_fixes命令报告有哪些被修复的SDC约束问题,如下所示。

dcnxt_shell-topo> report_sdc_fixes **************************************** Report : sdc fixes Design : ORCA_TOP Version: X-2025.06-DEV Date : Thu Apr 24 14:17:57 2025 **************************************** Number of duplicate clocks fixed/repaired in the design : 2 Design Clock Name Constraint File ---------------------------------------------------------------------------------------------------- ORCA_TOP clk_dup_24 /remote/testcases/TC19/9001410001_9001410500/9001410404/early_data_SDC_4_X_Proj/TESTCASES_0305/DATABASE_1/test.sdc:34 ORCA_TOP clk_dup_23 /remote/testcases/TC19/9001410001_9001410500/9001410404/early_data_SDC_4_X_Proj/TESTCASES_0305/DATABASE_1/test.sdc:33 Number of unused clocks fixed/repaired in the design : 2 Design Clock Name Constraint File ---------------------------------------------------------------------------------------------------- ORCA_TOP clk_unused_24 /remote/testcases/TC19/9001410001_9001410500/9001410404/early_data_SDC_4_X_Proj/TESTCASES_0305/DATABASE_1/test.sdc:44 ORCA_TOP clk_unused_23 /remote/testcases/TC19/9001410001_9001410500/9001410404/early_data_SDC_4_X_Proj/TESTCASES_0305/DATABASE_1/test.sdc:43

SDC约束问题的修复与Design Compiler:SDC相关运行时间问题的报告和修复类似,可以通过2018版本引入的sdc_runtime_analysis_log_file变量设置报告保存的文件,如果将其设置为空则输出至标准输出,默认情况下报告保存在sdc_runtime_<timestamp>.log文件中,生成的包含推荐修复方案的Tcl文件名为<报告名>.tcl。

返回列表