4

次の形式で for ループを作成する方法はありますか。

for i in 0 to some_var loop
    // blah,blah
end loop;

そうでない場合、同じループを作成する別の方法はありますか? Whileループでは変数を制限として使用できますが、私のプロジェクトでは合成できません。

前もって感謝します、

ボジャン・マトフスキ

4

2 に答える 2

12

この変数は、テストベンチ アプリケーションでは問題なく機能します。

合成では、静的範囲と終了条件を使用して同じ効果を得ることができます。範囲を必要な最大値に設定します。

for i in 0 to MAX_VALUE loop
  exit when i = some_var ;
  // blah,blah
end loop;

合成ツールがこれで詰まる場合は、バグ レポートを提出してください。1076.6-1999 と 1076.6-2004 (VHDL RTL Synthesis Standards) の両方が、静的範囲の「for」ループで終了条件がサポートされていることを示しています。ループ ラベル (1076.6-1999) の使用に関して、サポートされていないことを示す問題が見つかる場合があります。

バグ (またはサポートの欠如) を見つけて報告しない場合、ベンダーはそれを気にしない機能と見なし、ツールの変更に投資しません。

于 2013-08-28T16:46:06.347 に答える
0

静的範囲を持つループ パラメータのみが合成可能です。

some_varに離散範囲がある場合、FSM (有限状態マシン) を実装できます。次に、状態ごとに特定のループを記述します。

于 2013-08-28T15:19:16.090 に答える