|
FPGA是可編程芯片,因此FPGA的設(shè)計方法包括硬件設(shè)計和軟件設(shè)計兩部分。硬件包括FPGA芯片電路、 存儲器、輸入輸出接口電路以及其他設(shè)備,軟件即是相應(yīng)的HDL程序以及最新才流行的嵌入式C程序。 目前微電子技術(shù)已經(jīng)發(fā)展到SOC階段,即集成系統(tǒng)(Integrated System)階段,相對于集成電路(IC)的設(shè)計思想有著革命性的變化。SOC是一個復(fù)雜的系統(tǒng),它將一個完整產(chǎn)品的功能集成在一個芯片上,包括核心處理器、存儲單元、硬件加速單元以及眾多的外部設(shè)備接口等,具有設(shè)計周期長、實現(xiàn)成本高等特點,因此其設(shè)計方法必然是自頂向下的從系統(tǒng)級到功能模塊的軟、硬件協(xié)同設(shè)計,達到軟、硬件的無縫結(jié)合。 這么龐大的工作量顯然超出了單個工程師的能力,因此需要按照層次化、結(jié)構(gòu)化的設(shè)計方法來實施。首先由總設(shè)計師將整個軟件開發(fā)任務(wù)劃分為若干個可操作的模塊,并對其接口和資源進行評估,編制出相應(yīng)的行為或結(jié)構(gòu)模型,再將其分配給下一層的設(shè)計師。這就允許多個設(shè)計者同時設(shè)計一個硬件系統(tǒng)中的不同模塊,并為自己所設(shè)計的模塊負責(zé);然后由上層設(shè)計師對下層模塊進行功能驗證。 自頂向下的設(shè)計流程從系統(tǒng)級設(shè)計開始,劃分為若干個二級單元,然后再把各個二級單元劃分為下一層次的基本單元,一直下去,直到能夠使用基本模塊或者IP核直接實現(xiàn)為止,流行的FPGA開發(fā)工具都提供了層次化管理,可以有效地梳理錯綜復(fù)雜的層次,能夠方便地查看某一層次模塊的源代碼以修改錯誤。 在工程實踐中,還存在軟件編譯時長的問題。由于大型設(shè)計包含多個復(fù)雜的功能模塊,其時序收斂與仿真驗證復(fù)雜度很高,為了滿足時序指標的要求,往往需要反復(fù)修改源文件,再對所修改的新版本進行重新編譯,直到滿足要求為止。這里面存在兩個問題:首先,軟件編譯一次需要長達數(shù)小時甚至數(shù)周的時間,這是開發(fā)所不能容忍的;其次,重新編譯和布局布線后結(jié)果差異很大,會將已滿足時序的電路破壞。因此必須提出一種有效提高設(shè)計性能,繼承已有結(jié)果、便于團隊化設(shè)計的軟件工具。FPGA廠商意識到這類需求,由此開發(fā)出了相應(yīng)的邏輯鎖定和增量設(shè)計的軟件工具。例如,賽靈思公司的解決方案就是PlanAhead。 Planahead允許高層設(shè)計者為不同的模塊劃分相應(yīng)PFGA芯片區(qū)域,并允許底層設(shè)計者在所給定的區(qū)域內(nèi)獨立地進行設(shè)計、實現(xiàn)和優(yōu)化,等各個模塊都正確后,再進行設(shè)計整合。如果在設(shè)計整合中出現(xiàn)錯誤,單獨修改即可,不會影響到其它模塊。Planahead將結(jié)構(gòu)化設(shè)計方法、團隊化合作設(shè)計方法以及重用繼承設(shè)計方法三者完美地結(jié)合在一起,有效地提高了設(shè)計效率,縮短了設(shè)計周期。 不過從其描述可以看出,新型的設(shè)計方法對系統(tǒng)頂層設(shè)計師有很高的要求。在設(shè)計初期,他們不僅要評估每個子模塊所消耗的資源,還需要給出相應(yīng)的時序關(guān)系;在設(shè)計后期,需要根據(jù)底層模塊的實現(xiàn)情況完成相應(yīng)的修訂。 4.1 典型FPGA開發(fā)流程與注意事項 FPGA的設(shè)計流程就是利用EDA開發(fā)軟件和編程工具對FPGA芯片進行開發(fā)的過程。典型FPGA的開發(fā)流程一般如圖4.1.1所示,包括功能定義/器件選型、設(shè)計輸入、功能仿真、綜合優(yōu)化、綜合后仿真、實現(xiàn)、布線后仿真、板級仿真以及芯片編程與調(diào)試等主要步驟。 |