Menu
Coddy logo textTech

Forループ

CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 58/90。

Verilogのループを使用すると、コードブロックを複数回実行できます。これらは、反復的なテストパターンの生成、メモリの初期化、配列の反復処理を行うテストベンチで特に役に立ちます。並列に実行されるハードウェア記述とは異なり、ループは順次実行されるため、シミュレーションやテストに最適です。

最もよく使われるループは <strong>for</strong> ループで、これは特定の実行回数を繰り返します。for ループは、イテレーションごとに変化するループ変数を使って、コードのブロックを繰り返し実行します。実行する回数は正確にコントロールできます。

構文:

for (initialization; condition; increment) begin
  // 繰り返すコード
end
PartWhat It DoesExample
initialization開始値を設定しますi = 0
conditionいつ停止するかi < 10
incrementループごとに変更しますi = i + 1

簡単な例

integer i;

for (i = 0; i < 5; i = i + 1) begin
  $display("i = %d", i);
end

出力:

i = 0
i = 1
i = 2
i = 3
i = 4

この loop は 5 回実行されます (i = 0, 1, 2, 3, 4)。

テストベンチにおける For Loop

For loop は、すべての入力パターンの組み合わせをテストするために一般的によく使用されます:

integer test_value;

for (test_value = 0; test_value < 16; test_value = test_value + 1) begin
  $display("test_value = %d", test_value);
end

これにより、4ビット信号の16通りすべての可能な値をテストできます。

配列を使用した For Loop

reg [7:0] memory [0:9];
integer i;

initial begin
  for (i = 0; i < 10; i = i + 1) begin
    memory[i] = i * 8;
  end
end

これにより 10 個の memory ロケーションが初期化されます。

重要なルール

ルール説明
ループ変数は integer または reg でなければならない wire は使用不可
複数のステートメントには begin/end を使用する2行以上の場合に必須
無限ループを避けるcondition が最終的に false になることを確認する
テストベンチでの使用が最適ほとんどのループは合成不可
challenge icon

チャレンジ

作業内容:

不足している for ループを追加して、0 から 3 までの数字を出力してください。

自分で試してみよう

module for_challenge;
  integer i;
  
  initial begin
    $display("Printing 0 to 3:");
    
    // TODO: forループを追加
    // i = 0 を初期化
    // i < 4 の間ループ
    // i = i + 1 でインクリメント
    // 内側で、i を表示
    
    $finish;
  end
endmodule
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン