随心记录-20230613

1. 在进行随机化约束的时候,不能把一个随机变量直接付给另一个随机变量,必须通过一个非随机的中间面料进行传递。

比如:

assert( req_seq.randomized with {addr == xxx})

那么xx不能是rand属性,如果想要将一个随机变量给到另一个,可以中间定义一个非随机的属性,进行传递。

2.随机化约束

随机化策略——随机变量rand、约束constraint、权重dist、随机数产生示例_constraint dist_SD.ZHAI的博客-CSDN博客

3.fork join_none+for循环避免踩坑

IC验证中for循环+fork-join_none结构的坑,你有注意到吗? - 知乎 (zhihu.com)

4.@和wait的区别

注意@多个信号的操作,比如@(a,b,c);

SV学习笔记—wait和@的区别_sv wait_Verification_White的博客-CSDN博客

5.covergroup多次例化:

(1)可以在interface里创建covergroup  然后在内部加入initial begin end语句,在initial中对这个变量covergroup进行多次例化,大致的格式如下:

interface xx//实际上这里的interface也是充当一个monitor的作用

covergroup A;
/*....*/
endgroup

A a[10];

initial begin
	foreach(a[i])begin
		a[i] = new();
	end
end

//sample 
//1.采用initial函数的方式
initial begin
	xxx//条件判断
end
//2.采用sequence的方式
sequence 123
	//条件
endsequence

cover property(123) begin
	//采样
end
endinterface

6.参数化的类:

(1)参数可以是类也可以是变量

(2)一个#和两个#的在继承该类的时候的区别:

#小程序://CSDN/yNIlnNA39EsLMai

(3)子类有#和父类有#的区别

随心记录-20230613_第1张图片

(4)两个参数但是仅仅指定了一个参数是什么意思?

(5)几个变量:

super不仅仅可以调用父类的方法,也可以调用父类的变量;

this也是,不仅仅可以找方法也可以找变量,不同的是this会优先找自己的类,递归的查找,从当前的类往上去找,采用就近原则,而super只能找自己的父类的东西;

lcoal::的用法;

(6)数组的约束

(7)动态复位

[UVM] kill sequence_uvm sequence kill_lbt_dvshare的博客-CSDN博客

kill_sequence

stop_sequence(单独在sqr里面用,不用seq.stop_sequence的方式)

(8)循环体总结

随心记录-20230613_第2张图片

 随心记录-20230613_第3张图片

 SV之流程控制_sv while_bleauchat的博客-CSDN博客

break continue return 

随心记录-20230613_第4张图片

 事件合并的操作,参考上面的连接。(上面连接仅仅只是在sv中使用的)

(9)

rand bit signed [31:0] a = -1;

rand bit unsigned [31:0] b = 1;

rand int signed c = -1;

rand int unsigned d = 1;

你可能感兴趣的:(开发语言)