亚洲国产高清在线观看视频_日韩欧美国产aⅴ另类_奇米影视7777久久精品_欧美 国产 亚洲 卡通 综合

您的位置:首頁 > 熱點 >

雙向飛碟射擊與設(shè)計調(diào)試

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

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

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

圖 1 要在視野受限的情況下進行雙向飛碟射擊對射手來說是一項巨大的挑戰(zhàn)。

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

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

更讓人沮喪的是,調(diào)試具有隨機性,這就要求在發(fā)現(xiàn)錯誤之前要不斷地重復(fù)運行。如果錯誤不具備確定性,也就是說,其可能不會在后續(xù)運行中重復(fù)出現(xiàn),那么尋找錯誤的過程將會是一場噩夢。

關(guān)鍵未知因素

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

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

在線調(diào)試問題

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

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

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

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

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

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

來看下使用第三方 IP 填充 SoC的例子。屢次測試表明,當(dāng) IP 核單獨工作時,其能起到作用;但當(dāng)它內(nèi)嵌于 SoC時,卻變得完全無效。利用 ICE 模式對深埋于 DUT 的 IP 進行調(diào)試可能會導(dǎo)致驗證團隊沒日沒夜地加班。

圖 3 連續(xù)運行時,會在不同的時間/區(qū)域內(nèi)顯示相同的設(shè)計錯誤或者根本不顯示任何設(shè)計錯誤。

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

測試平臺可用性

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

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

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

標(biāo)簽: SoC FPGA

相關(guān)閱讀

南平市| 隆德县| 朝阳区| 石河子市| 沂南县| 成都市| 南充市| 额尔古纳市| 孟村| 四会市| 五莲县| 西峡县| 舟山市| 湾仔区| 平山县| 博爱县| 定边县| 望城县| 衢州市| 车致| 新巴尔虎右旗| 泸溪县| 太白县| 乌拉特中旗| 福泉市| 博乐市| 锦州市| 阳原县| 金山区| 古丈县| 夏邑县| 阿拉善盟| 利津县| 阿合奇县| 武定县| 泽库县| 望城县| 平南县| 南充市| 亚东县| 夏河县|