SV中的local和this、super作用理解

SV中遇到同名变量需要索引时,可以对变量名加上前缀来区分,如super,this和local;

如果不加前缀,SV会自动采用就近原则,索引到最近的对象变量。

基本定义

1. this和super

    this和super一般对应,用来区分子类与父类的同名变量:

    this.name一般指向当前类的成员变量,super.name则指向父类的成员变量。

2. local和protected

   (1)local就是本地变量,local声明的变量只能在本类中使用,子类以及外部类中不可调用。

   (2)protected比local限制少一些,protected声明的变量能在本类以及子类中使用,外部类中不可调用。

3.  this和local

     除了在声明成员变量时,在使用内嵌约束进行随机化时也会需要使用local关键字:

class chnl_generator;

    rand int [31:0] data;

    task send_trans(output data);

        chnl_trans  req, rsp;  // chnl_trans中也有data变量。

        req = new();

        void`(req.randomize() with {data == local::data;})  // local::data索引到的是形参data, 而不带前缀的data按就近原则索引到req中的data. 若send_trans() 方法中没有参数传递,则local::data索引到的是当前类的变量——rand data

      endtask

   endclass

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容