Skip to content

This is my senior project. Aims to implement the AI accelerator self-test and self-recovery architecture proposed in the paper "STRAIT: Self-Test and Self-Recovery for AI Accelerator". STRAIT is a unified solution that provides self-test, self-diagnosis, and self-recovery functions for systolic array-based AI accelerators.

Notifications You must be signed in to change notification settings

InnisChen/STRAIT-Self-Test-and-Self-Recovery-for-AI-Accelerator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STRAIT: Self-Test and Self-Recovery for AI Accelerator

概述

STRAIT是一個針對AI加速器的完整自測試、自診斷和自修復系統。本項目實現了基於脈動陣列(Systolic Array)的AI加速器,具備故障檢測、定位和恢復功能。

系統架構

┌─────────────────────────────────────────────────────────────┐
│                        STRAIT                               │
├─────────────────┬─────────────────┬─────────────────────────┤
│   Self-Test     │  Self-Diagnosis │    Self-Recovery        │
│   (hybrid_bist) │      (DLC)      │       (BISR)            │
└─────────────────┴─────────────────┴─────────────────────────┘

主要模組功能

🏗️ 核心架構模組

STRAIT.v

  • 功能: 系統頂層模組,整合所有子系統
  • 主要特性:
    • 協調測試、診斷和修復流程
    • 管理各模組間的資料流
    • 提供外部介面

Systolic_array.v

  • 功能: 脈動陣列主體,包含8x8 PE陣列
  • 主要特性:
    • 支援權重預載入模式
    • 45度資料流設計
    • 可配置的PE禁用功能

PE_STRAIT.v

  • 功能: 處理元件(Processing Element)實現
  • 主要特性:
    • MAC運算單元
    • 掃描鏈支援
    • 故障旁路功能

🧪 自測試模組

hybrid_bist.v

  • 功能: 混合式內建自測試控制器
  • 支援測試類型:
    • MBIST: 記憶體測試(March算法)
    • LBIST: 邏輯測試(SA/TD故障)

修改後流程:
Pattern 0: SA_SHIFT(8 cycles, 無比較) → SA_CAPTURE(1 cycle)
Pattern 1: SA_SHIFT(8 cycles, P0 shift out + 比較) → SA_CAPTURE(1 cycle)
Pattern 2: SA_SHIFT(8 cycles, P1 shift out + 比較) → SA_CAPTURE(1 cycle)
...
Pattern 11: SA_SHIFT(8 cycles, P10 shift out + 比較) → SA_CAPTURE(1 cycle)
最後階段: SA_FINAL_SHIFT(8 cycles, P11 shift out + 比較) → TD_SHIFT

  • 主要特性:
    • 多階段測試流程
    • 動態測試向量產生
    • 即時結果比較

Comparator.v

  • 功能: 測試結果比較器
  • 主要特性:
    • 並行比較8個PE輸出
    • XOR基礎故障檢測
    • 即時錯誤標記

Memory_data_generator.v

  • 功能: MBIST測試資料產生器
  • 主要特性:
    • March C-算法模式
    • 8種測試模式支援
    • 可配置測試深度

🔍 自診斷模組

Diagnostic_loop_chains.v

  • 功能: 診斷迴路鏈,即時故障定位
  • 故障類型檢測:
    • 單PE故障: MAC單元故障
    • 行故障: 激活暫存器故障
    • 列故障: 權重/部分和暫存器故障
  • 主要特性:
    • 移位暫存器鏈架構
    • 並行故障檢測
    • 零額外測試時間

🛠️ 自修復模組

bisr_weight_allocation.v

  • 功能: 內建自修復權重分配控制器
  • 修復策略:
    1. 零權重檢測: 識別可用於替換的位置
    2. 權重交換: 故障PE與零權重PE交換
    3. 權重分配: 重新映射權重到健康PE
    4. 行旁路: 嚴重故障時整行停用

faulty_pe_storage.v

  • 功能: 故障PE儲存器(CAM架構)
  • 主要特性:
    • TCAM支援don't care值
    • 樹狀並行匹配
    • O(log N)時間複雜度
    • 優先編碼選擇

mapping_table.v

  • 功能: 地址映射表
  • 主要特性:
    • 動態地址重映射
    • 故障隔離
    • CAM快速查詢

💾 記憶體和緩衝模組

eNVM.v

  • 功能: 嵌入式非揮發性記憶體
  • 儲存內容:
    • SA測試向量(12組)
    • TD測試向量(18組)
    • 故障映射資訊
    • 診斷結果

Accumulator.v & Accumulator_mem.v

  • 功能: 累加器系統
  • 主要特性:
    • 8個並行累加器
    • 45度輸入模式
    • 測試模式支援

Activation_mem.v

  • 功能: 激活值記憶體
  • 主要特性:
    • 按行儲存激活值
    • 支援BISR地址重映射

row_weight_storage.v

  • 功能: 行權重儲存器
  • 主要特性:
    • 按行組織權重資料
    • 支援動態重分配

🔄 資料緩衝模組

Activation_buffer.v

  • 功能: 激活值緩衝器
  • 主要特性:
    • 45度移位暫存器陣列
    • 測試/正常模式切換
    • 動態資料對齊

Weight_partialsum_buffer.v

  • 功能: 權重和部分和緩衝器
  • 主要特性:
    • 多源輸入選擇
    • PE禁用控制
    • 測試資料注入

📁 測試資料文件

測試向量檔案

  • LBIST_SA_test_pattern.dat: SA故障測試向量(12組)
  • LBIST_TD_test_pattern.dat: TD故障測試向量(18組)
  • MBIST_test_pattern.dat: 記憶體測試向量(8組)

資料檔案

  • weight.dat: 權重資料(8x8矩陣)
  • activation.dat: 激活值資料(8x8矩陣)

🚀 主要特性

測試覆蓋率

  • SA故障: 100%覆蓋率
  • TD故障: 100%覆蓋率
  • 記憶體故障: March C-算法完整覆蓋

修復能力

  • 零準確度損失: 基於權重稀疏性的智能分配
  • 高修復率: 稀疏度>30%時達100%修復率
  • 故障容忍: 支援最高1%的PE故障率

硬體開銷

  • 測試開銷: <0.1% (相對於陣列面積)
  • 診斷開銷: 2.5% (相對於256×256陣列)
  • 修復開銷: <0.1% (CAM/TCAM架構)

🔧 使用方式

基本測試流程

  1. 初始化: 載入測試向量到eNVM
  2. MBIST: 測試內部記憶體
  3. LBIST: 測試脈動陣列邏輯
  4. 診斷: 即時故障定位和分類
  5. 修復: 自動權重重分配和PE旁路

控制信號

  • test_mode: 測試/正常模式切換
  • BIST_mode: MBIST(0)/LBIST(1)選擇
  • START: 測試開始信號
  • scan_en: 掃描鏈使能

狀態輸出

  • test_done: 測試完成
  • TD_error_flag: TD錯誤標記
  • MBIST_FAIL: MBIST失敗標記
  • recovery_success: 修復成功標記

📊 實驗結果

基於論文實驗數據:

  • 測試向量: SA僅需12組,TD僅需18組
  • 功耗降低: 掃描移位功耗降至<5%
  • PE利用率: 優於傳統方法2-3倍
  • 修復成功率: 在30%稀疏度下達100%

🏆 創新點

  1. 統一架構: 首個支援測試+診斷+修復的完整方案
  2. 零時間診斷: 與測試同步進行的即時故障定位
  3. 智能修復: 基於權重稀疏性的零損失修復策略
  4. 硬體共享: 測試和修復電路的高效復用

作者

此實現基於IEEE論文:"STRAIT: Self-Test and Self-Recovery for AI Accelerator" (IEEE TCAD 2023)

授權

請參考相關學術授權條款

About

This is my senior project. Aims to implement the AI accelerator self-test and self-recovery architecture proposed in the paper "STRAIT: Self-Test and Self-Recovery for AI Accelerator". STRAIT is a unified solution that provides self-test, self-diagnosis, and self-recovery functions for systolic array-based AI accelerators.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published