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
相关推荐
liuluyang53020 小时前
Verilog 中 wire 与 wor 的区别详解
fpga开发·verilog
fei_sun5 天前
【SystemVerilog验证】数据类型(待补充)
数据结构·systemverilog
不会武功的火柴6 天前
SystemVerilog语法(11)-面向对象编程下篇
面向对象·fpga·systemverilog·ic验证
啄缘之间10 天前
8.【学习】工业级详细接口约束&覆盖率
开发语言·笔记·学习·uvm·sv
Ether IC Verifier10 天前
SystemVerilog 数据类型详解
php·systemverilog·uvm·ic验证
啄缘之间12 天前
10.【学习】SPI & UART 验证环境与测试用例
开发语言·经验分享·学习·fpga开发·测试用例·verilog
liuluyang53014 天前
SV中 disable fork停止多个线程正确示例
sv·fork join
liuluyang53014 天前
SV中if与iff区别与用法
fpga开发·sv
Ether IC Verifier15 天前
IC 验证工程师新手入门指南
systemverilog·ic验证·dpu
Nick.Q15 天前
Ubuntu 24.04 从零跑通 OpenTitan:IC 验证工程师实录(Verilator + VCS + Verdi)
linux·ubuntu·systemverilog