那曲檬骨新材料有限公司

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

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

3天內不再提示

setup/hold的概念

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-07-25 10:09 ? 次閱讀

如果你參加過IC校招面試,自然會被問到“setup/hold的概念,以及setup/hold違例怎么辦?”

這時候,你肯定會立馬在腦海中從打拍或者插buffer兩個答案中選一個。但是在實際項目中,往往沒有這么簡單。舉一個實際的場景:

5bf7b42c-0ae6-11ed-ba43-dac502259ad0.png

AXI master和AXI slave這一簇信號出現setup時序違例怎么辦?

1、從AXI master 到AXI slave 出現setup違例;

2、從AXI slave 到AXI master出現setup違例;

3、兩者都出現setup時序違例。

所以AXI master和AXI slave之間的打拍會存在4中模式:

Forward Registered :對valid和payload路打拍

Backward Registered :對ready路打拍

Fully Registered :同時對valid/payload路和ready路打拍

Pass Through Mode:Bypass,均不打拍

這個問題沒那么容易或者說不能夠直接打拍,是因為這一簇信號遵循valid-ready協議,需要打拍的信號間存在時序的耦合

所以問題就簡化成如何在遵循valid -ready協議的master和slave 之間完成“打拍”,或者說在打拍的同時處理valid-ready協議。

Forward Registered

5c140fc8-0ae6-11ed-ba43-dac502259ad0.png

always @(posedge clk or negedge rst_n)begin   if (rst_n == 1'd0)       valid_dst <= 1'd0;   else if (valid_src == 1'd1)       valid_dst <= #`DLY 1'd1;   else if (ready_dst == 1'd1)       valid_dst <= #`DLY 1'd0;end always @(posedge clk or negedge rst_n)begin   if (rst_n == 1'd0)       payload_dst <= 'd0;   else if (valid_src == 1'd1 && ready_src == 1'd1)       payload_dst <= #`DLY payload_src;end ready_src = (~valid_dst) | ready_dst

5c2e0ed2-0ae6-11ed-ba43-dac502259ad0.png

現在來分析下上述Forward Registered 打拍代碼的幾個輸出端口

valid_dst:在master發請求(拉高valid_src)時拉高valid_dst,直到當前master沒有valid請求并且slave可以接收請求(拉高ready_dst)時拉低valid_dst,表示一次傳輸完成。

payload_dst:在master發請求(拉高valid_src),并且前面沒有請求、請求已經被接收或者正在被接收時將payload_src打拍賦給payload_dst。

其實master本身也會遵循valid-ready協議,payload_src和valid_src做同樣處理就行,即也可以在(valid_src == 1'd1 && ready_src == 1'd0)時進行賦值,因為此時payload_src輸入應該約束保持原始數據。

ready_src:register slice或者slave可以接收數據時拉高ready_src.

Backward Registered

5c4b1df6-0ae6-11ed-ba43-dac502259ad0.png

always @(posedge clk or negedge rst_n)begin   if (rst_n == 1'd0)       valid_tmp0 <= 1'd0;   else if (valid_src == 1'd1 && ready_dst == 1'd0 &&valid_tmp0 == 1'd0)       valid_tmp0 <= #`DLY 1'd1;   else if (ready_dst == 1'd1)       valid_tmp0 <= #`DLY 1'd0;end always @(posedge clk or negedge rst_n)begin    if (rst_n == 1'd0)       payload_tmp0 <= 'd0;   else if (valid_src == 1'd1 && ready_dst == 1'd0 &&valid_tmp0 == 1'd0)       payload_tmp0 <= #`DLY payload_src;end assign payload_dst = (valid_tmp0 == 1'd1) ?payload_tmp0 : payload_src; always @(posedge clk or negedge rst_n)begin   if (rst_n == 1'd0)       ready_src <= 1'd0;   else       ready_src <= #`DLY ready_dst;end

Backward Registered 打拍相比較Forward Registered 會復雜點,因為存在slave沒有ready時master發來請求,需要暫存payload的場景。

5c5c301e-0ae6-11ed-ba43-dac502259ad0.png

現在來分析下上述Backward Registered打拍代碼的幾個輸出端口:

ready_src:對ready通路直接進行打拍。

valid_dst:當slave沒有ready,master發來請求時拉高標志位valid_tmp0,表示下一次slave準備好之后應該從register slice內暫存的payload拿數據

payload_dst:當slave沒有ready,master發來請求時暫存payload到payload_tmp。最終的payload_dst根據標志位valid_tmp0從payload_tmp和payload_src之間選擇

Fully Registered

類似于,簡單理解就是個乒乓BUFFER,使用非空信號做valid_dst;payload的非滿信號做ready_src

Pass Through Mode

直接相連

通過上述分析,可以使用register slice mode參數化的庫,在后端要求AXI BUS打拍時直接調用,而無需重復造輪子。

原文標題:打拍優化時序不像聽起來那么簡單

文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭靜

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

    關注

    8

    文章

    7139

    瀏覽量

    89570
  • 時序
    +關注

    關注

    5

    文章

    392

    瀏覽量

    37427
  • 代碼
    +關注

    關注

    30

    文章

    4825

    瀏覽量

    69041
  • Setup
    +關注

    關注

    0

    文章

    30

    瀏覽量

    12040

原文標題:打拍優化時序不像聽起來那么簡單

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Setup/Hold Time Problem

    Setup/Hold Time ProblemConclusionIf the Setup/Hold time error happen on the Input Register (
    發表于 09-11 09:23

    【FPGA經典試題】電路模塊的setup-time和hold-time是正值還是負值

    請問:a.對于一個D-FF 而言,它的setup-time 和hold-time 是正值還是負值?為什么?b.對于一個電路模塊(包括多個組合邏輯子模塊及時序邏輯子模塊)而言,它
    發表于 03-15 10:41

    解釋下setuphold time

    本帖最后由 gk320830 于 2015-3-5 18:27 編輯 setup/hold time 是測試芯片對輸入信號和時鐘信號之間的時間要求。建立時間是指觸發器的時鐘信號上升沿到來以前,數據穩定不變的時間。保持時間是指觸發器的時鐘信號上升沿到來以后,數據穩定不
    發表于 04-12 16:40

    請問AD80370中hold up time為負值是為什么?

    在AD80370的datasheet里面有SYSREF± Setup and Hold Timing 這個時序圖,但是為什么圖中標示的holdup time是負值,如果這樣的話那device
    發表于 10-09 16:09

    什么是SetupHold時間

    什么是SetupHold時間?答:Setup/Hold Time 用于測試芯片對輸入信號和時鐘信號之間的時間要求。建立時間(Setup T
    發表于 12-21 07:39

    怎么解釋setup time和hold time的定義和在時鐘信號延遲時的變化呢?

    怎么解釋setup time和hold time的定義和在時鐘信號延遲時的變化呢?
    發表于 05-10 11:46

    Sample Hold Has Zero Droop and

    Sample Hold Has Zero Droop and Infinite Hold
    發表于 04-18 20:33 ?24次下載

    建立時間和保持時間(setup time 和 hold time)

    建立時間和保持時間貫穿了整個時序分析過程。只要涉及到同步時序電路,那么必然有上升沿、下降沿采樣,那么無法避免setup-time 和 hold-time這兩個概念。 1. 什么是setup
    發表于 02-08 14:48 ?6175次閱讀

    對于時序分析基本概念setuphold的介紹

    低電平時,T1和T4導通,此時數據進入到`D,因為此時T4導通,由于一對反相器形成雙穩態結構,圖中綠色箭頭線中的數據保持上一拍的數據結果。
    的頭像 發表于 04-16 10:34 ?1.4w次閱讀
    對于時序分析基本<b class='flag-5'>概念</b><b class='flag-5'>setup</b>和<b class='flag-5'>hold</b>的介紹

    關于打拍優化時序你真的全面了解嗎?

    如果你參加過IC校招面試,自然會被問到“setup/hold概念,以及setup/hold違例怎么辦?”
    的頭像 發表于 04-27 14:15 ?4648次閱讀
    關于打拍優化時序你真的全面了解嗎?

    什么是Setup和Holdup時間?如何解決亞穩態?

    Setup/hold time 是測試芯片對輸入信號和時鐘信號之間的時間要求。
    的頭像 發表于 06-21 15:13 ?1.3w次閱讀
    什么是<b class='flag-5'>Setup</b>和Holdup時間?如何解決亞穩態?

    為什么setup檢查下一個沿而hold檢查當前沿

    做數字電路設計的可能都見過圖一所示的setuphold時間檢查,從圖中可以明顯看出,setup time檢查下一個沿,而hold time檢查同一個沿。那么這是為什么呢 ?
    的頭像 發表于 11-21 10:30 ?4656次閱讀

    怎么解決解決Hold Time違例的問題呢

    在Place Design之后再去看Hold Time,如果此時Hold Time的違例比較小(比如-0.05ns),還是不需要理會的
    的頭像 發表于 01-11 09:05 ?4045次閱讀

    通過解剖一個邊沿觸發器簡要說明setuphold產生原因

    在后仿真過程中經常會遇到關于setuphold violation的問題,但是關于setuphold time的產生原因和由來很多人還比較朦朧,為此本文通過解剖一個邊沿觸發器簡要說
    的頭像 發表于 07-04 09:32 ?1813次閱讀
    通過解剖一個邊沿觸發器簡要說明<b class='flag-5'>setup</b>和<b class='flag-5'>hold</b>產生原因

    什么是SetupHold時間?

    什么是SetupHold時間? SetupHold時間是數字電路中一種時序要求,用于確保穩定的數據傳輸和正確的電路操作。 在數字電路中,數據的傳輸需要遵循一定的時間要求。
    的頭像 發表于 11-17 14:11 ?2274次閱讀
    做生意怎么看风水| 百家乐官网最佳打| 澳门百家乐官网职业| 百家乐官网最好打法与投注| 百家乐官网押注最高是多少| 免费百家乐规则| 百家乐赌场论坛在线| 网上百家乐试玩网址| 大发888易发| 新利网上娱乐| 百家乐官网视频游戏界面| 长方形百家乐官网筹码| 百家乐官网追号工具| 百家乐是如何骗人的| 百家乐保单机作弊| 大发888开户,| 百家乐官网网络公式| 粤港澳百家乐官网娱乐平台| 百家乐增值公式| 威尼斯人娱乐城lm0| 望江县| 网上百家乐官网公| 苹果百家乐的玩法技巧和规则| ,博彩通| 百家乐官网平7s88| 百家乐大小桌布| 168棋牌游戏| 百家乐官网食杂店| 哪个百家乐投注好| 能赢钱的棋牌游戏| 现金百家乐官网代理| 百家乐怎么赢博彩正网| 大发888 下载| 澳门百家乐官网一把决战输赢| 太阳城百家乐如何看路| 现金棋牌网站| 百家乐官网开过的路纸| 电投百家乐网站| bet365娱乐| 百家乐官网娱乐真人娱乐| 威尼斯人娱乐城老品牌lm0|