RM新时代网站-首页

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

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

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

記錄一次時(shí)序收斂的過程

FPGA開源工坊 ? 來源:FPGA開源工坊 ? 2023-11-18 16:38 ? 次閱讀

在之前的文章里面介紹了Canny算法的原理和基于Python的參考模型,之后呢在FPGA上完成了Canny算法的實(shí)現(xiàn),可是遇到了時(shí)序不收斂的問題,記錄一下。

e279ebd0-85e9-11ee-939d-92fbcf53809c.png

可以看到時(shí)序的建立時(shí)間不滿足。

我們在約束的主時(shí)鐘頻率是200MHz,也就是5ns,但是建立時(shí)間是-2.12ns,也就是說這個(gè)工程只能跑到7.12ns也就是140.45MHz,遠(yuǎn)遠(yuǎn)不能滿足我們預(yù)先的設(shè)計(jì)。

在之前文章里面介紹過怎么在SpinalHDL里面估計(jì)一個(gè)模塊可以跑到的最大頻率,可以參見:SpinalHDL--快速評估代碼性能

怎么根據(jù)時(shí)序約束和建立保持時(shí)間裕量來分析工程能跑到的最大頻率可以參考下面:

e29259cc-85e9-11ee-939d-92fbcf53809c.png

首先來看一下PR之后是哪條路徑不收斂,究竟是同一時(shí)鐘域下的還是跨時(shí)鐘域的路徑,兩者的處理方式不一樣。

e29994e4-85e9-11ee-939d-92fbcf53809c.png

可以看到是Intra-clock paths爆紅了,也就是同一時(shí)鐘域下的路徑時(shí)序不收斂。

接下來看具體的時(shí)序路徑:

e2b32f58-85e9-11ee-939d-92fbcf53809c.png

可以看到logic delay遠(yuǎn)遠(yuǎn)比net delay大,那么我們就需要去降低logic delay,也就是要把我們的組合邏輯搞簡單一點(diǎn)。如果是net delay比較大就要考慮是不是布線擁塞的問題了,兩者的處理方式不太一樣。

e2ce0314-85e9-11ee-939d-92fbcf53809c.png

再來看一下它的電路圖,可以看到在左邊的寄存器輸出之后經(jīng)過LUT,Carry等組合邏輯之后,給到DSP的輸入端。一般來說DSP的幾級pipline最好的都用上,這樣DSP可以跑到更高的頻率。

再來看一下具體的路徑報(bào)告:

e2e53124-85e9-11ee-939d-92fbcf53809c.png

可以看到logic的延時(shí)占到了82%,因此如果要解決這個(gè)時(shí)序?yàn)槔?,就必須要把logic delay給降低。

兩者的比例可以參考,七系列的FPGA和UltraScale系列的FPGA不太一樣:

e2fd2874-85e9-11ee-939d-92fbcf53809c.png

e312292c-85e9-11ee-939d-92fbcf53809c.png

來看一下這一個(gè)時(shí)序?yàn)槔龑?yīng)的代碼:

e3326a7a-85e9-11ee-939d-92fbcf53809c.png

可以看到其實(shí)挺復(fù)雜的,有減法,有乘法。其中減法是被vivado用LUT+Carry搭了起來,乘法用的DSP。

要解決這個(gè)問題,就是把這一大段代碼進(jìn)行流水拆開嘛,把減法拆一級流水,乘法器拆為三級流水。

將代碼修改為以下的樣子,再來綜合一下

e3880b4c-85e9-11ee-939d-92fbcf53809c.png

e399fe6a-85e9-11ee-939d-92fbcf53809c.png

可以看到時(shí)序就收斂了。

再來看一下生成電路結(jié)構(gòu):

e3a3e664-85e9-11ee-939d-92fbcf53809c.png

可以看到FDCE之后仍然是LUT+Carry的形式,用于做減法運(yùn)算,然后再接入DSP的輸入,在源碼里面做完減法之后還有這兩級寄存器,但是在電路圖里面看不到他們了,這是因?yàn)檫@兩級寄存器被DSP給吸收掉了,用于提高DSP的時(shí)鐘頻率,這兩級寄存器會(huì)利用DSP單元內(nèi)部的寄存器來實(shí)現(xiàn),并不會(huì)增加我們的資源占用,DSP核里面的資源不用也是浪費(fèi)。

e3b7a4c4-85e9-11ee-939d-92fbcf53809c.png

e3ca2086-85e9-11ee-939d-92fbcf53809c.png

上圖為DSP單元里面的寄存器排布,可以看到有六級。

本篇介紹了一次時(shí)序調(diào)優(yōu)的過程,就是重新計(jì)算流水線,看看哪里是時(shí)序瓶頸。這種重新計(jì)算流水線的方式代價(jià)還是比較大的,需要重新修改代碼,所以在設(shè)計(jì)初期就應(yīng)該考慮到這個(gè)問題,比如DSP的流水線寄存器,BRAM的輸出寄存器這些在設(shè)計(jì)初期就考慮使用到它們,來獲取更好的時(shí)序。

審核編輯:湯梓紅

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

    關(guān)注

    1629

    文章

    21729

    瀏覽量

    602986
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5336

    瀏覽量

    120230
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    10

    文章

    1733

    瀏覽量

    131446
  • 時(shí)序收斂
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    7602
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84627

原文標(biāo)題:記錄一次時(shí)序收斂的過程

文章出處:【微信號:FPGA開源工坊,微信公眾號:FPGA開源工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    進(jìn)行RTL代碼設(shè)計(jì)需要考慮時(shí)序收斂的問題

    更快,而個(gè)壞的代碼風(fēng)格則給后續(xù)時(shí)序收斂造成很大負(fù)擔(dān)。你可能要花費(fèi)很長時(shí)間去優(yōu)化時(shí)序,保證時(shí)序收斂
    的頭像 發(fā)表于 11-20 15:51 ?3968次閱讀
    進(jìn)行RTL代碼設(shè)計(jì)需要考慮<b class='flag-5'>時(shí)序</b><b class='flag-5'>收斂</b>的問題

    UltraFast設(shè)計(jì)方法時(shí)序收斂快捷參考指南

    資源利用率、邏輯層次和時(shí)序約束。 2時(shí)序基線設(shè)定:在每個(gè)實(shí)現(xiàn)步驟后檢查并解決時(shí)序違例,從而幫助布線后收斂時(shí)序。 3
    的頭像 發(fā)表于 11-05 15:10 ?5002次閱讀
    UltraFast設(shè)計(jì)方法<b class='flag-5'>時(shí)序</b><b class='flag-5'>收斂</b>快捷參考指南

    FPGA時(shí)序收斂學(xué)習(xí)報(bào)告

    經(jīng)過兩天的惡補(bǔ),特別是學(xué)習(xí)了《第五章_FPGA時(shí) 序收斂》及其相關(guān)的視頻后,我基本上明白了時(shí)序分析的概念和用法。之后的幾天,我會(huì)根據(jù)些官方的文件對時(shí)序分析進(jìn)行更系統(tǒng)、深入的學(xué)習(xí)。先
    發(fā)表于 09-23 10:26

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

    +時(shí)序例外約束+I/O約束+Post-fit Netlist 引入Post-fit Netlist的過程是從一次成功的時(shí)序收斂結(jié)果開始,把特
    發(fā)表于 06-02 15:54

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

    過程是從一次成功的時(shí)序收斂結(jié)果開始,把特定的組邏輯(Design Partition)在FPGA上實(shí)現(xiàn)的布局位置和布線結(jié)果(Netlis
    發(fā)表于 12-27 09:15

    請問如何收斂高速ADC時(shí)序?

    如何收斂高速ADC時(shí)序?有哪種辦法可以最大化ADC的建立和保持時(shí)間?
    發(fā)表于 04-14 06:06

    有哪些方法可以解決時(shí)序收斂的問題?

    什么是時(shí)序收斂?如何去解決物理設(shè)計(jì)中時(shí)序收斂的問題?
    發(fā)表于 04-26 06:38

    記錄一次STM32H743 CANFD調(diào)試過程中的一次BUG

    記錄一次STM32H743 CANFD調(diào)試過程中的一次BUG
    發(fā)表于 08-13 06:30

    一次過程的等值電路

    一次過程的等值電路 圖 一次過程的等值電路 在電動(dòng)機(jī)端子上安裝阻抗匹配器可
    發(fā)表于 07-18 11:24 ?1699次閱讀
    <b class='flag-5'>一次</b>波<b class='flag-5'>過程</b>的等值電路

    fpga時(shí)序收斂

    fpga時(shí)序收斂
    發(fā)表于 03-01 13:13 ?23次下載

    基于MCMM技術(shù)IC時(shí)序收斂的快速實(shí)現(xiàn)

    介紹了種在多工藝角多工作模式下快速實(shí)現(xiàn)時(shí)序收斂的技術(shù)MCMM(Multicorner-Multimode)技術(shù),該技術(shù)將工藝角和模式進(jìn)行組合,對時(shí)序同時(shí)進(jìn)行分析和優(yōu)化,到達(dá)快速實(shí)現(xiàn)
    發(fā)表于 10-20 15:21 ?3次下載
    基于MCMM技術(shù)IC<b class='flag-5'>時(shí)序</b><b class='flag-5'>收斂</b>的快速實(shí)現(xiàn)

    核電廠一次屏蔽深穿透計(jì)算

    DORT,對一次屏蔽混凝土墻進(jìn)行詳細(xì)的計(jì)算分析。通過開發(fā)蒙特卡羅程序面源續(xù)算技術(shù),有效地解決了蒙特卡羅程序深穿透難收斂問題,獲得可信的統(tǒng)計(jì)結(jié)果。結(jié)果表明,所開發(fā)的蒙特卡羅程序面源續(xù)算技術(shù)有效地解決了大規(guī)模深穿透難收斂問題;
    發(fā)表于 03-19 11:49 ?0次下載

    FPGA時(shí)序收斂讓你的產(chǎn)品達(dá)到最佳性能!

    FPGA時(shí)序收斂讓你的產(chǎn)品達(dá)到最佳性能!
    發(fā)表于 04-10 11:38 ?18次下載
    FPGA<b class='flag-5'>時(shí)序</b><b class='flag-5'>收斂</b>讓你的產(chǎn)品達(dá)到最佳性能!

    嘮解決FPGA約束中時(shí)序收斂的問題

    FPGA時(shí)序收斂,會(huì)出現(xiàn)很多隨機(jī)性問題,上板測試大概率各種跑飛,而且不好調(diào)試定位原因,所以在上板測試前,先優(yōu)化時(shí)序,再上板。
    發(fā)表于 06-26 15:41 ?2639次閱讀
    嘮<b class='flag-5'>一</b>嘮解決FPGA約束中<b class='flag-5'>時(shí)序</b>不<b class='flag-5'>收斂</b>的問題

    記錄一次使用easypoi時(shí)與源碼博弈的過程

    、背景介紹 最近剛剛接手了保險(xiǎn)線之聲平臺(tái)的開發(fā)和維護(hù)工作,第個(gè)需要修復(fù)的問題是:平臺(tái)的事件導(dǎo)出成excel功能在經(jīng)過一次上線之后突然不可用了,于是就開始了幾輪痛苦的排查以及與源碼
    的頭像 發(fā)表于 07-03 16:33 ?332次閱讀
    <b class='flag-5'>記錄</b><b class='flag-5'>一次</b>使用easypoi時(shí)與源碼博弈的<b class='flag-5'>過程</b>
    RM新时代网站-首页