news 2026/4/23 11:30:09

systemverilog中的virtual function

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
systemverilog中的virtual function

virtual类型的函数在extern声明了之后,展开声明时还需要写virtual吗?

这是一个非常经典且容易产生困惑的 SystemVerilog 语法问题。

核心结论

在类体外(extern)展开声明时,不需要(也不建议)再写virtual关键字。

一旦你在类内部声明该函数为virtual,这个属性就自动伴随该函数,无论是在类外定义还是在子类中重写,它永远都是虚函数。

1. 代码对比

正确写法:
class my_driver extends uvm_driver; // 1. 类内声明:必须写 virtual extern virtual function void build_phase(uvm_phase phase); endclass // 2. 类外展开:不要写 virtual function void my_driver::build_phase(uvm_phase phase); super.build_phase(phase); // ... 逻辑内容 endfunction
错误(或冗余)写法:

如果在类外写成virtual function void my_driver::build_phase...,编译器通常会报错,或者至少会给出一个警告。因为virtual是成员的属性修饰符,而类外定义只是内容的填充


2. 为什么会有这种规定?

这主要源于底层语言的设计逻辑(类似于 C++):

  • 属性在“户口本”上:类内部的声明(Declaration)就像是函数的“户口本”,它定义了函数的名称、参数、返回值以及属性(是否为 virtual、是否为 local 等)。

  • 类外只是“施工现场”:类外的定义(Implementation)只是告诉编译器函数具体怎么执行。此时编译器已经通过类内的声明知道了它是virtual,因此不需要重复。

3. 相关规则扩展

关键字类内声明 (Inside)类外展开 (Outside)说明
virtual必须写不能写虚函数属性在声明时确定。
static必须写不能写静态成员函数的定义不带 static。
local / protected必须写不能写访问权限仅由类内声明决定。
default 参数写在声明处不能写参数默认值(如int a=5)只能出现在类内。

4. 总结

你只需要记住:关键字(virtual, static, local)只在“类体内部”这个地盘生效,一旦出了类的大门(extern 展开),这些修饰符统统脱掉。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 13:36:26

PyLTSpice终极指南:如何用Python实现电路仿真自动化革命?

你是否曾为重复的仿真设置感到烦恼?是否希望在修改电路参数时能一键完成所有仿真?PyLTSpice正是为解决这些问题而生的革命性工具。这套Python工具链让LTSpice仿真器与自动化脚本完美结合,彻底解放电子工程师的双手,让电路设计效率…

作者头像 李华
网站建设 2026/4/23 9:41:05

信号发生器扫频模式在谐振测试中的作用:图解说明

信号发生器扫频模式如何“听出”电路的共振心跳?——一次深入谐振测试的实战解析你有没有试过轻轻敲击一个玻璃杯,靠声音判断它的材质和形状?经验丰富的老师傅一听就知道是不是空心、有没有裂纹。在电子世界里,我们也有类似的“听…

作者头像 李华
网站建设 2026/4/22 12:04:04

GPT-SoVITS语音合成冷启动问题解决方案

GPT-SoVITS语音合成冷启动问题解决方案 在数字内容爆发式增长的今天,个性化语音已成为智能交互系统的核心竞争力之一。无论是短视频平台上的虚拟主播配音,还是企业定制化的客服语音,用户对“像真人”且“属于自己”的声音需求日益强烈。然而&…

作者头像 李华
网站建设 2026/4/23 9:41:12

戴尔笔记本散热掌控神器:DellFanManagement完全指南

还在为戴尔笔记本的散热问题而苦恼吗?无论是游戏时的过热降频,还是办公时的风扇噪音,DellFanManagement都能为你提供完美的解决方案。这套专为戴尔笔记本设计的散热管理工具集,让你重新夺回设备散热的主导权。 【免费下载链接】De…

作者头像 李华
网站建设 2026/4/23 9:42:25

5分钟上手MATLAB翼型分析:零基础快速掌握XFOILinterface

5分钟上手MATLAB翼型分析:零基础快速掌握XFOILinterface 【免费下载链接】XFOILinterface 项目地址: https://gitcode.com/gh_mirrors/xf/XFOILinterface 还在为复杂的翼型气动分析而头疼吗?想用MATLAB就能完成专业的空气动力学计算吗&#xff1…

作者头像 李华
网站建设 2026/4/23 9:37:48

8个AI写作工具,助你轻松搞定本科论文!

8个AI写作工具,助你轻松搞定本科论文! AI 工具如何让论文写作变得轻松 对于大多数本科生而言,撰写一篇高质量的本科论文是一项既耗时又费力的任务。从选题、资料收集到撰写、修改,每一个环节都可能成为瓶颈。而随着 AI 技术的不断…

作者头像 李华