文档详情

SystemVerilog数字集成电路功能验证课件 (7).pdf

发布:2024-12-20约2.11万字共35页下载文档
文本预览下载声明

SystemVerilog芯片验证

第6章随机化

2024年2月7日

SystemVerilog芯片验证2024年2月7日1/35

带有随机属性的类随机属性

随机属性

1标准随机属性(rand):它的每次随机化都是独立的,其随机值在取值范围

内均匀分布。

2循环随机属性(randc):它在随机化时会将取值范围内的数值逐个随机取

出,随机化的取值范围会越来越小。当全部数值被取出后再次重复前面的

操作。

4classtransaction;

5randbit[3:0]a,b;

6

7virtualfunctionvoidprint(stringname=);

8$display(%s:a=%0d,b=%0d,name,a,b);

9endfunction

10endclass

SystemVerilog芯片验证2024年2月7日2/35

带有随机属性的类随机属性

6moduleautomatictest;

7initialbegin

8transactiontr;

9tr=new();

10repeat(16)begin

11assert(tr.randomize());

12tr.print();

13end

14end

15endmodule

:a=9,b=12

:a=11,b=0

:a=10,b=6

...

SystemVerilog芯片验证2024年2月7日3/35

带有随机属性的类约束块

约束块

约束表达式描述了单个随机属性的取值范围,也可以描述随机属性之间的依赖

关系。

每个约束表达式只能使用一个关系运算符,

约束表达式间如果存在约束冲突会导致随机化失败。

4classconfig_info;

5randbit[3:0]b;//随机属性

6endclass

7

8classtransaction;

9randbit[3:0]a;//随机属性

10randconfig_infocfg_info;//随机句柄不可定义成randc类型

11

12functionnew(inputbit[3:0]a=0);

13this.a=a;

14cfg_info=new();

SystemVerilog芯片验证2024年2月7日4/35

带有随机属性的类约束块

:a=2,b=15

:a=5,b=8

:a=8,b=12

...

SystemVerilog芯片验证2024年2月7日5/35

带有随机属性的类随机化方法

随机化方法

randomize是类的内置方法,它按照约

显示全部
相似文档