Vivado使用心得(三)FANOUT解決辦法

2021-02-13 Andy的ICer之路

        Fanout,即扇出,指模塊直接調用的下級模塊的個數,如果這個數值過大的話,在FPGA直接表現為net delay較大,不利於時序收斂。因此,在寫代碼時應儘量避免高扇出的情況。但是,在某些特殊情況下,受到整體結構設計的需要或者無法修改代碼的限制,則需要通過其它優化手段解決高扇出帶來的問題。以下就介紹三個這樣的方法:

         首先來看下面這個實例,如圖1所示為轉置型FIR濾波器中的關鍵路徑時序報告,在DSP in FPGA的FIR專題中有介紹轉置型結構FIR濾波器輸入數據的扇出較大,在下圖中所示為11,因此net delay高達1.231ns,輸入數據驅動了11個DSP48E1。

    在沒有優化情況下,該設計的fmax:206.016MHz

1. 寄存器複製

         寄存器複製是解決高扇出問題最常用的方法之一,通過複製幾個相同的寄存器來分擔由原先一個寄存器驅動所有模塊的任務,繼而達到減小扇出的目的。通過簡單修改代碼,如圖所示,複製了4個寄存器:din_d0、din_d1、din_d2、din_d3,din_d、din_d0、din_d1、din_d2分別驅動2個DSP48E1,din_d3驅動3個DSP48E1。其中在代碼中為防止綜合器優化相同寄存器,在對應信號上加入了(* EQUIVALENT_REGISTER_REMOVAL="NO" *)屬性避免被優化。

 綜合實現後得到,該數據路徑上輸入數據fanout減為2,對應net delay也減小到了0.57ns。得到設計如圖5所示,與期望的相同,複製了4個寄存器來分擔fanout。經過寄存器優化後得到fmax:252.143MHz

 2. max_fanout屬性

         在代碼中可以設置信號屬性,將對應信號的max_fanout屬性設置成一個合理的值,當實際的設計中該信號的fanout超過了這個值,綜合器就會自動對該信號採用優化手段,常用的手段其實就是寄存器複製。屬性設置如下代碼所示:

(* max_fanout = "3" *)reg  signed [15:0] din_d;

         將din_d信號的max_fanout屬性設置成3,經過綜合實現後,得到fanout只有2,相應的net delay也只有0.61ns,自動優化效果還不錯。其中din_d_12_1、din_d_12_2、din_d_12_3是綜合器優化後自動添加,即實現了寄存器複製功能。經過設置max_fanout屬性優化後得到fmax:257.135MHz

vivado中的max_fanout

打算降低扇出的網絡必須是reg驅動。因為降低扇出的原理就是reg驅動超過N(設置參數)條網絡的時候,就複製一個同樣的reg驅動其他N條網絡,如果複製2個還不夠就一直複製到足夠為止,見圖1。

-flatten_hierarchy不能設置為none。圖形界面設置位置見圖2。

如果需要優化的信號在IP核內部那麼在布局完成後使用下面的命令phys_opt_design -force_replication_on_nets [get_nets net_name]來保證IP核取消對內部網絡的保護,能夠正常複製高扇出網絡。

圖1.寄存器複製示意圖

圖2. flatten_hierarchy設置位置

max_fanout的使用形式

verilog綜合屬性設置:(*MAX_FANOUT = 50 *) reg  test;

這裡的綜合屬性必須設置在要降低扇出的寄存器前面,否則一定不會按照設計者意圖綜合。這種方法缺點是不能作用於IP核內部的某個信號。

max_fanout的參數意義

(*MAX_FANOUT = 50 *) reg  test;裡面的參數就只有一個——50,網絡扇出超過50就會複製一個,保證每個複製的寄存器下面的扇出都不超過此參數。xdc約束也一樣,不再贅述。

注意,圖1的綜合設置裡面有-fanout_limit這個參數,並且默認是10000。這裡是約束全局扇出的,但是max_fanout命令的優先級會高於這裡的設置參數。所以編譯器會優先按照你的綜合屬性或者XDC約束來進行優化。   

 

 3. BUFG

         通常BUFG是用於全局時鐘的資源,可以解決信號因為高扇出產生的問題。但是其一般用於時鐘或者復位之類扇出超級大的信號,此類信號涉及的邏輯遍布整個晶片,而BUFG可以從全局的角度優化布線。而且一塊FPGA晶片中BUFG資源也有限,在7k325tffg900上也僅有32個,如果用於普通信號的高扇出優化也不大現實。因此,在時鐘上使用BUFG是必須的,但是如果設計中遇到某些復位信號因高扇出產生的時序問題時,可以在此信號上使用BUFG來優化。

相關焦點

  • 使用vivado的過程如何清理/壓縮不必要的文件
    打開APP 使用vivado的過程如何清理/壓縮不必要的文件 材哥 發表於 2020-12-25 14:53:36 作者:材哥,玩兒轉FPGA 前言 vivado和ISE的使用差別很大,Vivado是專門針對7系列和以後系列的FPGA/AP SOC進行高效設計的工具,特別是最近提出的UltraFast設計方法,能夠極大地提高開發效率。
  • 電腦重啟後出現「ERROR:cpu fan has failed」的解決辦法
    有朋友電腦重啟後遇到無法開機的情況,系統提示「ERROR:cpu fan has failed」,最終導致電腦無法正常進入系統,這事什麼情況呢?經過了解情況後很快幫朋友搞定了問題,如何解決的呢?下面用自己的辦法給大家參考參考。
  • RabbitMQ學習系列教程六:Fanout Exchange的使用
    Fanout Exchange:不處理路由鍵,只需要簡單的將隊列綁定到交換機上。發送到交換機的消息都會被轉發到該交換機綁定的所有隊列上Fanout交換機轉發消息是最快的。Fanout Exchange交換機可以簡單的理解為廣播站。
  • PADS中BGA Fanout扇出教程
    三、設置Fanout的柵格grid1.Setup/Preferences/Grids/Fantout Gride(設置成PAD與PAD的二分之一,如果PAD間距為50mil,這時X與Y可以填入25)設置布線默認間距,線寬2.Setup/Design Reuls/Default Rules/(設置布線寬度及安全間距)在PADS Layout
  • FPGA時序分析—vivado篇
    使用誤區與進階》的文章,覺得寫得挺不錯了,看完後自己對時序分析又有了更深一層的理解,故記錄下來。整體的思路如下:先是約束時鐘,讓軟體先解決內部時序問題;(在這一步驟中可以適當加入時序例外,以便時序通過)然後再加入IO的延遲約束;最後針對沒有過的時序,添加時序例外。在《vivado使用誤區與進階》中,提到了一種叫 UltraFAST 的設計方法。針對下圖中所說的根據迭代結果添加必要的例外約束(步驟1),為什麼是添加必要的呢?
  • 【新手入門】Vivado工程升級及板級信號調試
    如何使用新版本的vivado去打開舊版本的vivado工程李家俊同學給大家介紹了一下如何使用新版本的vivado去打開舊版本的vivado工程。對於舊版本的vivado工程或者是ise工程,更新到新版本的vivado環境下有兩種方法:1、直接用新版本vivado打開原有工程文件,進行IP核更新;2、拷貝原有工程設計文件、約束文件、IP核文件夾至新建新版本vivado空白工程文件下,進行更新。我們先來介紹一下如何直接使用新版本打開舊版本工程並且進行升級。直接使用新版本vivado打開vivado的工程文件。
  • 【舊文回顧】HDI濾波電容FANOUT案例
    在我們常規設計中對濾波電容fanout時,要從pin拉出一小段粗引出線,然後通過過孔和電源平面連接,接地端也是同樣。fanout過孔的基本原則就是讓這一環路面積最小,進而使總的寄生電感最小。濾波電容的常見fanout方式如下圖所示,濾波電容靠近電源pin放置。
  • 我的世界out of memory怎麼辦 out of memory解決辦法
    of memory,不知道怎麼回事,當我們遇到我的世界out of memory怎麼辦呢?下面小編帶來導致這一問題的原因和解決辦法供玩家參考。   從錯誤消息顯示的原因是:java虛擬機(JVM)內存空間不足造成。
  • 開機提示cpu fan error到底是什麼情況?怎麼解決?
    如果沒有插對的話,就算CPU風扇仍能散熱使用,也會出現錯誤。將接口位置更正一下,就可以解決這個問題了。絕大部分的用戶都是因為這個問題導致的。  2、系統BIOS檢測不到CPU風扇的轉速的解決辦法  這樣的原因是比較常見的,需要確認是不是這個原因,我們可以進入BIOS來查看。
  • 絕地求生出現BattleEye query time out解決辦法
    絕地求生出現BattleEye query time out解決辦法 絕地求生此前在27號的時候在間歇性進行競技比賽時會出現<BattleEye query time out>的提示信息
  • fan的意思是粉絲,fan the flames是什麼意思呢?
    fan是一個大家比較熟悉的單詞,意思是風扇、粉絲。今天,我們就一起來看一下fan的用法。首先,fan可以做名詞,意思是仰慕者、風扇等。1、If you're a Billy Crystal fan, you'll love this movie.如果你是比利·克裡斯託的影迷,你會喜愛這部影片。這句話中的fan意思是粉絲、瘋狂的仰慕者。
  • 絕地求生大逃殺內存不足怎麼辦 絕地求生out of memory解決辦法
    絕地求生大逃殺內存不足怎麼辦 絕地求生out of memory解決辦法時間:2017-10-23 21:09   來源:今日頭條   責任編輯:毛青青 川北在線核心提示:原標題:絕地求生大逃殺內存不足怎麼辦 絕地求生out of memory解決辦法 《絕地求生大逃殺》的配置是很多玩家比較關心的問題,隨著遊戲的火爆程度越來越高
  • ...vivado.com7.5萬元奪冠,新後綴aushilfsjobs.info和 beer.beer...
    上周成交金額超過2000元的域名共54個,其中成交金額最高的是域名vivado.com,交易價格為10,000歐元,約合人民幣7.5萬元。本期榜單上位居.com前三的域名分別是vivado.com、napaconnect.com以及hanline.com,其中vivado.com以10000歐元的價格榮登榜首。
  • 用ModelSim仿真Vivado建立的工程
    安富利的人說使用Vivado自己的仿真器進行仿真,可是對於新手來說在Vivado的工程設置裡可以修改目標仿真器,我們可以選擇使用ModelSim來仿真。 指定仿真工具可以直接在vivado
  • [高考英語作文萬能句子]解決辦法萬能句
    [高考英語作文萬能句子]解決辦法萬能句 2012-03-20 11:09 來源:新東方網整理 作者:
  • figure out:理解,分析,解決
    新東方網>英語>英語學習>語法詞彙>流行語>正文figure out:理解,分析,解決 2012-11-25 20:44 來源:愛思英語 作者:
  • cornerstone3.0.3工具使用教程 安裝出錯問題解決辦法
    下面小編詳細介紹工具的使用,以及出現問題的解決辦法,大家一起來看看吧!  1:首先下載最新版SVN  2.下載完成之後選擇添加倉庫  5.上傳成功之後選擇左上角check out 下載到本地(以後就在這個文件裡更改代碼就行了) ,每次改動都會有對用的顯示個數,每次上傳到伺服器的時候都需要update一下,再commit 上傳。
  • 鐵桿粉絲 die-hard fan
    請看相關報導:Time is running out for Oprah’s die-hard fans, and they were feeling the heat Tuesday as they waited in line outside Harpo Studios in the hopes of getting
  • 如何利用Vivado HLS處理許多位準確或任意精度數據類型
    然而對於硬體設計來說,使用標準的C數據類型會造成硬體成本的浪費。這就會造成我們要使用更多的LUT和寄存器,延遲甚至可能超過時鐘周期和需要更多的周期來計算結果。這往往不是我們需要的結果。因此下面我將介紹如何利用Vivado HLS處理許多位準確或任意精度數據類型,以及允許使用任何(任意)寬度的模型變量。
  • 科普:主板中CPU_FAN、SYS_FAN、CHA_FAN、CPU_OPT知識科普
    sys就是system的意思,fan是風扇的意思,sys fan是「系統風扇」,是接系統風扇或電源風扇接口。如果機箱風扇是3針的,也是可以插上去的使用,但是會少一根轉速調節線。三、CHA_FAN接口知識CHA_FAN就是機箱風扇,RAD是散熱器風扇。