ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Randomizing Object Handle

2022-08-17 13:02:40  阅读:157  来源: 互联网

标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有