localparam和parameter区别
3721
localparam和parameter的区别有:1、使用范围不同;2、修改方式不同;3、是否可以参数传递;4、是否可以进行重定义;5、声明时关键词不同。其中,使用范围不同指的是parameter可用于顶层模块、底层模块和并行例化的模块,而localparam仅限于本module内部使用。
1、使用范围不同
localparam:仅限于本module内部使用,并行例化的模块不可调用,相当于局部常量;
parameter:用于顶层模块与底层模块之间的参数传递,并行例化的模块也可以使用,相当于全局常量。
2、修改方式不同
localparam:localpram不能直接被修改,需要通过其它常量进行间接的修改:
- localparam指定的参数不能通过defparam进行修改;
- localparam指定的参数不能通过模块例化进行修改;
- localparam指定的参数可通过parameter赋值进行间接的修改,此时可利用parameter的修改方式实现localparam的修改。
parameter:parameter可以在elaboration过程中通过defparam进行修改或者通过命令行进行修改;
3、是否可以参数传递
localparam:本module内有效的定义,可用于参数传递;在模块内部定义时无法进行参数传递。
parameter:module内有效的定义,不可用于参数传递;localparamcannot be used within the module port parameter list.一般情况下,状态机的参数都是用localparam的。
4、是否可以进行重定义
localparam:localparam是局部参数,但它不能被重定义,也就是说在实例化的时候不能通过层次引用进行重定义,只能通过源代码来改变。
parameter:可以通过#(参数)来进行重新定义。
5、声明时关键词不同
localparam:声明时关键词为localparam。
parameter:声明时关键词为parameter。
拓展阅读
parameter与localparam的相同点
- 二者都在specify块外,module中声明;
- 二者都不能在specify块中使用;
- 二者都不能指定参数的取值范围。