AR# 36932

12.1 EDK - EDK シミュレーションが機能しない

説明


PowerPC エンベデッド プロジェクトに対しシミュレーションを実行すると、プロセッサの初期化で停止してしまいそれより先に進みません。

この問題が発生するのはなぜですか。

ソリューション


これは主に PowerPC シミュレーションで起きる問題ですが、MicroBlaze でも発生する可能性があります。PowerPC シミュレーションの場合、必要のない場合でもプロセッサが命令をプリフェッチを続行します。ブロック RAM の内容がすべてプロセッサ データで初期化されるわけではありません。つまり、プロセッサが空のメモリ ロケーションにアクセスする可能性があります。デフォルトでは、ブロック RAM の Unisim モデルでは「U」となっているデフォルトの VHDL 初期化が使用されます。プロセッサ モデルは U 値の読み込みを開始するときに、未知のステートになります。

この問題を回避するには、次のディレクトリにある Unisim および Simprim のブロック RAM モデルを変更します。

VHDL :
C:\Xilinx\12.1\ISE_DS\ISE\vhdl\src\unisims\primitive\ARAMB36_INTERNAL.vhd -- lines 835
C:\Xilinx\12.1\ISE_DS\ISE\vhdl\src\simprims\primitive\mti\X_ARAMB36_INTERNAL.vhd -- line 845
C:\Xilinx\12.1\ISE_DS\ISE\vhdl\src\simprims\primitive\other\X_ARAMB36_INTERNAL.vhd -- line 845

変更前 :
variable input_initf : Two_D_array_type_tmp_mem;

変更後 :
variable input_initf : Two_D_array_type_tmp_mem := (others => (others => '0'));

Modelsim
新しく変更されたプリミティブを ModelSim ライブラリに含めるには、VSIM のプロンプトで次のコマンドを使用します。

vcom -work unisim C:/Xilinx/12.2/ISE_DS/ISE/vhdl/src/unisims/primitive/ARAMB36_INTERNAL.vhd

Simprim モデルにも同じようなコマンドを使用する必要があります。

ISim
新しく変更されたプリミティブを ISim ライブラリに含めるには、ISE Design Suite のプロンプトで次のコマンドを使用します。

compxlib.exe -s xil_isim -lib unisim -l vhdl -dir C:\Xilinx\12.2\ISE_DS\ISE\vhdl\hdp\[nt|nt64|lin|lin64]

Simprim モデルにも同じようなコマンドを使用する必要があります。


Verilog :
C:\Xilinx\12.2\ISE_DS\ISE\verilog\src\unisims\ARAMB36_INTERNAL.v -- Lines 410 and 648
C:\Xilinx\12.2\ISE_DS\ISE\verilog\src\simprims\X_ARAMB36_INTERNAL.v -- 行 407 および 1707

Line 410(unisims), 407(simprims):

変更前 :
integer count1, countp1, i, i1, i_p, i_mem, init_offset, initp_offset;

変更後 :
integer count1, countp1, i, i1, j, j1, i_p, i_mem, init_offset, initp_offset;

行 648 (unisims), 1707(simprims)

Insert:
for (j = 0; j < mem_depth; j = j + 1) begin
for (j1 = 0; j1 < widest_width; j1 = j1 + 1) begin
tmp_mem[j][j1] = 1'b0;
end
end

Modelsim
新しく変更されたプリミティブを ModelSim ライブラリに含めるには、VSIM のプロンプトで次のコマンドを使用します。

vlog -work unisims_ver C:\Xilinx\12.2\ISE_DS\ISE\verilog\src\unisims\ARAMB36_INTERNAL.v

Simprim モデルにも同じようなコマンドを使用する必要があります。

ISim
新しく変更されたプリミティブを ISim ライブラリに含めるには、VSIM のプロンプトで次のコマンドを使用します。

compxlib.exe -s xil_isim -lib unisim -l verilog -dir C:\Xilinx\12.2\ISE_DS\ISE\verilog\hdp\[nt|nt64|lin|lin64]

Simprim モデルにも同じようなコマンドを使用する必要があります。

この問題は in ISE Design Suite 12.3 で修正される予定です。

その他のシミュレーションの問題については、(ザイリンクス アンサー 36026) を参照してください。
AR# 36932
日付 12/15/2012
ステータス アクティブ
種類 一般
ツール