Home Articles

如何在verilog中随机化一组位数组?

Asked
Viewed 295 times
3

我是Verilog的新手 .

我如何随机化以下内容:

bit [7:0] data [];

*不使用systemVerilog的randomize() .

2 Answers

  • 4

    除非对其进行约束,否则SystemVerilog不会更改动态数组的大小 . 因此,您需要在调用 randomize() 之前分配数组,或使用约束来随机化大小 .

    bit [7:0] data [];
    
    data = new[10];
    randomize(data);
    

    要么

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

    或者,如果您无权访问randomize()SystemVerilog,则可以执行此操作

    data = new[10];
      foreach(data[ii]) data[ii] = $urandom;
    
  • 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
    

Related