随心记录-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)子类有#和父类有#的区别

(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)循环体总结

 

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

break continue return 

 事件合并的操作,参考上面的连接。(上面连接仅仅只是在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;

(10)

| 和 ||的区别、inside用法

SV语法易错案例总结_sv 按位与-CSDN博客

(11)

用sum函数的时候需要注意

systemverilog array.sum的一个坑 - 知乎 (zhihu.com)

核心就是sum加的时候会把item>7当作一个1bit的值来处理

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值