我可以在包中添加模块吗?或者如何编写相关模块?
Can I add a module in a package? Or how to write relative modules?
模块具有完全相同的名称(例如 arbiter、fifo 等)是很常见的。或者在使用开源项目时。
- 有没有办法使模块成为相对的?
- 我可以在包中添加模块吗?
- 除了重命名和更改所有文件之外,还有更好的处理方法吗?
编辑:
Vivado 不支持库和配置。
Keywords marked with an asterisk (*) are
reserved by Verilog and are not supported by Vivado synthesis.
UG901 (v2020.1) 2020 年 6 月 24 日:
不能在包中声明模块。
SystemVerilog 有一种嵌套模块声明的方法,因此您可以定义包含 module B
声明的 module A
。这使得模块 B 对模块 A 私有,并且只有 A 可以实例化 B。
对于开源项目或与此相关的任何项目,您可以将模块编译成单独的库(lib1
、lib2
等)。然后,您可以在每个库中使用相同名称 (fifo
) 的模块,并且 lib1
中实例化 fifo
的任何模块将从同一个库中获取它。如果同一个库中没有 fifo
,您可以指定一个库搜索顺序,指示从哪里选择 fifo
。您甚至可以拥有一个包含两个 fifo
实例的模块,一个实例来自 lib1
,另一个来自 lib2
.
33 节对此进行了解释。在IEEE 1800-2017 SystemVerilog LRM中配置一个design的内容。如何管理库的细节是特定于工具的。请阅读您的工具的用户手册或直接联系您的工具供应商以获得支持。
模块具有完全相同的名称(例如 arbiter、fifo 等)是很常见的。或者在使用开源项目时。
- 有没有办法使模块成为相对的?
- 我可以在包中添加模块吗?
- 除了重命名和更改所有文件之外,还有更好的处理方法吗?
编辑: Vivado 不支持库和配置。
Keywords marked with an asterisk (*) are reserved by Verilog and are not supported by Vivado synthesis.
UG901 (v2020.1) 2020 年 6 月 24 日:
不能在包中声明模块。
SystemVerilog 有一种嵌套模块声明的方法,因此您可以定义包含 module B
声明的 module A
。这使得模块 B 对模块 A 私有,并且只有 A 可以实例化 B。
对于开源项目或与此相关的任何项目,您可以将模块编译成单独的库(lib1
、lib2
等)。然后,您可以在每个库中使用相同名称 (fifo
) 的模块,并且 lib1
中实例化 fifo
的任何模块将从同一个库中获取它。如果同一个库中没有 fifo
,您可以指定一个库搜索顺序,指示从哪里选择 fifo
。您甚至可以拥有一个包含两个 fifo
实例的模块,一个实例来自 lib1
,另一个来自 lib2
.
33 节对此进行了解释。在IEEE 1800-2017 SystemVerilog LRM中配置一个design的内容。如何管理库的细节是特定于工具的。请阅读您的工具的用户手册或直接联系您的工具供应商以获得支持。