<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一種采用虛擬系統原型實(shí)現系統級的多內核系統調試方法

一種采用虛擬系統原型實(shí)現系統級的多內核系統調試方法

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

在內核芯片制造前傳統的驗證與調試方法依賴(lài)于指令集仿真器(ISS)模型。不幸的是,ISS模型速度太慢,并且時(shí)序精度無(wú)法達到與系統硬件部分的RTL模型交互所需的要求。本文將提供一種采用實(shí)現系統級的多內核系統調試方法,該方法允許在PC機上實(shí)時(shí)執行一個(gè)完整系統的周期精確仿真,而且執行速度比基于ISS的仿真要快得多。

本文引用地址:http://dyxdggzs.com/article/201706/349033.htm

開(kāi)發(fā)一個(gè)復雜的多內核無(wú)線(xiàn)系統無(wú)疑是個(gè)艱巨的挑戰,特別是當內核包含有高性能處理器和先進(jìn)的數字信號處理器(DSP) 時(shí)更是如此。等待硬件原型實(shí)現是不能令人接受的:關(guān)鍵的軟硬件折衷應該在芯片制造之前盡早地完成。在內核芯片制造前傳統的驗證與調試方法依賴(lài)于指令集仿真 器(ISS)模型。不幸的是,ISS模型速度太慢,并且時(shí)序精度無(wú)法達到與系統硬件部分的RTL模型交互所需的要求。

在多內核環(huán)境中問(wèn)題更加嚴重,因為單個(gè)獨立的模擬器工具在調試模式下通常都缺少同步機制。結果是有些軟件開(kāi)發(fā)和軟硬件集成工作必須等到無(wú)線(xiàn)硬件原型實(shí)現后才能開(kāi)始。在昂貴、數量又少的硬件原型基礎上進(jìn)行開(kāi)發(fā)和調試常常導致項目進(jìn)度的延遲,并會(huì )增加芯片返工的風(fēng)險。

圖1:不同模型的速度和精度。

本 文將提供一種采用實(shí)現系統級的多內核系統調試方法,該方法允許在PC機上實(shí)時(shí)執行一個(gè)完整系統的周期精確仿真,而且執行速度比基于ISS的仿 真要快得多。該方法支持完整的系統級單步調試操作,其調試模式下的時(shí)序精度水平完全可以匹配實(shí)際設備指標。另外,由于能讓開(kāi)發(fā)人員在多系統環(huán) 境下快速精確地調試,因此給開(kāi)發(fā)工作帶來(lái)了極大的便利。下文討論的包含二個(gè)ARM處理器和一個(gè)StarCore DSP的多內核無(wú)線(xiàn)系統實(shí)例證明了該方法的有效性。

實(shí)例

適合無(wú)線(xiàn)應用的一個(gè)實(shí)際多內核芯片整體架構采用了通用CPU和專(zhuān)用DSP內核來(lái)達到并行和專(zhuān)用處理的目的。另外該芯片還包含了用于片外通信的多層存儲器系統和多個(gè)外圍器件。

這 個(gè)特殊芯片包含2個(gè)ARM926E CPU內核,每個(gè)內核擁有獨立的指令和數據緩存。其中一個(gè)ARM處理器運行Linux操作系統,并提供虛擬機、圖形化環(huán)境和消息等多個(gè)普通服務(wù)。另外一個(gè) ARM926E與DSP內核聯(lián)系緊密,主要用于處理整個(gè)系統的通信和控制,需要時(shí)也能用于執行特殊任務(wù)和應用進(jìn)程。擁有2個(gè)CPU可以完全實(shí)時(shí)地處理各種 業(yè)務(wù),從而滿(mǎn)足無(wú)線(xiàn)設備的各項關(guān)鍵要求。

作為2個(gè)ARM內核的重要補充,StarCore SC1200處理器可以加速多媒體數據處理,執行無(wú)線(xiàn)調制解調器的處理任務(wù)以及其它DSP任務(wù)。這塊內核內置有2個(gè)獨立的執行單元,每個(gè)單元都可以執行乘 法累加(MAC)以及其它信號處理算法中常用的算術(shù)操作。DSP設計用于提供大部分的語(yǔ)音數據處理以及MP3、MPEG-4和H.264等多媒體數據解碼 服務(wù)。

作為無(wú)線(xiàn)芯片中的典型部件,層次化總線(xiàn)網(wǎng)絡(luò )可以提供專(zhuān)用的數據通道,減少業(yè)務(wù)流量,并提供通信所需的公共存儲模塊訪(fǎng) 問(wèn)。在頂層,六條系統總線(xiàn)通過(guò)各自專(zhuān)用的存儲器子系統和外圍器件與處理器建立互連。所有這些總線(xiàn)都使用AHB協(xié)議,該協(xié)議是ARM公司定義的用于A(yíng)RM處 理器內核的先進(jìn)高速總線(xiàn)。

專(zhuān)用AHB總線(xiàn)允許全部三個(gè)處理器同時(shí)對存儲器進(jìn)行數據和指令存取,因而能夠消除多內核設備常見(jiàn)的瓶頸問(wèn)題。AHB系統級總線(xiàn)到更低層的總線(xiàn)通過(guò)橋進(jìn)行鏈接。三條專(zhuān)用存儲器總線(xiàn)提供對存儲器模塊的訪(fǎng)問(wèn),二條低速外圍器件總線(xiàn)連接片外通信用的定時(shí)器、中斷控制器和串行接口。

當然,處理器之間也必須交換數據或控制信息。所有這類(lèi)通信都是通過(guò)系統內任何地方都能訪(fǎng)問(wèn)的共享存儲器完成的。利用旗語(yǔ)(semaphore)和郵箱(mailbox)等現成技術(shù)即可提供處理器和外圍器件之間信息的安全傳送。

傳統的軟件建模

在SoC 生產(chǎn)出來(lái)以后才進(jìn)行驗證勢必會(huì )使最終產(chǎn)品存在大量缺陷。即使設計中嵌入了專(zhuān)門(mén)用于調試的訪(fǎng)問(wèn)路徑,可觀(guān)察性也相當有限。而在實(shí)際應用中,為了滿(mǎn)足緊迫的產(chǎn) 品上市時(shí)間要求,有用的調試功能往往會(huì )被刪除掉。因此協(xié)調與同步內含多處理器的硬件驗證測試非常困難,為了調試故障測試在處理器之間設置交叉觸發(fā)也有一定 的難度。

以前芯片架構師和設計師在芯片制造之前是利用基于軟件的模型進(jìn)行完整的芯片驗證和調試的。最常見(jiàn)的方法是使用為每個(gè)處理器設計的指令集仿真器模型。這些模型執行的二進(jìn)制代碼與芯片中的實(shí)際處理器代碼完全相同,因此這些模型可以用來(lái)在SoC制造之前開(kāi)發(fā)和調試軟件。

圖2:設計的調試要點(diǎn)。

然 而,典型的ISS模型在仿真運行大型軟件(比如實(shí)時(shí)操作系統(RTOS))時(shí)速度太慢。那些具有較高性能的ISS模型在犧牲精度的條件下才能達到較快的速 度。ISS模型的主要特點(diǎn)僅在于精確的指令,也就是說(shuō)它們能夠如實(shí)地產(chǎn)生與制造芯片中處理器相同的結果運行代碼。然而,處理器接口的逐個(gè)周期行為可能無(wú)法 匹配實(shí)際處理器內核的行為。

在開(kāi)發(fā)多內核無(wú)線(xiàn)設備時(shí)ISS模型的缺點(diǎn)是一個(gè)大問(wèn)題。由于對緩存和存儲器的訪(fǎng)問(wèn)不具有周期精確 性,因此無(wú)法精確測量存儲器性能,也無(wú)法進(jìn)行詳細的架構折衷。此外,針對SoC的剩余部分將ISS和硬件設計連接起來(lái)需要周期精確性,單憑指令精確性將極 大地限制可以執行的軟硬件協(xié)同仿真的數量。而且不準確的時(shí)序將意味著(zhù)處理器內核之間的交互操作有可能不匹配實(shí)際運行情況,從而導致芯片和硬件原型制造出來(lái) 以后還要做進(jìn)一步的軟件開(kāi)發(fā)和反復調試。

使用獨立的ISS模型會(huì )給調試帶來(lái)很大的限制。由于單個(gè)模型之間缺少同步機制,在試 圖調試故障測試案例時(shí)很難理解處理器之間是如何交互信息的。另外,由于內核周邊環(huán)境中而不是內核本身內的時(shí)序問(wèn)題會(huì )導致許多錯誤發(fā)生(如競態(tài)條件和死 鎖),因此使用單步執行調試根本無(wú)法捕獲這些錯誤。

從傳統角度看唯一的替代方案是針對處理器內核使用周期精確性仿真模型。這 種模型犧牲速度換取精度,由于運行速度太慢,仿真中只能執行關(guān)鍵代碼中的一小部分。然而在單內核芯片中,周期精確模型允許詳盡的測量,與硬件設計有更多的 交互,可提供精確調試所需的深度可觀(guān)察性。只有這些模型被鏈接進(jìn)一個(gè)公共驗證環(huán)境、而且速度不重要的條件下多內核調試才可能獲得相同的好處。

多內核無(wú)線(xiàn)設計師真正需要的解決方案需要具有很高的仿真速度、完全的周期精確以及支持不同處理器之間精確控制和交互調試的集成環(huán)境。而能夠滿(mǎn)足所有這些要求的唯一已知解決方案就是虛擬系統原型技術(shù)。

虛擬系統原型

虛 擬系統原型是一個(gè)基于軟件仿真、時(shí)序精確的電子系統級(ESL)模型,首先使用于架構級,然后在整個(gè)設計周期內作為可執行的黃金參考模型。虛擬系統原型可 以包含周期精確、所執行的編譯鏈接目標代碼與實(shí)際硬件相同的虛擬處理器模型,因此可以準確地預測系統的實(shí)際行為。還可以增加總線(xiàn)、外圍器件和其它硬件設計 部分的周期精確模型,以便虛擬系統原型能夠為多內核的完整行為建模。

虛擬系統原型通過(guò)混合和匹配硬件和軟件部分實(shí)施架構開(kāi)發(fā)。針對實(shí)際行為建模的精確測量可以幫助系統架構師在開(kāi)發(fā)過(guò)程早期進(jìn)行精確的軟硬件折衷。當建立最初的系統架構模型后,虛擬系統原型就能成為可執行的系統規范來(lái)進(jìn)一步推進(jìn)具體軟硬件實(shí)現的并行開(kāi)發(fā)。

圖1 給出了與其它基于軟件方法相比之下的虛擬系統原型中處理器模型的性能。由于可以同時(shí)提供高速和周期精確性,虛擬系統原型在SoC開(kāi)發(fā)中扮演著(zhù)非常重要的角 色。而且虛擬系統原型可以運行在標準PC平臺之上,因此它們能夠很容易地發(fā)布給系統架構師、軟件工程師和硬件設計師,甚至在地理上分散的團隊成員。

在 本例中,為了實(shí)現虛擬系統原型的高效仿真,VaST系統技術(shù)公司同時(shí)提供了模型和基礎架構。VaST仿真內核能夠在包括處理器內核、總線(xiàn)和外圍器件在內的 各個(gè)模塊間實(shí)現精確的同步式交互,同時(shí)還能促進(jìn)與第三方調試器的透明通信。由于能夠執行完整的系統級單步調試,因此能為調試提供時(shí)序精確性以匹配實(shí)際的配 置。

多內核調試任何多內核SoC設計都會(huì )面臨一些常見(jiàn)的調試挑戰。由于多處理器和外圍器件之間存在復雜交互,因此有許多通信鏈接需要深層次的觀(guān)察和調試才能確保生成高質(zhì)量的軟件。

對 于非常依賴(lài)于通過(guò)存儲器進(jìn)行同步的設計來(lái)說(shuō),常見(jiàn)的缺陷包括不正確的存儲器訪(fǎng)問(wèn)仲裁和不希望的數據差錯。一些其它系統通過(guò)專(zhuān)用主機端口進(jìn)行直接通信,這是 管理通信的一種方便有效的方式。采用這種方法的系統常會(huì )發(fā)生同步問(wèn)題,如果沒(méi)有仔細進(jìn)行設計和驗證,可能會(huì )造成系統中斷甚至死鎖,這對調試來(lái)說(shuō)是也是一個(gè) 艱巨的挑戰。

目前的關(guān)鍵是要能精確地評估各項系統性能、調試所有缺陷以便通過(guò)修改架構或實(shí)現糾正這些缺陷。典型問(wèn)題與總線(xiàn)寬度以及由于大業(yè)務(wù)量引起的時(shí)延有關(guān),這二方面問(wèn)題都是語(yǔ)音分析和綜合類(lèi)的實(shí)時(shí)應用所特有的,因為實(shí)時(shí)應用需要獲得性能的保證。

總之,在無(wú)線(xiàn)SoC驗證期間必須調試和解決的典型問(wèn)題有:


* 共享存儲器應用


。數據混亂


。竟態(tài)條件


* 直接通信鏈路


。死鎖


。中斷


。缺輸入


* 處理器性能


。緩存


。管線(xiàn)中斷


。缺輸入


* 系統總線(xiàn)性能


。擁塞


* 外圍器件性能


。時(shí)延

通 過(guò)提供綜合的驗證環(huán)境以及能夠快速執行實(shí)際代碼的一致性處理器模型,虛擬系統原型能使所有這些問(wèn)題的調試變得更加容易。與其它基于軟件的方法相比,虛擬系 統原型能夠更加容易地設置復雜的測試方案,而且由于能夠鏈接到第三方調試器,在單步執行中能夠更加容易地全面觀(guān)察設計內部細節。利用虛擬系統原型調試這些 問(wèn)題的最關(guān)鍵點(diǎn)如圖2所示。

結論

設計、驗證和調試一個(gè)復雜的多內核無(wú)線(xiàn)SoC不 是一件簡(jiǎn)單的事情。調試器只能提供較差的硬件內部可見(jiàn)性,再加上成本和進(jìn)度的壓力都要求使用基于軟件的方法。不幸的是,傳統的軟件技術(shù)存在速度和精度問(wèn) 題,極大地限制了其測試和調試與處理器間同步、共享資源競爭以及性能有關(guān)的常見(jiàn)問(wèn)題的能力。

利用虛擬系統原型能夠盡早實(shí)施軟 件開(kāi)發(fā)和調試,并具有更好的可觀(guān)察性能。從上述帶2個(gè)ARM CPU內核和1個(gè)StarCore處理器內核的設計實(shí)例可以看出,控制、測量和調試復雜多內核交互操作的能力是項目成功的關(guān)鍵。實(shí)現這種解決方案的回報是 巨大的:高效的架構開(kāi)發(fā),并行的軟硬件開(kāi)發(fā),產(chǎn)品化芯片首次流片成功帶來(lái)的巨大商業(yè)機會(huì )等等。

未來(lái)SoC測試面臨的挑戰

SOC 內部晶體管集成度的增長(cháng)遠遠高于芯片引腳的增長(cháng),有限的管腳資源使得外部數據帶寬和內部數據帶寬之間的差異越來(lái)越大。這種差異不僅降低了內部模塊的可測 性,還加大了間接復用方案中測試生成的難度。同時(shí),具有一定故障覆蓋率的測試數據會(huì )隨著(zhù)電路集成度和規模的增加而增加,大量的測試數據會(huì )對直接復用方案中 的測試訪(fǎng)問(wèn)的頻率和帶寬提出要求。

SOC嵌入了類(lèi)型豐富的,一些公司已將模擬電路、數字電路、嵌入式DRAM等不同 形式的模塊集成到芯片中。隨著(zhù)技術(shù)的發(fā)展,將有更多的電路類(lèi)型被集成到SOC中,如嵌入式的FPGA、Flash、射頻發(fā)生器等?;旌闲盘枩y試在SOC測 試中占有重要地位,現有的復用方案還未解決該問(wèn)題。

迄今為止,還沒(méi)有一個(gè)貫穿和SOC設計始終的完整的SOC測試解 決方案,因為這不僅需要盡快訂立相關(guān)的國際標準,還需要進(jìn)行一些關(guān)于復用方法上的研究,例如,如何在進(jìn)行的測試開(kāi)發(fā)中引入可復用的因素,使得模塊 級的測試信息對被集成環(huán)境具有更好的適應性,能被更高層電路模塊的測試開(kāi)發(fā)高效率地復用;研究基于復用的測試集成和優(yōu)化技術(shù),利用已有模塊測試信息,集成 出更高層模塊的測試并保證其可復用性等。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>