国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

FPGA時序約束--實(shí)戰(zhàn)篇(時序收斂優(yōu)化)

這篇具有很好參考價值的文章主要介紹了FPGA時序約束--實(shí)戰(zhàn)篇(時序收斂優(yōu)化)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

一、模塊運(yùn)行時鐘頻率

二、HDL代碼

1、HDL代碼風(fēng)格

2、HDL代碼邏輯優(yōu)化

三、組合邏輯層數(shù)

1、插入寄存器

2、邏輯展平設(shè)計

3、防止變量被優(yōu)化

四、高扇出

1、使用max_fanout

2、復(fù)位信號高扇出

五、資源消耗

1、優(yōu)化代碼邏輯,減少資源消耗。

2、使用替代資源實(shí)現(xiàn)

六、總結(jié)


前面幾篇文章介紹了“如何寫時序約束”和“如何看懂時序約束報告”,這些知識點(diǎn)都是基礎(chǔ),可以知道設(shè)計的HDL代碼不收斂的位置,但解決時序收斂問題更關(guān)鍵。

FPGA時序不收斂,會出現(xiàn)很多隨機(jī)性問題,上板測試大概率各種跑飛,而且不好調(diào)試定位原因,所以在上板測試前,先優(yōu)化時序,再上板。

今天我們就來嘮一嘮解決時序不收斂的問題,分享常用的解決辦法。

一、模塊運(yùn)行時鐘頻率

設(shè)計模塊前,需明確模塊運(yùn)行的最大時鐘頻率。

不同時鐘頻率下,對應(yīng)的時序約束最大延時是不一樣的。

比如100MHz時鐘下運(yùn)行的HDL邏輯,比200MHz時鐘下的HDL邏輯,支持的組合邏輯層數(shù)多。

根據(jù)最大時鐘頻率,來設(shè)計HDL代碼的層級,時鐘頻率越高,插入寄存器要更多,增加流水線級數(shù),減少過長的組合邏輯。

二、HDL代碼

1、HDL代碼風(fēng)格

優(yōu)先參考FPGA開發(fā)軟件提供的HDL Template,比如Vivado的language template。

FPGA時序約束--實(shí)戰(zhàn)篇(時序收斂優(yōu)化)

?

2、HDL代碼邏輯優(yōu)化

對于復(fù)雜的算法代碼邏輯,需要結(jié)合FPGA并行計算和最小處理單位為bit的特性,對邏輯代碼進(jìn)行優(yōu)化實(shí)現(xiàn)。

明確變量最大的數(shù)據(jù)位寬。

邏輯代碼中,一些軟件邏輯實(shí)現(xiàn)起來較復(fù)雜,盡量簡化,刪除掉一些不可能出現(xiàn)的情況。

這部分代碼邏輯,可能需要重復(fù)迭代幾遍實(shí)現(xiàn)才行。

三、組合邏輯層數(shù)

1、插入寄存器

將計算邏輯分成多個時鐘周期實(shí)現(xiàn),這是常用的時序優(yōu)化方法,可以減少過多的組合邏輯層數(shù),但會增加延時。

這里以一個多路輸入求和計算為例

module sum(
    input        clk,
    input  [15:0] data_A,
    input  [15:0] data_B,
    input  [15:0] data_C,
    input  [15:0] data_D,
    output [17:0] sum_o);

    always @(posedge clk) begin
        sum_o <= data_A + data_B + data_C + data_D;
     end

endmodule

增加寄存器后,改為

module sum(
    input        clk,
    input  [15:0] data_A,
    input  [15:0] data_B,
    input  [15:0] data_C,
    input  [15:0] data_D,
    output [17:0] sum_o);

    reg [16:0] sum0, sum1;

    always @(posedge clk) begin
        sum0 <= data_A + data_B;
        sum1 <= data_C + data_D;
     end

    always @(posedge clk) begin
        sum_o <= sum0 + sum1;
     end

endmodule

2、邏輯展平設(shè)計

優(yōu)化代碼中優(yōu)先級譯碼電路邏輯,主要出現(xiàn)在IF/ELSE結(jié)構(gòu)語句中,這樣邏輯結(jié)構(gòu)被展平,路徑延遲得以縮短。

IF ELSE結(jié)構(gòu)語句存在明顯的優(yōu)先級,建議盡量用CASE語句來替代。

3、防止變量被優(yōu)化

HDL綜合布線軟件會根據(jù)實(shí)際情況,自動優(yōu)化代碼邏輯,可能存在將多個不同寄存器變量合并成一個寄存器變量的情況。

對于不希望被優(yōu)化的變量,可以在變量定義前,添加(* keep = "ture" *)

四、高扇出

高扇出問題,原因是一個寄存器驅(qū)動后級數(shù)超過了它本身的驅(qū)動能力,導(dǎo)致延遲時間過大,不滿足時序。

1、使用max_fanout

在變量定義前,可以添加(* max_fanout = n *),來設(shè)置變量的最大扇出數(shù)n,超過這個扇出數(shù),綜合軟件會自動復(fù)制多份變量。

2、復(fù)位信號高扇出

復(fù)位信號是常見的高扇出問題,主要解決辦法有:

(1)減少復(fù)位信號的使用,能使用使能信號控制的,就用使能信號。

(2)對于大型模塊,復(fù)位信號可以使用BUFG來驅(qū)動復(fù)位信號,可以增加復(fù)位信號的驅(qū)動能力

五、資源消耗

FPGA器件的整個工程資源消耗,不管是LUT還是BRAM等資源,建議不超過80%。

一旦資源消耗超過80%,在布線綜合時,就出現(xiàn)布線資源不夠,導(dǎo)致出現(xiàn)布線擁塞,從而出現(xiàn)了時序不收斂的情況。

布線擁塞也分為全局擁塞和局部擁塞,可能是高扇出信號過多,也可能是局部布線資源不夠用,導(dǎo)致時序路徑過長。

1、優(yōu)化代碼邏輯,減少資源消耗。

在資源不夠用的情況下,建議檢查代碼是否可優(yōu)化,設(shè)置的RAM大小是否過大等等。

2、使用替代資源實(shí)現(xiàn)

在FPGA中實(shí)現(xiàn)RAM時,可以根據(jù)整個資源的使用情況,考慮使用Distributed RAM、URAM等資源來減少BRAM的消耗。

六、總結(jié)

本文分享了時序收斂的一些方法和思路,希望可以給大家?guī)硪稽c(diǎn)啟發(fā)。


本文將不斷定期更新中,碼字不易,點(diǎn)??贊,收??藏一下,不走丟哦

本文由FPGA入門到精通原創(chuàng),有任何問題,都可以在評論區(qū)和我交流哦

您的支持是我持續(xù)創(chuàng)作的最大動力!如果本文對您有幫助,請給一個鼓勵,謝謝。文章來源地址http://www.zghlxwxcb.cn/news/detail-515435.html

到了這里,關(guān)于FPGA時序約束--實(shí)戰(zhàn)篇(時序收斂優(yōu)化)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • FPGA時序分析與約束(0)——目錄與傳送門

    ????????關(guān)于時序分析和約束的學(xué)習(xí)似乎是學(xué)習(xí)FPGA的一道分水嶺,似乎只有理解了時序約束才能算是真正入門了FPGA,對于FPGA從業(yè)者或者未來想要從事FPGA開發(fā)的工程師來說,時序約束可以說是一道躲不過去的坎,所以這個系列我們會詳細(xì)介紹FPGA時序分析與約束的相關(guān)內(nèi)容

    2024年02月05日
    瀏覽(25)
  • 時序分析、時序約束和時序收斂(1)--時序分析、時序約束和時序收斂分別都是什么?

    時序分析、時序約束和時序收斂(1)--時序分析、時序約束和時序收斂分別都是什么?

    文章目錄 ????????寫在前面 ????????磨刀不誤砍柴工 ????????什么是時序分析? ????????什么是時序約束? ????????什么是時序收斂? ????????時序約束與分析是FGPA開發(fā)過程中一項(xiàng)必備的技能,同時也是設(shè)計開發(fā)中相對較難的部分。很多人一談起FPGA開

    2024年02月08日
    瀏覽(24)
  • FPGA時序約束--實(shí)戰(zhàn)篇(Vivado添加時序約束)

    FPGA時序約束--實(shí)戰(zhàn)篇(Vivado添加時序約束)

    前面幾篇文章已經(jīng)詳細(xì)介紹了FPGA時序約束基礎(chǔ)知識以及常用的時序約束命令,相信大家已經(jīng)基本掌握了時序約束的方法。 今天介紹一下,如何在Vivado中添加時序約束,Vivado添加約束的方法有3種:xdc文件、時序約束向?qū)В–onstraints Wizard)、時序約束編輯器(Edit Timing Constrain

    2024年02月10日
    瀏覽(26)
  • FPGA時序約束--實(shí)戰(zhàn)篇(讀懂Vivado時序報告)

    FPGA時序約束--實(shí)戰(zhàn)篇(讀懂Vivado時序報告)

    目錄 一、新建工程 二、時序報告分析 1、打開時序報告界面 2、時序報告界面介紹 3、時序路徑分析 三、總結(jié) FPGA開發(fā)過程中,vivado和quartus等開發(fā)軟件都會提供時序報告,以方便開發(fā)者判斷自己的工程時序是否滿足時序要求。 本文將詳細(xì)介紹如何讀懂Vivado時序報告,包括報告

    2024年02月12日
    瀏覽(23)
  • 《時序分析、時序約束和時序收斂》專欄的說明與導(dǎo)航

    知識付費(fèi)時代,多做一些嘗試 免費(fèi)內(nèi)容非常容易被其他網(wǎng)站爬蟲獲取,付費(fèi)是某種意義上的版權(quán)保護(hù) 付費(fèi)即意味著責(zé)任,有利于提高專欄質(zhì)量,驅(qū)使作者對讀者、對內(nèi)容更負(fù)責(zé) ????????本專欄內(nèi)容均與FPGA的時序分析、約束、優(yōu)化和收斂相關(guān),是真真正正能用起來的 實(shí)戰(zhàn)

    2024年02月07日
    瀏覽(59)
  • 時序分析、時序約束和時序收斂(6)--如何讀懂一個時序報告?

    目錄 寫在前面 1、建立工程與添加時序約束 2、時序報表 ????????在之前的文章中寫了一些時序分析的基礎(chǔ)概念,同時還說了文章中提到的公式根本就不需要記憶,因?yàn)榫C合工具vivado會幫你把所有時序路徑都做詳盡的分析,你所需要做的就是理解概念。 ????????光說不

    2024年02月08日
    瀏覽(18)
  • 基于Xlinx的時序分析、約束和收斂(4)----主時鐘約束

    目錄 主時鐘約束語法 例1:引腳輸入的主時鐘約束 例2:高速收發(fā)器GT的恢復(fù)時鐘

    2023年04月17日
    瀏覽(15)
  • 時序分析、時序約束和時序收斂(8)--關(guān)于時序路徑、時鐘悲觀度和建立時間/保持時間的一些問題

    目錄 寫在前面 1、為什么同一條時序路徑在報表里的值不一樣?

    2024年02月08日
    瀏覽(22)
  • FPGA時序分析與時序約束(四)——時序例外約束

    FPGA時序分析與時序約束(四)——時序例外約束

    目錄 一、時序例外約束 1.1 為什么需要時序例外約束 1.2 時序例外約束分類 二、多周期約束 2.1 多周期約束語法 2.2 同頻同相時鐘的多周期約束 2.3 同頻異相時鐘的多周期約束 2.4 慢時鐘域到快時鐘域的多周期約束 2.5 快時鐘域到慢時鐘域的多周期約束 三、虛假路徑約束 四、最

    2024年01月20日
    瀏覽(30)
  • FPGA時序約束與分析(1) --- 時序約束概述

    FPGA時序約束與分析(1) --- 時序約束概述

    本系列參考文獻(xiàn) — FPGA時序與約束分析-吳厚航 FPGA從綜合到實(shí)現(xiàn)需要的過程如下:synth_design - opt_design - place-design - phys_opt_design - route_design 1、時序約束的理解 2、時序約束的基本路徑 3、時序約束的步驟 4、時序約束的主要方法 5、查看相關(guān)時序信息 FPGA的設(shè)計約束分為物理約束

    2024年02月16日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包