在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    8255

    瀏覽量

    146562
  • Pipeline
    +關注

    關注

    0

    文章

    28

    瀏覽量

    9370
收藏 人收藏

    評論

    相關推薦

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

    在Stage里,有關flushNext提供的API有
    的頭像 發表于 10-08 10:13 ?946次閱讀
    <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 ?1127次閱讀
    <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 ?1092次閱讀
    <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 ?2502次閱讀
    關于<b class='flag-5'>pipeline</b> 以及 unroll 指令的<b class='flag-5'>介紹</b>

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

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

    修改V4L2的Video Pipeline的devicetree

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

    SpinalHDL里pipeline的設計思路

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

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

    Scala里面的隱式轉換的好處是靈活,壞處就是太靈活。
    的頭像 發表于 08-19 10:45 ?679次閱讀
    <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 ?574次閱讀
    <b class='flag-5'>Pipeline</b>中throwIt的用法

    pipeline高端玩法—優先級介紹

    無論是SystemVerilog還是SpinalHDL,都有Last valid assignment wins的語法特征。如在SpinalHDL-Doc中所描述
    的頭像 發表于 11-04 10:13 ?653次閱讀
    <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 ?624次閱讀

    淺析SpinalHDL中Pipeline中的復位定制

    之前有系列文章介紹了SpinalHDL中Pipeline的使用,最近在一個功能模塊中真實的使用了這個lib。
    的頭像 發表于 03-17 17:31 ?1059次閱讀
    淺析SpinalHDL中<b class='flag-5'>Pipeline</b>中的復位定制
    主站蜘蛛池模板: 日本高清在线3344www| 国产二三区| 91av在线免费观看| 免费特黄视频| 亚洲午夜一级毛片| 激情综合网婷婷| 拍拍拍拍拍拍拍无挡大全免费| 亚洲无线视频| 久久国产精品系列| 午夜手机福利视频| 成人欧美一区二区三区视频不卡| 久久久久久91精品色婷婷| 日韩毛片| 四虎精品免费国产成人| 亚洲性后网| 在线成人欧美| 又黄又视频| 亚洲a毛片| 亚洲高清免费在线观看| 综合久久99| 国产汉服被啪福利在线观看| 性夜影院爽黄a免费视频| 人人澡人人搞| 免费一区二区三区| 免费看色视频| 亚洲电影在线| 免费在线成人| 猛操女人| 毛片免| www.亚洲视频.com| 一本到视频在线| 久久久久久国产精品免费免| 免费看h网站| 一区二区在线看| 亚洲男人天堂岛| 亚洲国产一区二区在线| 在线中文字幕第一页| 日本www.色| 老色视频| 国产小毛片| 成人在线视频网|