1 首先总结如下:
class中成员和方法默认为automatic,program、module、interface、package中函数和任务和变量默认为静态的。
2 全局变量和局部变量
在讨论静态变量和动态变量之前,我们先说全局变量和局部变量的概念。
- 局部变量的生命周期同其所在域,例如function/task中的变量,在方法调用结束后,这些变量的也将消失,所以它们是动态生命周期;
- 全局变量是从仿真开始到结束一直存在的,例如module中的变量默认情况下全部为全局变量,这也可以理解为module中的变量是硬件电路中实际存在的信号和连接,所以它们是静态生命周期;
3 静态变量和动态变量
变量可以分为动态(automatic)和静态(static),静态变量的特点:
- 该变量将被这个类的所有实例所共享,并且使用范围仅限这个类。
- 静态变量在声明时就应该对其初始化,它只初始化一次,也就是在仿真0时刻就存在。
- 可以认为声明在类中的静态成员变量,它是保存在类中,而不是在对象中,它会一直存在的,不会因为对象被销毁而消失。
- 静态变量可以在类没有被实例化的时候调用,通过 class::static_variable 的方式获取静态