Quartus® II ソフトウェアのバージョン 7.0 以前では、次の例のように変数を使用して Verilog HDL のループを制御すると、この警告メッセージが生成される場合があります。
if ( !rst_n )
begin
for ( i = 0; i < depth; i = i 1)
mem[i] = {width{1'b0}} ;
end
この問題は、Quartus® II ソフトウェア・バージョン 7.1 から修正されています。
上記の例では、Quartus® II ソフトウェアのバージョン 7.0 以前では、最終デザインではシグナルではない一時ループ変数に対して警告を発行しています。この例では、ループ処理に変数「i」が使用され、Verilog コードのループが始まる前に初期化されますが、残りのコードでは使用されません。ソフトウェアはこの一時変数のラッチを合成します。最終デザインのネットリストでは、ラッチはロジックを駆動しないため、取り外されます。ただし、ファンアウトのない信号を取り外す前に、ソフトウェアは推論されたラッチ警告を発行します。
常に構造の外側にある変数を参照しない限り、Quartus® II ソフトウェアの合成ではラッチが取り外され、警告は無視できます。