華爲FPGA設計高級技巧Xilinx篇---讀書筆記之三綜合運用

綜合運用工具

      下面提到的解決問題技巧,因爲受目前認識的限制和現有的技術水準,不該當把它們當作是「萬能」的。尤爲是隨着技術的發展,其中的許多手段確定會不合適了。佈局

3.1 可能成爲關鍵路徑的電路優化

      在作詳細設計方案或者整體方案的時候,必定要考慮到設計中哪些電路可能成爲關鍵路徑。若是不考慮這些,極可能會致使設計實現失敗,或者要更改設計,或者要更換器件。spa

      在FPGA設計裏,經常影響到設計沒法(或者很難)實現的電路有(指設計速度方面):比較器、多路選擇器、Distributed RAM、乘法器、加法器等,尤爲是在位寬比較大的狀況下。設計

      建議:在作方案時,針對上述電路先進行速度評估,以決定是否要Pipelineip

3.2 如何提升芯片速度資源

      提升芯片速度的根本方法是:減小組合邏、LUT的級數、儘可能壓縮關鍵路徑上的線延時。pip

3.2.1 引入放鬆約束 TIG False path Multi-Cycle-Pathclass

      許多設計者以爲設置TIGMulti-Cycle-Path意義不大,由於它們不直接對關鍵路徑發生做用這種想法是錯誤的。雖然它們不直接對關鍵路徑發生做用,但能夠起到「讓非關鍵路徑散開」的做用,讓這些非關鍵路徑滾得越遠越好。這樣,就爲關鍵路徑騰挪出空間,從而與關鍵路徑相關的LUT有可能儘可能壓縮在一塊兒,從而到達「壓縮關鍵路徑上線延時的目的」這實際是一種「曲線救國」的策略,用詞可能不太好,不過我想不出更好的了。技巧

      實踐證實:這種方法很是行之有效,並且它的一個最大好處是不用更改設計。

3.2.2 對線延時比較大的net 設置MaxdelayMaxskew

      迫使工具利用驅動能力比較強的長線資源,以減小線延時。

3.2.3 採用BUFGS

      對於一些扇出特別多,線延時特別大的net,能夠直接引用BUFGS 以提升驅動能力。例如:對時鐘使能信號採用BUFGS進行驅動。

3.2.4  基本設計技巧

      在「設計技巧」章節裏,咱們提到了許多設計技巧,其中許多與設計速度相關,如今整理以下:copy邏輯電路減小fanout;加法器處理;case代替if語句;合併if語句;減小關鍵路徑上的LUT級數;去掉資源共享;pipeline 組合邏輯與時序邏輯分離;利用電路的等價性巧妙分配延時;利用LUT四輸入特色進行優化。

3.2.5 專有資源的利用

      如進位鏈、MUX SRL、乘法器等,可利用Coregen產生宏單元。

      利用專有資源雖然能夠提升速度,但有一缺點:下降代碼的可移植性;若是是準備轉ASIC,則需對專有資源進行代碼改動,增長出錯的可能性。所以,在作ASIC設計時,採用這種方法要仔細權衡。

3.2.6 關鍵路徑在同一個Module

      這樣,在綜合時,能夠或得最佳效果。

3.2.7 關鍵路徑單獨綜合,不與其它模塊放在一塊兒綜合

      對關鍵路徑所在模塊,採起速度優先策略;對非關鍵路徑模塊,採用面積優先策略。

3.2.8 針對關鍵路徑,進行位置約束

      若是發現關鍵路徑相關LUT距離太遠,可經過floorplanner手工佈線,並造成位置約束文件,以指導佈局佈線。

3.2.9 迂迴策略:下降非關鍵路徑上的面積,爲關鍵路徑騰挪空間。

      儘量優化非關鍵路徑上的面積,以儘可能多給關鍵路徑留空間,以便將關鍵路徑相關

LUT壓縮在一塊兒,下降線延時。

      該方法體現了「向非關鍵路徑要面積,向關鍵路徑要時間」的設計思想。

3.3  如何下降芯片面積

3.3.1 Distributed RAM代替BlockRAM

      在設計中,若是LUT足夠多,而BLOCK RAM不夠,則可考慮採用Distributed RAM代替BlockRAM,這種狀況在設計中有時會碰到。

3.3.2 Distributed RAM代替通道計數器

      這個在前面的章節已經提到,這裏很少說。

3.3.3 專有資源的利用

      狀況同 3.2.5

3.3.4  基本設計技巧

      在「設計技巧」章節裏,咱們提到了許多設計技巧,其中許多與設計面積相關,如今整理以下:

加法器處理;if代替case語句;資源共享;組合邏輯與時序邏輯分離;利用LUT四輸入特色進行優化;高效利用IOB;採用單端口BlockRAM,爲ASIC作準備。

相關文章
相關標籤/搜索