sv中的函数

265 阅读1分钟

sv中的randomize函数

1. sv中的randomize函数

std::randomize 是sv中的函数;
对于随机对象,可以采用object.randomize()的方式进行随机化,但有的时候可以通过更简单的方式,不必定义类和例化对象,甚至变量都不是随机类型,也可以对其进行随机化,这就是系统随机化 函数std::randomize。

task run_phase(uvm_phase phase);
reg [127:0] random_data;
...
 // generate random data
      for( int i =0; i < global_cnt_16byte ; i++)
      begin
        if(!std::randomize(random_data) with {random_data>0;})
          `uvm_error(get_type_name(),"##### Failure of randomizing random_data") 
        mem_data_queue.push_back(random_data);
        mem_data_queue_for_ddr.push_back(random_data);
      end
....
endtask
//另外一个例子
initial begin 
	int value;	
    std::randomize(value) with {value>=0 && value<=10;};
end

2. sformatf格式化字符串

返回一个格式化字符串,使用的格式九个display等输出函数一样,只是它不输出,而是返回字符串。

string msg;
smg=$sformatf("@%0t [%s] %s : %s", $time, r, src, i);

3. 输出到文件

integer logf;
logf = $fopen(logname, "a+");
$fwrite(logf, $sformatf("%sn", msg));
$fclose(logf);

参考:SystemVerilog——系统函数