我正在用 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 的死亡!")"。