精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

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

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

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

首先強(qiáng)烈推薦閱讀官方文檔UG903和UG949,這是最重要的參考資料,沒(méi)有之一。它提倡要在設(shè)計(jì)的早期階段就要排除問(wèn)題,越到后期時(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濾波器等,凡是涉及到的模塊盡量使用官方寫(xiě)法。

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

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

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

2. 時(shí)序修正

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

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

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

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

打開(kāi)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最好不要超過(guò)8,否則會(huì)造成時(shí)序收斂困難。

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

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

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

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

降低扇出最好不要在綜合設(shè)置中指定,過(guò)低的扇出限制會(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ì)扇出超過(guò)25K的net插入BUFG:

set_property CLOCK_BUFFER_TYPE BUFG [get_nets netName]

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

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

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

對(duì)于一個(gè)信號(hào)的跨時(shí)鐘域問(wèn)題,一般使用雙寄存器法(對(duì)于慢采快的結(jié)繩法這里不討論)。為了降低MTBF(Mean Time Between Failures,平均無(wú)障礙時(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ù)雜,本人打算之后另外寫(xiě)一篇文章詳細(xì)講述。

3. 工程設(shè)置

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

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

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

審核編輯 :李倩

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

    關(guān)注

    1626

    文章

    21665

    瀏覽量

    601802
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    808

    瀏覽量

    66321

原文標(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)推薦

    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 ?9682次閱讀

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

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

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

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

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

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

    FPGA時(shí)序約束的幾種方法

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

    時(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é)果

    作為賽靈思用戶論壇的定期訪客(見(jiàn) ),我注意新用戶往往對(duì)時(shí)序收斂以及如何使用時(shí)序約束來(lái)達(dá)到時(shí)序收斂感到困惑。為幫助 FPGA設(shè)計(jì)新手實(shí)現(xiàn)
    發(fā)表于 11-24 19:37 ?5442次閱讀
    深入了解<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 ?5034次閱讀

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

    A 時(shí)序約束的概念和基本策略 時(shí)序約束主要包括周期約束(FFSFFS,即觸發(fā)器
    的頭像 發(fā)表于 10-11 10:23 ?5468次閱讀
    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 ?1638次閱讀
    FPGA設(shè)計(jì)之<b class='flag-5'>時(shí)序</b><b class='flag-5'>約束</b>

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

    很多小伙伴開(kāi)始學(xué)習(xí)時(shí)序約束的時(shí)候第一個(gè)疑惑就是標(biāo)題,有的人可能會(huì)疑惑很久。不明白時(shí)序約束是什么作用,更不明白怎么用。
    的頭像 發(fā)表于 06-28 15:10 ?1618次閱讀
    <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 ?1357次閱讀