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

    文章

    2848

    浏览量

    53432
  • Verilog
    +关注

    关注

    31

    文章

    1374

    浏览量

    114712
  • 编译
    +关注

    关注

    0

    文章

    696

    浏览量

    35275

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MySQL磁盘空间问题的成因和排查方法

    运维工程师经常会遇到这样的场景:MySQL 服务器的磁盘空间告警,但查看数据目录时发现数据库本身并不大。大量磁盘空间被未知文件消耗。通过排查发现,二进制日志(Binary Log)是主要的磁盘空间消耗者。
    的头像 发表于 04-13 13:57 127次阅读

    关于AC696N系列芯片如何压缩rom空间,AC6965E4程序占空间太大如何优化?

    一、问题简介 AC696N系列的芯片,基本上都是内置512Kbyte的空间,俗称rom空间,也可以称之为合封装的25Q40 客户在实际的开发中,会遇到空间不够的情况,这个时候就要做一些功能的取舍 1
    发表于 03-28 22:58

    深入剖析PCIe配置空间中Type 0 Header的核心成员

    (Subsystem ID),还声明了它的职业能力(Class Code)以及它需要占用的办公资源(BAR 空间)。我们将深入剖析 PCIe 配置空间中 Type 0 Header 的核心成员,探讨这些寄存器背后的意义。
    的头像 发表于 02-26 16:44 1046次阅读
    深入剖析PCIe配置<b class='flag-5'>空间</b>中Type 0 Header的核心成员

    结构体声明与定义

    1、声明 结构体的声明使用struct关键字,如果我们想要把我们的学籍信息组织一下的话,可以这样表示: struct Info { unsigned long identifier;//学号
    发表于 12-11 07:52

    字存储空间的小端格式

    CW32F030 内核为 32 位的 ARM® Cortex®-M0+ 微处理器,最大寻址空间为 4GB。芯片内置的程序存储器、数据存储器、各外设及端口寄存器被统一编址在同一个 4GB 的线性
    发表于 12-11 07:03

    共用体声明

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

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

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

    发布元服务配置隐私声明

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

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

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

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

    一、什么是3C认证自我声明3C认证自我声明(CCCSelf-Declaration),是国家市场监督管理总局自2019年起推行的新型管理方式。它允许部分低风险产品企业不再通过第三方认证机构发证,而是
    的头像 发表于 11-11 11:58 1555次阅读
    一文了解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 934次阅读
    ISSE国际智慧<b class='flag-5'>空间</b>展览会即将登场—智构<b class='flag-5'>空间</b>,慧聚未来

    如何降低视频占用空间

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

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

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

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

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