systemverilog中随机std::randomize的用法

randomize

randomize方法

所属对象:randomize是 SystemVerilog 中类(class)的一个方法。它主要用于对类中的随机变量(rand 和 randc 类型)进行随机化操作。
工作原理:

当调用一个类对象的randomize方法时,它会根据类中定义的约束(constraint)来为随机变量生成合适的值。

std::randomize

std::randomize函数

所属范畴:std::randomize是一个作用域随机化函数。它允许用户在当前作用域(例如一个函数内部)对变量进行随机化,而不需要将这些变量定义为类的成员变量。

工作方式:

可以将需要随机化的变量作为参数传递给std::randomize。例如:

复制代码
std::randomize(ssc_ppm) with {
			ssc_ppm inside {4'b0010, 4'b0100, 4'b0110, 4'b1000, 4'b1010}; 
		};

class thursday_seq extends junk_seq_seq;  //which extends uvm_sequence

   rand int count;
   constraint c1 { count >= 2; count <= 9; }

   function new(string name="thursday_seq");
      super.new(name);
      if (std::randomize(count)) begin 
         `uvm_info("",$psprintf(" cnt=%0d .....",count),UVM_LOW) end
      else $finish;
      if (randomize(count)) begin 
         `uvm_info("",$psprintf(" cnt=%0d .....",count),UVM_LOW) end
      else $finish;
      if (this.randomize()) begin 
         `uvm_info("",$psprintf(" cnt=%0d .....",count),UVM_LOW) end
      else $finish;
      $finish;
   endfunction:new
endclass
相关推荐
happyDogg_5 天前
uvm_root详解
uvm·数字验证
happyDogg_5 天前
UVM 中 virtual 关键字的使用详解
virtual·uvm·interface·数字验证
Salt & Light15 天前
SV基础之连接设计和测试平台
systemverilog
FPGA小迷弟16 天前
vivado中的AXI Interconnect到底应该怎么用,他的底层原理是什么,一篇文档全部理清楚!!!
网络协议·tcp/ip·fpga开发·verilog·fpga
fei_sun1 个月前
【SystemVerilog】连接设计和测试平台(待补充)
systemverilog
liuluyang5301 个月前
SystemVerilog 类中能否定义 wire 和 reg?
sv·wire reg
liuluyang5301 个月前
Verilog 中 wire 与 wor 的区别详解
fpga开发·verilog
fei_sun2 个月前
【SystemVerilog验证】数据类型(待补充)
数据结构·systemverilog
不会武功的火柴2 个月前
SystemVerilog语法(11)-面向对象编程下篇
面向对象·fpga·systemverilog·ic验证
啄缘之间2 个月前
8.【学习】工业级详细接口约束&覆盖率
开发语言·笔记·学习·uvm·sv