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

    文章

    2714

    浏览量

    47511
  • Verilog
    +关注

    关注

    28

    文章

    1351

    浏览量

    110124
  • 编译
    +关注

    关注

    0

    文章

    659

    浏览量

    32879

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

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

收藏 人收藏

    评论

    相关推荐

    声明式资源管理方法

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

    新品|无刷电机运动执行套件 — RollerCAN Unit & RollerCAN Lite

    的Roller485Unit,它采用了CAN接口,同时产品外观进行全新配色设计。产品特性:无刷直流电机控制CAN通讯/I2C通讯控制集成OLED显示RGB指示灯FOC闭环
    的头像 发表于 10-19 08:08 208次阅读
    新品|无刷电机运动执行套件 — RollerCAN <b class='flag-5'>Unit</b> &amp;amp; RollerCAN Lite

    安科瑞ADL200-2DM宿舍预付费电表 照明空调单独计量

    安科瑞宿舍照明空调单独计量预付费电表适合于学生宿舍(公寓)用电管理。终端可以一路火线进线,两路火线并联输出,可分别计量插座、空调回路,可进行预付费控制,可对两路出线分别进行负载控制和时间控制并支持近30条跳闸事件记录存储功能,实现对学校宿舍用电管理的电力商品化、用电安全和按需控制。
    的头像 发表于 09-26 10:21 265次阅读
    安科瑞ADL200-2DM宿舍预付费电表 照<b class='flag-5'>明空</b>调单独计量

    鸿蒙原生应用元服务开发-仓颉基础数据类型Unit与Nothing类型

    一、Unit 类型 对于那些只关心副作用而不关心值的表达式,它们的类型是Unit。例如,print 函数、赋值表达式、复合赋值表达式、自增和自减表达式、循环表达式,它们的类型都是 Unit
    发表于 09-06 15:43

    433MHz频段的LoRa通讯单元 | LoRaE220-433 Unit

    NEWLoRaE220-433UnitLoRaE220-433Unit是一款适用于433MHz频段的LoRa通讯单元,集成了LLCC68芯片方案。相较于传统的SX1278方案,LLCC68具有传输
    的头像 发表于 07-13 08:30 638次阅读
    433MHz频段的LoRa通讯单元 | LoRaE220-433 <b class='flag-5'>Unit</b>

    鸿蒙开发Ability Kit程序框架服务:声明权限

    应用在申请权限时,需要在项目的配置文件中,逐个声明需要的权限,否则应用将无法获取授权。
    的头像 发表于 07-01 09:22 345次阅读
    鸿蒙开发Ability Kit程序框架服务:<b class='flag-5'>声明</b>权限

    esp32如何使用DMA来传输UART/SPI等外设的数据,编程上应该怎么声明或者调用?

    esp32如何使用DMA来传输UART/SPI等外设的数据,编程上应该怎么声明或者调用?
    发表于 06-26 07:58

    没投资!华为紧急声明

    来源:国芯网,谢谢 编辑:感知芯视界 Link 6月11日消息,华为发表紧急声明表示,华为提出投资柔宇科技的言论属误传。实际情况是,华为未有此投资计划,也未提出投资要求。 据报道,在6月9日深夜
    的头像 发表于 06-12 10:03 455次阅读

    美国等十国发表声明称就6G发展达成共同原则

    美国等十国发表声明称就6G发展达成共同原则 据央视新闻的报道, 在美国当地时间2月26日美国等十国发表声明称就6G发展达成共同原则。 主体包括有美国、英国、法国、日本、韩国、瑞典、芬兰、捷克、加拿大
    的头像 发表于 02-29 18:59 2939次阅读

    gis中常用的空间分析方法

    GIS中常用的空间分析方法 GIS(地理信息系统)是一种用于收集、存储、处理、分析和展示地理数据的技术。空间分析是GIS的核心部分,它包括一系列方法和技术,用来研究地理空间数据之间的关系和模式。本文
    的头像 发表于 02-25 13:44 5685次阅读

    中芯宁波严正声明!绝不谅解

    来源:国芯网,谢谢 编辑:感知芯视界 2月20日,中芯宁波发布官方声明,不与公司前董事兼总经理黄河、前财务负责人王瀛进行任何和解或谅解! 上述二人因涉嫌挪用资金罪于2023年11月14日被宁波市
    的头像 发表于 02-21 09:59 607次阅读

    大众汽车新增 ID.7 Tourer 旅行版,加大载货空间并提升续航里程

    据大众汽车集团官方声明,ID.7 Tourer 将荣膺 ID 系列新旗舰,与全新帕萨特旅行车同台竞技。这款新车为家庭用户及长途出行者量身打造,堪称全方位升级之作,特别是行李厢空间的显著优势。
    的头像 发表于 02-20 10:17 536次阅读

    TC397 QSPI unit2调用mcal同步接口后一直报失败的原因?

    QSPI unit2和unit0134 5 不一样,导致配置完mcal后,unit2 调用mcal同步接口后一直报失败,其他的unit都是没有问题的,不确定是不是mcal的问题。
    发表于 02-02 09:16

    双通道数模转换器| DAC2 Unit/Hat

    、控制系统和通信系统等领域都有广泛的应用。DAC2Unit/Hat本周上新的两款新品,DAC2Unit和DAC2Hat,就是基于I2C总线的数字信号转模拟信号转换器,
    的头像 发表于 01-13 08:29 506次阅读
    双通道数模转换器| DAC2 <b class='flag-5'>Unit</b>/Hat

    移远通信声明: 关于移远产品用途及安全合规性的澄清

    移远通信声明: 关于移远产品用途及安全合规性的澄清
    的头像 发表于 01-06 08:28 418次阅读
    移远通信<b class='flag-5'>声明</b>: 关于移远产品用途及安全合规性的澄清