2016-07-28 27 views
2

Verilogを初めて使用しています。Verilogでビット配列の配列をランダム化する方法は?

bit [7:0] data []; 

* SystemVerilogのの使用ランダマイズ()がなければ:

はどのようにして、次のランダム化することができます。

+1

行うことができますが、ありますSystemVerilogデータ型である動的配列をランダム化する方法を尋ねています。多分あなたは混乱を避けるためにそれを変えるべきでしょう。 – AndresM

答えて

3

のSystemVerilogは動的配列のサイズを変更しません(30と40の間のサイズの下の例で)ランダムなデータを持つ配列を生成する必要があります。したがって、randomize()を呼び出す前に配列を割り当てるか、サイズをランダム化するために制約を使用する必要があります。あなたはランダマイズ()のSystemVerilogへのアクセス権を持っていない場合

bit [7:0] data []; 

data = new[10]; 
randomize(data); 

または

bit [7:0] data []; 

randomize(data) with {data.size inside {[5:15]} ;}; 

か、あなたは、あなたの質問は、あなたがVerilogのに慣れていないと言う

data = new[10]; 
    foreach(data[ii]) data[ii] = $urandom; 
+0

@Rahul Menon-私はsystemVerilog(randomize)に特別なメソッドがあることを知っています。私はVerilogで尋ねました。 – sara8d

+0

あなたはVerilogで尋ねましたが、あなたの例はSystemVerilogの 'bit'タイプを示し、SystemVerilogタグを使用しました。私は 'randomize()'を使わずに答えを加えました。 –

+0

@ dave_59は動的配列system-verilogではありませんか? –

2

は、配列のサイズを必要な範囲に制限し、randomizeを呼び出します。それはあなたがそれに制約をつけない限り

class rand_gen ; 

rand bit [7:0] data[]; 
constraint db { data.size inside {[30:40]}; } 

task generate(); 
randomize(data); 
end task 

endclass 
関連する問題