WordPress 移行前の記事ですが、メモのため再掲。
Vivado 2014.4 あたりでの話。要するにパラメータ伝搬でやるんだよということ。
***
普通にインスタンスを作るのと違って、Block Design 上で Block Memory Generator IP core を Add IP すると、Re-Customize でサイズを好きにいじれません。常時自動確保。
PS – AXI BRAM Controller – BRAM なんかだとうまいこと確保してくれるんだけれども、PL側に BRAM Controller インターフェースを持った自作の IP を置いて、それに繋いでも思うように認識しない。アドレス範囲を指定するだけではだめか…
で、何を見ているかというと、IP Packager の Ports で Bus Interface を定義している、その Bus の Parameter。階層深え…。
バスを右クリックして編集ウィンドウを表示し、Parameter に “MEM_SIZE” を追加します。あとはここにバイト数を入れればOK。
ついでに “MEM_WIDTH” (ビット数) もね。
これで、BRAM 側に Width = MEM_WIDTH、Depth = MEM_SIZE / MEM_WIDTH が設定されるようになります。
Addressing の所にもちゃんと Range (Offset がなければ MEM_SIZE に等しい) を設定しましょう。
バスの Parameter にも Dependency を設定できるので、どちらも1つの Parameter から計算することにして、その大元を GUI でカスタマイズできるようにすると便利かもしれんですねー。