2016-07-28 28 views
2

Ich bin neu bei Verilog.Wie ein Array von Bit-Arrays in Verilog randomisiert?

Wie kann ich zufällig folgendes:

bit [7:0] data []; 

* ohne Verwendung randomize() von SystemVerilog.

+1

tun Ihre Frage sagt, Sie zu Verilog neu sind, aber sie sind Frage, wie ein dynamisches Array randomisiert wird, bei dem es sich um einen SystemVerilog-Datentyp handelt. Vielleicht sollten Sie das ändern, um Verwirrung zu vermeiden. – AndresM

Antwort

3

SystemVerilog wird sich nicht ändern die Größe eines dynamischen Arrays ein Array mit Zufallsdaten erzeugen, wenn Sie eine Einschränkung auf sie. Sie müssen also entweder das Array vor dem Aufruf von randomize() zuweisen oder eine Einschränkung verwenden, um die Größe zu randomisieren.

bit [7:0] data []; 

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

oder

bit [7:0] data []; 

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

oder wenn Sie() SystemVerilog keinen Zugriff auf die randomize haben, können Sie

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

@Rahul Menon- Ich weiß, dass es eine spezielle Methode in SystemVerilog (randomize) gibt, kaufen, die ich in Verilog gefragt habe. – sara8d

+0

Sie haben in Verilog gefragt, aber Ihr Beispiel zeigte den SystemVerilog-Bit-Typ und Sie haben das SystemVerilog-Tag verwendet. Ich fügte eine Antwort hinzu, ohne 'randomize()' zu verwenden. –

+0

@ dave_59 ist nicht dynamische Arrays System-Verilog-Konstrukt? –

2

beschränken Sie die Größe des Arrays auf den erforderlichen Bereich und rufen Sie randomize auf. Es sollte (unterhalb der Größe zwischen 30 und 40 im Beispiel)

class rand_gen ; 

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

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

endclass