class Packet;
rand bit [31:0] src,dst,data[8];
randc bit[31:0] kind;
constraint{src>10;src<15;}
endclass
Packet p;
initial begin
p = new();
assert(p.randomize());
else $fatal(0,"Packet::randomize failed");
transmit(p);
end
如何理解这一段代码非常的关键,这一段代码里面蕴含了两大知识点,一个是类的概念,一个随机化的概念。
1.class //类的概念,class来定义某个类;
2.rand //rand表示随机的意思,每次取出来的概率相同
3.randc //randc也是随机,不过取出来的数不再放回
4.constraint //约束语句,约束随机变量的取值范围
5.endcalss //class的结束语句,注意没有封号
6.Packet p;//定义一个句柄
7.initial begin … end //初始化
8.p = new();//创建一个对象
9.assert(p.randomize());//assert是断言语句,randomize()表示随机化结果,那也就是判断随机化的结果
10.else…//randomize的随机化结果如果正确就会返回1,如果错误就会返回else里面的结果就是0.
11.transmit§;//这句话我也是不是很明白,字面理解是传送的p的意思,但为什么要传送呢?