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# 32189

Serial RapidIO v5.1 - コアのサンプル デザイン ファイルが合成でラッチを推論する

説明

VHDL バージョンの Serial RapidIO v5.1 コアのサンプル デザインを使用すると、XST 合成でラッチが生成されますが、reg_manager.vhd、tickler.vhd および target_user.vhd ソースに対して次のような警告メッセージが表示されます。

"WARNING:Xst:737 - Found 1-bit latch for signal <mresp_data_26>. Latches may be generated from incomplete case or if statements."

ハードウェアでは、これらのラッチの結果により、メンテナンス書き込みまたは読み出しに断続的にエラーが発生する場合があります。

ソリューション


ここに記述しているラッチの問題は、Serial RapidIO v5.2 コアで修正される予定です。当面の間は次を変更して、サンプル デザイン ファイルでラッチが削除されるようにしてください。

reg_manager.vhd ファイル :

v5.1 のコード :

process (clk, reset_n) begin
if (reset_n = '0') then
mresp_data <= x"0000000000000000" after TCQ;

elsif (tx_cs = TX_GET_D0) then
mresp_data(0 to 31) <= mgt_rx_data after TCQ;

elsif (tx_cs = TX_GET_D1) then
mresp_data(32 to 63) <= mgt_rx_data after TCQ;
end if;
end process;

次のように変更します。

process (clk, reset_n) begin
if (reset_n = '0') then
mresp_data_int <= x"0000000000000000" after TCQ;

elsif rising_edge(clk) then
if (tx_cs = TX_GET_D0) then
mresp_data_int(0 to 31) <= mgt_rx_data after TCQ;
mresp_data_int(32 to 63) <= mresp_data_int2(32 to 63) after TCQ;

elsif (tx_cs = TX_GET_D1) then
mresp_data_int(0 to 31) <= mresp_data_int2(0 to 31) after TCQ;
mresp_data_int(32 to 63) <= mgt_rx_data after TCQ;
end if;
end if;
end process;

mresp_data <= mresp_data_int;
mresp_data_int2 <= mresp_data_int;

Verilog サンプル デザイン (reg_manager.v) には次の変更も必要です。

v5.1 のコード :

always @(sel_bus_q or mgt_di_phy or mgt_di_usr or mgt_di_log)
begin
case (sel_bus_q)
3'b011: mgt_rx_data = mgt_di_phy;
3'b101: mgt_rx_data = mgt_di_log;
3'b110: mgt_rx_data = mgt_di_usr;
default: mgt_rx_data = mgt_rx_data;
endcase
end

次のように変更します。

always @(sel_bus_q or mgt_di_phy or mgt_di_usr or mgt_di_log)
begin
case (sel_bus_q)
3'b011: mgt_rx_data = mgt_di_phy;
3'b101: mgt_rx_data = mgt_di_log;
3'b110: mgt_rx_data = mgt_di_usr;
default: mgt_rx_data = 32'hx;
endcase
end



改訂履歴

04/02/2009 - 初期リリース
08/21/2009 - Verilog の修正を追加
AR# 32189
作成日 04/15/2009
最終更新日 12/15/2012
ステータス アクティブ
タイプ 一般