Quartus II综合Verilog dmem模块为何a[2]~a[7]无未驱动警告
警告差异原因说明
根本逻辑
你代码中定义的RAM总共有64个存储单元(reg [31: 0] RAM [63: 0]),仅需要6位地址即可完成全部单元的寻址,a[2]~a[7]恰好是实际参与寻址的有效位,因此不会触发未使用警告。
详细拆解
- 64个存储单元对应$2^6$的寻址空间,仅需要6位有效地址即可覆盖全部单元
- 代码做了字对齐处理,读写都使用
a[31:2]作为寻址索引,直接抛弃了a[0]、a[1],这两位没有参与任何逻辑运算,因此触发未使用警告 - 寻址索引
a[31:2]的宽度为30位,但只有最低的6位(即a[2]到a[7])会实际用来选择RAM单元,剩余的a[8]~a[31]对读写结果没有任何影响,因此这部分引脚都会触发未使用警告 - 额外说明:你当前的写逻辑存在语法逻辑缺陷,
RAM [a [31: 2]] [25] <= wd;是将32位的输入wd整体赋值给RAM单元的第25位,RAM单元的其余31位没有对应的写入逻辑,读端口rd的其余31位也会被综合工具优化,会产生额外的优化提示,但和你当前询问的地址引脚警告无关。
内容的提问来源于stack exchange,提问作者sunao
相关产品推荐
相关产品推荐

