localparam和parameter区别

Z, ZLW 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块中使用;
  • 二者都不能指定参数的取值范围。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部