解析FPGA設計流程及其布線(xiàn)資源
1、電路設計與輸入
電路設計與輸入是指通過(guò)某些規范的描述方式,將工程師電路構思輸入給EDA工具。常用的設計方法有硬件描述語(yǔ)言(HDL)和原理圖設計輸入方法等。原理圖設計輸入法在早期應用得比較廣泛,它根據設計要求,選用器件、繪制原理圖、完成輸入過(guò)程。這種方法的有點(diǎn)是直觀(guān)、便于理解、元器件庫資源豐富。但是在大型設計中,這種方法的可維護性較差,不利于模塊構造與重用。更主要的缺點(diǎn)就是當所選用芯片升級換代后,所有的原理圖都要做相應的改動(dòng)。目前進(jìn)行大型工程設計時(shí),最常用的設計方法是HDL設計輸入法,其中影響最為廣泛的HDL語(yǔ)言是VHDL和Verilog HDL。他們的共同特點(diǎn)是利用由頂向下設計,利于模塊的劃分與復用,可移植性好,通用性好,設計不因芯片的工藝與結構不同而變化,更利于向ASIC的移植。波形輸入和狀態(tài)機輸入方法是兩種常用的輔助設計輸入方法:使用波形輸入時(shí),志耘愛(ài)繪制出激勵波形與輸出波形,EDA軟件就能自動(dòng)地根據響應關(guān)系進(jìn)行設計;使用狀態(tài)機輸入法時(shí),設計者只需要畫(huà)出狀態(tài)轉移圖,EDA軟件就能生成相應的HDL代碼或原理圖,使用十分方便。但是需要指出的是,波形輸入和狀態(tài)機輸入方法只能在某些特殊情況下緩解設計者的工作量,并不適合所有的設計。
2、功能仿真
電路設計完成以后,要用專(zhuān)用的仿真工具對設計進(jìn)行功能仿真,驗證電路功能是否符合設計要求。功能仿真有時(shí)也稱(chēng)為前仿真。通過(guò)仿真能及時(shí)發(fā)現設計中的錯誤,加快設計進(jìn)度,提高設計的可靠性。
3、綜合優(yōu)化
綜合優(yōu)化(Synthesize)是指將HDL語(yǔ)言、原理圖等設計輸入翻譯成由與、或、非門(mén),RAM,觸發(fā)器等基本邏輯單元組成的邏輯連接(網(wǎng)表),并根據目標與要求(約束條件)優(yōu)化所生成的邏輯連接,輸出edf和edn等標準格式的網(wǎng)表文件,供FPGA/CPLD廠(chǎng)家的布局布線(xiàn)器進(jìn)行實(shí)現。
4、綜合后仿真
綜合完成后需要檢查綜合結果是否與設計一致,做綜合后仿真。在仿真時(shí),把綜合生成的標準延時(shí)文件反標志到綜合仿真模型中去,可估計門(mén)延時(shí)帶來(lái)的影響。綜合后仿真雖然比功能仿真精確一些,但是只能估計門(mén)延時(shí),不能估計線(xiàn)延時(shí),仿真結果與布線(xiàn)后的實(shí)際情況還有一定的差距,并不十分準確。這種仿真的主要目的在于檢查綜合器的綜合結果是否與設計輸入一致。目前主流綜合工具日益成熟,對于一般性的設計,如果設計者確信自己標注明確,沒(méi)有綜合歧義發(fā)生,則可省略該步驟。但是如果在布局布線(xiàn)后仿真時(shí)發(fā)現有電路結構與設計意圖不符的現象,則常常需要回溯到綜合后仿真以確認是否時(shí)由于綜合歧義造成的問(wèn)題。
5、實(shí)現與布局布線(xiàn)
綜合結果的本質(zhì)是一些由與、或、非門(mén),觸發(fā)器,RAM等基本邏輯單元組成的邏輯網(wǎng)表,它與芯片的實(shí)際的配置情況還有較大的差距。此時(shí)應該使用FPGA/CPLD廠(chǎng)商提供的軟件工具,根據所選芯片的型號將綜合輸出的網(wǎng)表適配到具體FPGA/CPLD器件上,這個(gè)過(guò)程就叫做實(shí)現過(guò)程。因為只有器件的開(kāi)發(fā)商最了解器件的內部結構,所以實(shí)現步驟必須選用器件開(kāi)發(fā)商提供的工具。在實(shí)現過(guò)程中最主要的過(guò)程是布局布線(xiàn)(PAR)。所謂布局(Place),就是指將邏輯網(wǎng)表中的硬件原語(yǔ)或者底層單元合理地適配到FPGA內部的固有硬件結構上,布局的優(yōu)劣對設計的最終結果(在速度和面積兩個(gè)方面)影響很大。所謂布線(xiàn)(Route),是指根據布局的拓撲結構,利用FPGA內部的各種連線(xiàn)資源,合理正確連接各個(gè)元件的過(guò)程。FPGA的結構相對復雜,為了獲得更好的實(shí)現結果,特別是保證能夠滿(mǎn)足設計的時(shí)序條件,一般采用時(shí)序驅動(dòng)的引擎進(jìn)行布局布線(xiàn),所以對于不同的設計輸入,特別是不同的時(shí)序約束,獲得的布局布線(xiàn)結果一般有較大的差異。CPLD結構相對簡(jiǎn)單得多,其資源有限而且布線(xiàn)資源一般為交叉連接矩陣,故CPLD的布局布線(xiàn)過(guò)程相對簡(jiǎn)單明朗的多,一般稱(chēng)為適配過(guò)程。一般情況下,用戶(hù)可以通過(guò)設置參數指定布局布線(xiàn)的優(yōu)化準則,總的來(lái)說(shuō)優(yōu)化目標主要有兩個(gè)方面,面積和速度。一般根據設計的主要矛盾,選擇面積或者速度或者是兩者平衡等優(yōu)化目標,但是當兩者沖突時(shí),一般滿(mǎn)足時(shí)序約束要求更重要一些,此時(shí)選擇速度或時(shí)序優(yōu)化目標更佳。
6、時(shí)序仿真與驗證
將布局布線(xiàn)的延時(shí)信息反標注到設計網(wǎng)表中,所進(jìn)行的仿真就叫時(shí)序仿真或布局布線(xiàn)后仿真,也叫后仿真。該仿真的仿真延時(shí)文件包含的延時(shí)信息最全,不僅包含了門(mén)延時(shí),還包含了實(shí)際布線(xiàn)延時(shí),所以布局布線(xiàn)后仿真最準確,能夠較好的反映芯片的實(shí)際工作情況。一般來(lái)說(shuō),布線(xiàn)后仿真步驟必須進(jìn)行,通過(guò)布局布線(xiàn)后仿真能檢查設計時(shí)序與FPGA實(shí)際運行情況是否一致,確保設計的可靠性和穩定性。
3個(gè)不同階段的仿真小結>:
--功能仿真主要目的在于驗證語(yǔ)言設計的電路結構和功能是否和設計意圖相符。
--綜合后仿真主要目的在于驗證綜合后電路結構是否與設計意圖相符,是否存在歧義綜合結果。
--布局布線(xiàn)后仿真主要目的是驗證是否存在時(shí)序違規。
7、板級仿真與驗證
有些高速設計情況下還需要使用第三方的板級驗證工具進(jìn)行仿真與驗證。這些工具通過(guò)對設計的IBIS、HSPICE等模型的仿真,能較好地分析高速設計的信號完整性、電磁干擾等電路特性。
8、調試與加載配置
設計開(kāi)發(fā)的最后步驟就是在線(xiàn)調試或者將生成的配置文件寫(xiě)入芯片中進(jìn)行測試。示波器和邏輯分析儀是邏輯設計的主要調試工具。傳統的邏輯功能板級驗證手段是用邏輯分析儀分析信號,設計時(shí)要求FPGA和PCB設計人員保留一定數量FPGA管腳作為測試管腳,編寫(xiě)FPGA代碼時(shí)將需要觀(guān)測的信號作為模塊的輸出信號,在綜合實(shí)現時(shí)在把這些輸出信號鎖定到測試管腳上,然后連接邏輯分析儀的探頭到這些測試管腳,設定觸發(fā)條件,進(jìn)行觀(guān)測。
任何仿真或驗證步驟出現問(wèn)題,就需要根據錯誤定位返回到相應的步驟更改或者重新設計邏輯設計的主要調試工具。傳統的邏輯功能板級驗證手段是用邏輯分析儀分析信號,設計時(shí)要求FPGA和PCB設計人員保留一定數量FPGA管腳作為測試管腳,編寫(xiě)FPGA代碼時(shí)將需要觀(guān)測的信號作為模塊的輸出信號,在綜合實(shí)現時(shí)在把這些輸出信號鎖定到測試管腳上,然后連接邏輯分析儀的探頭到這些測試管腳,設定觸發(fā)條件,進(jìn)行觀(guān)測。
任何仿真或驗證步驟出現問(wèn)題,就需要根據錯誤定位返回到相應的步驟更改或者重新設計。
FPGA中豐富的布線(xiàn)資源
布線(xiàn)資源連通FPGA內部的所有單元,而連線(xiàn)的長(cháng)度和工藝決定著(zhù)信號在連線(xiàn)上的驅動(dòng)能力和傳輸速度。FPGA芯片內部有著(zhù)豐富的布線(xiàn)資源,根據工藝、長(cháng)度、寬度和分布位置的不同而劃分為4類(lèi)不同的類(lèi)別。
第一類(lèi)是全局布線(xiàn)資源,用于芯片內部全局時(shí)鐘和全局復位/置位的布線(xiàn);
第二類(lèi)是長(cháng)線(xiàn)資源,用以完成芯片Bank間的高速信號和第二全局時(shí)鐘信號的布線(xiàn);
第三類(lèi)是短線(xiàn)資源,用于完成基本邏輯單元之間的邏輯互連和布線(xiàn);
第四類(lèi)是分布式的布線(xiàn)資源,用于專(zhuān)有時(shí)鐘、復位等控制信號線(xiàn)。
在實(shí)際中設計者不需要直接選擇布線(xiàn)資源,布局布線(xiàn)器可自動(dòng)地根據輸入邏輯網(wǎng)表的拓撲結構和約束條件選擇布線(xiàn)資源來(lái)連通各個(gè)模塊單元。從本質(zhì)上講,布線(xiàn)資源的使用方法和設計的結果有密切、直接的關(guān)系。
評論