AR# 37861

MIG v3.6-v3.61 、Virtex-6 DDR3 - マルチコントローラー VHDL デザインで RDIMM をターゲットにしているとシミュレーションでデータ エラーが発生する

説明

MIG v3.6-v3.61 マルチコントローラー DDR3 SDRAM VHDL デザインで、コントローラーの 1 つが RDIMM をターゲットにしていると、コンフィギュレーションによってはデータ エラーが発生します。

これらのデータ エラーは CAS レイテンシの値が低い、または周波数が低いコンフィギュレーションで見られます。

これは、sim_tb_top モジュールの if-else 文が間違っているために発生しています。

この問題は、Verilog デザイン、シングル コントローラー VHDL デザイン、RDIMM をターゲットにしていないマルチ コントローラー VHDL デザインでは見られません。

ソリューション


間違った if-else 文が sim_tb_top.vhd テストベンチ モジュール内の特定のパイプライン ロジックにあります。

2 番目のコントローラーが RDIMM をターゲットとしているマルチコントローラー デザインにおける誤りの例です。

 既存コード : 


process(c1_ddr3_ck_p_sdram(0))
begin
if(rising_edge(c1_ddr3_ck_p_sdram(0))) then
if ( c1_ddr3_reset_n = '0' ) then
c1_ddr3_ras_n_r <= '1';
c1_ddr3_cas_n_r <= '1';
c1_ddr3_we_n_r <= '1';
c1_ddr3_cs_n_r <= (others => '1');
c1_ddr3_odt_r <= (others => '0');
end if;
else
c1_ddr3_addr_r <= c1_ddr3_addr_sdram after (SYSCLK_f0_PERIOD/2);
c1_ddr3_ba_r <= c1_ddr3_ba_sdram after (SYSCLK_f0_PERIOD/2);
c1_ddr3_ras_n_r <= c1_ddr3_ras_n_sdram after (SYSCLK_f0_PERIOD/2);
c1_ddr3_cas_n_r <= c1_ddr3_cas_n_sdram after (SYSCLK_f0_PERIOD/2);
c1_ddr3_we_n_r <= c1_ddr3_we_n_sdram after (SYSCLK_f0_PERIOD/2);
c1_ddr3_cs_n_r <= c1_ddr3_cs_n_sdram after (SYSCLK_f0_PERIOD/2);
c1_ddr3_odt_r <= c1_ddr3_odt_sdram after (SYSCLK_f0_PERIOD/2);
end if;
end process;


これを次のように修正する必要があります。

修正後のコード :

process(c1_ddr3_ck_p_sdram(0))
begin
if(rising_edge(c1_ddr3_ck_p_sdram(0))) then
if ( c1_ddr3_reset_n = '0' ) then
c1_ddr3_ras_n_r <= '1';
c1_ddr3_cas_n_r <= '1';
c1_ddr3_we_n_r <= '1';
c1_ddr3_cs_n_r <= (others => '1');
c1_ddr3_odt_r <= (others => '0');
else
c1_ddr3_addr_r <= c1_ddr3_addr_sdram after (SYSCLK_f0_PERIOD/2);
c1_ddr3_ba_r <= c1_ddr3_ba_sdram after (SYSCLK_f0_PERIOD/2);
c1_ddr3_ras_n_r <= c1_ddr3_ras_n_sdram after (SYSCLK_f0_PERIOD/2);
c1_ddr3_cas_n_r <= c1_ddr3_cas_n_sdram after (SYSCLK_f0_PERIOD/2);
c1_ddr3_we_n_r <= c1_ddr3_we_n_sdram after (SYSCLK_f0_PERIOD/2);
c1_ddr3_cs_n_r <= c1_ddr3_cs_n_sdram after (SYSCLK_f0_PERIOD/2);
c1_ddr3_odt_r <= c1_ddr3_odt_sdram after (SYSCLK_f0_PERIOD/2);
end if;
end if;
end process;



注記 :このアンサーは、2 番目のコントローラーが RDIMM をターゲットとしているマルチコントローラー デザイン向けのものです。

最初のコントローラーで RDIMM をターゲットとしているデザイン、または複数の RDIMM をターゲットとしているデザインでは、パイプライン ロジック内の if-else 文を修正する必要があります。

この問題は、ISE Design Suite 13.1 MIG v3.7 リリースで修正されています。

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
37173 MIG v3.6 - ISE Design Suite 12.3 でのリリース ノートおよび既知の問題 N/A N/A

関連アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
38951 MIG v3.61 - ISE Design Suite 12.4 ~ 14.2 でのリリース ノートおよび既知の問題 N/A N/A
37173 MIG v3.6 - ISE Design Suite 12.3 でのリリース ノートおよび既知の問題 N/A N/A
AR# 37861
日付 08/20/2014
ステータス アクティブ
種類 既知の問題
デバイス 詳細 概略
IP