<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í)間:2015-12-17 來(lái)源:網(wǎng)絡(luò ) 收藏

  縱觀(guān)歷史,電路內仿真 (ICE) 模式是使用硬件仿真器的第一種方式,也是迄今為止最為流行的方法。在這種模式中,需將硬件仿真器插入物理目標系統上的插孔,以此代替待開(kāi)發(fā)的芯片,從而利用實(shí)時(shí)數據支持運用和調試硬件仿真器內部映射的待測設計(DUT)。

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

  然而,這種公認的能夠引人注目的驗證方法卻存在一系列問(wèn)題,其中最嚴重的問(wèn)題便是它的隨機性。也就是說(shuō),當調試DUT時(shí),它缺少確定性或者可重復性。為了更好地理解這一點(diǎn),我們可以做個(gè)形象類(lèi)比。

  讓我們來(lái)看看雙向飛碟射擊。這是一種射擊運動(dòng),在這項運動(dòng)中,會(huì )將碟靶從靶場(chǎng)上扔出以模擬鳥(niǎo)類(lèi)的飛行狀態(tài)。我們可以增加碟靶的扭轉方向,增加它的難度。讓射手戴副眼鏡,以限制他的視野范圍,這樣射手必須“猜測”碟靶的軌跡,因為碟靶的每一次軌跡都不一樣。而驗證工程師在 ICE 模式中調試芯片設計時(shí),恰恰也會(huì )遇到這樣的難題。要在 ICE 模式中找出一個(gè)錯誤就像在狹窄的視野中試圖擊中碟靶一樣困難。


  圖 1 要在視野受限的情況下進(jìn)行雙向飛碟射擊對射手來(lái)說(shuō)是一項巨大的挑戰。

  我們不斷總結過(guò)去的經(jīng)驗,持續改進(jìn)。這二十多年來(lái),不斷有調查發(fā)現設計驗證消耗的時(shí)間大約占了設計周期的 70% 左右。往好的方面看,設計驗證是一項活動(dòng),它或多或少地可以根據預測事先進(jìn)行安排。但是設計調試則是一項追擊,您無(wú)法事先對其進(jìn)行規劃。理由很簡(jiǎn)單,錯誤往往會(huì )因為未知的原因出其不意地出現,而且您也無(wú)法預測它出現的時(shí)間和位置。

  可以想象,在利用大量嵌入式軟件和硬件進(jìn)行片上系統 () 設計時(shí),總有些錯誤會(huì )隱藏在設計的某個(gè)未知角落里,無(wú)論是在硬件中還是在軟件中,而且這些錯誤可能只有在長(cháng)期執行后方能被發(fā)現。在一個(gè)錯誤被發(fā)現之前,很有可能已歷經(jīng)了數十億的時(shí)鐘周期。

  更讓人沮喪的是,調試具有隨機性,這就要求在發(fā)現錯誤之前要不斷地重復運行。如果錯誤不具備確定性,也就是說(shuō),其可能不會(huì )在后續運行中重復出現,那么尋找錯誤的過(guò)程將會(huì )是一場(chǎng)噩夢(mèng)。

  關(guān)鍵未知因素

  如果將其應用于數億門(mén)級的設計,而這些設計需要經(jīng)過(guò)數十億個(gè)長(cháng)序列驗證周期的調試,那么可能存在三個(gè)關(guān)鍵未知因素:地點(diǎn)、時(shí)間和事由。這三個(gè)因素足以延誤整個(gè)測試計劃的進(jìn)度,即便該計劃已經(jīng)過(guò)深思熟慮。在一個(gè)競爭激烈的市場(chǎng)中,若一項新產(chǎn)品延期三個(gè)月上市,那么它將造成 33% 的潛在總收益損失。這就足以說(shuō)明驗證解決方案的價(jià)值所在了。這時(shí)我想到了硬件加速仿真。硬件仿真器憑借其極速性能加快執行和調試的速度。事實(shí)上,它們的快速執行速度便是它們的設計初衷。

  這個(gè)概念很簡(jiǎn)單,即對照需要插入待開(kāi)發(fā)芯片的實(shí)際物理目標系統來(lái)檢查 DUT。無(wú)需再編寫(xiě)測試矢量或者測試激勵。趕緊在實(shí)際應用中全面施行這一流程吧。想必,要在模糊的設計區域里尋找令人厭煩的隱匿錯誤,實(shí)際應用比任何軟件測試平臺都更為有效,對吧?

  在線(xiàn)調試問(wèn)題

  結果證明,閃閃發(fā)光的并非都是金子。盡管它的功能非常誘人,但要在 ICE 模式中調試芯片設計會(huì )顯得過(guò)于繁瑣而又令人沮喪,究其原因,主要有兩點(diǎn)。第一點(diǎn),硬件仿真器必須要與目標系統相連。就此而言,由于硬件仿真器的速度可能比物理目標系統慢上三個(gè)數量級,因此就需要有一個(gè)速度適配器,可以調解物理目標系統較快的時(shí)鐘速度,使之與硬件仿真器的相對較慢的速度相匹配?;旧?,該適配器是一個(gè)先進(jìn)先出 (FIFO) 的寄存器,它通常會(huì )通過(guò)犧牲部分功能和準確性來(lái)?yè)Q取性能。同時(shí),PCIe 或以太網(wǎng)等高速協(xié)議也將會(huì )減少,以應對 FIFO 內在能力的局限性。

  適配器和連接電纜增加了設置的物理關(guān)聯(lián)性和弱點(diǎn),同時(shí)也對系統的可靠性產(chǎn)生了不利影響。此外,設置僅局限于每個(gè)協(xié)議一個(gè)測試實(shí)例,且不允許存在特殊用例測試或任何“假設”分析。最后,如果沒(méi)有人在現場(chǎng)提供幫助,將仿真器插入和拔出目標系統,則無(wú)法遠程訪(fǎng)問(wèn)ICE 模式。

  第二點(diǎn),也是最容易被人低估的一個(gè)缺點(diǎn),便是它缺少確定性行為。這一特性會(huì )使目標系統用以驗證設計的方法變得折中,還會(huì )延長(cháng)在ICE模式下發(fā)現錯誤的時(shí)間。在 ICE 模式中,使用硬件仿真器追蹤 DUT 的錯誤,需要在特定事件被觸發(fā)后,以最高速捕捉設計中每個(gè)寄存器的行為。在基于定制硅的硬件仿真器中,無(wú)需編譯連接程序,就可將每個(gè)設計寄存器連接到追蹤存儲器中。在運行時(shí)間方面,驗證工程師可進(jìn)行權衡折衷,即使用追蹤時(shí)鐘周期的數量來(lái)交換需要追蹤的設計寄存器的數量。

  在商用的、基于的硬件仿真器中,只有少量的設計寄存器可以通過(guò)編譯程序連接到追蹤存儲器上。增設或者更換追蹤寄存器就要求重新編譯設計,同時(shí)大幅減少設計/迭代時(shí)間。利用這兩種硬件仿真器,用戶(hù)可以通過(guò)減少被追蹤的寄存器的數量來(lái)增加追蹤深度,反之則亦然。


  圖 2 追蹤窗口(周期 X 信號)受邏輯分析儀中內存容量的限制。

  因此,用戶(hù)可以不再為了找到自己感興趣的調試窗口和轉儲正確的波形而進(jìn)行多輪——很可能是數百次的運行。但是真正的問(wèn)題是,每次運行都可能會(huì )在不同的時(shí)間點(diǎn)發(fā)現錯誤——相同的錯誤;甚至更糟糕的是,還可能因為不可預測的行為而發(fā)現不了任何錯誤。還記得雙向飛碟射擊的例子嗎?

  來(lái)看下使用第三方 IP 填充 的例子。屢次測試表明,當 IP 核單獨工作時(shí),其能起到作用;但當它內嵌于 時(shí),卻變得完全無(wú)效。利用 ICE 模式對深埋于 DUT 的 IP 進(jìn)行調試可能會(huì )導致驗證團隊沒(méi)日沒(méi)夜地加班。


  圖 3 連續運行時(shí),會(huì )在不同的時(shí)間/區域內顯示相同的設計錯誤或者根本不顯示任何設計錯誤。

  值得高興的是,隨著(zhù)基于事務(wù)處理的協(xié)同建模技術(shù)的出現,硬件仿真領(lǐng)域也發(fā)生了翻天覆地的變化。通過(guò)移除物理目標系統,并使用虛擬測試環(huán)境進(jìn)行代替,所有問(wèn)題都消失不見(jiàn)了。這種虛擬測試環(huán)境是通過(guò) C++/SystemVerilog 從高抽象層次進(jìn)行描述,并通過(guò)事務(wù)處理器與 DUT 相連。

  測試平臺可用性

  可以在很短的時(shí)間內通過(guò) SystemVerilog 創(chuàng )建高層次測試平臺,這樣不僅符合傳統的 Verilog 的要求而且錯誤也較少。事務(wù)處理器都有現貨可買(mǎi),無(wú)需定制。還有,整個(gè)測試環(huán)境將目標鎖定在多媒體、網(wǎng)絡(luò )和存儲等特定的市場(chǎng)應用程序上,涵蓋了虛擬測試程序和事務(wù)處理器,而這些都可在 Mentor Graphics 旗下支持其 Veloce2 硬件仿真平臺的 VirtuaLAB 品牌中找到。

  更重要的是,如今的設計激勵是具確定性的,因此可以更快完成調試。事務(wù)處理器可以實(shí)現從HDL軟件仿真到硬件仿真的平穩過(guò)渡。時(shí)鐘可以停止,也可以進(jìn)行單步調試;可以進(jìn)行情境“假設”分析;還可以對特殊用例進(jìn)行建模。如今,工程師可以通過(guò)編寫(xiě)寄存器傳輸級 (RTL) 代碼來(lái)設計芯片,而不需要利用實(shí)驗室設備來(lái)測試他們的設計。目前,遠程訪(fǎng)問(wèn)已經(jīng)實(shí)現了而且會(huì )越來(lái)越普及。

  將 SystemVerilog 斷言與事務(wù)處理器結合,驗證工程師們可以利用無(wú)限的調試功能監控他們的設計,并且不會(huì )降低速度。如此,工程師們就可以盡情設計,不再會(huì )受到內存空間或者時(shí)間的限制,然后盡快消除錯誤。自此以后,工程師與視野受到限制的雙向飛碟射擊比賽的選手將無(wú)任何共通之處。



關(guān)鍵詞: SoC FPGA

評論


相關(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>