- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
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是类的内置方法,它按照约
文档评论(0)