在芯片设计流程中,DFT(Design for Testability)综合是一个关键环节。作为一名经历过多次流片的工程师,我深刻理解这个阶段的重要性。DFT综合不仅仅是简单的逻辑转换,而是确保芯片可测试性的基础工作。
DFT综合的核心目标有三个:
提示:在实际项目中,我强烈建议DFT工程师在交付给综合团队前,先完成本地综合验证。这可以避免后期80%以上的迭代问题。
在28nm以下的先进工艺节点,一次完整的综合-布局布线流程可能需要数天时间。如果DFT逻辑存在问题,会导致:
我在一个7nm项目中就遇到过这样的情况:由于没有做本地综合验证,后期发现了EDT配置问题,导致项目延期了两周。
DFT逻辑会显著增加网表规模,主要体现在:
通过本地综合,我们可以准确获得:
tcl复制# 示例:获取设计规模统计
report_area -hierarchy
report_reference -hierarchy
合理的DFT逻辑增量应该控制在:
我们可以通过以下对比来实现:
tcl复制# 比较function和DFT网表
set func_area [get_attribute [current_design] area]
set dft_area [get_attribute [current_design] area]
set overhead [expr ($dft_area - $func_area)/$func_area*100]
标准库设置模板:
tcl复制set_app_var target_library "$vars(CCSDB_WCL_LIBS)"
set_app_var synthetic_library "/path/to/dw_foundation.sldb"
set_app_var link_library "* $target_library $synthetic_library"
注意:一定要检查库版本是否与工艺节点匹配。我曾遇到库版本不匹配导致时序约束失效的问题。
关键配置参数:
tcl复制set_app_var hdlin_shorten_long_module_name true
set_app_var verilogout_no_tri true
set_app_var hdlin_infer_multibit default_all
推荐使用filelist方式:
tcl复制source -e -v ./2.insert_edt_occ/for_dc_synthesis.tcl
elaborate $harden_name
link
Tessent相关设置:
tcl复制set tessent_hierarchy_separator /
tessent_set_default_variables
set preserve_instances [tessent_get_preserve_instances]
tcl复制source ./tsdb/dft_inserted_designs/$harden_name.sdc
必须验证:
对于DFT设计推荐:
tcl复制compile_ultra -scan -no_autoungroup
MBIST和EDT控制器需要保留:
tcl复制set_dont_touch [get_cells *mbist*]
set_dont_touch [get_cells *edt*]
tcl复制check_scan
report_scan_path
tcl复制verify_dft -atpg
report_dft_violations
在综合阶段可以:
tcl复制set_max_delay -from [get_pins mbist_ctrl/*] 2.0
tcl复制set_max_delay -from [get_ports edt_channels*] 3.0
通过以下方式控制DFT面积:
tcl复制set_edt_config -share_channels true
tcl复制set_scan_config -chain_count 100
在交付前必须检查:
现象:工具报告scan chain连接错误
解决方法:
现象:ATPG工具报告DRC violation
解决方法:
现象:ATPG覆盖率低于目标值
解决方法:
在实际项目中,DFT综合的质量直接影响到芯片的测试成本和良率。通过建立完善的本地验证流程,我们可以显著提高DFT实现效率。我建议在每个项目初期就制定详细的DFT综合checklist,并在关键节点进行review。