2013-08-01 13 views
0

我在Verilog中綜合了一些乘法單元,我想知道如果在多層實現時使用展位編碼來實現自己的CSA,或者如果您只是使用*符號併合成,則在面積/功耗節省方面通常會獲得更好的結果工具爲你解決問題嗎?實現CSA與合成時只使用乘法符號有什麼好處?

謝謝!

+0

完全取決於您使用的綜合工具。一個好的設計可能意味着比你手工設計更好的設計,或者窮人可能會選擇比你想象的更糟糕的設計。 – Tim

+0

@Tim,Synopsys DC是我正在使用的 – Veridian

+0

我相信dc有一些指令可以用來溝通您希望使用哪種倍數(速度優化,面積優化,展位等)。檢查你的文檔,看看是否有這樣的選項。 – Tim

回答

1

通常,我傾向於相信我使用的編譯器工具,只要它們符合我的時間和區域預算,就不會對結果產生過多擔心。如果我創建一個包含乘法(*)和重定時寄存器或兩個寄存器的Verilog模塊,並且推入下拉到該模塊中以合成它,然後彈出到頂層合成。看起來好像編譯器會被其他時序路徑「分散注意力」,如果你試圖一次完成所有的事情,那麼把它集中在一個你認爲會變得棘手的乘法器上似乎有所幫助。

+0

我有寄存器重定時啓用,但是,你說要添加一個重定時寄存器或兩個?你的意思是在你的數據路徑中添加一些寄存器,綜合工具可以嘗試推動,以便通過優化每個階段的延遲來查看它是否能夠獲得更好的結果? – Veridian

+0

@starbox:通常,您使用寄存器重定時來通過流水線設計移動寄存器,因此您可以在I/O邊界保留功能。如果您想要管道乘法器,在模塊輸出(或輸入)處添加一個或多個寄存器,並在'balance_registers'處添加DC以移動寄存器以最小化週期時間。 「Design Compiler Reference Manual:Register Retiming」中提供了大量的細節。 – EML

+0

@EML,謝謝 – Veridian

0

我同意@Marty,我會使用*。之前我已經建立了自己的低功率加法器結構,然後在設計轉換過程/必須以更高的頻率運行時遇到問題。像這樣的硬編碼體系結構可以從代碼中移除相當多的可移植性。

在試驗中使用這些指令很適合查看體系結構的不同大小(區域),但我決定使綜合工具根據時序約束和可用區域做出最佳調用。我不確定默認情況下這些工具的功效如何。以前我們最終獲得了一個額外的許可證,爲合成添加了許多權力意識知識。

0

你有這個問題,標籤爲「FPGA」。如果您的目標器件是FPGA,那麼使用FPGA的乘法器宏功能可能是可取的(不記得現在賽靈思怎麼稱呼它)。

這樣,您將確定該工具使用任何內部硬件結構您打算使用而不考慮合成器工具。你一定會得到一個最佳的解決方案,從時間和延遲的角度來看也是可以預測的。

此外,您不必爲所有邊角情況進行測試,如果您正在進行有符號乘法以及遵循何種編碼準則,則尤其重要。