復雜系統(tǒng)級芯片的軟件/硬件協(xié)同驗證
本文針對復雜系統(tǒng)級芯片的軟件/硬件協(xié)同驗證環(huán)境的多種方法進行了分析和比較, 并就各種方法在藍牙系統(tǒng)級芯片設計中的應用為例對其進行了詳細地闡述。
本文引用地址:http://m.butianyuan.cn/article/193866.htm隨著半導體技術的飛速發(fā)展,單個硅片上的集成度越來越高,如何更快、更有效的完成基于SoC設 計逐漸成為人們關注的焦點。目前,許多設計小組仍然沿用十萬門設計中用過的工具和方法來驗證龐大的硬件和其嵌入軟件,這些方法往往要占用50%以上的設計 周期, 而且已經(jīng)達到極限。驗證最后設計的正確性被視為設計更大規(guī)模的系統(tǒng)級芯片的重要瓶頸。本文針對復雜系統(tǒng)級芯片的軟件/硬件協(xié)同驗證環(huán)境的多種方法進行了分 析和比較, 并就各種方法在藍牙系統(tǒng)級芯片設計中的應用為例對其進行了詳細地闡述。
隨著近來日益明顯的靈活性需求,系統(tǒng)級芯片設計采用軟件來實現(xiàn)設計中的一部分硬件功能, 而不再采用單一用途的硬連接。現(xiàn)今,在一個復雜的系統(tǒng)級芯片應用中,例如視頻解碼器,設計者將集成硬件模塊,應用軟件,RTOS,片上總線,可編程嵌入處 理器I/O外圍設備,內(nèi)存模塊,即所謂嵌入式內(nèi)核系統(tǒng)級芯片框架。
協(xié)同驗證環(huán)境
嵌入技術為基礎的SoC系統(tǒng)的設計周期,通常首先產(chǎn)生一個系統(tǒng)設計的抽象模型并對其進行模擬, 功能抽象被映射到一個詳細的系統(tǒng)結構,同時定義了系統(tǒng)框架的性能模型。系統(tǒng)結構映射把復雜系統(tǒng)分解成多個層次獨立的硬件核子模塊和軟件核子模塊核。同時系 統(tǒng)需求被轉(zhuǎn)換為軟件和硬件規(guī)范。硬件設計團隊利用Verilog和VHDL完成硬件部分, 然后用硬件模擬器做驗證。軟件設計團隊利用匯編,C,C++語言完成SoC所需的RTOS內(nèi)核軟件或其他功能軟件如通信協(xié)議軟件的設計,利用處理器模型和 ICE來測試軟件。傳統(tǒng)上,軟件團隊等到硬件原型完成才可進行最終的系統(tǒng)集成。很多問題會產(chǎn)生在系統(tǒng)集成的過程中。這些問題產(chǎn)生源于對規(guī)范的誤解,不適宜 的接口定義,和稍后的設計變化。通過軟件遞歸設計可以消除這些錯誤,但這樣可能會影響系統(tǒng)的性能。如果利用修改硬件的方法會十分耗費金錢和時間,特別是當 其中包含循環(huán)設計集成電路。把系統(tǒng)的集成階段移到設計周期的前期可以較早的消除系統(tǒng)集成的問題。這可以通過創(chuàng)建一個軟件/硬件協(xié)同驗證環(huán)境來解決這個問 題。
在一個軟件/硬件協(xié)同驗證環(huán)境中有些方面十分重要:準確,環(huán)境中模型應該時鐘周期準確或者管腳準確而且必須準確地映射 SoC功能??焖?環(huán)境的速度應該足夠快得可以使由實時操作系統(tǒng)和應用程序組成的軟件運行。適用,軟件和硬件設計團隊都應該能夠運用這個環(huán)境來進行功能和 性能驗證??傻?,為了實現(xiàn)Time_to_Market(TTM)的目標, 并能夠完成硬件/軟件協(xié)同設計和協(xié)同驗證,環(huán)境應在設計周期的早期得到。經(jīng)濟,較少的金錢耗費也是一個和準確性,性能同樣重要的考慮。
一般的協(xié)同驗證環(huán)境會有一個源代碼調(diào)試器作為基本構成,為了讓用戶可以下載固件/軟件并連接系統(tǒng)。調(diào)試器可以幫助閱讀源代 碼,設立斷點,暫停和控制處理器的運行。依靠所選擇的環(huán)境的不同,處理器模塊就可以被一個模擬模型所代替,諸如指令集模擬器(ISS),總線功能模型,或 者RTL代碼。系統(tǒng)剩余的外圍設備可以用C代碼模型,正式芯片,RTL 碼,或在FPGA中的實現(xiàn)來代替。
表1列舉了幾種協(xié)同驗證環(huán)境, 它們支持在設計周期中較早地集成軟硬件,可以克服由傳統(tǒng)驗證方法所帶來的缺陷,同時,基于以下協(xié)同驗證環(huán)境所開發(fā)的軟件可以直接移植到最終的硅片上。當選取一種驗證環(huán)境時,驗證目標,調(diào)試覆蓋,性能要求,可以利用的資源是必須考慮的要點。
本文以后的部分將針對其中的軟體原型和原型系統(tǒng)進行詳細地闡述,并以各種方法在一款藍牙系統(tǒng)芯片的設計中應用為例。附圖 3 表示了舉例的藍牙系統(tǒng)芯片設計框圖, 該設計基于ARM7TDMI處理器核和AMBA片上總線。處理器運行在RTOS上完成所有任務的管理和調(diào)度,同時運行完整的藍牙協(xié)議棧。
軟體原型
一個軟件原型是被驗證的設計的軟件表現(xiàn)。 它可以檢查處理器的寄存器狀態(tài),內(nèi)存存取,和外圍設備。如果運行軟件原型主機的運行速度足夠快,它可以使實際應用軟件和固件在其上運行。利用軟件原型可以 使設計者在得到實際硅片之前使設計者平衡所修改的系統(tǒng)參數(shù)和檢查所得結果,測試中斷處理函數(shù),開發(fā)和測試驅(qū)動程序,測試編譯器產(chǎn)生的代碼的正確性,使系統(tǒng) 和外圍設備的行為可視化和檢驗應用程序算法的正確性。
在軟件原型中,處理器用一個ISS模擬,并和源代碼調(diào)試器接口。外圍設備用C模型表現(xiàn)。圖1為所舉例的藍牙系統(tǒng)級芯片一個 典型軟件原型的簡單框圖。它由一個CPU調(diào)試器(例如,ARM調(diào)試器)一個CPU ISS(例如ARM模擬器)和外圍設備C 模型。利用軟件原型開發(fā)的軟件和固件可以通過ICE下載到快速原型或目標硬件系統(tǒng)并為仿真作配置。
建立一個基于微處理器的系統(tǒng)的軟件原型,需要以下軟件構件: 1. 處理器源代碼調(diào)試器,這個軟件模塊由調(diào)試核和用戶界面所集成,可以使使用者去控制目標系統(tǒng)在調(diào)試周期中所處的狀態(tài)。調(diào)試、編譯和(目標代碼)連接工具集位 于和調(diào)試核集成的調(diào)試宿主機器。調(diào)試器可以通過一個ICE連接到目標硬件系統(tǒng)。調(diào)試器可以被用作讀/寫寄存器和內(nèi)存,控制和重啟系統(tǒng)和模擬器中的處理器。 2. 指令集模擬器(ISS),該軟件模塊在沒有考慮時延地前提下模擬處理器指令。特定的處理器生產(chǎn)商會提供相應的ISS。例如,ARM 提供的ARMulator模擬ARM處理器系列,提供和外圍設備C模型的接口,并幫助構成一個軟件原型。3. 外圍設備C模型,其中寄存器的所有細節(jié),字節(jié)定義,外圍的中斷行為都應該包含在該C 模型中。這可以使固件和應用軟件僅做少量的改動或不改動就可在實際硅片中使用。
在實際應用中,軟件原型有以下的局限性:a. 容量有限:軟件原型僅在早期接口和代碼段調(diào)試應用。B. 速度有限:在大多數(shù)情況,模擬速度是一個十分敏感的問題,因為模擬器總不能和實際的處理器一種快。C. 模型的準確性:外圍設備C模型僅是功能正確, 而不是時鐘周期正確和管腳正確。D. 同步性:對于像外圍設備數(shù)據(jù)同步性的需求一般難于解決。
構成一個軟件原型必須遵行以下步驟:1. 分析為設計所選取的處理器的特征。2. 檢查所選處理器ISS是否能夠和所選外圍C模型接口。如果ISS無相應的接口,軟件原型就無法構成。3. 分析接口,內(nèi)存地址,寄存器,字節(jié)定義,外圍設備中斷行為,并完成相應C模型。4. 完成需要利用軟件原型去驗證的應用程序。并將處理器ISS,外圍C模型,應用程序編譯成可在宿主機運行的可執(zhí)行程序。5. 運行編譯程序和調(diào)試器并開始調(diào)試。如果有一些錯誤,其起因可能是因為外圍設備模型和應用程序的錯誤。如需要進行性能測試,則可在相應的仿真或快速原型環(huán)境 下進行,最終當實際硅片完成,軟件既可被用于最后軟件和硬件集成。在舉例的藍牙系統(tǒng)級芯片(如圖2所示)的軟件原型中,分別為UART,并行接口,中斷控 制器模塊構造C模型,ARM7TDMI處理器被ARMulator所代替。 其中ARMulator由一個ARM 處理器內(nèi)核模型,內(nèi)存接口, 執(zhí)行環(huán)境中操作系統(tǒng)接口,和一個協(xié)處理器接口組成,同時和ARM調(diào)試器接口。
快速原型系統(tǒng)
快速原型系統(tǒng)(RPS)是設計的硬件設計的表現(xiàn)。成功快速原型的關鍵在于盡可能快的實現(xiàn)一個原型。這里將著重論述針對應用的 可重置系統(tǒng)原型系統(tǒng)(ARPS)。這種方法將目標設計映射到普遍可得的商用器件上而且具有一定的擴展能力和可重用特性。通常,這些原型的構成圍繞嵌入式處 理器的BSP,通過增加附加構件(內(nèi)存,F(xiàn)PGA,IP核)。根據(jù)所選的IP,BSP可以在SoC完成前被用來開發(fā)和調(diào)試硬件和軟件。例如,很多IP供應 商,ARM,DSPGroup,MIPS,Motorola都提供基于他們處理器IP的BSP。這些BSP可劃分為兩種,一種基于微處理器,例如將在舉例 中的提到的ARM基于AMBA的BSP。這款組成包括一個ARM7TDMI處理器芯片,仲裁器,地址解碼器,內(nèi)存,兩個時鐘,中斷控制器,兩個UART, 并口,兩個PC卡插槽,和(閃存/EPROM,SRAM,DARM)內(nèi)存控制器。BSP有輔助軟件和一個ICE幫助開發(fā)和調(diào)試,它在20 MHz 時鐘下,并連接LA。另一種基于DSP。較典型例如DSP Group基于OkaDSP的BSP。它的構成包括一個DSP,地址解碼器,擴充內(nèi)存,和膠合邏輯。它運行在40MHZ 時鐘速度,可以連接LA,通過一個PC附加模塊提供體調(diào)試特征。
ARPS除了具有應用范圍大,性能高,支持模擬/混合信號器件(AMS)的集成等RPS的共性外。同時,ARPS具有如下 的特殊優(yōu)點:首先,有助于快速理解IP功能,包括處理器和外圍設備。其次可以證明設計產(chǎn)品的特征。有能力連接ICE和LA設備做調(diào)試。能夠便利地探測和監(jiān) 控系統(tǒng)內(nèi)的管腳和信號。最后可以通過插入附加IP模塊來進行設計擴展。
在實際應用中,ARPS有以下的局限性:首先將整個設計劃分到多個FPGA將是一個工程挑戰(zhàn)并占據(jù)大量的時間,這往往是因 為FPGA的最多管腳數(shù)(I/O接口)一般有限(通常400~450)。其次,除非未來的產(chǎn)品基于相同的平臺,否則ARPS的重用僅限于選定的應用領域。 最后,也是較重要的一點,如果需要額外的功能模塊,相應花費的開發(fā)時間將頗為可觀。其中將包括FPGA實現(xiàn),PCB封裝等。
基于以上的特點,通常運用ARPS方法時總假定系統(tǒng)設計已經(jīng)完成,軟件和硬件劃分已經(jīng)完成,所需的SoC的IP集合和 BSP以被確定和選取。構成一個ARPS驗證必須遵行以下步驟:1. 選擇并分析可用IP的BSP,并將其映射到目標SoC設計。2. 如缺乏所需的IP模塊,選取適當FPGA器件并完成相應RTL代碼綜合,模擬,和布線。3. 對相應BSP進行配置并和額外設計的模塊連接。4. 利用ICE和LA調(diào)試器件驅(qū)動和應用程序代碼,并分別修復軟/硬件錯誤。
舉例的藍牙SoC的ARPS由ARM的基于AMBA的BSP構成。該BSP由架構(圖3)中除了USB, 編解碼器, 藍牙連接控制模塊以外的所有模塊組成。遺漏的這三個模塊可以集成到一個ASB模塊中,并插入BSP所提供的接口。藍牙連接控制器和編解碼器的數(shù)字部分可以 在一個FPGA中實現(xiàn)。AMS模塊(數(shù)模, 模數(shù)轉(zhuǎn)換, USB模擬部分器件)可以通過標準芯片連接到外部的FPGA。有關設計可參照www.arm.com 的設計準則來完成。隨BSP提供的軟件工具包含一個源代碼調(diào)試器、編譯器=匯編、(目標代碼)連接器,這些可以被用作軟件的開發(fā)和調(diào)試。應用軟件和固件可 以利用這個該ARPS來測試。
SoC中的調(diào)試技巧
因為沒有外接管腳可以連接ICE 和LA,SoC中的處理器內(nèi)核對于調(diào)試和分析是不可見的。這就需要新的調(diào)試技巧和工具去解決嵌入式內(nèi)核的調(diào)試和分析問題:BDM核,基于掃描鏈的調(diào)試方法(JTEG)和Nexus 5001 Forum:
1. BDM 已經(jīng)被融入Motorola 微處理器。這是通過增加一個小的調(diào)試邏輯和附加的微處理器代碼來實現(xiàn)。這種模型使用一個外在處理器來控制微處理器的目標系統(tǒng)并通過串口檢測內(nèi)部寄存器和內(nèi) 存,而目標系統(tǒng)和主系統(tǒng)的聯(lián)系通過一個BDM導線。BDM技術不需求任何目標處理器資源,例如片上內(nèi)存和I/O管腳。
2. JTAG (IEEE 1149.1) 標準源于邊界掃描,一開始為芯片制造的測試所設計。該標準同時可以執(zhí)行器件內(nèi)測試,例如ATPG和BIST。
很多內(nèi)核供應商和半導體公司利用JTAG 標準來實現(xiàn)仿真模擬,通過添加調(diào)試邏輯去測試處理器內(nèi)部寄存器,指令,數(shù)據(jù)線內(nèi)容,還可以通過設立斷點控制軟件的執(zhí)行。處理器內(nèi)核,例如ARM, MPIS和POWERPC 都有基于JTAG的仿真模擬特性。
3. Nexus 5001 Forum 建立于1998, 定義了一個嵌入式處理器調(diào)試和接口標準。該標準為處理器和構架獨立而且支持多內(nèi)核和多處理器的設計。 Forum 由處理器供應商,工具供應商,和器件制造商組成, 同時也稱為IEEE-ISTO 5001 標準, 有關可參照www.ieee-isto.org/Nexus5001。
任何調(diào)試技巧都依賴于一定的工具。調(diào)試工具分兩種,硬件工具和軟件工具。硬件調(diào)試工具用于調(diào)試硬件目標系統(tǒng)。 它包括ROM模擬器(RE)、ICE和LA. 圖2顯示 ICE /RE,LA和硬件模塊之間的連接,其中ICE連接CPU,RE連接系統(tǒng)ROM。
一個RE插入目標硬件原型上ROM/FLASH插口,映射目標ROM到內(nèi)部ROM,這可以快捷地完成代碼修改,通過消除EPROM擦/寫周期加速調(diào)試過程。ICE是一個硬件設備,物理代替并模擬被測目標系統(tǒng)的處理器。而LA則被用作目標系統(tǒng)的高速數(shù)據(jù)采集。
軟件調(diào)試工具則包括ISS 和cycle accurate simulator(CAS)。模擬器是一種軟件工具以用來仿真處理器的功能。它和外圍設備的C模型接口,在得到實際硅片前建立一個代表目標設計的系統(tǒng)。 這可以使開發(fā)者開始開發(fā)固件,驅(qū)動程序和應用程序。對于前者,順序執(zhí)行程序指令并不考慮系統(tǒng)時鐘。而對于CAS, 處理器的行為以時鐘周期為基準,處理器內(nèi)部細節(jié),例如流水線,處理器接口,總線協(xié)議,都可以做詳細地模擬仿真。通常情況下,ISS的速度較CAS快。
本文小結
在復雜SoC器件中協(xié)同驗證硬件和軟件需要新的方法和工具。隨著軟件數(shù)量在即所謂基于嵌入式內(nèi)核系統(tǒng)級芯片框架的系統(tǒng)級芯片 上的不斷增加,設計周期中較早地集成軟硬件是至關重要的。本文重點闡述了軟件/硬件協(xié)同驗證的基本特征,四種較為完善的協(xié)同驗證環(huán)境及其各自特點。并以藍 牙系統(tǒng)級芯片設計中的應用為例針對其中的軟體原型和原型系統(tǒng)進行詳細地闡述。提供一個完整的基于軟核和硬連線宏功能塊的硬/軟件驗證和調(diào)試的解決方案。
c++相關文章:c++教程
加速度計相關文章:加速度計原理
評論