色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

冬至子 ? 來源:Spinal FPGA ? 作者:玉騏 ? 2023-11-24 16:57 ? 次閱讀

編 者 按

來看下Pipeline中HaltIt的用法

HaltIt

看名字,就基本能猜到這個函數的大體功能是流水線暫停。

在Stage中,流水線暫停提供了這么幾個API:

def haltIt()(implicit loc: Location) : Unit = haltIt(ConditionalContext.isTrue)def haltIt(cond : Bool)(implicit loc: Location) : Unit = internals.request.halts += nameFromLocation(CombInit(cond), "haltRequest")def haltWhen(cond : Bool)(implicit loc: Location) : Unit = haltIt(cond)

三個API最終所實現的都是往internals.request.halts中添加cond條件。那么就看下request.halts在Pipeline構建時所起的作用。

首先,在進行 connectionsWithoutSinks(沒有驅動其他級Stage)往前遍歷的函數propagateRequirements中:

if(stage.request.halts.nonEmpty){    stage.arbitration.propagateReady = true    stage.isReady //Force creation}

可以看到,如果stage中的internals.request.halts非空,這里做了兩件事:

  • stage.arbitration.propagateReady設置為true,即需向前級Stage傳遞Ready信號
  • 為本級創建input.ready信號

隨后在propagateRequirements中的代碼片段:

stageDriver.get(stage) match {        case Some(c : ConnectionModel) = > {          if(c.s.arbitration.propagateReady && c.m.output.ready == null){            c.m.output.ready = Bool()            if(c.m.input.ready == null){              c.m.input.ready = Bool()            }          }

這里在處理當前Stage中的ConnectionLogic時,因為當前stage.arbitration.propagateReady為true,如果驅動當前Stage的Master Stage的output.ready為空,那么這里就會確保Master Stage中具備input.ready以及output.ready,確保上級Stage具備這種握手機制。

而后在該函數中的遞歸調用:

for(m < - stageMasters(stage)){    if(stage.internals.arbitration.propagateReady) m.internals.arbitration.propagateReady = true    propagateRequirements(m)}

這里如果當前stage如果存在stage.arbitration.propagateReady為true,那么也會設置其Master Stage的.arbitration.propagateReady為true,通過遞歸調用,確保整個鏈路上ready信號一直向前傳播,即確保反壓一路到底。

最后,在處理Stage Internal Connection階段時:

if(s.request.halts.nonEmpty){    val doHalt = s.request.halts.orR    when(doHalt){        s.input.ready := False        s.output.valid := False    }}

如果當前Stage中request.halts中條件滿足,那么當前stage中的output.valid,input.ready信號將會統一拉低,從而暫停向下級傳輸。

Example

case class Test8() extends Component{  val io=new  Bundle{    val data_in=slave(Stream(UInt(8 bits)))    val data_out=master(Stream(UInt(8 bits)))    val cond=in Bool()  }  noIoPrefix()  val A=Stageable(UInt(8 bits))  val pip=new Pipeline{    val stage0=new Stage{      this.driveFrom(io.data_in)      A:=io.data_in.payload    }    val stage1=new Stage(Connection.M2S()){    }    val stage2=new Stage(Connection.M2S()){      io.data_out.valid:=this.internals.output.valid      io.data_out.payload:=A      internals.output.ready=Bool()      this.haltIt(io.cond)      internals.output.ready:=io.data_out.ready      this.internals.arbitration.propagateReady=true    }  }  pip.build()}

這里給出了一個haltIt的example。在staeg2階段,如果cond為true,那么則流水線暫停。

這里需注意的是這里將stage2的output.ready由io.data_out.ready信號進行驅動,但output.ready信號是默認不會創建的,故這里顯示創建internals.output.ready為Bool類型電路對象。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 驅動器
    +關注

    關注

    53

    文章

    8259

    瀏覽量

    146612
  • Pipeline
    +關注

    關注

    0

    文章

    28

    瀏覽量

    9372
收藏 人收藏

    評論

    相關推薦

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

    在Stage里,有關flushNext提供的API有
    的頭像 發表于 10-08 10:13 ?949次閱讀
    <b class='flag-5'>pipeline</b><b class='flag-5'>高端</b><b class='flag-5'>玩法</b>—看下FlushNext的用法

    麥克納姆輪驅動和玩法

    麥克納姆輪(萬向輪)驅動和玩法麥克納姆輪介紹麥克納姆輪運動分析及方向確定麥克納姆輪安裝組合及運動分析分析錯誤例子【AAAA】正確的麥輪分布應該是【ABBA】麥克納姆輪的安裝位置安裝方法麥克納姆輪介紹
    發表于 06-29 08:40

    Pipeline ADCs Come of Age

    Pipeline ADCs Come of Age Abstract: In the mid 1970s, a new data converter architecture
    發表于 04-16 16:21 ?1131次閱讀
    <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
    發表于 04-25 10:22 ?1093次閱讀
    <b class='flag-5'>Pipeline</b> ADCs Come of Age

    流水線模數轉換器的時代-Pipeline ADCs Come

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

    號牧場APP系統開發介紹

    號牧場玩法介紹如下:(1)注冊、下載可以獲得一只黃金雞(2)現在買黃金雞買一送一,每個賬號僅限購買一次。(3)一只雞每天產一個雞蛋,1個雞蛋0.65元-1.5元。二、號牧場有以下
    發表于 03-28 16:44 ?486次閱讀

    關于pipeline 以及 unroll 指令的介紹

    HLS 優化設計的最關鍵指令有兩個:一個是流水線 (pipeline) 指令,一個是數據流(dataflow) 指令。正確地使用好這兩個指令能夠增強算法地并行性,提升吞吐量,降低延遲但是需要遵循一定的代碼風格。
    的頭像 發表于 02-09 09:53 ?2508次閱讀
    關于<b class='flag-5'>pipeline</b> 以及 unroll 指令的<b class='flag-5'>介紹</b>

    如何降低開發門檻助力音視頻創新玩法

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

    修改V4L2的Video Pipeline的devicetree

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

    SpinalHDL里pipeline的設計思路

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

    pipeline高端玩法之Stage里的隱式轉換

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

    Pipeline中throwIt的用法

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

    pipeline高端玩法—優先級介紹

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

    什么是pipeline?Go中構建流數據pipeline的技術

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

    淺析SpinalHDL中Pipeline中的復位定制

    之前有系列文章介紹了SpinalHDL中Pipeline的使用,最近在一個功能模塊中真實的使用了這個lib。
    的頭像 發表于 03-17 17:31 ?1070次閱讀
    淺析SpinalHDL中<b class='flag-5'>Pipeline</b>中的復位定制
    主站蜘蛛池模板: 亚洲精品无码AAAAAA片| 伊人久久综在合线影院| RUN AWAY无删减全集动漫| 日本xxxx裸体xxxx| 国产精品高清视亚洲一区二区| 无码专区无码专区视频网网址| 国产精品爽黄69天堂A片| 一二三四中文字幕在线看| 免费亚洲视频| 国产高清视频a在线大全| 印度老妇女bbbxxx| 日韩亚洲人成在线| 久久免费视频| 国产360激情盗摄全集| 亚洲无碼网站观看| 妞干网手机免费视频| 国产午夜精品美女免费大片| 97视频久久| 亚洲 日本 天堂 国产 在线| 暖暖 免费 高清 日本视频大全 | seba51久久精品| 校花的奶好大好浪| 鲁一鲁亚洲无线码| 国产精品香蕉视频在线| 456亚洲人成在线播放网站| 偷上邻居熟睡少妇| 麻豆啊传媒app黄版破解免费| 国产高清视频在线观看97| 最新老头恋老OLDMAN| 小莹的性荡生活40章| 奶头好翘是不是想要了| 国产一区二区内射最近更新| XXX欧美性兽交| 中文字幕在线不卡日本v二区 | 亚洲日本va中文字幕久久| 欧美写真视频一区| 久久精品观看影院2828| 国产激情文学| xxnx18日本| 97视频精品| 亚洲精品视频在线观看视频|