使用SpyGlass RTL DFT检查减少设计周转时间与测试ECO
📑 目录
- 1. 
- 2. 
- 3. 
- 4. 
- 5. 
- 6. 
- 7. 
- 8. 
- 9. 
- 10. 
- 11. 
- 12. 
- 13. 
- 14. 
- 15. 
- 16. 
- 17. 
- 18. 
- 19. 
- 20. 
- 21. 
使用SpyGlass RTL DFT检查减少设计周转时间与测试ECO
作者: Sanjoy Nanda, Nithin Radhakrishnan Pillai, Manivannan Ethiraj (Qualcomm India)
会议: SNUG India 2018
页数: 21
源文件: SNUG_TPC_Spyglass_Dorso_SNUG_India_2018_User_Pres_Template_paper.pdf
Page 1
使用SpyGlass RTL DFT检查减少设计周转时间与测试ECO
RTL DFT-DRC
Sanjoy Nanda (Lead Engineer, Sr.), Nithin Radhakrishnan Pillai (Engineer, Senior), Manivannan Ethiraj (Engineer, Senior) Qualcomm India Private Limited
July 11-12, 2018, SNUG India
Page 2
议程 - 动机 - SG DFT DRC设计流程 - 更广泛的目标分类 - DFT DRC目标、问题、约束(附示例) - 未来工作 - 结论 - 参考文献
Page 3
动机 - 在RTL 寄存器传输级开发期间尽早检测DFT 可测试性设计逻辑设计问题 - 设计复杂性增加,需要减少后期设计修复 - 传统上ATPG 自动测试向量生成和门级仿真 GLS用于验证网表ECO - 在RTL阶段更容易引入更改 - 规则集和检查更容易增强 - 更短的验证周转时间
Page 4
SG DFT DRC在流程中的位置
(图示:展示SpyGlass在RTL开发流程中的插入点,位于综合和DFT实现之前)
Page 5
更广泛的目标分类
| 类别 | 描述 |
| DFT-Analysis | 测试模式下异步set/reset控制信号的检查 |
| DFT-DSM Analysis | At-speed时钟规则检查,频率使能分配检查 |
| Clock Connectivity | 从顶层开始的时钟连接性 |
| Memory Connectivity | 存储器控制引脚连接性,如slp_ret(n), clamp_mem, 访问时间控制 |
Page 6
RTL DFT DRC和连接性检查 — 问题、目标、约束、实时问题示例
Page 7
DFT-Analysis
目标: - 使用移位模式值约束顶层set/reset控制信号。使用SpyGlass Async_07 DFT规则检查设计中set/reset不处于非活动状态的触发器 - 使用捕获模式值约束顶层set/reset控制信号。使用SpyGlass Async_06 DFT规则检查设计中set和reset同时有效的触发器
问题: - 异步set/reset在DFT下从顶层不可控 - set/reset翻转的顶层向量,触发器set和reset连接到同一控制信号导致向量失效
约束示例:
testmode -name set_atpg_ctrl -value 0 -scanshift
testmode -name reset_atpg_ctrl -value 0 -scanshift
define_illegal_input_values -name set_atpg_ctrl reset_atpg_ctrl -value 11
Page 8
实时示例 — 测试模式下不可控的set/reset
触发器set/reset缺少测试模式控制
Page 9
DFT-DSM Analysis — At-speed时钟规则检查,频率使能分配检查
目标: - 时钟整形器在移位、静态捕获和at-speed捕获期间的可控性(Atspeed_17_shift, Atspeed_17_capture, Atspeed_17_captureatspeed规则) - 时钟传播到所有时序元件(Atspeed_10规则) - 每个频率域只有一个频率使能 - 使用one-hot分配一次启用一个频率域:[F1 F2 F3 F4] = 1000 0100 0010 0001 - at-speed测试期间不允许多时钟
问题: - 测试时钟门控或MUX的时钟单元未按预期集成;时序元件在测试模式下没有时钟 - 多个频率使能分配给单个频率域,增加TDF模式下顶层所需的控制信号数量 - 设计中频率使能位总数超过700,使跟踪变得繁琐 - 人为编程错误可能导致ATE上TDF向量失败
Page 10
DFT-DSM Analysis(续)— 约束示例
clock -name test_clk -testclock -atspeed
testmode -name test_mode -value 1
testmode -name freq_en[1:0] -value 11 -scanshift -captureStatic
testclockFrequency -name test_clk -freqList freq1 freq2 -enables freq_en[1:0] -values 01 10
expectFrequency -name u1.clk -freqList freq1
expectFrequency -name u2.clk -freqList freq2
(图示:时钟分配网络,one-hot频率使能编程)
Page 11
DFT-DSM Analysis — 实时示例:At_Speed 10
测试模式下时钟到触发器被门控
Page 12
连接性检查 — 存储器
目标:为每个测试模式创建约束集,检查非法连接以及从顶层到存储器控制引脚的路径可用性。
| RAM规则 | 规则描述 | SRAM引脚 |
| 1 | 如果RAM单元有mem sleep,检查它既不是tied high也不是tied Low | Mem sleep |
| 2 | 检查RAM单元的mem test mode引脚来自顶层的memory_test_ctrl的反相信号 | Mem test mode |
| 3 | 同上或test_mode的反相 | Mem test mode |
| 4 | mem test mode shift en引脚来自顶层atpg_shift tdr的反相 | Mem test mode shift en |
| 5 | 访问时间特性引脚由边界扫描寄存器驱动 | Mem access time char |
| 6 | mem clamp引脚由边界扫描寄存器驱动 | Mem clamp |
| 7 | repair en引脚由边界扫描寄存器驱动 | Repair en |
| 8 | 低电压访问时间特性引脚由边界扫描寄存器驱动 | Low voltage access time char |
问题: - 存储器电源控制信号[sleep/clamp]连接到在测试模式下没有控制的本机触发器 - 存储器扫描控制信号未连接到预期的DFT控制信号,阻止RAM写通向量生成 - 存储器访问时间特性引脚在测试期间从顶层不可控 - 存储器修复使能引脚在测试期间不可控
Page 13
存储器连接性 — 约束
约束编码示例1:
define_tag -tag base -name test_mode -value 1
require_path -tag base -from_one_of u0.ram_pwr_ctrl -to "sram*::sleep" "rom*::sleep" \
-path_type sensitized -constraint_message_tag "MEM_SLEEP_NOT_CONTROLLABLE"
约束编码示例2:
require_path -tag all_slp_n -from_one_of \
{"qctlib_bd_scan_res_reg::sysout" "qctlib_bd_scan_reg::sysout" "qctlib_isds_reg::sysout"} \
-except_from_type TIED_SGDC -to "qcsram*::slp_nret_n" "qcrf*::slp_nret_n" \
-path_type sensitized -constraint_message_tag "MEM_SLP_NRET_N_PS"
Page 14
存储器连接性 — 实时示例
存储器电源控制引脚由功能触发器控制
Page 15
连接性检查 — 时钟
目标: - DFT连接性检查使用SpyGlass DFT连接性规则在RTL中执行DFT时钟和RAM连接性检查(核心级和顶层) - 确保时钟门控 CGC单元的test_en引脚连接到预期的顶层测试控制信号 - test_en of CGC == 1'b0:无时钟 - test_en of CGC == 1'b1:功能路径覆盖率损失,测试覆盖率下降 - 确保时钟单元的TDF 跳变延迟故障域使能引脚连接到预期的测试控制信号 - PAD → PLL参考时钟的敏化路径(应用测试约束) - PLL配置引脚在TDF期间的可控性 - 设计中控制测试期间时钟传播的关键节点的required_path和required_value
问题: - TDF模式下PLL的参考时钟被阻塞,无法从PAD访问 - PLL控制信号连接到本机触发器,阻止PLL编程 - 路径上的复杂时钟单元未正确集成以支持测试模式下的时钟传播
Page 16
时钟连接性 — 约束编码示例
define_tag -tag base1_tm1 -name test_mode -value 1
require_path -tag base -from_one_of u0.pll_ctrl -to "pll*::cfg" \
-path_type sensitized -constraint_message_tag "PLL_CFG_NOT_CONTROLLABLE"
require_value -tag base -name u0.u1.u2.clk_en_tdf -value 1
时钟规则
| 描述 | CGC类型 | |
| 1 | 确保CGC单元的test_en既不是tied high也不是tied low | cgc with test_en |
| 2 | 确保seq_en或seq_clk_en不是tied low | cgc with sequence_en |
| 3 | 检查seq_en/seq_clk_en是否tied high;否则检查test_en是否由test_mode tdr控制 | cgc with sequence_en |
| 4 | 对于没有seq_en的CGC,检查test_en是否由tcr_cgc_atpg_ctrl(sleep-low CGC)或tap_test_mode_tdr(sleep-high CGC)控制 | cgc without sequence_en |
| 5 | sleep_low CGC:检查test_en是否连接到tcr_cgc_atpg_ctrl | test_en |
| 6 | sleep_high CGC:检查test_en是否连接到tap_test_mode_tdr | test_en |
| 7 | 检查clk_rst在tap_test_mode_tdr=1时是否关闭到不活动值 | rst |
| 8 | 检查clk_nset在tap_test_mode_tdr=1时是否关闭到不活动值 | nset |
require_path -tag base1_tm1_cgc -from_one_of \
{"top.u_DONT_SCAN_jtag.tap_test_mode_tdr" "top.u_DONT_SCAN_jtag.tap_test_mode_tdr_aoss"} \
-to "*_cgchn*::test_en" -path_type sensitized \
-constraint_message_tag CGCHN_TEST_MODE_TDR -report_failure_as_info
Page 17
时钟连接性(续)— 实时示例
PLL配置信号在测试模式下被组合逻辑阻塞
Page 18
未来工作 - 电源开关到JTAG数据寄存器的连接检查,减少由于电源感知GLS中不可控GDSC导致的仿真失败 - 从JDR到隔离钳位的保持控制/使能检查 - 测试点分析和RTL测试覆盖率
Page 19
结论
- SpyGlass DFT DRC检查已成为RTL Signoff标准的组成部分 - RTL在进入综合、DFT、物理实现之前已完全合格 - 提高了设计中使用的IP和硬宏的质量 - 实现了设计Bug的早期检测、验证和关闭 - RTL Signoff的周转时间大大缩短,在实现周期和门级仿真期间几乎没有测试ECO的可能性 - 更好的吞吐量,减少总体人月数和计算资源使用
Page 20
参考文献 - Synopsys SpyGlass 2017.12 - Qualcomm RTL DFT DRC Rule Deck - www.circuitlab.com
Page 21
Thank You
图片索引
本文共 73 张图片,存放于 SNUG_TPC_Spyglass_Dorso_SNUG_India_2018_User_Pres_Template_paper_images/ 目录。