SystemVerilog 中 import 和 include 的区别与联系
这是初学 SV/UVM 很容易混淆的两个概念。它们都是引入外部内容但机制完全不同——include是文本替换import是引入 package 的符号。一、include预处理文本替换本质include是编译预处理指令注意前面有反引号在编译前把指定文件的内容原封不动地复制粘贴到当前位置。用法include uvm_macros.svh include my_driver.sv特点纯文本插入等同于把那个文件的代码手动抄进来处理的是文件常用于包含宏定义define、.svh头文件、宏文件如uvm_macros.svh谁 include代码就出现在谁那里二、import编译语义引入符号本质import是语言级语句把某个package包里已经编译好的类、类型、函数、变量等符号引入到当前作用域让你能直接使用。用法import uvm_pkg::*; // 引入 uvm_pkg 里的所有符号 import my_pkg::trans; // 只引入 my_pkg 里的 trans 类特点处理的是package包不是文件引入的是符号名字不是文本package 必须先被编译过import 只是让这些名字可见::*表示引入包里所有公开符号::具体名表示只引入某一个三、核心区别对比对比项includeimport类别预处理指令有反引号语言语句处理对象文件内容package符号机制文本复制粘贴引入已编译的符号名发生时机编译前预处理编译时语义解析内容会不会重复会复制多次可能重定义不会只是引用同一份典型用途宏文件、头文件使用 package 里的类/类型/函数是否需要 package不需要必须有 package四、它们的联系经常一起出现在 UVM 里你几乎总能看到这两句配对出现import uvm_pkg::*; // 引入 uvm 的所有类、类型 include uvm_macros.svh // 引入 uvm 的宏如 uvm_info、uvm_component_utils为什么要一起用类、函数、类型→ 放在package里 → 用import引入宏define→不能放进 package宏是预处理层面的package 是语义层面的→ 只能用include引入所以import uvm_pkg::*;让你能用uvm_component、uvm_test等类include uvm_macros.svh让你能用uvm_info、uvm_component_utils等宏两者互补缺一不可。五、典型的 package 组织方式一个常见做法在 package 内部用 include 把源文件拼进来外部再 import 这个 package// ---------- my_pkg.sv ---------- package my_pkg; import uvm_pkg::*; include uvm_macros.svh include my_trans.sv // 把类的定义文本包含进包里 include my_driver.sv include my_env.sv endpackage // ---------- tb.sv ---------- module tb; import uvm_pkg::*; include uvm_macros.svh import my_pkg::*; // 引入 my_pkg 里所有类 ... endmodule包内部用include把各个类的源码拼装进 package包外部用import引入这个 package 的符号六、易错点宏不能靠 import 传递即使你import了某个 package那个包里用define定义的宏在外面也用不了——宏必须靠include重复 include 会重定义同一个含类定义的文件被 include 两次会报重复定义所以头文件常用ifndef / define / endif保护反引号别漏include前面是反引号不是普通引号import::*的可见性::*是通配导入只有真正用到时才解析不会强制引入所有名字造成冲突一句话总结include是文本复制把文件内容粘过来主要用于宏/头文件import是引入符号把 package 里编译好的类/类型/函数拿来用。UVM 里两者配对使用——import uvm_pkg::*拿类include uvm_macros.svh拿宏互补缺一不可。

相关新闻

支付宝小程序大文件分片上传实战:实现断点续传与并发控制

支付宝小程序大文件分片上传实战:实现断点续传与并发控制

1. 项目概述与核心价值最近在做一个支付宝小程序的工具类项目,用户需要上传一些设计稿和原型文件,文件大小从几兆到几百兆不等。直接调用支付宝官方的my.uploadFileAPI,遇到超过10MB的文件就很容易失败,网络一波动,用户…

2026/7/3 2:18:49阅读更多 →
基于C++的高校信息查询与管理系统设计与实现

基于C++的高校信息查询与管理系统设计与实现

摘要:本系统是一个基于C语言开发的高校信息管理系统,实现了对全国高校基本信息的录入、查询、修改和删除等功能。系统采用模块化设计思想,使用自定义链表作为核心数据结构,支持灵活的查询语法和数据验证机制。项目概览项目简介本项…

2026/7/3 2:18:49阅读更多 →
AI SQL 改写边界:能改快,不代表可以自动上线

AI SQL 改写边界:能改快,不代表可以自动上线

AI SQL 改写边界:能改快,不代表可以自动上线 一、SQL 改写的风险不在语法,而在语义 AI 辅助 SQL 改写很诱人。给它一条慢 SQL、执行计划和表结构,它可以生成看起来更简洁的写法,甚至建议索引和 join 顺序。但数据库系统…

2026/7/3 2:18:49阅读更多 →
惠州儿童牙科医院选择指南

惠州儿童牙科医院选择指南

很多家长找儿童牙科时,最常问的就是孩子看牙会不会哭。这篇文章整理了公开可查的惠州口腔机构信息,主要罗列各家在儿童牙科方面的服务内容,不做推荐,也不排先后顺序。惠州丛林口腔儿童牙科服务 惠州丛林口腔在河南岸街道冰塘组13号…

2026/7/3 3:33:54阅读更多 →
Winform加密算法

Winform加密算法

AES:AES:加密算法加密或解密的过程采用同一个秘钥,是一个对称的加密算法 加密过程,先把明文分成一段一段的,先把第一段明文和秘钥以及初始向量进行异或运算,得到一个加密之后的密文,然后再拿出第二段明文和…

2026/7/3 3:33:54阅读更多 →
C++工程化开发规范、内存泄漏排查、常见报错与高阶实战总结

C++工程化开发规范、内存泄漏排查、常见报错与高阶实战总结

绝大多数C新手在学完基础语法、面向对象、STL之后,仍然无法独立完成项目开发,核心原因是缺少工程化思维、规范意识、问题排查能力。C是一门对规范性、内存管理、代码严谨性要求极高的语言,相比于Java、Python自动垃圾回收,C需要开…

2026/7/3 3:33:54阅读更多 →
Windows10Debloater完全指南:3步自动化清理Windows系统臃肿,释放系统性能

Windows10Debloater完全指南:3步自动化清理Windows系统臃肿,释放系统性能

Windows10Debloater完全指南:3步自动化清理Windows系统臃肿,释放系统性能 【免费下载链接】Windows10Debloater Script to remove Windows 10 bloatware. 项目地址: https://gitcode.com/gh_mirrors/wi/Windows10Debloater Windows10Debloater是一…

2026/7/3 3:33:54阅读更多 →
C++ 运算符重载、友元与对象模型深入

C++ 运算符重载、友元与对象模型深入

一、引言:让对象也能像普通变量一样运算在前面的学习中,我们已经掌握了 C 的基础语法、函数、指针、面向对象、继承与多态。我们可以轻松定义类、创建对象、封装数据、实现多态接口。但你是否想过:为什么两个 int 可以直接 a b,而…

2026/7/3 3:33:54阅读更多 →
2026最新5款AI编程工具实测合集|Copilot平替学生党低成本权威对

2026最新5款AI编程工具实测合集|Copilot平替学生党低成本权威对

2026最新5款AI编程工具实测合集|Copilot平替学生党低成本权威对比作为一个每天写代码超过 6 小时的人,我对 AI 编程工具的期待很简单:别打断我的心流。5 款工具在这一点上差异巨大。我平时一边维护个人开源项目,一边承接小型Java商…

2026/7/3 3:28:54阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/2 12:10:34阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/2 12:10:34阅读更多 →
LV3296与PIC18F45K22的UART通信与USB扩展方案

LV3296与PIC18F45K22的UART通信与USB扩展方案

1. LV3296与PIC18F45K22的硬件搭档解析在嵌入式数据采集系统中,LV3296条形码扫描模块与PIC18F45K22微控制器的组合堪称经典搭配。LV3296作为一款工业级条码扫描头,其核心是一颗高性能CMOS图像传感器,配合专用解码芯片,能自动识别包…

2026/7/3 0:03:41阅读更多 →
AI初创生存指南:6个月完成可信度验证闭环

AI初创生存指南:6个月完成可信度验证闭环

1. 这不是“逆袭指南”,而是一份AI初创公司真实生存手记“How To Beat Odds As an AI Startup?”——这个标题乍看像一句热血口号,但在我带过7个从0到1的AI产品团队、亲手踩过融资失败、技术债崩盘、客户POC卡在最后一公里等23类典型坑之后,…

2026/7/3 0:03:41阅读更多 →
多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

多模态+推理链+RAG 2.0+智能体:工业级AI系统落地四支柱

1. 这不是又一篇“AI趋势速览”,而是一份实操者手记:当多模态、推理链、检索增强与智能体协作真正撞进工程现场“LAI #73”这个编号本身就像一个暗号——它不属于某家大厂的白皮书,也不是学术会议的议程表,而是长期泡在模型训练集…

2026/7/3 0:03:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/3 1:12:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/3 1:36:36阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/3 2:08:15阅读更多 →