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
相关推荐
学习FPGA的电气小兴兴3 天前
基于FPGA的CORDIC向量模式实现arctan运算,Verilog HDL实现
嵌入式硬件·fpga开发·数字信号处理·verilog·fpga·cordic·arctan
NamoAmitabha1285 天前
UVM在时间维度上也做了规范,phase机制----deepseek讲解
systemverilog·uvm
NamoAmitabha1285 天前
SystemVerilog 中的 :: 作用域解析运算符详解--deepseek讲解
systemverilog·uvm
NamoAmitabha1287 天前
class基础+继承的专项训练
systemverilog
NamoAmitabha1287 天前
rand/randc/constraint 练习
systemverilog
学习FPGA的电气小兴兴9 天前
基于FPGA的CORDIC旋转模式实现sin和cos运算
fpga开发·信号处理·数字信号处理·verilog·fpga·verilog hdl·cordic
FPGA开源工坊16 天前
ISP图像处理--Bayer Raw格式
图像处理·人工智能·verilog·fpga·isp
qq_1508419918 天前
用verilog语言在Quartus Prime Lite 18中对CPLD EPM570T100C5进行编程
verilog·quartus·cpld
Salt & Light1 个月前
UVM 字段自动化 Field Automation:让打印、复制、比较自动化
学习·systemverilog·uvm
芯路行者1 个月前
4.4 HDLBits —— 更多时序逻辑电路
fpga开发·verilog·fpga·hdlbits