基於韌體的系統晶片協同 驗證平台

35
1 SoC CAD 基基基 基基基基基基基基基基基 陳陳陳 Department of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C

Upload: kobe

Post on 23-Feb-2016

108 views

Category:

Documents


0 download

DESCRIPTION

基於韌體的系統晶片協同 驗證平台. 陳品杰 Department of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C. 引言 ( 1/5). 在 於驗證 平台的 設計以市場上 主流微處理器 和 通訊架構 為 核心 ,並在此基礎上根據功能和性能需求整合 第三方 IP core 資源 與 自行開發的 IP core . - PowerPoint PPT Presentation

TRANSCRIPT

1

SoC CAD 基於韌體的系統晶片協同驗證平台陳品杰

Department of Electrical EngineeringNational Cheng Kung University

Tainan, Taiwan, R.O.C

NCKU

SoC & ASIC Lab 2 Chen, Pin Jay

引言 (1/5)在於驗證平台的設計以市場上主流微處理器和通訊架構為核心,並在此基礎上根據功能和性能需求整合第三方 IP core 資源與自行開發的 IP core .建立在軟體和 IP core 覆用基礎上的基於平台的系統晶片

(system-on-chip , SoC) 設計,相對於自頂向下和自底向上這 2種傳統的設計方法,儘管其有易於實現和利於較快推向市場的優勢,但其驗證仍然十分困難.據統計,功能驗證已占到整個設計週期的 70 % [2] ,而導致首次晶片下線失敗的諸多原因中功能錯誤的比例高達 70 %.

NCKU

SoC & ASIC Lab 3 Chen, Pin Jay

引言 (2/5)造成這種問題的根源在於:對系統晶片及其功能模組的驗證,採用傳統的硬體電路測試向量的方法難以充分驗證其功能正確性,各模組間的數據交換與通訊正確與否只有通過真實軟體的運行才能得以充分驗證.因此,晶片下線前在 FPGA 原型系統上運行真實軟體進行系統級驗證,能夠覆蓋較廣的系統測試空間,從而儘早發現系統中存在的設計錯誤,有效縮短設計週期,提高晶片下線成功的把握.

NCKU

SoC & ASIC Lab 4 Chen, Pin Jay

引言 (3/5)然而,基於 FPGA 原型系統運行真實軟體,包括作業系統和應用程式進行系統級驗證,仍具有很多困難:

1)FPGA 原型系統驗證需要等待硬體設計完成編碼.2)FPGA 環境調試手段有限,硬體設計可見性較低,一旦由於硬體設計錯誤導致軟體運行失效,其硬體設計錯誤定位過程十分耗時和困難.3) FPGA 原型系統難以驗證硬體設計與真實軟體之間兼容性問題,尤其當真實軟體代碼量龐大、狀態空間巨大時,甚至無法開放源代碼.

NCKU

SoC & ASIC Lab 5 Chen, Pin Jay

引言 (4/5)為提高 FPGA 原型系統使用真實軟體作為測試向量對硬體設計進行驗證的效率,本文前期工作提出一種基於韌體的系統晶片模擬平台 FEMU(firmware-based emulation framework) ,通過將運行於作業系統層次的全系統模擬器 QEMU 擴展、移植到 BIOS 層次,並提供一系列高效的設備仿真模擬介面, FEMU 允許在 FPGA 上直接模擬待測設計 (design under

test , DUT) 的參考模型為進一步提升 FEMU 性能以提高驗證效率,在 FEMU 基礎上,本文提出一種基於本地執行等優化方法的韌體協同驗證平台 -FCVP(firmware-based co-verification platform) .

NCKU

SoC & ASIC Lab 6 Chen, Pin Jay

引言 (5/5)基於 FPGA 原型系統核心硬體模組、待測設計及韌體參考模型, FCVP 形成了一個功能完整的韌體/硬體混合虛擬平台,可支持 SoC 設計初期在 FPGA 上運行真實軟體 ( 作業系統和應用程式 ) 驗證硬體設計.將硬體待測設計和其韌體參考模型融合到同一環境中之優勢:

1) 通過分別存取 FPGA 中硬體設計和韌體參考模型,可過濾出真實軟體對待測設計的存取行為,對其進一步進行比對,可輔助定位硬體設計錯誤,使得其他功能驗證方法的開展更具針對性,如模擬驗證等.2) 無需等待所有硬體設計編碼完成,對於未在 FPGA 中實現的硬體設計,只需存取其韌體參考模型.3) 採用韌體/硬體混合模擬仿真的方式,無需額外設計、實現複雜的通訊、同步介面.

NCKU

SoC & ASIC Lab 7 Chen, Pin Jay

韌體 /硬體協同驗證平台概述 -相關概念定義待測設計 : SoC 中某一個硬體模組 (或 IP 核 ) 的 RTL 實現參考模型 : 待測設計的抽象形式,通常是指以 C / C++語言實現的功能模型待測平台 : 由所有待測設計或其參考模型 ( 包括微處理器核、

bus 通訊架構以及各功能 IP 核 ) 構成的完整 SoC 設計,可運行真實軟體,又稱為目標平台.本地平台 : FPGA 對待測平台的原型化實現,包括:

1) 一個處理器,在其上面運行目標平台處理器的指令系統模擬器(instruction set simulator , ISS)

2) 待測設計 RTL 實現或其參考模型.其中待測設計 RTL 實現由 FPGA直接模擬,參考模型運行在處理器之上,真實軟體運行在 ISS 之上.

NCKU

SoC & ASIC Lab 8 Chen, Pin Jay

韌體 /硬體協同驗證平台概述 -設計目標 (1/2)FCVP / FEMU針對基於平台的設計模式,採用多抽象層次混合模擬 ( 韌體/硬體混合模擬仿真 ) 的方式,旨在以較低代價和較高靈活性,實現基於 FPGA 原型系統的協同驗證平台,並支持使用真實軟體作為測試向量進行驗證.

NCKU

SoC & ASIC Lab 9 Chen, Pin Jay

韌體 /硬體協同驗證平台概述 -設計目標 (2/2)為達到該設計目標, FCVP / FEMU 具備以下特點

1)針對每個待測設計, FCVP / FEMU 包含其韌體參考模型,用於待測設計行為比對.與硬體參考模型不同,韌體參考模型提供更為靈活的實現;與軟體參考模型不同,韌體參考模型可直接運行於待測平台,並通過與待測設計運行於同一軟硬體環境進行驗證此外,在其他待測設計未完成時,通過控制待測平台存取韌體參考模型,可運行真實軟體,提前對關鍵待測設計進行驗證.2)FCVP / FEMU 能夠記錄待測設計行為蹤跡信息,包括指令地址、真實軟體對待測設計的存取讀寫序列,以及待測設計/參考模型如何響應等訊息,用於指導待測設計錯誤分析、定位與修正.

NCKU

SoC & ASIC Lab 10

Chen, Pin Jay

韌體 /硬體協同驗證平台概述 -架構設計(1/3)

真實軟體( 作業系統 應用軟體 )

高速指令系統模擬器記憶體管理模組韌 / 硬體通訊界面設備模擬仿真介面

韌體層次

待測設計參考模型

FPGA 層次

處理器中斷控制器定時器

處理器子系統

I/O設備記憶體存取設備待測設計集合

核心硬體模組類型

圖 1 FCVP/FEMU 韌體 / 硬體協同驗證環境

NCKU

SoC & ASIC Lab 11 Chen, Pin Jay

韌體 /硬體協同驗證平台概述 -架構設計(2/3)

FCVP / FEMU 核心模組運行於韌體層次,真實軟體運行在FCVP / FEMU 之上,可作為待測設計測試向量.

韌體層次參考模型有 2 個用途:1) 作為比對模型用於驗證待測設計;2) 在硬體設計還未完成時,模擬硬體設計行為,支持真實軟體運行.

NCKU

SoC & ASIC Lab 12

Chen, Pin Jay

韌體 /硬體協同驗證平台概述 -架構設計(3/3)

FPGA 層次包含待測設計集合和核心硬體模組,其中待測設計集合的功能正確性和軟體兼容性是 FCVP / FEMU 的驗證目標.對於 FPGA 中每個待測設計,存在一個韌體層次參考模型與之對應.核心硬體模組包括處理器子系統 ( 處理器、中斷控制器、定時器 ) 、 I/O 設備與記憶體存取設備 3類,以輔助 FCVP /

FEMU 的運行和設備模擬仿真.

NCKU

SoC & ASIC Lab 13

Chen, Pin Jay

韌體 /硬體協同驗證平台概述 -驗證流程(1/3)

為描述 FCVP 驗證流程對先前之定義作進一步形式化描述待測設計集 : FPGA 中待測設計組成的集合用 DUT表示,每個待測設計用 DUTi表示.參考模型集 : 韌體層次參考模型組成的集合用 REF表示,每個參考模型用 REFi表示.參考模型集和待測設計集元素個數相同,且 REFi表示 FPGA 中

DUTi 的參考模型.

NCKU

SoC & ASIC Lab 14

Chen, Pin Jay

為覆蓋較廣的系統測試空間,在下線前儘早發現硬體設計錯誤, FCVP 使用真實軟體作為測試向量對硬體設計進行驗證.因此,使用 FCVP 進行 FPGA 原型系統驗證時,需先配置FCVP 存取 FPGA 中待測設計.一旦硬體設計錯誤導致真實軟體運行失效,則開始下述 FCVP 驗證流程:

Step l: 任意選取待測設計集中一個元素 DUTi ,設置 FCVP輸出真實軟體對該 DUTi 的存取蹤跡,如指令地址和存取讀寫序列,以及該 DUTi針對讀寫存取的返回值等. Step 2: 設置 FCVP 存取虛擬平台設備集 VPDi ,運行真實軟體進行驗證 , 得到 DUTi 的行為蹤跡. VPDi集合表示 FCVP 存取

FPGA 中待測設計 DUTi 和韌體層次參考模型集合中除 REFi 以外所有參考模型組成的集合 , 其描述為 , n 行為待測設計集元素個數.

韌體 /硬體協同驗證平台概述 -驗證流程(2/3)

NCKU

SoC & ASIC Lab 15

Chen, Pin Jay

Step 3: 設置 FCVP 存取虛擬平台設備集 VPRi ,運行真實軟體進行驗證,得到 REFi 的行為蹤跡. VPRi集合與 Step2 中 VPDi集合相比,除了以存取 REFi 參考模型、替代存取 DUTi 外,其他元素均相同,表示 FCVP 在其他模組不變的情況下存取待測設計參考模型,用於比對結果.為便於與 Step2 中定義比較,其描述為, n 行為待測設計集元素個數

Step 4: 通過真實軟體運行情況以及 DUTi 和 REFi 存取蹤跡,比較和定位 DUTi 的異常行為.Step 5: 若 DUTi 存在異常行為,使用 DUTi 存取蹤跡分析、定位

DUTi 可能的設計錯誤;待 DUTi 錯誤修正後,需重新加入待測設計集準備驗證.Step 6: 若 DUTi不存在異常行為,則判斷待測設計集中是否仍有未驗證設計.若有 , 則重複 FCVP 驗證流程;否則 , 驗證結束.

韌體 /硬體協同驗證平台概述 -驗證流程(3/3)

NCKU

SoC & ASIC Lab 16

Chen, Pin Jay

FCVP設計與實現 -韌體層高速指令系統模擬器(1/4)

指令系統模擬器 ISS是 FCVP 和 FEMU 的核心模組,在目標平台中扮演處理器的角色,用於運行真實軟體,具有便於軟體偵錯和驗證成本低等特點.為提高 ISS 模擬速度, FEMU 使用基於動態二進制翻譯技術的

QEMU 虛擬處理器 (virtual CPU , VCPU) 作為 ISS, 並通過對其擴展、移植到開源韌體 LinuxBIOS(Coreboot) 中,取得了較QEMU 本身約 15 %的平均性能提升.

About Coreboot: With the separation of hardware initialization and later boot logic, coreboot can scale from specialized applications that run directly from firmware, run operating systems in flash, load custom bootloaders, or implement firmware standards. This allows for systems to only include the features necessary in the target application, reducing the amount of code and flash space required.

NCKU

SoC & ASIC Lab 17

Chen, Pin Jay

FCVP設計與實現 -韌體層高速指令系統模擬器(2/4)

圖 2 FCVP 和 FEMU 執行框架比較

NCKU

SoC & ASIC Lab 18

Chen, Pin Jay

FCVP設計與實現 -韌體層高速指令系統模擬器(3/4)

然而經實驗統計, FEMU 執行真實軟體 ( 核心態或用戶態 )時,如圖 2 a所示,需將一條目標指令翻譯為平均 18條本地指令後方可執行,不僅翻譯開銷較大,而且性能提升空間非常有限.為提高驗證效率, FCVP改進了 FEMU ISS 執行機制,提出利用本地平台直接執行真實軟體用戶態代碼 (簡稱本地執行 ) 的方法如圖 2 b所示,用戶態代碼無需翻譯便可直接在本地平台處理器上執行,相比 FEMU 將一條目標指令翻譯為平均 18條本地指令後才可執行的機制,可進一步提升性能.

NCKU

SoC & ASIC Lab 19

Chen, Pin Jay

FCVP設計與實現 -韌體層高速指令系統模擬器(4/4)

為支持 FCVP 本地執行功能,修改 QEMU VCPU 的執行邏輯,對即將執行的代碼特權級別進行判斷.如果是核心態代碼,由於其包含更改本地 CPU 狀態的指令,會影響 FCVP穩定運行,因而無法本地執行,繼續利用 QEMU二進制翻譯機制執行.如果是用戶態代碼,由於其不包含更改 CPU 狀態的特權指令,不影響 FCVP穩定運行,從而可通過本地執行提升性能.

NCKU

SoC & ASIC Lab 20

Chen, Pin Jay

FCVP設計與實現 -韌體/硬體通訊介面 (1/2)FCVP 韌體/硬體通訊介面為 FPGA 中待測設計和運行真實軟體的 ISS 提供交互機制.韌體/硬體通訊介面依賴於圖 1所示核心硬體模組中處理器子系統 (如處理器和中斷控制器 ) 的功能,其中斷/異常捕獲和轉發流程如圖 4所示.

高速指令系統模擬器 韌 / 硬體通訊介面中斷 / 異常 處理函數入口

本地平台處理器待測設計

通知

產生中斷跳轉到

指向

監控

通知

韌體層次FPGA 層次

圖 4 FCVP 韌體 / 硬體通訊介面機制圖 1 的部分內容

NCKU

SoC & ASIC Lab 21

Chen, Pin Jay

FCVP設計與實現 -韌體/硬體通訊介面 (2/2)為保證 FCVP 可立刻捕獲來自待測設計的中斷或來自待測平台的異常, FCVP 韌體/硬體通訊介面修改所有中斷和異常處理函數入口,使其指向韌體/硬體通訊介面.當 FPGA 中待測設計產生一個中斷、本地平台處理器收到該中斷信號後,從中斷/異常處理函數入口取得中斷/異常處理函數地址 (即韌體/硬體通訊介面 ) 開始執行韌體/硬體通訊介面將捕獲的中斷/異常的信息 ( 中斷/異常號等 ) 通知 FCVP ISS .通過這種方式,達到了 FPGA 待測設計間接通知韌體層高速指令系統模擬器的目的.Why 要間接通知 ?

NCKU

SoC & ASIC Lab 22

Chen, Pin Jay

FCVP設計與實現 -設備模擬仿真介面 (1/6)FCVP 支持 4 種基本的設備模擬仿真介面,用於模擬待測設計參考模型.與 FEMU不同, FCVP盡可能使用本地平台核心硬體模組的功能對韌體參考模型部分功能進行模擬,以提高效率.下面分述 4 種介面:

1)I/O 介面 : 利用 ISS , FCVP 可截獲目標平台執行的所有 I/O指令.根據 I/O指令埠位址和讀寫屬性, FCVP 可觸發相應參考模型進行模擬,並返回結果給 ISS ,以繼續真實軟體的執行.2) 中斷 : 為模擬設備 ( 週期性 ) 中斷, FCVP 支持中斷通知

(notification) 與產生 (generation)2 種介面.中斷通知顯示呼叫 ISS提供的介面函數,通知 ISS 虛擬中斷已發生,等待確認.對於中斷產生功能, FCVP依賴圖 1 中定時器類設備來週期性產生中斷.通過捕獲定時器中斷,並利用中斷通知介面,可模擬目標平台參考模型的週期性中斷.

NCKU

SoC & ASIC Lab 23

Chen, Pin Jay

FCVP設計與實現 -設備模擬仿真介面 (2/6)3) 記憶體映射空間 : 記憶體映射空間介面用於將參考模型設備空間映射到特定記憶體空間,使得軟體通過存取記憶體空間便可對設備進行配置.FCVP截獲設備映射記憶體位址,建立“一對一”路由規則,並監控該記憶體地址一旦發生該位址的記憶體存取交易, FCVP觸發設備參考模型,以完成相應功能的模擬.4)DMA: FCVP / FEMU 對參考模型 DMA 功能的模擬,因設備多樣性而不具備通用性.以模擬 IDE類設備 DMA 為例,演算法 1描述 FEMU 採用的

DMA 模擬演算法,其中 PRD(physical region descriptor)表格是記憶體中的資料結構,用於控制 IDE DMA 傳輸表格中每個表項 (8 bit)描述一次 DMA 傳輸的緩衝區位址和需要傳輸的數量.

NCKU

SoC & ASIC Lab 24

Chen, Pin Jay

FCVP設計與實現 -設備模擬仿真介面 (3/6)演算法 1 採用純軟體 IDE DMA 模擬演算法,首先截獲並解析

PRD表格,然後呼叫 FEMU 提供的韌體層服務程式,搬運數據最後,通過中斷通知介面通知 ISS DMA 傳輸完成.演算法 1 . FEMU 利用韌體庫函數實現 IDE 設備 DMA 模擬

① unsigned long Get_IDE_PRDTR(); //函數返回截獲的 IDE PRD表格地址 ② void cpu_raise_irq(int irq); // 通知 ISS產生中斷, irq 為中斷號碼 ③ void IDE_DMA_SW(){ ④ PRD_Addr = Get_IDE_PRDTR(); ⑤ while(PRD表格非空 ){ ⑥ 解析 PRD表項中緩衝區地址 addr 和數據傳輸數量 count; ⑦ 調用 FEMU 韌體層服務例程從 IDE 硬碟傳輸相應數量的數據 , 到目標平台記憶體; ⑧ 指針指向下一個 PRD; ⑨ } //IDE DMA 功能完成 ⑩ cpu_raise_irq(14); // 從中斷控制器 IRQ 14產生中斷 ⑪ }

NCKU

SoC & ASIC Lab 25

Chen, Pin Jay

FCVP設計與實現 -設備模擬仿真介面 (4/6)為改善 FEMU 設備 DMA 模擬算法的性能, FCVP 使用真實硬體功能,模擬參考模型部分功能,算法 2描述了 FCVP 利用硬體功能對 DMA 功能進行模擬的算法.算法 2 . FCVP 利用真實硬體實現 IDE 設備 DMA 模擬

① unsigned 1ong Get_IDE_PRDTR(); //函數返回截獲的 IDE PRD表格地址 ② void cpu_raise_irq(int irq); // 通知 ISS產生中斷, irq 為中斷號碼 ③ void start_IDE_DMA(unsigned long PRDTR); // 開始真實 IDE DMA 傳輸 ④ void IDE_DMA_HW(){ ⑤ PRD_Addr = Get_IDE_PRDTR(); ⑥ while(PRD表格非空 ){ ⑦ 解析 PRD表項中緩衝區地址 addr; ⑧ addr = addr + 0x100000; // 為使用真實 IDE DMA 而修改 PRD表格 ⑨ 指針指向下一個 PRD; ⑩ }// 用於控制真實 IDE DMA 傳輸的 PRD表格修改完成 11 start_IDE_DMA(PRD_Addr); // 開始真實設備 DMA 12 }

NCKU

SoC & ASIC Lab 26

Chen, Pin Jay

FCVP設計與實現 -設備模擬仿真介面 (5/6) 13 //該函數在 IDE DMA 完成中斷發生後被 ISS 自動調用 14 void IDE_DMA_completion(){ 15 PRD_Addr = Get_IDE_PRDTR(); 16 while(PRD表格非空 ){ 17 解析 PRD表項中緩衝區地址 addr; 18 addr = addr - 0x100000; // 對目標平台真實軟體透明 , 恢復 PRD表格 19 指針指向下一個 PRD; 20 }// 用於控制真實 IDE DMA 傳輸的 PRD表格恢復完成 21 cpu_raise_irq(14); // 從中斷控制器 IRQ 14產生中斷 22 }

NCKU

SoC & ASIC Lab 27

Chen, Pin Jay

FCVP設計與實現 -設備模擬仿真介面 (6/6)算法 2 利用 2 個函數完成 DMA 功能的模擬.第一個函數 IDE_DMA_HW() 將 PRD表格中每個 PRD表項描述的緩衝區地址增加 1 MB(算法 2 第 8 行 ) .因為真實設備

DMA 功能要求使用本地平台物理記憶體作為數據緩衝區,而目標平台中參考模型使用的緩衝區物理地址比本地平台物理地址低 1 MB ,若直接使用目標平台物理地址進行 DMA 傳輸會覆蓋其他空間,導致 FCVP崩潰;完成 PRD表格修改後,算法 2 開始使用真實 IDE 進行 DMA 傳輸.DMA 傳輸完成後,真實硬體 IDE產生中斷, FCVP捕獲該中斷後調用 IDE_DMA_completion()函數.為保證真實設備模擬DMA過程對目標平台透明,該函數遍歷 (Traversal) 並修正PRD表格 (算法 2 第 18 行 ) ,最後通知 ISS DMA 傳輸完成.

NCKU

SoC & ASIC Lab 28

Chen, Pin Jay

實例分析 (1/7)本節闡述 FCVP 在 PKUnity86 SoC 設計初期對關鍵設計進行協同驗證的過程 , 以及如何利用 FCVP 提供的蹤跡信息對硬體設計錯誤做進一步分析與定位.PKUnity86是一款結合 x86 處理器與 AMBA 開放 bus 架構的

SoC ,以支援執行 Microsoft Windows 作業系統為目標.其開放的 bus 架構可快速整合各種標準 IP 核,充分利用傳統嵌入式系統的設計資源優勢;其 x86 處理器支援執行 Microsoft

Windows 作業系統及其豐富的 x86 應用軟體,充分利用傳統個人電腦的軟體優勢.這種跨 PC 系統和嵌入式系統的異構平台,在最大程度獲得 PC平台軟體複用和主流嵌入式平台 IP 核硬體資源複用優勢的同時,也使得其設計和驗證難度比單純 PC 平台或嵌入式系統設計更大.

NCKU

SoC & ASIC Lab 29

Chen, Pin Jay

實例分析 (2/7)由於 x86 處理器存取傳統設備需通過 I/O Bus ,但

AMBA Bus 架構不支持 I/O交易,因此 CAB 需要將x86 體系結構下 I/O 交易轉換到 AMBA bus記憶體交易,使得 x86 處理器可以存取 AMBA 設備. CAB模組功能正確性和軟體兼容性是其他模組正常工作的基礎,它是 FCVP 驗證的主要目標之一 , 需儘早使用真實軟體進行功能驗證.

低功耗 x86 處理器

CPU-AXI Bridge (CAB) DDR-II Controller主 PCI 2.2 橋

IDE ATA 7 控制器 靜態記憶體控制器AXI/APB Bridge

PIC

PIT

PS/2

RTC

UART

ResetC

GPIO

32 b

its A

PB B

us

32 bits AHB Bus

圖 5 PKUnity86 系統晶片結構

NCKU

SoC & ASIC Lab 30

Chen, Pin Jay

實例分析 (3/7)

圖 6 FCVP 驗證 CAB 待測設計

NCKU

SoC & ASIC Lab 31

Chen, Pin Jay

實例分析 (4/7)為驗證 CAB 模組 I/O 交易到記憶體交易轉換功能,採用圖 6所示組合方案,選擇Windows XP 作為測試向量.在 PKUnity86 SoC 設計初期 CAB 待測設計完成時,其他硬體設計還未完成.因此選取待測設計集 DUT 為” CAB 待測設計”,選取參考模型集 REF 為圖 6 中橢圓包含的參考設計模型集合, DUT 和

REF共同運行測試向量.通過存取 CAB 參考模型, FCVP 得到 CAB 參考蹤跡;存取

CAB 待測設計,得到 CAB 真實蹤跡.

NCKU

SoC & ASIC Lab 32

Chen, Pin Jay

實例分析 (5/7)在 2 次實際運行中, Windows XP都可以正常啟動.然而,存取 CAB 待測設計時, Windows XP啟動速度較慢,且Windows XP 資源管理器中無法將 PCI類型的 IDE 硬碟設備識別出來,只能將其識別為傳統 IDE 硬碟.由於傳統 IDE 硬碟設備缺乏 DMA 功能,導致啟動速度較慢. FCVP 2 次運行所存取的設備中只有 CAB不同,因此可認為真實軟體運行結果的不同源於 CAB 待測設計和參考設計的不同.

NCKU

SoC & ASIC Lab 33

Chen, Pin Jay

實例分析 (6/7)測試向量運行結果的正確性檢查只是 FCVP 驗證流程的一部分,還需比對參考蹤跡和真實蹤跡,以確定待測設計可能存在的設計錯誤.圖 7所示 CAB 真實與參考蹤跡比對結果。其中每條蹤跡記錄 CAB 將 I/O 交易轉換為 AMBA bus記憶體交易的地址.

圖 7 CAB 真實蹤跡與參考蹤跡比對

NCKU

SoC & ASIC Lab 34

Chen, Pin Jay

實例分析 (7/7)通過比對和分析兩者差異並查看 CAB RTL 代碼,可快速定位硬體設計錯誤.如果不是借助於 FCVP 的採用真實軟體作為測試向量進行設計驗證的能力,而採用人工合成測試向量發現 CAB 設計錯誤並找出原因,其難度會大得多.而且 , 通過這個例子可以看出, FCVP 能夠在 SoC 設計初期所有硬體設計完成前 , 對關鍵設計進行軟硬體協同驗證.由於 2 次運行中只有待測設計和參考模型不同,使得蹤跡比對的結果能夠反映真實情況;同時,通過 FCVP輸出的待測設計蹤跡信息,可有效地輔助設計人員定位可能存在的硬體設計錯誤,是對已有驗證方法的補充.

NCKU

SoC & ASIC Lab 35

Chen, Pin Jay

總結採用人工合成測試向量對基於平台的 SoC 設計,特別是具有複雜數據交互與通訊的 SoC 設計進行驗證難度較大,因此使用

FPGA 原型系統和真實軟體對硬體設計進行驗證不失為一種進步但由於 FPGA 環境偵錯手段有限、商業軟體代碼龐大,當硬體設計錯誤導致軟體運行失效時,其設計錯誤定位過程非常困難為此,本文提出一種針對系統晶片的基於韌體的協同驗證平台

FCVP .FCVP 允許硬體待測設計和參考模型工作在相同環境,並相互替換,從而支援使用行為蹤跡比對的方法定位 FPGA 硬體設計錯誤. FCVP所具有的多抽象層次混合模擬能力,還有利於在設計初期對關鍵模組進行有效驗證和錯誤定位.