説明
デフォルトの MIG 出力シミュレーションを実行すると、キャリブレーションに非常に長時間かかり、メモリのオーバーフロー エラーが発生する場合があります。
メモリのオーバーフローが発生すると、ModelSim で次のようなエラー メッセージが表示されます。
# sim_tb_top.comp_inst.mem_8_4.gen_mem[1].u_comp_ddr3.memory_write: at time 40733688.0 ps ERROR: Memory overflow. Write to Address 00083e with Data xxxxxxxx001f0041 will be lost.
# You must increase the MEM_BITS parameter or define MAX_MEM.
Init_done がアサートされることはありません。
ソリューション
このようにシミュレーションの時間が長くなることを回避するには、sim_tb_top.v モジュールのパラメーターを変更してキャリブレーション アルゴリズムをスキップします。
キャリブレーション シーケンスの制御に使用するシミュレーション パラメーターはデフォルトで次のように設定されています。
parameter SIM_INIT_OPTION = "NONE";
parameter SIM_CAL_OPTION = "NONE";
キャリブレーション シーケンスを短縮するには、example_design/sim/sim_tb_top.v または user_design/sim/sim_tb_top.v モジュールでこれらのパラメーターの設定を次のように変更します。
parameter SIM_INIT_OPTION = "SKIP_PU_DLY";
parameter SIM_CAL_OPTION = "FAST_CAL";
メモリのオーバーフロー エラーが発生する場合、メモリで使用されている最終アドレス位置を減らすことができます。
最終アドレス位置は、同じ sim_tb_top.v モジュールで次のように設定されています。
parameter END_ADDRESS = 32'h00ffffff;
parameter PRBS_EADDR_MASK_POS = 32'hff000000;
メモリのオーバーフローを回避するには、これらのパラメーターを次のように変更します。
parameter END_ADDRESS = 32'h000003ff;
parameter PRBS_EADDR_MASK_POS = 32'hfffffc00;
これらのパラメーターは MIG 3.2 のテストベンチで上記の値に変更される予定です。