Verilog系列:class中的const属性

SystemVerilog建模时经常会遇到一些定义在类中的部分属性在实例化后被有意或者无意的修改,从而导致一些不期望的行为发生,为此,在SystemVerilog中引入了面向对象语言中经常用到的const限定符,使用这个限定符可以把一个属性转换成为常量属性,即可以保证该属性不能被轻易修改。

const在具体的使用过程中,常以两种形式出现:全局性常量(global constants)和实例化常量(instance constants)。其中全局性常量一般在属性初始化声明时指定,指定后的全局常量不能通过任何途径进行修改。实例化常量是在构造函数(new)中对已经指定const限定符的属性进行初始化,这个属性在具体的实例化过程中调用构造函数时指定。可见,在不同的实例中,以实例化方式实现的const属性在不同的实例中指定的具体数值可以不同,但是全局const的属性在任何实例中的具体数值都是一样的,也因为这个特点,全局性的常量可以指定为static,而在实例化时在构造函数中指定初值的常量不能声明为static(也主要是因为static变量一般在仿真开始时其值就需要确定,而一般一个对象的具体实例化是在仿真的过程中动态产生的)。

【示例】const的具体使用

【仿真结果】

在具体使用const时需要特别注意以下几点:

  • 如果一个变量作为instanceconst使用,那么该变量的初始化只能在构造函数中使用,不能既在其声明指定又在构造函数中指定;

  • 凡事指定为const的属性,其初始化只能在类中声明时指定或者在构造函数中指定,不能在实例化后对其进行修改,例如:

p.j = 'hD;    // illegal

全部评论

相关推荐

昨天 11:56
门头沟学院 Java
点赞 评论 收藏
分享
代码飞升:别用口语,后端就写后端,前端就写前端,最后别光后悔
点赞 评论 收藏
分享
Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务