SystemVerilog randとrandcの違い クラスのランダム変数

rand/randcの違い

rand

変数の範囲すべてを網羅する前に同じ値が返ることもある。(一様分布)

randc

変数の範囲すべてを網羅するまで同じ値は返らない。(ランダム循環)

サンプルコード

module top;
    class sample;
        rand bit [1:0] data1;
        randc bit [1:0] data2;
    endclass

    sample a;
    initial begin
        a = new();
        for (int i = 0; i < 4; i++) begin
            a.randomize();
            $display("rand: %d, randc: %d", a.data1, a.data2);
        end
    end
endmodule
// 出力
// rand: 3, randc: 3
// rand: 3, randc: 2
// rand: 0, randc: 1
// rand: 1, randc: 0

まとめ

rand/randcの違いを調べました。

Random-cyclic variablesってなんて訳すんでしょうか。

コメント

タイトルとURLをコピーしました