SystemVerilog学习之路(9)— 枚举类型的随机化约束
一、前言
在SystemVerilog中我们经常用到枚举类型,同样的我们也会对其进行随机化
二、代码
编写代码如下所示:
class transaction;
typedef enum {
SIZE_8BIT,
SIZE_16BIT,
SIZE_32BIT,
SIZE_64BIT,
SIZE_128BIT
} burst_size_t;
rand burst_size_t burst_size;
rand int langth = 0;
string name;
function new(string name="transaction");
this.name=name;
endfunction
constraint cstr{
langth inside {[1:9]};
}
endclass
module tb_top;
initial begin
int i=0;
transaction tr;
tr = new("tr");
for(i=0; i<10; i++) begin
tr.randomize() with { langth < 5;
burst_size inside { transaction::SIZE_8BIT,
transaction::SIZE_128BIT};
};
$display("****************************************");
$display("this is the %0d times randomize.", i);
$display("tr.burst_size:", tr.burst_size);
$display("tr.langth:", tr.langth);
end
$finish(2);
end
endmodule
三、运行
运行结果如下所示,可以看到我们可以成功将其随机化并添加约束