SystemVerilog Package的一些编码规范
时间:2021-11-05 13:45:45
[导读]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 是组织代码和确保类型一致的有效方法,这里需要仔细去区分下和`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 




