2015-12-12 20 views
1
[email protected](posedge clk) 
begin 
r00<=r01; 
r01<=r02; 
r02<=arr[x][y]; 
//code 
end 

這將在一個生成塊內合成嗎?另外,'arr'是二維的。我可以在always塊中使用數組'arr [x] [y]'嗎?它是可合成的嗎?

+0

這取決於綜合工具。許多合成器爲這種類型的陣列創建一個RAM結構。 – sharvil111

+0

是的,爲什麼不。對於生成的塊或者總是阻塞不是什麼大問題。真正的問題是,如果arr是一個巨大的,那麼綜合工具將創建一個大型寄存器庫來對此進行建模,並導致運行時間過長,有時會耗盡所有內存空間並炸燬。 – jclin

回答

0

爲了詳細說明上面的註釋,您的綜合工具應該推斷這是內存,但取決於您的聲明和使用情況,有幾種情況。

  1. 你會得到unsynthesizeable或錯誤代碼中的因念邊寫邊等存儲器接口錯誤,由於訪問模式

  2. 你的內存實際上將被推斷爲寄存器,它可以使您的設計由於尺寸而無法合成。

  3. 一切都會很好。

很多工具(如Quartus)都帶有內置功能,可以爲代碼添加內存(即Megafunction工具)。

相關問題