AR# 32186

Virtex-4/Virtex-5 Embedded Tri-mode Ethernet MAC Wrapper - 16 ビット 1000BASE-X Verilog RX FIFO は不正にオーバーフローする可能性がある

説明

キーワード : 4.6, 1.5, ful, フル

Verilog RX FIFO の生成で、16 ビットの 1000BASE-X クライアント インターフェイス オプションを使用するとオーバーフローが発生し、フレームがドロップする可能性があります。この問題は、FIFO がフルになるときを判断するのに使用される範囲が間違っているために発生します。VHDL または Verilog 8 ビット RX FIFO には影響はなく、また VHDL 16 ビット RX FIFO にも影響はありません。これは、Virtex-5 Embedded Tri-mode Ethernet MAC Wrapper v1.5 またはそれ以前のバージョン、および Virtex-4 Embedded Tri-mode Ethernet MAC Wrapper v4.6またはそれ以前のバージョンで見られる問題です。

ソリューション

この問題を回避するには、<core_name>/example_design/client/fifo/rx_client_fifo_16.v の行 843 から 852 を変更します。

always @(posedge wr_clk)
begin
if (wr_sreset == 1'b1)
wr_fifo_full <= 1'b0;
else if (wr_enable == 1'b1)
if (wr_addr_diff[10:3] == 8'b0 && wr_addr_diff[2:1] != 2'b0)
wr_fifo_full <= 1'b1;
else
wr_fifo_full <= 1'b0;
end

上記の行を次のように変更します。

always @(posedge wr_clk)
begin
if (wr_sreset == 1'b1)
wr_fifo_full <= 1'b0;
else if (wr_enable == 1'b1)
if (wr_addr_diff[10:4] == 7'b0 && wr_addr_diff[3:2] != 2'b0)
wr_fifo_full <= 1'b1;
else
wr_fifo_full <= 1'b0;
end

この問題は、次のリリースで修正される予定です。
AR# 32186
日付 12/15/2012
ステータス アクティブ
種類 一般