类和结构之间的区别很简单,但程序包在哪里适合整个方案。我看到的大部分软件包都有从库文件导入,并在目录中包含其他的sv文件。更具体地说,什么时候软件包通常用于最优编码方案,如果在该级别没有添加特定变量,使用头文件是否更好?谢谢systemverilog中结构,包和类之间的区别
0
A
回答
3
包提供了一个编译范围,可以在其中进行类型,类,函数,任务和其他声明。然后可以将包导入其他作用域(其他包或顶层编译单元作用域)。
我觉得包很像C++中的命名空间。它们提供了一个区域以“打包”的方式编译代码,然后可以在其他地方导入和使用代码。
包是否由包文件中的立即声明组成,或来自包含在包声明中的头文件只是首选项。
下面的两个是等效的:
// File my_pkg.sv
package my_pkg;
class my_class;
endclass
endpackage
-
// File my_class.sv
class my_class;
endclass
// File my_pkg.sv
package my_pkg;
`include "my_class.sv"
endpackage
0
软件包,如C++ namepsaces可以用来避免变量名colisions。
package a_pkg;
int value = 100;
class a_class;
task print;
$display ("value is %d", value);
endtask
endclass
endpackage
package b_pkg;
int value = 200;
class b_class;
task print;
$display ("value is %d", value);
endtask
endclass
endpackage
package c_pkg;
import a_pkg::value;
class c_class;
task print;
$display ("value is %d", value);
endtask
endclass
endpackage
这里两个类是指它们自己的包的全局变量,它们都被命名为'value'。第三个类使用'import'选择使用先前包中的全局变量。
没有包装的情况会是这样:
int value = 100;
class a_class;
task print;
$display ("value is %d", value);
endtask
endclass
// int value = 100; // can't do... compilation error
class b_class;
task print; // prints 100
$display ("value is %d", value);
endtask
endclass
class c_class;
task print;
$display ("value is %d", value);
endtask
endclass
endpackage
还要注意的是struct
s的处理有点像标量或数组变量。 A class
变量仅包含一个参考,并且需要调用new
才能创建一个class
对象。但struct
变量像数组变量直接保持值。这些也可以用于可合成的RTL代码。
请注意,软件包无法实例化,并且只有一个包中声明的任何实例。它们可以被看作是RTL中顶级模块的TB等价物,即没有实例化的模块。
相关问题
- 1. 结构和类之间的区别?
- 2. 类和包之间的区别
- 3. 控制结构php和控制结构之间的区别javascript
- 4. 模板元编程时结构和类之间的区别
- 5. 子类和类别之间的区别?
- 6. SVA(SystemVerilog声明):$ assertoff和$ assertkill之间的区别?
- 7. 构建部署包和msbuild t之间的区别:包
- 8. 系统verilog中的结构和联合之间的区别
- 9. NOTIFYICONATA结构中使用的NOTIFYICON_VERSION和NOTIFYICON_VERSION_4之间的区别?
- 10. 类区域和堆之间的区别
- 11. SPFile和PublishingPage类别之间的区别
- 12. APIView类和viewsets类之间的区别?
- 13. Pattern类和Matcher类之间的区别
- 14. 类和类之间的区别<?>
- 15. 父类和超类之间的区别
- 16. Java中的类导入和包导入之间的区别?
- 17. 构建和制造之间的区别?
- 18. 构建和部署之间的区别?
- 19. 结构和类之间的C++区别VS2015中的初始化怎么样
- 20. 包含和块之间的区别Jade
- 21. msbuild发布和包之间的区别
- 22. DLL包装和DLL之间的区别
- 23. GetExtendedUdpTable和netstat结果之间的区别
- 24. 析构函数之间的区别,处理和终结方法
- 25. C++异常和结构化异常之间的区别
- 26. 结构和列表ADT之间的用法区别是什么?
- 27. - >和之间的区别。在一个结构?
- 28. 服务结构之间的本地和访客服务之间的区别
- 29. JAR和包之间有什么区别?
- 30. '组件体系结构'和'模块化体系结构'之间的区别