SV笔记:static 和 automatic 概念及相关规定

1 首先总结如下:

        class中成员和方法默认为automatic,program、module、interface、package中函数和任务和变量默认为静态的。

2 全局变量和局部变量

在讨论静态变量和动态变量之前,我们先说全局变量和局部变量的概念。

  • 局部变量的生命周期同其所在域,例如function/task中的变量,在方法调用结束后,这些变量的也将消失,所以它们是动态生命周期;
  • 全局变量是从仿真开始到结束一直存在的,例如module中的变量默认情况下全部为全局变量,这也可以理解为module中的变量是硬件电路中实际存在的信号和连接,所以它们是静态生命周期;

3 静态变量和动态变量

变量可以分为动态(automatic)和静态(static),静态变量的特点:

  • 该变量将被这个类的所有实例所共享,并且使用范围仅限这个类。
  • 静态变量在声明时就应该对其初始化,它只初始化一次,也就是在仿真0时刻就存在。
  • 可以认为声明在类中的静态成员变量,它是保存在类中,而不是在对象中,它会一直存在的,不会因为对象被销毁而消失。
  • 静态变量可以在类没有被实例化的时候调用,通过 class::static_variable 的方式获取静态
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在SystemVerilogautomatic关键字用于修饰方法内部的变量。如果一个方法被修饰为automatic,那么其内部声明的变量默认都是automatic的。这意味着在进入该方法后,automatic变量会被创建,而离开该方法后就会被销毁。\[1\] 举个例子,如果一个方法内部有一个automatic变量cnt,每次调用该方法时,cnt都会被初始化。因此,每次调用cnt1(1)时,cnt的值都会是1。\[3\] 另一方面,如果一个方法没有被修饰为automatic,那么其的变量将具有静态的生命周期。这意味着这些变量只会在第一次调用方法时被初始化,之后的调用不会重新初始化这些变量。因此,如果一个方法内部有一个static变量cnt,每次调用cnt2(1)时,cnt的值会累加。第一次调用cnt2(1)时,cnt的值为1,第二次调用cnt2(1)时,cnt的值为2。\[3\] 总结来说,automatic关键字用于修饰方法内部的变量,使其具有自动创建和销毁的特性。而没有被修饰为automatic的变量具有静态的生命周期。 #### 引用[.reference_title] - *1* *3* [staticautomatic 修饰(systemverilog)](https://blog.csdn.net/SummerXRT/article/details/120056366)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【sv】systemverilog之Automatic](https://blog.csdn.net/weixin_39060517/article/details/122879708)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值