0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SystemVerilog中的package和`include有什么不同?

芯片验证工程师 来源:芯片验证工程师 作者:芯片验证工程师 2022-11-14 10:53 次阅读

肯定很多人会问为什么有的地方使用package,有的地方使用`include,二者是不是等价的呢?

答案是NO,二者并不等价,原因就要涉及System Verilog命名空间了。

假设你有2个class “A”和“B” ,如下:

class A;
 int i;
 endclass : A
 
 class B;
 int i;
endclass : B

SystemVerilog会认为这两个class是不同的类型,原因是它们的名称不同,即使这两个class的内容是一模一样的。

因为Systemverilog中名称还表示着各种定义声明的命名空间。

所以,当你在一个package 中声明一个class,那么这个package的名称就隐式地成为class名称的前缀。

package P:

 package P;
 class A;
 int i;
 endclass : A
 A a1;
 endpackage : P

package Q:

package Q;
 class A;
 int i;
 endclass : A
 A a1;
endpackage : Q

所以,此时会有2个class A定义(P::A和Q::A), 并且P::a1 和Q::a1的类型并不兼容。

如果将将上述代码使用`include改写成:

class A;
 int i;
 endclass : A

 package P;
 `include "A.sv"
 A a1;
 endpackage : P
 
 package Q;
 `include "A.sv"
 A a1;
 endpackage : Q

因为`include只是简单的复制粘贴,所以P::a1和Q::a1仍然是不兼容的数据类型。若修改成下述形式:

package P;
 class A;
 int i;
 endclass : A
 endpackage : P
 
 package R;
 import P::A;
 A a1;
 endpackage : R
 
 package S;
 import P::A;
 A a1;
 endpackage : S

此时只有一个地方存在class “A” 的定义(package “P”),然后我们在package R和package S中import package A,此时在package R和package S中看到的class A就是同一个数据类型了。

这也是`include和package的主要区别。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1327

    浏览量

    109313
  • System
    +关注

    关注

    0

    文章

    161

    浏览量

    36575
  • Package
    +关注

    关注

    0

    文章

    26

    浏览量

    10404

原文标题:SystemVerilog中的package和`include有什么不同?

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    看一下SystemVerilogpackage的使用方法与注意事项

    谈到package,用过VHDL的工程师并不陌生。实际上,SystemVerilog中的package正是从VHDL引入的,以进一步增强其在系统级的描述能力。
    的头像 发表于 10-07 11:33 1105次阅读
    看一下<b class='flag-5'>SystemVerilog</b>中<b class='flag-5'>package</b>的使用方法与注意事项

    请问Systemverilog如何使用VHDL的package?

    现在需要使用system verilog写代码,但是想复用之前VHDL的package,里面有写的现成的function等,请问如何调用呢。总是报错说找不到_pkg
    发表于 03-12 15:37

    [启芯公开课] SystemVerilog for Verification

    学快速发展,这些趋势你了解吗?SystemVerilog + VM是目前的主流,在未来也将被大量采用,这些语言和方法学,你熟练掌握了吗?对SoC芯片设计验证感兴趣的朋友,可以关注启芯工作室推出的SoC芯片
    发表于 06-10 09:25

    systemverilog学习教程

    systemverilog的一些基本语法以及和verilog语言之间的区别。
    发表于 04-01 14:24

    round robin 的 systemverilog 代码

    大家好,我对一个 round robin 的 systemverilog 代码疑惑。https://www.edaplayground.com/x/2TzD代码第49和54行是怎么解析呢 ?
    发表于 03-14 19:16

    做FPGA工程师需要掌握SystemVerilog吗?

    在某大型科技公司的招聘网站上看到招聘逻辑硬件工程师需要掌握SystemVerilog语言,感觉SystemVerilog语言是用于ASIC验证的,那么做FPGA工程师有没有必要掌握SystemVerilog语言呢?
    发表于 08-02 20:30

    使用SystemVerilog来简化FPGA接口的连接方式

    FPGA接口的连接方式。    也许很多FPGA工程师对SystemVerilog并不是很了解,因为以前的FPGA开发工具是不支持SystemVerilog的,导致大家都是用VHDL或者Verilog来
    发表于 01-08 17:23

    SystemVerilog哪些标准?

    SystemVerilog哪些标准?
    发表于 06-21 08:09

    SystemVerilog Assertion Handbo

    SystemVerilog Assertion Handbook1 ROLE OF SYSTEMVERILOG ASSERTIONSIN A VERIFICATION METHODOLOGY
    发表于 07-22 14:08 188次下载

    SystemVerilog的断言手册

    SystemVerilog Assertion Handbook1 ROLE OF SYSTEMVERILOG ASSERTIONSIN A VERIFICATION METHODOLOGY
    发表于 07-22 14:12 20次下载

    SystemVerilog for Design(Secon

    Chapter 1: Introduction to SystemVerilogChapter 2: SystemVerilog Declaration SpacesExample 2-1
    发表于 07-22 14:45 0次下载

    SystemVerilog的正式验证和混合验证

    手册的这一部分探讨了使用SystemVerilog进行验证,然后查看了使用SystemVerilog的优点和缺点。
    发表于 03-29 10:32 23次下载

    openwrt下面创建package之Makefile模版

    。********************************这个M akefile 是openwrt/package/eep 下面的。**********************************include $(TOPDIR
    发表于 09-17 11:01 0次下载
    openwrt下面创建<b class='flag-5'>package</b>之Makefile模版

    SystemVerilog中的package

    SystemVerilog packages提供了对于许多不同数据类型的封装,包括变量、task、function、assertion等等,以至于可以在多个module中共享。
    的头像 发表于 11-07 09:44 906次阅读

    SystemVerilog在硬件设计部分有哪些优势

    谈到SystemVerilog,很多工程师都认为SystemVerilog仅仅是一门验证语言,事实上不只如此。传统的Verilog和VHDL被称为HDL(Hardware Description
    的头像 发表于 10-19 11:19 458次阅读
    <b class='flag-5'>SystemVerilog</b>在硬件设计部分有哪些优势