Verilog仿真出现端口大小不匹配警告,1位flag为何提示位宽为8?
警告原因
你出现该错误的核心原因是Verilog的端口位宽继承语法导致设计模块的flag端口实际位宽为8位,和你测试平台传入的1位flag位宽不匹配。
Verilog语法规定:同类型端口声明时,前面声明的位宽会作用于后续所有未显式指定位宽的同类型端口。你在设计模块中写的端口声明input [7:0]a,flag中,[7:0]的位宽同时作用于a和flag两个端口,所以你设计中的flag端口实际是8位输入,而非你预期的1位,就触发了Modelsim的位宽不匹配警告。
修复方法
修改设计模块的端口声明,单独为flag指定位宽即可,推荐使用可读性更高的分行写法:
`timescale 1ns/1ns module circuitIVEightBitAssign( input [7:0] a, input flag, output [7:0] b ); assign #(143) b = flag ? ~a : (~(a) + 1'b1) ; endmodule
如果要保留单行写法,需要单独声明flag的类型或位宽:
input [7:0]a,input flag,output [7:0]b
修复后重新编译仿真,警告就会消失,电路逻辑也会正常运行。
内容的提问来源于stack exchange,提问作者Ali Eftekhari
相关产品推荐
相关产品推荐

