UVM中package的使用

        在学习UVM环境的过程中,验证组件env,driver等都是在package中引用的,只是大概知道package中打包了一些有相关性的文件,详细的不理解。自己要搭建/修改验证平台时无从下手,so,记录package相关内容在此,加深理解/供以后回顾。

------------------------------------------------------------------------------------------------

Package在UVM中的作用是什么?

参照【SystemVerilog的语言参考手册】的定义

【SystemVerilog包提供了额外的机制在多个SystemVerilog模块,接口和程序之间,共享参数,数据,类型,任务,函数,序列,以及特性的声明。

包是显示命名的作用域。它出现在源文本的最外层。类型,变量,任务,函数和特性都可以在一个包中声明。这些声明可以在模块,接口,程序和其他包中通过导入或完成的解析名字来引用。】

个人理解:

存在相关性,需要相互调用的各种类型的数据,文件就放在一个包中,类似一个数据共享空间。

例如:

我们需要在uvm_base_test中例化env,在env中例化driver,refmodel等。可以把所有文件都按照层次关系include到一个文件中,需要被调用的先include。这样的方法只能看出被调用关系,不能体现各组件间的层次关系。通过package把test层,env层次,agent层次的组件分别打包,这样层次,调用关系更清晰。

把平台所需的结构体都写到一个包中,这个结构体包在多个包中都要引用,在test层次的包中引用的结构体包并不能作用到env层中。

【包声明产生了一个作用域,它包含了用于在一个或多个编译单元,模块,接口或程序间共享的声明。位于包内的项目通常是类型定义,任务以及函数。位于包内的项目不能具有层次化的作用。(比如dut.item这样的调用)

Package的引用方法

1)使用域解析操作符 :: 进行引用

2)通过import语句进行引用

      import分为显示导入和隐式导入(通配导入)。

例如要导入pkg_a中的test函数。

显示导入:import pkg_a::a;

隐式导入:import pkg_a::*;

隐式搜索优先级:

        在module内部 "import pkg_name::*",代表的是该package中定义的类型可能会在module等内部有效可见。只有当module等无法在内部索引到正确类型时,才会转而去package中去搜寻,如果索引到了那么该package中的这个类型则变得在module中可见。

Package中include的文件为什么不需要指定路径?

因为文件是先编译过的吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
UVM package 是一种组织代码的方式,它将相关的类、函数、任务等组合在一起,方便用户进行管理和维护。使用 package 可以将 UVM 的一系列相关文件组合在一起,并将其作为一个整体进行导入和使用。 要使用 package,需要完成以下步骤: 1. 创建一个 package 文件夹,在该文件夹创建一个 package.sv 文件,并在其定义 package。 2. 在 package 定义需要导入的类、任务、函数等。 3. 在需要使用 package 的文件使用 import 导入 package。 下面是一个简单的示例: `package my_package; import uvm_pkg::*; // 导入 UVM 包 class my_class extends uvm_object; // 定义类 endclass endpackage` 在一个使用了上述 package 的文件,需要使用以下语句导入并使用package: `import my_package::*; // 导入 my_package module top; my_class obj = new(); // 使用 my_class endmodule` 在上述示例,我们创建了一个名为 my_packagepackage,并在其定义了一个名为 my_class 的类。在使用 my_class 的文件,我们通过 import my_package::* 导入了该 package,并使用 new() 创建了一个 my_class 对象 obj。 需要注意的是,UVM 有很多内置的 package,如 uvm_pkg、uvm_reg_pkg 等,这些 package 定义了许多常用的类和函数,可以直接导入使用。同时,我们也可以创建自己的 package,将一些相对独立的代码组织起来,方便管理和维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值