79,Verilog-2005标准篇:defparam 声明规则

使用defparam语句时,可以使用参数的层级结构名称在整个设计的任何模块实例中更改参数值。但是,generate生成块实例或实例数组内部或其下层级结构中的defparam语句不得更改该层级结构之外的参数值。

generate生成块的每个实例都被视为一个独立的层级结构作用域。因此,这条规则意味着,生成块中的defparam语句不能针对同一生成块的另一个实例中的参数,即使另一个实例是由同一个generate循环构造创建的。例如,以下代码是不允许的:

同样,数组实例中一个实例的 defparam 语句不得针对数组另一个实例中的参数。

defparam 赋值右侧的表达式应为常量表达式,只涉及数字和参数引用。被引用的参数(在 defparam 右侧)应与defparam 语句在同一模块中声明,如果一个参数有多个defparam,则该参数取源文件中最后一个defparam语句的值。defparam语句尤其适用于将所有的覆盖参数值集中到一个模块中,例子如下:

module  top;
reg  clk;
reg  [0:4] in1;
reg  [0:9] in2;
wire  [0:4] o1;
wire  [0:9] o2;
vdff m1 (o1, in1, clk);
vdff m2 (o2, in2, clk);
endmodule

module  vdff (out, in, clk);
parameter  size = 1, delay = 1;
input  [0:size-1] in;
input  clk;
output  [0:size-1] out;
reg  [0:size-1] out;
always  @( posedge  clk)
   # delay out = in;
endmodule

module  annotate;
defparam
top.m1.size = 5,
top.m1.delay = 10,
top.m2.size = 10,
top.m2.delay = 20;
endmodule

模块 annotate 包含 defparam 语句,用于覆盖顶层模块 top 中实例 m1 和 m2 的size和delay值。top模块和annotate模块都被视为顶层模块。

点赞加关注博主(ID:FPGA小飞)的博文,咱们一起系统学习verilog最终标准IEEE Std 1364-2005吧!

Local、parameter和defparam是在硬件描述语言(HDL)中常用的概念。 Localparam是在模块内部定义的常量,它在编译时被赋值,且其值在整个模块实例化期间保持不变。Localparam通常用于定义模块内部的参数或常量,它的作用范围仅限于模块内部。 Parameter是在模块内部定义的参数,在模块实例化期间可以通过外部赋值进行修改。Parameter可以在实例化时直接修改其值,也可以使用defparam语句在实例化后进行修改。Parameter常用于定义模块的特性、功能或配置参数,它的作用范围也仅限于模块内部。 Defparam是一种用于在实例化后修改参数值的语句。使用defparam语句可以通过模块的路径名来修改参数或局部参数(localparam)的值。Defparam语句通常用于修改已实例化模块的参数值,可以在设计层次结构中的任何位置使用。 总结起来,Localparam是模块内部的常量,Parameter是模块内部的可修改参数,而defparam语句用于在模块实例化后修改参数值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Verilogdefparam localparam parameter 的语法说明,以及ALTDDIO IP应用](https://blog.youkuaiyun.com/sinat_29862967/article/details/80460569)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Verilog学习笔记(二)——parameter与localparam的区别](https://blog.youkuaiyun.com/weixin_39410955/article/details/115432896)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值