2011-04-28 48 views
3

例如,如何充分利用retiming和/或c-slow來充分利用給定的管道。爲fpga實現優化管道吞吐量的最佳實踐是什麼?

隨着重定時,一些模塊通過將移位寄存器上的輸入得到更好的結果(前向寄存器平衡),而其他模塊與輸出(向後寄存器平衡)移位寄存器做得更好。

現在我使用下面的方法:

  • 代碼HDL(以Verilog)
  • 創建時序約束爲 特定模塊
  • 合成,地圖,放置&路線(使用 ISE 13.1 )
  • 看帖子的地方&路由計時 爲模塊改進,並在 的最大數量o f邏輯電平。
  • 拿這個數字邏輯電平,並 讓一個受過教育的猜測觸發器數量 插入。
  • 插入觸發器,使能寄存器 平衡,希望最好

因爲它的立場,這種方法被擊中&錯過。有時它會得到相當不錯的結果,有時候會是廢話。那麼,提高重新定時成功率的好方法是什麼?

有什麼工具可以幫助嗎?此外,鏈接,論文和書籍的建議將不勝感激。

回答

4

聽起來像你有正確的想法。基於工具的重新定時可能有點碰運氣。有時候把一個額外的2或3個FF放在你認爲合適的位置以上會有幫助。

在另一個極端,當我需要將性能推到極限時,我必須手動平衡管道。這可能是一個正確的痛苦,必須將你可讀的HDL代碼分解成可怕的顯式邏輯和寄存器 - 但有時我發現它只需要完成:(需要大量的註釋和一個非常好的測試平臺,以確保你避免「 t破了它!

最後,還有一個「中途之家」,如果我看一下邏輯層次最多的邏輯路徑,想一下代碼,我經常發現它只有一個很小(可能只是一行代碼),這可以在不「嚴重損害」模塊其餘部分的可讀性的情況下拉出來,有時將代碼拉入自己的實體並將額外的觸發器放入該實體中,重新平衡,以更好地工作。

祝你好運!