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);