驗證FPGA設計:模擬,仿真,還是碰運氣?
一種可為大家接受的方法
根據與FPGA廠(chǎng)商和用戶(hù)的討論,我們可以看到對模擬和仿真(圖1)混合驗證流程大家基本達成一致意見(jiàn)。這種流程首先對設計開(kāi)始元件塊級的模擬——不是傳統上ASIC所用的那種窮舉式的力求完美的模擬,而更像是對實(shí)際情況進(jìn)行檢查。其目標是驗證元件塊可用、引腳工作基本正確、在實(shí)驗環(huán)境中可滿(mǎn)足FPGA 的時(shí)序需要。
在此階段,很多開(kāi)發(fā)組將某個(gè)版本的塊轉入FPGA并開(kāi)始更為徹底的電路中測試。如果此電路塊(如視頻編解器)需要很長(cháng)的高速數據流來(lái)驗證功能或是包括高速I(mǎi)/O功能,則該方法尤為常見(jiàn)。在其他情況下,繼續對塊進(jìn)行模擬工作,直到所有問(wèn)題都經(jīng)過(guò)驗證,可以進(jìn)行集成為止。
根據大家的一致意見(jiàn),當開(kāi)發(fā)組開(kāi)始將塊集成時(shí)——建立試驗系統時(shí)——FPGA 才真正被更多人使用。這里,可能就是因為設計太大才無(wú)法進(jìn)行快速模擬,或是對于已知可正常工作的塊,在FPGA上解決集成問(wèn)題可能要比在模擬器上效率更高點(diǎn)。
但是,根據大家的意見(jiàn),從模擬轉到仿真并不是單步的可逆步驟。正如軟件開(kāi)發(fā)中并行進(jìn)行模擬一樣,模擬工作在系統仿真期間也在繼續。多數開(kāi)發(fā)組利用FPGA 仿真捕捉和隔離缺陷,然后將其送回模擬組診斷。在FPGA上做詳細診斷是非常痛苦的工作。
這里先總體敘述當前的情況,然后指出該方法的幾個(gè)嚴重缺點(diǎn)。首先,在兩個(gè)環(huán)境間來(lái)回傳送測試平臺數據很困難。似乎還沒(méi)有方法可以將創(chuàng )建測試的模擬指令自動(dòng)映射到實(shí)施同一測試的 FPGA 結構。第二,各大 FPGA 廠(chǎng)商都可提供的嵌入式RISC核資源似乎遠沒(méi)有得到充分利用,它可以管理數據和控制測試,但是又是與模擬測試平臺分開(kāi)的。理論上說(shuō),模擬組可以將其轉為嵌入式處理器核的C代碼,而不是轉為FPGA的RTL。第三,沒(méi)有簡(jiǎn)單的途徑可以將FPGA 試驗中開(kāi)發(fā)組收集的數據送回模擬平臺。最后,隨著(zhù)模擬領(lǐng)域基于斷言的驗證工作不斷增多,FPGA 側急需一種類(lèi)似的基于斷言的工具。
基于 FPGA的仿真系統銷(xiāo)售廠(chǎng)商對這些問(wèn)題提出了應對措施(見(jiàn)附文 《解決覆蓋空隙的一些思路》),證明了這些問(wèn)題是確實(shí)存在的。這里的例子有Eve公司的系統;模擬加速器,如GateRocket;以及“big-iron”(大型的)仿真盒,如Cadence的Palladium。至于這個(gè)基礎平臺會(huì )發(fā)展為FPGA驗證領(lǐng)域常見(jiàn)的那種專(zhuān)用板卡級仿真平臺,還是仍然會(huì )是昂貴的加速器和仿真系統的一種變形,我們尚無(wú)法知道。
評論