FPGA中Retiming技術


1 Retiming的定義

重定時(Retiming)是一種時序優化技術,用在不影響電路輸入/輸出行爲的狀況下跨組合邏輯寄存器從而提升設計性能。node

2 Retiming的目的

Retiming就是從新調整時序,例如電路中遇到複雜的組合邏輯,延遲過大,電路時序不知足,這個時候採用流水線技術,在組合邏輯中插入寄存器加流水線,進行操做,面積換速度思想。
微信

3 Retiming原理

咱們知道任何的數字電路均可以等效成組合邏輯加D觸發器打拍,兩個D觸發器之間的組合邏輯路徑決定了,系統的工做頻率,決定芯片的性能。因此爲了提升芯片的工做頻率,使用流水線技術在組合邏輯中插入寄存器。
工具


插入寄存器的位置須要慎重選擇,不一樣的位置數據的打拍所消耗的寄存器的數量也不一樣,比方說你在位置a消耗25bit寄存器,位置b消耗20bit寄存器,能省則省。

前面插入寄存器的位置使得comb1的延遲爲30ns,comb2的延遲爲10ns,系統的最高工做頻率是由最長路徑決定的。也就是說你這個系統最高工做頻率的週期,不小於30ns,前面是插入pipeline,這個時候咱們不改變時序,採用重定時技術,使得各個組合邏輯之間的延遲至關。

4 Vivado與Retiming

在Vivado 綜合操做中有兩種方法實現自動重定時(全局定時器),全局重定時是對整個設計而言的,基於設計時的時序要求優化大型組合邏輯結構中的寄存器設計。
這種方式須要分析設計中的全部邏輯,優化最壞路徑狀況下的寄存器從而使總體設計反應速度更快。爲了實現這一點設計時必須在.xdc文件中規定準確的時間限制。在synth_design或Vivado GUI綜合設置下經過-retiming命令啓用全局重定時,此外該特性還能夠與合成中的BLOCK_SYNTH特性一塊兒用於設計中的特定模塊。
性能


局部重定時是指用戶明確告訴工具使用retiming_forward、retiming_backward RTL屬性時須要執行的重定時邏輯。執行局部重定時操做是應該要當心,由於它不是計時器驅動的,而是工具將徹底按照用戶要求去執行。以下圖所示(UG901)

若是是retiming_forward,只須要將(*retiming_backward = 1 *) reg my_sig;修改成(*retiming_forward = 1 *) reg my_sig;
注意如下狀況下不能進行Retiming操做:
  1. 寄存器時序異常(多循環路徑、錯誤的路徑、最大延遲路徑)flex

  2. 寄存器的類型屬性不能改變(DONT_TOUCH, MARK_DEBUG)優化

  3. 採用不一樣控制級的寄存器spa


 

FPGA   .net

設計

本文分享自微信公衆號 - 瓜大三哥(xiguazai_tortoise)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。orm

相關文章
相關標籤/搜索