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

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

3天内不再提示

$unit声明空间

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2022-06-21 09:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

$unit是一个危险的共享名称空间,充满危险。它的使用会导致设计难以编译和维护。
下列unit代表$unit
笔记

在将包添加到SystemVerilog标准之前,SV提供了一种不同的机制来创建多个模块共享的定义。这个机制是一个名为unit的伪全局名称空间,也称unit 编译单元或声明空间。声明空间之外的任何声明都在unit声明空间中。在下面的示例中,bool_t的定义在两个模块之外,因此在unit声明空间中。

bc813bc0-f0fa-11ec-ba43-dac502259ad0.png

unit声明空间可以包含与包相同类型的用户定义,并且具有相同的综合限制。然而,与包不同的是,unit声明空间可能导致设计代码难以维护,EDA也难以编译。使用unit的一些危险包括

以unit声明空间的定义可能分散在许多文件中,使代码维护和代码重用成为一场噩梦,当引用包中用户自定义类型、任务、函数或其他标识符名称时,相对容易找到和维护标识符名称的定义。总是有一个显式的包引用或包导入语句来显示在哪里可以找到定义。当在unit声明空间中定义了用户自定义类型、任务、函数或其他标识符时,该定义可以位于构成设计和验证测试台源代码的任何文件、任何目录、任何服务器中。定位、维护和重新定义是困难的。

当unit声明空间中的定义位于多个文件中时,必须按照特定的顺序编译这些文件。

SystemVerilog要求在引用定义之前对其进行编译。当unit声明分散在许多文件中时,按照正确的顺序编译所有文件可能会很困难,甚至是不可能的。

更改unit定义需要重新编译所有源代码文件。

对unit声明空间中定义的任何更改都需要重新编译构成设计和验证测试台的所有源代码,因为任何地方的任何文件都可以无需导入地使用该定义。许多软件工具不会强制要求重新编译所有文件,但如果不重新编译,设计模块最终可能使用过时的定义。

对于仿真和综合,unit声明空间可以是相同,但通常是不同的。

编译器的每次调用都会启动一个新的unit声明空间,该空间不共享其他unit声明空间中的声明。许多SystemVerilog仿真器一起编译多个文件。这些工具将看到一个unit空间。一个文件中的unit定义对于单个编译中的任何后续文件都是可见的。大多数SystemVerilog综合编译器和一些仿真器都支持单独的文件编译,每个文件都可以独立编译。这些工具将看到几个断开连接的unit声明空间。一个文件中的unit定义对任何其他文件都不可见。

很容易出现定义不同的重复标识符名称。

在SystemVerilog中,在同一名称空间中多次定义同一名称是非法的。如果一个文件在unit声明空间中定义了bool_t用户自定义类型,而另一个文件在unit声明空间中也定义了bool_t用户自定义类型,那么这两个文件永远不能一起编译,因为这两个定义最终会在相同的unit空间中结束。为了避免这种冲突,工程师必须使用’define 和 ’ifdef添加条件编译指令,以便只编译编译器遇到的第一个定义。

包可以导入到unit中,但其危害与直接在unit中定义的危害相同。此外,必须注意不要将同一个包多次导入同一unit声明空间,这是非法的。

避免像Bubonic plague一样使用$unit!相反,使用包来共享定义。
包避免了$unit的所有危害,包提供了一个易于维护和重用的受控声明空间。
最佳实践指南4-2

bc9883b6-f0fa-11ec-ba43-dac502259ad0.jpg

审核编辑 :李倩

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

    关注

    7

    文章

    2822

    浏览量

    52795
  • Verilog
    +关注

    关注

    30

    文章

    1370

    浏览量

    114121
  • 编译
    +关注

    关注

    0

    文章

    688

    浏览量

    34939

原文标题:SystemVerilog(十二)-$unit声明空间

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    共用体声明

    还要考虑内存对齐的问题。 共用体可以类似结构体一样来定义和声明,但是共用体还可以允许不带名字: union { int i; char ch; float f; } a, b;
    发表于 12-05 07:24

    安世中国关于当前供应链局势及相关诉求的郑重声明

    安世中国在官方微信号发布了关于当前供应链局势及相关诉求的郑重声明;我们分享给大家:
    的头像 发表于 11-28 21:32 2034次阅读
    安世中国关于当前供应链局势及相关诉求的郑重<b class='flag-5'>声明</b>

    发布元服务配置隐私声明

    元服务必须先使用AGC的隐私声明托管服务生成自己的隐私声明,才能在版本信息页面选择到。详细内容参见配置隐私声明(元服务)和配置用户协议。 登录AppGallery Connect,点击“APP与元
    发表于 11-25 11:24

    维信诺五家工厂获颁ISO 14064温室气体核查声明

    近日,在第八届中国国际进口博览会上,维信诺五家工厂集体获颁ISO 14064温室气体核查声明,进一步夯实绿色低碳责任,彰显可持续发展的责任与决心。此次五家工厂同时获得SGS颁发的ISO 14064
    的头像 发表于 11-13 10:08 405次阅读

    一文了解3C认证自我声明制度

    一、什么是3C认证自我声明3C认证自我声明(CCCSelf-Declaration),是国家市场监督管理总局自2019年起推行的新型管理方式。它允许部分低风险产品企业不再通过第三方认证机构发证,而是
    的头像 发表于 11-11 11:58 362次阅读
    一文了解3C认证自我<b class='flag-5'>声明</b>制度

    使用CubeMX移植nano编译时提示大量未声明,为什么?

    编译时出现大量报错。报错集中在core/src/syscalls.c以及sysmem.c文件中。 报错内容如下所示,主要是提示找不到errno.h中的相关声明。 但是errno.h使用f12可以打开
    发表于 09-26 06:29

    ISSE国际智慧空间展览会即将登场—智构空间,慧聚未来

    智构空间,慧聚未来ISSE国际智慧空间展览会(ISSE)2025年9月25至29日中国杭州大会展中心全面覆盖四大版块应用“智慧建筑及园区”“城市公共空间”“智慧商业”“智慧生活”报名注册最后召集!预
    的头像 发表于 09-22 14:15 602次阅读
    ISSE国际智慧<b class='flag-5'>空间</b>展览会即将登场—智构<b class='flag-5'>空间</b>,慧聚未来

    如何降低视频占用空间

    我发现不同分辨率图像保存的视频大小接近,1分钟的视频都是30MB,如下图 我最终目的是希望保存视频占用空间小一点,同时我也没有找到降低帧率的方法,目前只能使用默认的30帧
    发表于 08-14 06:25

    锦浪科技逆变器荣获产品碳足迹核查声明

    日前,全球权威检验机构TÜV南德意志集团为锦浪科技正式颁发了产品碳足迹核查声明。这不仅标志着锦浪科技产品全生命周期碳足迹评估能力获得了国际权威认可,更印证了其在减少碳排放、提升可再生能源应用比例以及推动循环经济三大关键领域所取得的突出成果。
    的头像 发表于 08-05 17:10 1549次阅读

    永磁同步直线电机的粒子群PID空间矢量控制

    控制器,并通过MAT-LAB/Simmlimnk对永磁同步直线电机和其空间关量控制系统进行建模和仿真实验。仿真结果表明,采用粒子群优化算法的PID控制系统在指定速度1m/s和加入200N的负载时,比传统
    发表于 08-05 14:20

    飞凌嵌入式ElfBoard ELF 1板卡-内核空间与用户空间的数据拷贝之数据拷贝介绍

    在Linux系统中,内核空间和用户空间是两个独立的地址空间,它们有不同的访问权限和内存保护机制。在内核空间和用户空间之间进行数据传输时,需要
    发表于 03-19 08:55

    LBE大空间火热,如何落地文旅场景?

    LBE大空间,即Location-Based Entertainment大空间,是一种基于特定场地,通过结合 VR(虚拟现实)、AR(增强现实)、MR(混合现实)等前沿科技与三维数字资产的制作、播放与运营,将虚拟内容与现实世界相结合,为用户创造全新虚拟
    的头像 发表于 02-15 10:14 1104次阅读

    大疆发布DJI O4 Air Unit系列:图传性能再升级

    近期,大疆正式发布了DJI O4 Air Unit Pro和DJI O4 Air Unit两款数字图传解决方案,再次实现了图传性能的飞跃。这两款产品为用户带来了更高清、更低延时、更远距离的影像传输
    的头像 发表于 01-15 15:03 2587次阅读

    声明式资源管理方法

    1、管理k8s核心资源的三种基础方法 陈述式管理方法:主要依赖命令行CLI工具进行管理 声明式管理方法:主要依赖统一资源配置清单(manifest)进行管理 GUI式管理方法:主要依赖图形化操作界面
    的头像 发表于 12-31 10:16 1060次阅读

    TÜV南德授予上海瑞斯达组织温室气体核查声明

    厦门2024年12月13日 /美通社/ -- 近日,TÜV南德意志集团(以下简称"TÜV南德")为上海瑞斯达防护制品有限公司(以下简称"上海瑞斯达")颁发组织温室气体核查声明。TÜV南德大中华区
    的头像 发表于 12-15 09:21 585次阅读
    TÜV南德授予上海瑞斯达组织温室气体核查<b class='flag-5'>声明</b>