DFT設計中的不同階段介紹

在DFT(Design for Test,可測試性設計)軟件開發中,針對設計檢測的完整流程通常包含Setup(設置)Analysis(分析)Insertion(插入)Verification(驗證)四個核心階段。以下是各階段的詳細說明:

1. Setup(設置階段)

核心任務:為后續分析、插入和驗證搭建基礎環境,包括設計加載、庫文件讀取、約束條件定義等。
具體操作

  • 設計加載:讀取RTL代碼或門級網表(如Verilog文件),指定頂層設計(Top Design)。
  • 庫文件讀取:導入標準單元庫、Tessent庫或Mentor ATPG庫,確保工具能識別設計中的元件。
  • 約束條件定義
    • 設置時鐘頻率、掃描鏈配置(如掃描使能信號scan_en)。
    • 定義電源域(Power Domain)和UPF(Unified Power Format)文件,管理多電壓域設計。
    • 添加輸入約束(如固定掃描模式信號scan_mode為0或1)。
  • 環境配置:設置設計層級(Chip/Sub-sys)、內存測試開關(-mem_bist on/off)等。

示例命令

tcl

read_verilog top.v # 讀取頂層設計
set_current_design top # 指定當前設計
read_cell_library std_cell.lib # 讀取標準單元庫
add_clock CLK -period 10ns # 定義時鐘
add_input_constraints scan_en -C0 # 固定掃描使能信號為0

2. Analysis(分析階段)

核心任務:檢查設計是否符合DFT規則,識別潛在問題,并生成測試模式生成所需的模型。
具體操作

  • 設計規則檢查(DRC)
    • 驗證掃描鏈連接性、時鐘樹結構、復位信號分布等。
    • 檢查不可控/不可觀測點(如組合邏輯環、鎖存器未掃描化)。
  • 故障模型映射:將物理缺陷(如短路、斷路)映射為邏輯故障模型(如固定故障、轉換故障)。
  • 測試點插入分析:確定需額外插入的測試點(Test Points)以提升故障覆蓋率。
  • 生成TCD(Tessent Core Description):為內存測試(MBIST)生成描述文件。

示例命令

tcl

check_design_rules # 運行DRC檢查
report_drc_violations # 報告違規項
analyze_drc_violation -fix # 嘗試自動修復DRC問題

3. Insertion(插入階段)

核心任務:在設計中插入DFT邏輯(如掃描鏈、MBIST控制器),實現可測試性增強。
具體操作

  • 掃描鏈插入:將普通寄存器替換為掃描觸發器(Scan Flip-Flop),并連接成移位寄存器鏈。
  • MBIST控制器插入:為內存(RAM/ROM)添加自測試邏輯,生成測試模式并比較結果。
  • 邊界掃描(JTAG)插入:在芯片引腳附近插入邊界掃描單元,支持板級測試。
  • 時鐘/復位網絡優化:確保測試模式下時鐘樹穩定,復位信號可控。

示例命令

tcl

insert_scan -chain_count 4 # 插入4條掃描鏈
insert_mbist -memory all # 為所有內存插入MBIST控制器
elaborate_design # 展開設計,應用DFT插入

4. Verification(驗證階段)

核心任務:驗證插入的DFT邏輯是否正確,確保測試模式能覆蓋目標故障,且不影響功能模式。
具體操作

  • 功能仿真驗證
    • 在測試模式(scan_mode=1)下運行仿真,檢查掃描鏈移位、MBIST操作是否正確。
    • 在功能模式(scan_mode=0)下驗證設計功能未被破壞。
  • ATPG(Automatic Test Pattern Generation)
    • 生成測試向量(Patterns),目標故障覆蓋率通常需>95%。
    • 優化向量以減少測試時間和成本(如合并相似向量)。
  • 形式驗證(Formal Verification)
    • 對比插入DFT前后的網表,確保邏輯等價性。
  • 時序收斂檢查
    • 與后端團隊協作,確保測試模式下時序滿足要求(如Shift/Capture時序)。

示例命令

tcl

run_atpg -coverage 95 # 生成覆蓋率95%的測試向量
simulate -mode test # 運行測試模式仿真
verify_equivalence -golden original.v -revised dft_inserted.v # 形式驗證

階段間的關聯與迭代

  • Setup → Analysis:若DRC檢查失敗(如掃描鏈未連接),需返回Setup階段調整約束。
  • Insertion → Verification:若仿真發現MBIST控制器錯誤,需返回Insertion階段修復邏輯。
  • 全流程迭代:復雜設計可能需多次循環各階段,直至滿足覆蓋率、時序和功能要求。

補充:量產支持階段(Post-Silicon)

雖非設計階段,但DFT工程師需參與:

  • ATE調試:將測試向量適配至自動測試設備(ATE),優化測試程序。
  • 良率分析:通過測試結果定位制造缺陷(如金屬短路),反饋至工藝優化。
  • 測試成本優化:減少冗余測試項(如CP階段僅保留高價值測試),降低量產成本。

通過以上階段,DFT軟件工程師能系統化地提升芯片可測試性,確保高質量芯片交付。

討論:Analysis階段的DRC檢測里面會有仿真檢查操作嗎

在DFT(Design for Test)軟件的Analysis階段中,DRC(Design Rule Check,設計規則檢查)的核心目的是靜態驗證設計是否符合DFT規則,通常不直接包含動態仿真檢查。但某些高級DRC工具或特定場景下,可能會結合輕量級仿真形式化驗證來增強檢查能力。


1. 傳統DRC的本質:靜態檢查

DRC的主要任務是通過靜態分析(無需運行仿真)檢查設計中的結構性和邏輯性違規,例如:

  • 掃描鏈相關問題
    • 掃描觸發器(Scan Flip-Flop)未正確連接。
    • 掃描鏈存在斷鏈(Broken Chain)或環路(Loop)。
    • 掃描使能信號(scan_en)未驅動所有掃描單元。
  • 時鐘與復位問題
    • 測試模式下時鐘樹不穩定(如時鐘門控未正確控制)。
    • 復位信號在測試模式下不可控(導致掃描鏈無法初始化)。
  • 不可測試邏輯
    • 組合邏輯環(Combinational Loop)導致測試模式鎖死。
    • 鎖存器(Latch)未被掃描化,形成不可觀測點。
  • 內存測試問題
    • MBIST控制器未覆蓋所有內存實例。
    • 內存地址/數據總線存在沖突。

靜態DRC的優勢:速度快、資源占用低,適合大規模設計早期快速定位問題。


2. 仿真檢查在DRC中的角色:有限但存在

雖然DRC以靜態檢查為主,但以下場景可能引入仿真或準仿真操作

(1) 動態DRC(Dynamic DRC)

某些DFT工具(如Synopsys Tessent、Cadence JasperGold)提供動態DRC模式,通過:

  • 模擬測試模式行為:在靜態檢查基礎上,模擬掃描鏈移位、MBIST操作等動態過程,檢測:
    • 掃描鏈移位時數據沖突(如多驅動)。
    • MBIST控制器與內存接口時序不匹配。
  • 形式化驗證輔助:結合形式化方法(Formal Verification)證明測試邏輯在所有可能輸入下的正確性,例如:
    • 驗證scan_en=1時,所有掃描觸發器確實進入移位模式。
    • 驗證MBIST控制器在測試完成后能正確釋放內存控制權。
(2) 仿真驅動的DRC(Simulation-Guided DRC)

在復雜設計(如多時鐘域、低功耗設計)中,靜態DRC可能漏檢某些問題,此時會:

  • 生成測試激勵:通過DFT工具生成簡化的測試向量(如掃描鏈移位序列),運行功能仿真。
  • 監控關鍵信號:檢查仿真波形中是否存在DRC違規(如掃描鏈數據未正確移位)。
  • 示例流程

    tcl

    # 生成掃描鏈移位測試向量
    generate_patterns -type scan_shift -count 100
    # 運行仿真并檢查波形
    simulate -patterns scan_shift.v -waveform scan_wave.vcd
    # 分析波形中的違規(如數據沖突)
    check_waveform -file scan_wave.vcd -rule "no_multi_drive"
(3) 特定工具的混合檢查
  • Synopsys Tessent:在check_drc命令中可通過-dynamic選項啟用動態檢查。
  • Cadence Modus:結合Incisive仿真器進行DRC+仿真聯動驗證。
  • Mentor FastScan:在ATPG前運行仿真驗證掃描鏈連接性。

3. 仿真檢查的局限性

即使引入仿真,DRC階段的仿真與后續Verification階段的完整仿真仍有區別:

特性DRC中的仿真檢查Verification階段的仿真
目的快速定位結構性違規驗證測試模式功能正確性
激勵復雜度簡化激勵(如單周期掃描移位)完整ATPG向量或隨機測試向量
覆蓋率針對特定規則(如無多驅動)故障覆蓋率(Fault Coverage)目標
運行時間短(秒~分鐘級)長(小時~天級,依賴向量規模)

4. 實際工程中的建議
  1. 優先靜態DRC:在早期階段(如RTL或門級網表階段)運行靜態DRC,快速過濾明顯問題。
  2. 關鍵路徑仿真:對靜態DRC報告的疑似問題(如時鐘沖突),針對性運行仿真驗證。
  3. 形式化驗證補充:對關鍵測試邏輯(如MBIST控制器)使用形式化方法證明正確性。
  4. 工具選項配置:根據設計復雜度選擇是否啟用動態DRC(如Tessent的-dynamic)。

總結
  • 傳統DRC****:靜態檢查為主,不依賴仿真,適合快速定位結構性問題。
  • 仿真檢查:在動態DRC或混合流程中作為補充,用于檢測靜態分析難以覆蓋的動態行為(如數據沖突、時序違規)。
  • 最佳實踐:結合靜態DRC的效率和仿真/形式化驗證的準確性,形成分層驗證策略。

附加:

【SOC 芯片設計 DFT 學習專欄 -- DFT DRC規則檢查】-CSDN博客

? DFT中的DRC檢查詳解及常見問題-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917411.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917411.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917411.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自動化測試準備工作:概念篇

自動化 什么是自動化? 超市的自動閘門,不需要手動的開門關門生活中的自動動化案例有效的減少了人力的消耗,同時也提高了生活的質量。 軟件自動化測試同理,通過編寫自動化測試程序(減少人力和時間的消耗,提高軟件的…

每日主題切換網頁:用純前端技術打造隨心情變化的動態界面

🎨 每日主題切換網頁:用純前端技術打造隨心情變化的動態界面 項目地址:https://github.com/hhse/daily-theme-switcher 在線演示:https://hhse.github.io/daily-theme-switcher 這里寫目錄標題🎨 每日主題切換網頁&…

TOPSIS(Technique for Order Preference by Similarity to Ideal Solution )簡介與簡單示例

前言 提醒: 文章內容為方便作者自己后日復習與查閱而進行的書寫與發布,其中引用內容都會使用鏈接表明出處(如有侵權問題,請及時聯系)。 其中內容多為一次書寫,缺少檢查與訂正,如有問題或其他拓展…

uniapp 富文本rich-text 文本首行縮進和圖片居中

1. uniapp 富文本rich-text 文本首行縮進和圖片居中 1.1. rich-text 文本首行縮進使用 rich-text 組件渲染html格式的代碼,常常因為不能自定義css導致文本不能縮進,以及圖片不能居中等問題,這里可以考慮使用js的replace方法,替換…

Apple基礎(Xcode③-Singbox Core)

brew install go open ~/.bash_profile export PATH="$PATH:$(go env GOPATH)/bin" 先確保工具鏈完整 go install github.com/sagernet/gomobile/cmd/gomobile@v0.1.4 go install github.com/sagernet/gomobile/cmd/gobind@v0.1.4 gomobile init -v # 關鍵:-v …

JVM學習日記(十四)Day14——性能監控與調優(一)

經過前幾篇的鋪墊,現在開始正式進入調優篇,也是大火實際用的到的和感興趣的,但是前期的知識積累還是有必要的,所以還對JVM基礎沒什么了解的,建議還是回看主包的前幾篇內容,當然看其他優秀的博主也是可以的。…

使用 Elasticsearch 和 AI 構建智能重復項檢測

作者:來自 Elastic Dayananda Srinivas 探索組織如何利用 Elasticsearch 檢測和處理貸款或保險申請中的重復項。 Elasticsearch 帶來了大量新功能,幫助你為你的使用場景構建最佳搜索方案。深入了解我們的示例 notebooks,開始免費云試用&#…

如何在不依賴 Office 的情況下轉換 PDF 為可編輯文檔

在日常工作里,我們經常需要處理各種文件格式的轉換問題,像Word轉PDF或者PDF轉Excel這樣的需求屢見不鮮。它是一款功能全面的PDF轉換工具,能夠幫助你輕松應對多種文檔處理任務。不僅能夠實現PDF與其他格式之間的轉換,如Word、Excel…

嵌入式學習筆記-MCU階段--DAY09

1. oled屏幕的接口IIC應用場合:2.IIC通信原理概念:IIC(Inter-Integrated Circuit)其實是IICBus簡稱,所以中文應該叫集成電路總線,它是一種串行通信總線,使用多主從架構,由飛利浦公司…

解決 Node.js 托管 React 靜態資源的跨域問題

在 Node.js 項目中托管 React 打包后的靜態資源時,可能會遇到跨域問題(CORS)。以下是幾種解決方案: 1. 使用 Express 中間件設置 CORS 頭 const express require(express); const path require(path); const app express();// …

【Linux】多路轉接之epoll

優化poll進行拷貝的開銷poll開銷過大將整個 pollfd 數組拷貝到內核態,以便內核檢查 fd 是否就緒(從用戶態 → 內核態)。內核檢查 fd 狀態,并填充 revents。將 pollfd 數組從內核態拷貝回用戶態,讓應用程序可以讀取 rev…

下載一個JeecgBoot-master項目 導入idea需要什么操作啟動項目

官網:開發環境搭建 | JEECG 文檔中心 一般做開發的電腦里都是有的,沒有的只能下載了 前端安裝 node官網:https://nodejs.org/zh-cnpnpm安裝:通過命令 后端安裝: jdk17 :https://www.oracle.com/cn/java/technologies/downloads/#java17maven :https://m…

解決 InputStream 只能讀取一次問題

是的,InputStream 的一個重要特性是它通常只能被讀取一次。這是因為:輸入流通常是單向的、順序訪問的數據源很多流(如網絡流、文件流)讀取后指針就移動了,無法回退有些流(如Socket流)甚至讀取后…

數據分析面試題

技都測試 1、請列舉5個 Excel 中常用的函數及寫法。[ if ] IF(A1>60, "及格", "不及格") —— 若 A1 單元格數值≥60,返回 “及格”,否則返回 “不及格”。IF(B2>100, B2*0.8, B2) —— 若 B2 數值 > 100&#xff0c…

【07】VisionMaster入門到精通——Blob分折

文章目錄0 視屏講解與演示1 案例演示2 參數詳解1 運行參數0 視屏講解與演示 1 案例演示 周長使能查找U型槽 短軸使能查找U型槽 面積篩選區域 當條件不符合是,該模塊顯示紅色,狀態為NG 顯示二值圖像 顯示Blob圖像 2 參數詳解 Blob分折,…

解釋 MySQL 中的 EXPLAIN 命令的作用和使用場景

解釋 MySQL 中的 EXPLAIN 命令的作用和使用場景 總結性回答 EXPLAIN 是 MySQL 中用于分析 SQL 查詢執行計劃的命令,它能展示 MySQL 如何執行一個查詢,包括使用的索引、表連接順序、掃描行數等關鍵信息。主要用于查詢性能優化,幫助開發者識別潛…

.env 文件

.env 文件其實就是一個純文本文件,用來寫“環境變量”鍵值對,格式非常簡單 👇? .env 文件寫法格式:每一行就是一個變量名 值,不要加引號,不要加空格DEEPSEEK_API_KEYsk-xxxxxxxxxxxxxxxxxxxx完整例子&…

機器學習——K 折交叉驗證(K-Fold Cross Validation),案例:邏輯回歸 交叉尋找最佳懲罰因子C

什么是交叉驗證? 交叉驗證是一種將原始數據集劃分為若干個子集,反復訓練和驗證模型的策略。 交叉驗證(Cross-Validation)適用于你在模型調參(如邏輯回歸中的 C) 最常用的:K 折交叉驗證&#…

藍橋杯----串口

(五)、串口1、串口通信簡介制定通信的規則,通信雙方按照協議規則進行數據收發,將一個設備的數據傳送到另一個設備,擴展硬件系統,串口USART有兩根通信線Tx、Rx,可同時雙向通信,稱之為…

錯誤: 找不到或無法加載主類 原因: java.lang.ClassNotFoundException

背景: 代碼沒有更改,主類位置也沒有移動,運行時突然報找不到或無法加載主類的錯誤 錯誤: 找不到或無法加載主類 原因: java.lang.ClassNotFoundException編譯器上方顯示 Java file is located outside of the module source root so it wont …