使用FPGA測試的一些有效方法(05-100)
引言
本文引用地址:http://m.butianyuan.cn/article/91577.htm隨著芯片設(shè)計(jì)技術(shù)越來越成熟,越來越多的產(chǎn)品選擇使用SoC的技術(shù)實(shí)現(xiàn)。然而,每一次流片不一定都能達(dá)到預(yù)期的效果。根據(jù)Synopsys公司統(tǒng)計(jì),有超過60%的公司需要重新流片。在這個(gè)過程中浪費(fèi)了大量的金錢,一次修正平均的花費(fèi)就超過100萬美元。如果一旦錯過了商品推出的最佳時(shí)機(jī),那么錯過市場機(jī)會的代價(jià)則以數(shù)千萬美元計(jì),甚至更高。據(jù)統(tǒng)計(jì),在需要respin的芯片中有43%是在前端的設(shè)計(jì)和實(shí)現(xiàn)的時(shí)候產(chǎn)生的邏輯功能錯誤。如何避免或減小如此高的風(fēng)險(xiǎn)是每一個(gè)設(shè)計(jì)單位思考的問題。
現(xiàn)在行業(yè)內(nèi)有兩種解決此問題的方案,第一種方案是利用越來越先進(jìn)的EDA仿真工具仿真測試。業(yè)界產(chǎn)品的兩大巨頭Synopsys和Cadance都推出了自己的解決方案。然而,EDA工具非常昂貴,卻不一定能滿足每一個(gè)項(xiàng)目的要求。另外,EDA工具的仿真時(shí)間很長。以一套無線通信系統(tǒng)舉例,初始化的過程就需要半天的時(shí)間,每收發(fā)一幀都需要3-4個(gè)小時(shí),因此在有限的時(shí)間內(nèi)不可能完成比較全面的測試(測試時(shí)采取的都是并行運(yùn)算的方式,工作站都是Sun Blade2000的配置)。最后,仿真軟件再完善也不是實(shí)際的硬件操作,因此某些只可能在硬件上發(fā)生的問題,無法通過仿真來獲得。比如某些時(shí)序問題和功耗問題。另外,硬件的“脾氣”比較古怪,經(jīng)常會出現(xiàn)一些意想不到的狀態(tài),這些都是仿真軟件無法模擬出來的。第二種解決方案是采用FPGA進(jìn)行真實(shí)的硬件測試。比如Xilinx公司的EasyPath解決方案。然而使用這種方案也面臨著一些需要解決的問題,比如如何使設(shè)計(jì)的產(chǎn)品可以既在ASIC上工作,又在FPGA上正常工作,如何保證FPGA與ASIC的一致性。針對這些問題的解決方法是本文重點(diǎn)討論的內(nèi)容。
本文的測試實(shí)例和測試方法均來源于北京市嵌入式重點(diǎn)實(shí)驗(yàn)室的無線局域網(wǎng)芯片項(xiàng)目,本項(xiàng)目的產(chǎn)品目前已經(jīng)成功流片。這些測試方法的應(yīng)用對項(xiàng)目的順利進(jìn)展起到了關(guān)鍵性的作用,起到了良好的效果。
時(shí)序問題的解決
FPGA可以接受的時(shí)鐘和所允許的時(shí)序遠(yuǎn)遠(yuǎn)低于ASIC。但作為ASIC產(chǎn)品而言,在設(shè)計(jì)的時(shí)候又往往采取較高的時(shí)鐘速率。由于ASIC時(shí)鐘樹與布線相對自由,故對于高速率設(shè)計(jì)解決起來相對容易。對于Xilinx FPGA而言,盡管采用了90nm工藝的Virtex-4可以支持的性能高達(dá)500MHz,但是其時(shí)鐘樹和布線資源相對固定,因此一旦在編譯和布局布線的時(shí)候處理不當(dāng),就會產(chǎn)生時(shí)序沖突(timing violation)。產(chǎn)生時(shí)序沖突的結(jié)果,輕則使設(shè)計(jì)的邏輯與實(shí)際布局布線后的網(wǎng)表不一致,重則導(dǎo)致布局布線根本無法通過,從而致使驗(yàn)證無法進(jìn)行。
我們在解決時(shí)序問題的時(shí)候采取了五種不同的方法。其中一種方法是應(yīng)在設(shè)計(jì)中就加以注意,兩種在綜合的時(shí)候進(jìn)行,還有兩種在布局布線時(shí)采用。
設(shè)計(jì)過程中注意時(shí)序問題
若希望設(shè)計(jì)的產(chǎn)品能夠在FPGA驗(yàn)證平臺上順利的完成驗(yàn)證,在設(shè)計(jì)過程中就需要注意盡量多的使用FPGA的內(nèi)部資源,如DSP48,乘法器,RAM,DCM等。
在我們的設(shè)計(jì)中有不少濾波器,這些濾波器正好可以使用DSP48這個(gè)模塊。該模塊如圖1所示,為乘加結(jié)構(gòu)。濾波器若不使用這種模塊,則需進(jìn)行大量的乘、加運(yùn)算。這樣不但浪費(fèi)資源,而且很容易導(dǎo)致時(shí)序無法滿足要求。而如果使用這樣的模塊,則基本上所有的濾波器都不再處于“最差路徑”上。
對于乘法器,如果使用slice搭建不僅浪費(fèi)資源,而且性能差,位寬一旦比較寬就會導(dǎo)致時(shí)序出現(xiàn)問題。Xilinx的ISE中配有Core Generator這個(gè)工具。通過該工具可以生成需要的乘法器。使用這些乘法器來代替普通的乘法器,可以達(dá)到滿意的效果。除了乘法器,還可以使用該工具產(chǎn)生RAM和DCM等。
圖 1 DSP48示意圖
評論