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

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

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

pipeline高端玩法—看下FlushNext的用法

Spinal FPGA ? 來源:Spinal FPGA ? 作者:玉騏 ? 2023-10-08 10:13 ? 次閱讀

看完了flush,再看下flushNext的用法

》flushNext

在Stage里,有關(guān)flushNext提供的API有:

defflushNext():Unit = flushNext(ConditionalContext.isTrue)

defflushNext(cond : Bool):Unit = internals.request.flushNext += cond

調(diào)用flushNext,最終會將flushNext的需求暫存到internals.request.flushNext中。

在Pipeline中,propagateRequirements函數(shù)中對于每一級Stage的處理:

varflushNext = stage.internals.request.flushNext.nonEmpty generate orR(stage.internals.request.flushNext)

如果flushNext不為空,則將所有條件或后得到flushNext電路對象。

a884076e-5f4a-11ee-939d-92fbcf53809c.png

在上面的這段描述中,針對驅(qū)動當(dāng)前Stage的Conntection處理,flushNext電路將會被存儲在clFlushNext(l)中。如果flushNext不為空(line:5),可以看到在line7:9行處理時,不管flush是存在,都會創(chuàng)建一個flush電路對象,也就意味著一般情況下flush,flushNext不需要同時使用。

而在line11:14中,以M2S為例,alwasContainsSlaveToken為True,會將flushNext清空。此時在line16:17時,僅會對驅(qū)動當(dāng)前Stage的Stage Master調(diào)動flushIt函數(shù),也就意味著flushNext將會向前傳播,前級相當(dāng)于執(zhí)行flushIt。

clFlushNext的使用僅在Connection中使用到。還是以M2S為例,其處理邏輯為:

if(flushNext != null&& !flushPreserveInput) s.valid clearWhen(flushNext && s.ready)

在這里,如果flushNext不為空(flushPreserveInput默認(rèn)為true),s.valid僅會在slave端ready和flushNext同時為高時才會清零。對比flush操作:

if (flush!= null&& !flushPreserveInput) s.valid clearWhen(flush)

也就意味著flushNext存在ready的情況下才具有意義。

》example

結(jié)合上面的分析,flushNext與flush的最大區(qū)別在于存在ready傳播的情況。這里先給出一個flsuhIt的例子:

wKgZomUiEOWAWKyuAADG-gw3z3U180.jpg

這里是一個三級pipeline,最后一級調(diào)用flushIt操作,flushRoot參數(shù)傳遞為true。

采用下面的仿真代碼:

wKgaomUiEP-AYapaAACi0NSFcZE779.jpg

我們這里在index==5時將cond拉高一拍,data_out.ready拉低一拍。

仿真波形如下:

a8aa546e-5f4a-11ee-939d-92fbcf53809c.jpg

可以看到,由于這里流水線為3級,在index=5時執(zhí)行flush數(shù)據(jù)3,4,5不會從data_out有效輸出。

將flushRoot參數(shù)修改為false:

a8b65b2e-5f4a-11ee-939d-92fbcf53809c.jpg

cond為高時data_out.valid仍然為高電平,下一個時鐘周期拉低。雖然此時ready為低電平,這個數(shù)據(jù)沒有被消耗,但其拉低時間不考慮ready信號的高低電平。

再將上面的代碼換成flushNext:

a8c3aa5e-5f4a-11ee-939d-92fbcf53809c.jpg

可以看到,雖然cond為高,但其仍會堅持將此時已經(jīng)傳播到stage2的3給穩(wěn)定傳輸出去,僅有4,5不會被data_out輸出。






審核編輯:劉清

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

    關(guān)注

    68

    文章

    18926

    瀏覽量

    227221
  • 仿真器
    +關(guān)注

    關(guān)注

    14

    文章

    1008

    瀏覽量

    83437
  • Pipeline
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    9321

原文標(biāo)題:pipeline高端玩法(八)—FlushNext

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

收藏 人收藏

    評論

    相關(guān)推薦

    總結(jié)一下STM32串口的用法

    STM32CubeMX_定時器中斷_PWM前兩節(jié)簡單的總結(jié)了GPIO, EXTI, TIMER的相關(guān)用法, 本節(jié)總結(jié)一下STM32串口的用法, 依然是原理性的東西不多講, 直接開干.先看下縮寫:...
    發(fā)表于 02-10 06:17

    Pipeline ADCs Come of Age

    Pipeline ADCs Come of Age Abstract: In the mid 1970s, a new data converter architecture
    發(fā)表于 04-16 16:21 ?1031次閱讀
    <b class='flag-5'>Pipeline</b> ADCs Come of Age

    Pipeline ADCs Come of Age

    and mixed-signal community, called pipeline ADCs. The following article takes the knowledge of advantages and disadvantages of the pipeline
    發(fā)表于 04-25 10:22 ?1049次閱讀
    <b class='flag-5'>Pipeline</b> ADCs Come of Age

    流水線模數(shù)轉(zhuǎn)換器的時代-Pipeline ADCs Come

    and mixed-signal community, called pipeline ADCs. The following article takes the knowledge of advantages and disadvantages of the pipeline
    發(fā)表于 05-01 10:57 ?1011次閱讀
    流水線模數(shù)轉(zhuǎn)換器的時代-<b class='flag-5'>Pipeline</b> ADCs Come

    狀態(tài)機原理及用法

    狀態(tài)機原理及用法狀態(tài)機原理及用法狀態(tài)機原理及用法
    發(fā)表于 03-15 15:25 ?0次下載

    如何降低開發(fā)門檻助力音視頻創(chuàng)新玩法

    、和華為AI技術(shù)專家Eric相聚直播間,深度解析了AV Pipeline Kit的技術(shù)要點和應(yīng)用場景,助力廣大音視頻開發(fā)者以更輕松更高效的方式,為用戶提供新玩法,新交互。 緣起:音視頻開發(fā)面臨諸多挑戰(zhàn)
    的頭像 發(fā)表于 09-28 10:26 ?1854次閱讀

    修改V4L2的Video Pipeline的devicetree

    PetaLinux 能夠根據(jù)Vivado的設(shè)計,自動生成V4L2的Video Pipeline的devicetree。但是它主要為Xilinx的VCU TRD服務(wù),測試的組合比較少。很多時候,需要根據(jù)自己的工程,修改V4L2的Video Pipeline的devicetr
    的頭像 發(fā)表于 08-02 08:03 ?1961次閱讀
    修改V4L2的Video <b class='flag-5'>Pipeline</b>的devicetree

    Ping命令的7個基礎(chǔ)用法

    IT行業(yè)中ping命令經(jīng)常被用到,今天整理了一下關(guān)于網(wǎng)絡(luò)基礎(chǔ)知識中的網(wǎng)絡(luò)命令ping命令在項目中是使用頻率最高的,一般我們用的都是它的基本功能,今天和大家來詳細(xì)看下Ping命令的7個基礎(chǔ)用法,掌握了秒變大神!
    的頭像 發(fā)表于 10-12 09:16 ?3606次閱讀

    SpinalHDL里pipeline的設(shè)計思路

    如果你曾看過VexRSICV的設(shè)計,對于從事邏輯設(shè)計的你會驚訝從未想過邏輯設(shè)計還能這么來做。針對VexRSICV所衍生出的pipeline Lib,該系列會對pipeline進行一次梳理。誠如之前一篇博客曾講,這是“勇者的游戲”。
    的頭像 發(fā)表于 08-16 15:11 ?833次閱讀
    SpinalHDL里<b class='flag-5'>pipeline</b>的設(shè)計思路

    pipeline高端玩法之Stage里的隱式轉(zhuǎn)換

    Scala里面的隱式轉(zhuǎn)換的好處是靈活,壞處就是太靈活。
    的頭像 發(fā)表于 08-19 10:45 ?542次閱讀
    <b class='flag-5'>pipeline</b><b class='flag-5'>高端</b><b class='flag-5'>玩法</b>之Stage里的隱式轉(zhuǎn)換

    Pipeline中throwIt的用法

    字如其名,來看下Pipeline中throwIt的用法,是怎么個丟棄方式。
    的頭像 發(fā)表于 10-21 16:24 ?421次閱讀
    <b class='flag-5'>Pipeline</b>中throwIt的<b class='flag-5'>用法</b>

    pipeline高端玩法—優(yōu)先級介紹

    無論是SystemVerilog還是SpinalHDL,都有Last valid assignment wins的語法特征。如在SpinalHDL-Doc中所描述
    的頭像 發(fā)表于 11-04 10:13 ?532次閱讀
    <b class='flag-5'>pipeline</b><b class='flag-5'>高端</b><b class='flag-5'>玩法</b>—優(yōu)先級介紹

    pipeline高端玩法—haltIt介紹(九)

    看名字,就基本能猜到這個函數(shù)的大體功能是流水線暫停。
    的頭像 發(fā)表于 11-24 16:57 ?274次閱讀

    什么是pipeline?Go中構(gòu)建流數(shù)據(jù)pipeline的技術(shù)

    本文介紹了在 Go 中構(gòu)建流數(shù)據(jù)pipeline的技術(shù)。 處理此類pipeline中的故障很棘手,因為pipeline中的每個階段可能會阻止嘗試向下游發(fā)送值,并且下游階段可能不再關(guān)心傳入的數(shù)據(jù)。
    的頭像 發(fā)表于 03-11 10:16 ?443次閱讀

    淺析SpinalHDL中Pipeline中的復(fù)位定制

    之前有系列文章介紹了SpinalHDL中Pipeline的使用,最近在一個功能模塊中真實的使用了這個lib。
    的頭像 發(fā)表于 03-17 17:31 ?845次閱讀
    淺析SpinalHDL中<b class='flag-5'>Pipeline</b>中的復(fù)位定制