当前位置:首页 > > 芯片验证工程师
[导读]package是SystemVerilog语言的一种数据结构,它允许将相关的声明和定义打包在同一个namespace中。package可能包含类型定义、常量声明、函数和类模板。要想在某个作用域内使用package,必须先导入该包。package是组织代码和确保类型一致的有效方法,...

paget="_blank">ckage 是SystemVerilog语言的一种数据结构,它允许将相关的声明和定义打包在同一个namespace中。package 可能包含类型定义、常量声明、函数和类模板。要某个作用域内使用package ,必须导入该包


package 是组织代码和确保类型一致的有效方法,这里需要仔细去区分下和`include的区别。UVM基类库包含在一个名为“uvm_pkg”的package 中。在开发UVM testbenche 时,应该使用package来组织agents、envs、sequence libraries、test libraries等组件中的各种类定义。

 

1、一个package 及其相应的SV文件应该用一个_pkg后缀来命名。例如spi_env_pkg.sv文件应该包含package spi_env_pkg。使用独立的SV文件表明这个package 文件是一个独立的编译单元。_pkg后缀表示该文件中包含一个package 。这种编码规范对工程师和工具脚本都很友好。

2、package 中包含的类应该使用`include。在package 内声明的类模板应该被分离到扩展名为.svh的单个文件中。这些文件应该按照必要的编译顺序进行`include。package 文件是唯一应该使用`include的地方,在`include文件中不应该有进一步的`include语句。在单独的文件中声明类可以使它们更容易维护,也可以使package 的内容更清晰。

3、其他packages 中的Imports 应在package 的顶部声明。一个package的内容可能需要参考另一个package 的内容。在这种情况下,外部package 应该在该package 代码的开头声明。

4、一个package 使用的所有文件都应该位于一个目录中。


下面是一个针对UVM env的package 文件的示例。这个env包含两个agents (spi和apb)和一个register model ,它们作为子package 导入。与env相关的类模板通过 `included导入:

package spi_env_pkg;// Standard UVM import
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭