UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 19991

8.1i EDK - プログラムが複数の PLB BRAM コントローラにまたがる場合、DATA2MEM でエラーが発生する

説明

キーワード : EDK, contiguous, memory, PLB, BRAM, linker script, linkerscript, DATA2MEM, block RAM, 連続, メモリ, リンカ スクリプト, ブロック RAM

コード スペースを拡張するために、それぞれ 128KB のブロック RAM に接続される PLB BRAM コントローラを 3 つ連続して使用しました。

BEGIN plb_bram_if_cntlr
PARAMETER INSTANCE = plb_bram_if_cntlr_1
PARAMETER c_baseaddr = 0xfffa0000
PARAMETER c_highaddr = 0xfffbffff
END

BEGIN plb_bram_if_cntlr
PARAMETER INSTANCE = plb_bram_if_cntlr_2
PARAMETER c_baseaddr = 0xfffc0000
PARAMETER c_highaddr = 0xfffdffff
END

BEGIN plb_bram_if_cntlr
PARAMETER INSTANCE = plb_bram_if_cntlr_3
PARAMETER c_baseaddr = 0xfffe0000
PARAMETER c_highaddr = 0xffffffff
END

この場合、SimGen でブロック RAM が初期化されません。 次のようなエラー メッセージが表示されます。

"ERROR:Data2MEM:31 - Out of bounds code segment for ram space in
'system_sim.bmm'.
Memory space 'plb_bram_if_cntlr_1_bram' occupies [0xFFFA0000:0xFFFBFFFF]
Code segment #0 occupies [0xFFFA0000:0xFFFC4F57]

ERROR:MDT - Data2Mem generated errors during execution.
ERROR:MDT - Error creating memory initialization files."

ソリューション

ソフトウェアのすべてのセクション (data、text、bss など) が 128KB より小さい場合は、リンカ スクリプトを使用できます。 詳細は、(Xilinx Answer 16536) を参照してください。 それ以外の場合は、次の手順に従ってください。

1. XPS で [Tools] -> [Clean] -> [All] をクリックします。

2. メイン メニューで [Tools] -> [Generate Bitstream] をクリックします。

3. 1 つのブロック RAM コントローラに保存できるサイズのダミー プログラムを記述し、別のソフトウェア プロジェクト (例 : dummy) に保存します。

4. この dummy というソフトウェア プロジェクトで [Update Bitstream] を実行します。

5. ライブラリを生成し、dummy をコンパイルします。

6. [Tools] -> [Generate Simulation HDL Files] をクリックします。

7. simulation ディレクトリをプロジェクト ディレクトリ内の別のディレクトリ (例 : sim) にコピーします。

8. simulation/behavioral/system_sim.bmm ファイルを編集し、すべての BUS BLOCK を 1 つの大きな ADDRESS BLOCK に配置します。 上位のアドレス範囲を変更して、範囲全体をカバーするようにしてください。 これ以外の ADDRESS BLOCK を削除します。

9. 作業中のソフトウェア プロジェクトを実際のアプリケーション プロジェクト (例 : MyApps) に変更します。 この MyApps で [Update Bitstream] を実行します。

10. MyApps.c をコンパイルします。

11. xgywin シェルを起動し、次のコマンドを実行します。
cd simulation/behavioral
data2mem -bm system_sim.bmm -bd <absolute_path_to_MyApps_elf>/executable.elf tag plb_bram_if_cntlr_1_bram -u -o u tmpucf.ucf
xilperl <Your_EDK_install_dir>/bin/nt/ucf2vhdl.pl tmpucf.ucf system_init.vhd system system_conf vhdl

メモ : plb_bram_if_cntlr_1_bram は、ユーザーの system_sim.bmm ファイルの ADDRESS BLOCK の名前です。

12. simulation/behavioral/system_init.vhd を sim/behavioral/system_init.vhd にコピーします。

13. ModelSim を XPS の外で起動します。 XPS からは起動しないでください。

14. ModelSim のプロンプトで次を入力します。
cd <your_edk_proj_dir>/sim/behavioral

15. 次を入力します。
do system.do

16. ここからは、通常の手順どおりです。

つまり、まず、すべてのシミュレーション スクリプトをダミー プログラムで生成してから、system_sim.bmm を変更して Data2BRAM を実行し、手動で Data2MEM と UCF2VHDL を実行して、ユーザーのプログラム用に system_init.vhd を生成します。

詳細は、(Xilinx Answer 16536) を参照してください。
AR# 19991
日付 12/15/2012
ステータス アクティブ
種類 一般
このページをブックマークに追加