色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在工程中學習到的各種時序約束技巧

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 作者:FPGA設計論壇 ? 2022-08-15 14:15 ? 次閱讀

FPGA畢竟不是ASIC,對時序收斂的要求更加嚴格,本文主要介紹本人在工程中學習到的各種時序約束技巧。

首先強烈推薦閱讀官方文檔UG903和UG949,這是最重要的參考資料,沒有之一。它提倡要在設計的早期階段就要排除問題,越到后期時序的改善就越困難。其中HLS層次對性能的影響是最大的。

本文將從代碼風格,時序修正,工程設置等幾個方面介紹本人的實踐經驗,希望讓各位初學者快速提高,也希望FPGAer能給出寶貴建議。

1. 代碼風格

推薦使用Xilinx language templates的代碼塊,這里的代碼能夠綜合出正確且結構簡潔的電路,包括移位寄存器,乘法,復數乘法,FIR濾波器等,凡是涉及到的模塊盡量使用官方寫法。

合理的設計代碼框架。IO相關的代碼、時鐘管理單元盡量放在頂層,后者有助于以共享資源從而提高性能降低功耗。模塊的輸出最好是使用寄存器輸出,有助于降低路徑延時幫助時序收斂。

復位也是非常重要的問題。和ASIC不同,Xilinx FPGA的寄存器是高電平復位,支持異步復位和同步復位,但是DSP和BRAM內部的寄存器不支持異步復位。因此,官方更推薦設計采用高電平同步復位,可以降低資源的使用和功耗,有助于時序收斂。由于FPGA的初始狀態是確定的(可以在定義說明中指定),為了更快地時序收斂,官方文檔認為,能不用復位是最好的,尤其數據路徑和移位寄存器的設計中。不過使用同步復位仍需要注意控制集不能太多的問題。關于這方面的內容,UG949第三章Control Signals and Control Sets給了詳細的說明。

數學運算使用DSP單元速度會更快一些,根據DSP的結構重組數學運算,充分利用FPGA的DSP、BRAM資源。并且能做到對代碼映射的硬件資源心里有數。

如果并不需要優先級,盡量將If語句轉化為case語句。

盡量不要使用Don't Touch這類語句。如今Vivado綜合工具已經很完善了,除非代碼有問題或者手動復制寄存器,否則一般不會發生電路被綜合掉的現象。使用這些語句會覆蓋Vivado綜合設置,導致電路沒有得到充分的優化,給時序收斂造成困難。

2. 時序修正

嚴格遵守Vivado開發流程,在第一次跑綜合時最好是在沒有任何物理約束的情況下,Vivado在越少物理約束的情況下綜合出來的效果越好。查看每個階段的時序報告,將每一階段的時序違例控制在300ps以內,盡早消除問題。以前本人RTL Analysis階段過了之后選擇運行Implementation跳過Synthesis報告,這是不可取的行為。有時候會發現Synthesis有時序問題而在Implementation階段反而沒問題,這是因為Vivado在Implementation階段對時序不滿足的地方傾斜了更多的資源保證時序收斂。但是忽略Synthesis的時序問題會在后期頂層模塊集成占用大資源時爆發出來。

下面介紹主要面對的兩個時序問題的處理技巧。

1)setup time 建立時間問題

建立時間是工程設計中最常遇到的問題了。一般說來,導致建立時間違例主要有兩個原因:邏輯級數太大或者扇出太大。

打開Report Timing Summary界面查看路徑延遲信息,如下圖所示。

8397d642-1c48-11ed-ba43-dac502259ad0.png

Levels指的是邏輯級數logic level,一個logic level的延遲對應的是一個LUT和一個Net的延遲,對于不同的器件,不同頻率的設計能容納的logic level是不同的。假設7系列的-2速度等級250MHz的設計,電路設計的大部分levels最好不要超過8,否則會造成時序收斂困難。

83b31132-1c48-11ed-ba43-dac502259ad0.png

Logic level太大的處理方法就是重定時(Retiming)了,典型的重定時方法就是流水線,將過于冗長的組合邏輯增加寄存器進行打拍。

High Fanout指的是扇出,同樣和器件、設計頻率等有關,如下圖所示:

83c1d582-1c48-11ed-ba43-dac502259ad0.png

降低扇出最好不要在綜合設置中指定,過低的扇出限制會造成設計堵塞反而不利于時序收斂,最好的方法是根據設計中時序最差路徑的扇出進行針對性的優化。如果是寄存器的輸出扇出很大,可以使用max_fanout屬性標記寄存器聲明,也可以手動復制寄存器,

如果不是關鍵時序路徑,而且高扇出網絡直接連接到觸發器,對扇出超過25K的net插入BUFG:

set_property CLOCK_BUFFER_TYPE BUFG [get_nets netName]

當然,也可以在后期Implementation的物理優化設置中優化扇出。

2)hold time 保持時間問題

在實踐中,我發現保持時間問題的問題往往是異步處理的問題。

對于一個信號的跨時鐘域問題,一般使用雙寄存器法(對于慢采快的結繩法這里不討論)。為了降低MTBF(Mean Time Between Failures,平均無障礙時間),這兩個寄存器最好位于同一個slice中??梢允褂胻cl語言指定,如:

set_property ASYNC_REG TRUE [get_cells [list sync0_reg sync1_reg]]

也可以直接在代碼中指定:

(* ASYNC_REG = "TRUE" *) (* keep = "true" *)reg sync0_reg, sysnc1_reg;

也可以參考代碼模板使用XPM模板進行處理。

多個信號一般是使用FIFO或者握手的方法,這里不再贅述原理。同步CDC處理比較復雜,本人打算之后另外寫一篇文章詳細講述。

3. 工程設置

Vivado綜合實現本質是時序驅動的,和ISE不同,因此再也沒有ISE那種用隨機種子綜合實現滿足時序收斂的工具。不過Vivado在布局布線方面提供了幾種不同的策略(directive),通過不同策略的組合可以產生上千種不同的布局布線結果,還可以使用tcl鉤子腳本自定義布局布線過程,足以滿足需求。而且,Vivado可支持同時運行多個Implementation,這為這種設計時間換取性能的方法提供了工具上的便利。

Implementation里Post-place Phys Opt Design和Post-route Phys Opt Design是沒有使能的。工程后期使能這兩個配置也能在一定程度上改善時序收斂。

FPGA工程師的工作不只是將電路功能實現,由于器件和工具不是理想的,所以還需要研究器件特性和工具的局限,尤其是在如今算法結構越來越成熟的背景下,不斷被工具折磨,也許這也是FPGA工程師的悲哀吧。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21777

    瀏覽量

    604805
  • Vivado
    +關注

    關注

    19

    文章

    815

    瀏覽量

    66730

原文標題:Vivado工程經驗與時序收斂技巧

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    VIVADO時序約束及STA基礎

    時序約束的目的就是告訴工具當前的時序狀態,以讓工具盡量優化時序并給出詳細的分析報告。一般在行為仿真后、綜合前即創建基本的時序
    的頭像 發表于 03-11 14:39 ?9834次閱讀

    FPGA的IO口時序約束分析

      高速系統中FPGA時序約束不止包括內部時鐘約束,還應包括完整的IO時序約束
    發表于 09-27 09:56 ?1775次閱讀

    FPGA時序約束之衍生時鐘約束和時鐘分組約束

    FPGA設計中,時序約束對于電路性能和可靠性非常重要。在上一篇的文章中,已經詳細介紹了FPGA時序約束的主時鐘
    發表于 06-12 17:29 ?2844次閱讀

    學習時序約束 遇到的問題,求助

    剛剛開始學習Altera FPGA的時序約束,照著特權同學的一個例子做的 但是出現了下面的問題工程代碼:modulequest_test(clk,rst, led);input clk
    發表于 03-20 12:51

    FPGA時序約束的幾種方法

    控。從最近一段時間工作和學習的成果中,我總結了如下幾種進行時序約束的方法。按照從易難的順序排列如下:0. 核心頻率約束 這是最基本的,所以
    發表于 06-02 15:54

    時序約束時序分析 ppt教程

    時序約束時序分析 ppt教程 本章概要:時序約束時序分析基礎常用
    發表于 05-17 16:08 ?0次下載

    時序約束用戶指南

    時序約束用戶指南包含以下章節: ?第一章“時序約束用戶指南引言” ?第2章“時序約束的方法” ?
    發表于 11-02 10:20 ?0次下載

    Xilinx時序約束培訓教材

    時序約束的概念 時序約束主要包括周期約束(FFSFFS,即觸發器
    發表于 03-16 18:10 ?0次下載

    Xilinx時序約束培訓教材

    FPGA學習資料教程之Xilinx時序約束培訓教材
    發表于 09-01 15:27 ?0次下載

    深入了解時序約束以及如何利用時序約束實現FPGA 設計的最優結果

    作為賽靈思用戶論壇的定期訪客(見 ),我注意新用戶往往對時序收斂以及如何使用時序約束來達到時序收斂感到困惑。為幫助 FPGA設計新手實現
    發表于 11-24 19:37 ?5514次閱讀
    深入了解<b class='flag-5'>時序</b><b class='flag-5'>約束</b>以及如何利用<b class='flag-5'>時序</b><b class='flag-5'>約束</b>實現FPGA 設計的最優結果

    FPGA時序約束的概念和基本策略

    A 時序約束的概念和基本策略 時序約束主要包括周期約束(FFSFFS,即觸發器
    的頭像 發表于 09-30 15:17 ?5133次閱讀

    FPGA的約束、時序分析的概念詳解

    A 時序約束的概念和基本策略 時序約束主要包括周期約束(FFSFFS,即觸發器
    的頭像 發表于 10-11 10:23 ?5605次閱讀
    FPGA的<b class='flag-5'>約束</b>、<b class='flag-5'>時序</b>分析的概念詳解

    FPGA設計之時序約束

    上一篇《FPGA時序約束分享01_約束四大步驟》一文中,介紹了時序約束的四大步驟。
    發表于 03-18 10:29 ?1689次閱讀
    FPGA設計之<b class='flag-5'>時序</b><b class='flag-5'>約束</b>

    時序約束怎么用?時序約束到底是要干嘛?

    很多小伙伴開始學習時序約束的時候第一個疑惑就是標題,有的人可能會疑惑很久。不明白時序約束是什么作用,更不明白怎么用。
    的頭像 發表于 06-28 15:10 ?1735次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>約束</b>怎么用?<b class='flag-5'>時序</b><b class='flag-5'>約束</b>到底是要干嘛?

    淺談時序設計和時序約束

    ??本文主要介紹了時序設計和時序約束
    的頭像 發表于 07-04 14:43 ?1470次閱讀
    主站蜘蛛池模板: 好大好硬好爽好深好硬视频| 伊人在线高清视频| 日韩成人性视频| 亚洲国产在线观看免费视频| 97一期涩涩97片久久久久久久| 成人免费视频网站www| 久久www成人看片| 熟妇久久无码人妻AV蜜桃| 扒开黑女人p大荫蒂老女人| 国产AV精品一区二区三区漫画| 黄色直接观看| 日韩高清在线亚洲专区| 妖精视频免费看| 床伴在线观看免费高清完整泰剧第四集 | chinese学生gv video| 国产亚洲欧美日韩综合综合二区| 免费看黄的片多多APP下载| 先锋影音av资源站av| xx69欧美| 乱辈通奷XXXXXHD猛交| 亚洲性爱城| 囯产免费久久久久久国产免费| 蜜臀AV久久国产午夜福利软件| 亚洲精品伊人久久久久| 国产福利秒拍weipai.ee| 青青草原直播| 99re久久热在线播放快| 久久精品国产色蜜蜜麻豆国语版 | 坠落的丝袜美人妻| 国产欧美一区二区精品久久久| 日本人娇小hd| YELLOW日本免费观看播放| 男人扒开添女人下部口述| 中文字幕久久久| 久久精品国产欧美成人| 亚洲午夜福利未满十八勿进| 国产视频这里只有精品| 小黄文纯肉短篇| 国产制服丝袜91在线| 亚洲免费久久| 精品国产品国语在线不卡|