我正在用 Verilog 编写一个项目并想使用parameter在我的模块中定义一些参数。localparam有时用来代替parameter

他们之间有什么区别?

答案

一般来说,背后的想法localparam(添加到 Verilog-2001 标准中)是为了保护localparam来自最终用户的意外或不正确的重新定义(与parameter值,该值不能通过参数重新定义或通过defparam陈述)。

基于 IEEE 1364-2005(第 4.10.2 章):

Verilog HDL local parameters are identical to parameters except that they cannot directly be modified by defparam statements or module instance parameter value assignments

此外,在 SystemVerilog 中(IEEE 1800-2012(第 6.20.4 章)):

与非局部参数不同,局部参数可以在生成块、包、类体或编译单元范围中声明。

本地参数可以在模块的parameter_port_list中声明。

如果您想了解有关此主题的更多信息,我会向您推荐 Clifford E. Cummings 论文"用于创建参数化模型的新 Verilog-2001 技术(或打倒"define 和 defparam 的死亡!")"。

来自: stackoverflow.com