Basic-Scan(優先使用)
速度極快,覆蓋范圍廣,可進行全掃描
Fast-Sequential(如果有需要使用)
全掃描設計的覆蓋范圍更大;
適用於memory周圍的陰影邏輯、有限的no--scan
Full-Sequential(最后使用)
強大的引擎支持更復雜的設計
run_atpg -auto自動執行最好的結果
一、Basic-Scan VS. Fast-Sequential
Basic-Scan
全掃描,單捕獲時鍾脈沖
Fast-Sequential
數量有限的no-scan(非掃描觸發器,latches,bus keepers,RAMs),可能有多個捕獲時鍾脈沖
二、降低AU fault,提高測試覆蓋率
1、在basic scan后啟動fast sequential
如果在Basic-Scan ATPG之后仍然存在AU故障,那么可啟用fast sequential ATPG:
set_patterns -histogram_summary
set_atpg -capture_cycles <d> d設置為2-10之間的整數
run_atpg -auto
capture_cycles常用設置:
最優的runtime——set_atpg -capture_cycles 3
最優的覆蓋率——set_atpg -capture_cycles 10
RAMs最小的設置—— set atpg -capture cycles 4
顯示每個捕獲深度的pattern數量以及multi-load pattern的數量
set_patterns -histogram_summary
2、啟動full dequential
set_atpg -full_seq_atpg <other_opts>
run_atpg -auto
或
run_atpg -auto full_sequential_only
三、降低ND fault
ATPG嘗試檢測故障次數的限制,提高此限制可能會減少ND fault的數量——以較長的運行時間和較高的pattern計數為代價
在basic-scan和fast-sequential中,限制次數:
set_atpg -abort <N>(默認為10)
在full-sequential中,ATPG主要控制-full_seq_time,它指定每個故障花費的最長時間(以秒為單位):
set_atpg -full_seq_time <N>(默認為10)
- 推薦逐漸增加abort limit
run_atpg -auto
set_atpg -abort 100
run _atpg -auto
set_atpg -abort 1000
run_atpg -auto
四、Debug 較低的測試覆蓋率
層次化報告測試覆蓋率
便於定位哪個模塊有問題
report_summaries——看哪類fault較多
report pi_constraints——查看約束是否合理,主要解決AU問題
report_clocks -verbose
lnvestigate DRC rule violations
report_faults
analyze_faults
提高測試覆蓋率的方法:
- 無需更改設計
增加abort limit——減少ND
啟用快速順序和全順序ATPG——減少AU
創建TetraMAX memory模型——增加memory shodow logic測試覆蓋率
消除一些Pl約束 (eg.異步reset上的Pl約束導致覆蓋率降低)
使用analyst_faults
- 更改設計
修復DRC違規
add scan to non-scan cell——使用TMAX set_scan_ability進行假設分析
添加測試點