标签:rand child Randomizing Handle addr Object pp Child data
您可以将对象句柄声明为“rand”。在这种情况下,该对象的所有变量和约束都是随机的。随机化不会修改实际的对象句柄。此外,对象句柄不能声明为“randc”。下面是一个例子:
class child; rand bit [7:0] data; endclass class parent extends child; rand bit [7:0] addr; rand child ch = new ( ); //object handle is 'rand' endclass module tb; int i; parent pp = new ( ); initial begin for (i=0; i < 4; i++) begin pp.randomize( ); $display("Parent addr = %h Child data = %h", pp.addr, pp.ch.data); end end endmodule
模拟结果:
Compiler version S-2021.09; Runtime version S-2021.09; Aug 17 00:35 2022
Parent addr: 8f Child data: 11
Parent addr: 97 Child data: 16
Parent addr: de Child data: f3
Parent addr: 4f Child data: b5
V C S S i m u l a t i o n R e p o r t
“child”类有一个 rand 变量“addr”。 “父”类扩展了“子”类,并添加了一个名为“数据”的 rand 变量。现在,我们用名为“ch”的对象句柄在“parent”类中实例化“child”类。然后我们随机化对象句柄“ch”,如代码所示。接下来,当我们在模块“tb”中实例化类“parent”并将其随机化(pp.randomize())时,它不仅会随机化其属性,还会随机化类“child”的属性。因此,您在模拟日志中看到“addr”(属于“parent”类)和“data”(属于“child”类)都是随机的。显然,如果“ch”没有声明为rand,它的属性就不会被随机化。示例如下:
1 class child; 2 rand bit [7:0] data; 3 endclass 4 class parent extends child; 5 rand bit [7:0] addr; 6 rand child ch = new ( ); //object handle is 'rand' 7 endclass 8 module tb; 9 int i; 10 parent pp = new ( ); 11 initial begin 12 for (i=0; i < 4; i++) begin 13 pp.randomize( ); 14 $display("Parent addr = %h Child data = %h", pp.addr, 15 pp.ch.data); 16 end 17 end 18 endmodule
模拟结果:
Compiler version S-2021.09; Runtime version S-2021.09; Aug 17 00:38 2022
Parent addr: 8f Child data: 00
Parent addr: 97 Child data: 00
Parent addr: de Child data: 00
Parent addr: 4f Child data: 00
V C S S i m u l a t i o n R e p o r t
标签:rand,child,Randomizing,Handle,addr,Object,pp,Child,data 来源: https://www.cnblogs.com/xiangtianxiao/p/16594720.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。