使⽤systemverilog中的rand变量创建randc变量

科技   2024-12-04 12:19   日本  

使⽤SystemVerilog中的rand变量⽣成randc值。

我们必须声明⼀个队列,并对这个队列施加一个特定的约束


然后,随机⽣成的值应使⽤post_randomize ⽅法中的push_back⽅法分配给队列。


这是⾯试官在面试验证⼯程师时经常问的问题。我们已经放了代码,以便您可以运⾏并很好地理解它。


//This code is helpful to generate randc value of variable using rand operator.
class packet;
rand bit[3:0]addr;
bit[3:0] my_que[$]; //defining the queue which can store the values of variable
constraint add_cons {
addr inside {0,1,2,3,4,5,6,7}; //value should be randomize inside 0 to 7
unique{addr,my_que}; //consider unique value
};
//pre_randomize method
function void pre_randomize();
if(my_que.size()==8) my_que={}; //assign the size
endfunction
//post_randomize method

function void post_randomize();
my_que.push_back(addr);
endfunction
endclass

module top;
initial begin
packet p;
p=new();
repeat(8) begin
p.randomize();
//randomization method to randomize variables
$display("value of addr=%0d", p.addr);
end
end
endmodule


数字芯片实验室
前瞻性的眼光,和持之以恒的学习。
 最新文章