取一个 10 个元素的数组并分配在整个数组中不应重复的值

问题描述 投票:0回答:1

案例一。通过使用 $urandomrange。
案例二.不应该使用 $randomrange

注意:取范围等于数组大小或大于数组大小。并且所有元素都有唯一的值

使用 $Urandom_range 的代码 不使用 $urandom_range 的代码

verilog modelsim
1个回答
0
投票

使用$random_range,不断生成该范围内的随机数,直到得到一个未使用过的随机数 // 或浏览示例

module top;
  
  int array[10], list[$];
  
  initial begin
    foreach(array[i]) begin
      while( (array[i] = $urandom_range(200,100) ) inside {list})
        ;
      list.push_back(array[i]);
    end
    $display("%p", array);
  end
endmodule

仅当范围大于或等于数组元素数时才有效。随着数组大小的增加,效率也非常低。

这里使用 randomize 也是一样的

module top;
  
  int array[10], list[$];
  
  initial begin
    randomize(array) with {foreach(array[i]) array[i] inside {[100:200]};
                           unique{array};
                          };
    $display("%p", array);
  end
endmodule
© www.soinside.com 2019 - 2024. All rights reserved.