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