在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在工程中學(xué)習(xí)到的各種時序約束技巧

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

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

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

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

1. 代碼風(fēng)格

推薦使用Xilinx language templates的代碼塊,這里的代碼能夠綜合出正確且結(jié)構(gòu)簡潔的電路,包括移位寄存器,乘法,復(fù)數(shù)乘法,F(xiàn)IR濾波器等,凡是涉及到的模塊盡量使用官方寫法。

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

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

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

如果并不需要優(yōu)先級,盡量將If語句轉(zhuǎn)化為case語句。

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

2. 時序修正

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

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

1)setup time 建立時間問題

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

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

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

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

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

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

High Fanout指的是扇出,同樣和器件、設(shè)計頻率等有關(guān),如下圖所示:

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

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

如果不是關(guān)鍵時序路徑,而且高扇出網(wǎng)絡(luò)直接連接到觸發(fā)器,對扇出超過25K的net插入BUFG:

set_property CLOCK_BUFFER_TYPE BUFG [get_nets netName]

當(dāng)然,也可以在后期Implementation的物理優(yōu)化設(shè)置中優(yōu)化扇出。

2)hold time 保持時間問題

在實踐中,我發(fā)現(xiàn)保持時間問題的問題往往是異步處理的問題。

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

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處理比較復(fù)雜,本人打算之后另外寫一篇文章詳細講述。

3. 工程設(shè)置

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

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

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

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1630

    文章

    21769

    瀏覽量

    604648
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    815

    瀏覽量

    66705

原文標(biāo)題:Vivado工程經(jīng)驗與時序收斂技巧

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    VIVADO時序約束及STA基礎(chǔ)

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

    FPGA的IO口時序約束分析

      高速系統(tǒng)中FPGA時序約束不止包括內(nèi)部時鐘約束,還應(yīng)包括完整的IO時序約束
    發(fā)表于 09-27 09:56 ?1768次閱讀

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

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

    學(xué)習(xí)時序約束 遇到的問題,求助

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

    FPGA時序約束的幾種方法

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

    時序約束時序分析 ppt教程

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

    時序約束用戶指南

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

    Xilinx時序約束培訓(xùn)教材

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

    Xilinx時序約束培訓(xùn)教材

    FPGA學(xué)習(xí)資料教程之Xilinx時序約束培訓(xùn)教材
    發(fā)表于 09-01 15:27 ?0次下載

    深入了解時序約束以及如何利用時序約束實現(xiàn)FPGA 設(shè)計的最優(yōu)結(jié)果

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

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

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

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

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

    FPGA設(shè)計之時序約束

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

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

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

    淺談時序設(shè)計和時序約束

    ??本文主要介紹了時序設(shè)計和時序約束
    的頭像 發(fā)表于 07-04 14:43 ?1462次閱讀
    主站蜘蛛池模板: 久久美女精品| jlzzjlzzjlzz亚洲女| aaaaaaa毛片| 亚洲精品影视| 手机福利在线观看| 黄色成人在线| 人人澡人人搞| 亚洲网站视频| 国产热| 一个色中文字幕| 特级淫片aaaa毛片aa视频| 色狠狠xx| 久草a视频| 9999毛片免费看| 涩涩爱影院| 五月激情丁香| 日本一二线不卡在线观看| 一级做受毛片免费大片| 天堂精品视频| 免费四影虎ww4hu10| xxx性欧美| 久久国产免费观看| 在线一区二区观看| 亚洲香蕉国产高清在线播放| 日韩毛片免费视频一级特黄| 黄色短视频软件| 天天做天天爱天天大综合| 国产美女一级高清免费观看| 亚洲免费一| 性久久久久久久久久| 欧美视频xxxxx| free性欧美高清另类| 久热久操| 男人午夜视频| 色激情五月| 俺来也俺去啦久久综合网| 久久黄色录像| 狠狠gao| 欧美日韩一区不卡| 97久久人人| 91精品福利视频|