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