2016-07-28 70 views
2

我是Verilog的新手。如何在verilog中隨機化位數組的數組?

我如何可以隨機如下:

bit [7:0] data []; 

*無SystemVerilog的使用隨機化()。

+1

你的問題說,你是新來的Verilog,但你詢問如何隨機化一個動態數組,這是一個SystemVerilog數據類型。也許你應該改變它以避免混淆。 – AndresM

回答

3

SystemVerilog的將不改變動態數組的大小。因此,您需要在調用randomize()之前分配數組,或使用約束來隨機化大小。

bit [7:0] data []; 

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

bit [7:0] data []; 

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

,或者如果你沒有訪問隨機化()SystemVerilog的,你可以做

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。它應產生用隨機數據(下面大小的30和40之間中的例子)的陣列,除非你把一個約束在其上

class rand_gen ; 

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

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

endclass