• systermverilog类中变量涉及的super/this


    相信super/this是你在看sv代码经常遇见的。
    按照我的理解: super就是到基类中去找对应的变量或者function/task.
    this就是指定作用域。

    例子一:基类和扩展类有同名变量

    • B找src的时候,就会先在B里面找,如果找到以后,就认为已经找到了。
    • A也同理。

    例子二:扩展类可以看到基类的变量

    • B首先会在自己类的范围内找dst,没有找到,然后再去基类里面找。

    例子三:基类的句柄指向扩展类的对象

    • OOP一个很重要的应用就是用virtual修饰task/function,当基类的句柄指向扩展类的时候,就会用扩展类的task/function的定义。这在UVM源码中几乎无处不在。
    • 从仿真结果来看,变量却不是如此

    • class里面的virtual 修饰的task/function其实在继承关系上是有一个类似的表来表述这种继承关系的。
    • class里面的继承之间的同名变量从某种意义上讲是没有任何关联的。
    • 扩展类中找不到的变量要去基类里面接着寻找。

    例子四:扩展类中访问同名的基类变量

    • super就是帮助你从基类里面找。

    例子五:基类句柄指向扩展类的对象,通过基类句柄访问扩展类中的变量

    • 也就是说基类的句柄虽然指向扩展类的对象,但是基类的句柄是不能访问扩展类对象中独有的变量的。这其实跟virtual function/task是一样的。
    • 详情可以参考:https://www.cnblogs.com/xuqing125/p/15928599.html

    例子六:this指定作用域

    • this就是指定变量的作用域

    例子七:同类型两个类的句柄,指向统一个对象。

    • A B同类型的,所以相当于是一个东西。

    demo描述如下:

    class bird;
    class parr extends bird
    A bird;
    B bird;
    A =new()
    B =new()
    A = B;

    A/B句柄都是指向的同一个对象。

  • 相关阅读:
    jQuery表单验证以及将表单序列化为json对象小练习
    判断客户端浏览器是否安装了Flash插件
    css文本超出2行就隐藏并显示省略号
    jquery and js 判断一个元素是否存在
    jquery表单实时验证
    trigger()和triggerHandler()
    IE浏览器下面要实现滤镜(transparent),必须要加filter
    使用javascript判断浏览器类型
    web引入
    前端大纲********
  • 原文地址:https://www.cnblogs.com/xuqing125/p/15931202.html
Copyright © 2020-2023  润新知