91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

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

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

FPGA設(shè)計(jì)論壇 ? 來源:FPGA設(shè)計(jì)論壇 ? 作者:FPGA設(shè)計(jì)論壇 ? 2022-08-15 14:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

1. 代碼風(fēng)格

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

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

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

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

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

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

2. 時(shí)序修正

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

下面介紹主要面對(duì)的兩個(gè)時(shí)序問題的處理技巧。

1)setup time 建立時(shí)間問題

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

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

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

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

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

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

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

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

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

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

set_property CLOCK_BUFFER_TYPE BUFG [get_nets netName]

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

2)hold time 保持時(shí)間問題

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

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

set_property ASYNC_REG TRUE [get_cells [list sync0_reg sync1_reg]]

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

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

也可以參考代碼模板使用XPM模板進(jìn)行處理。

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

3. 工程設(shè)置

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

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

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

審核編輯 :李倩

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

    關(guān)注

    1646

    文章

    22054

    瀏覽量

    618790
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    835

    瀏覽量

    68824

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

    FPGA的IO口時(shí)序約束分析

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

    FPGA時(shí)序約束之衍生時(shí)鐘約束和時(shí)鐘分組約束

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

    一文詳解Vivado時(shí)序約束

    Vivado的時(shí)序約束是保存在xdc文件中,添加或創(chuàng)建設(shè)計(jì)的工程源文件后,需要?jiǎng)?chuàng)建xdc文件設(shè)置時(shí)序約束
    的頭像 發(fā)表于 03-24 09:44 ?3535次閱讀
    一文詳解Vivado<b class='flag-5'>時(shí)序</b><b class='flag-5'>約束</b>

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

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

    時(shí)序約束時(shí)序分析 ppt教程

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

    時(shí)序約束用戶指南

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

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

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

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

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

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

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

    FPGA時(shí)序約束的概念和基本策略

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

    FPGA的約束時(shí)序分析的概念詳解

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

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

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

    時(shí)序約束怎么用?時(shí)序約束到底是要干嘛?

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

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

    ??本文主要介紹了時(shí)序設(shè)計(jì)和時(shí)序約束
    的頭像 發(fā)表于 07-04 14:43 ?1922次閱讀
    主站蜘蛛池模板: 国模龙园园私拍337p | 亚洲色图在线视频 | 天天干在线观看 | 色播在线永久免费视频网站 | 欧美成人精品一区二三区在线观看 | 在线天堂中文www官网 | 一本到中文字幕高清不卡在线 | 午夜国产高清精品一区免费 | 久久99国产精品免费观看 | 国产叼嘿免费视频网站 | 国产卡一卡2卡三卡免费视频 | 天天舔天天操天天干 | 亚州一级| 天堂在线www网亚洲 天堂在线观看 | 中文在线 | 中文 | 好吊色青青青国产在线观看 | www.91在线播放| 午夜小视频在线播放 | 日本aaaa视频 | 久久艹综合 | 天天综合网久久 | 男人和女人做a免费视频 | 亚洲bt欧美bt高清bt777 | 免费的两性视频网站 | www一级毛片| 天天做天天爱夜夜想毛片 | 亚洲综合春色另类久久 | 色播.com| 久久精品视频5 | 狠狠色丁香婷婷综合欧美 | 三级在线播放 | 萌白酱白丝护士服喷水铁牛tv | 午夜免费一级片 | 国产成人午夜片在线观看 | 国产欧美精品午夜在线播放 | 色鬼久久 | 神马午夜影院 | 香港三澳门三日本三级 | 狠狠色噜噜狠狠狠狠五月婷 | 日本特黄色大片 | 男男h文小说阅 |