Verilog宏复制
我有一个带有宏的sys_defs.vh头文件:Verilog宏复制,verilog,system-verilog,Verilog,System Verilog,我有一个带有宏的sys_defs.vh头文件: `define REG_WIDTH 5 我试着比较一辆同样宽度的巴士,就像这样: input [2:0][`REG_WIDTH-1:0] aregs_in, ... if(aregs_in[i] != {`REG_WIDTH{1}}) //do stuff 但是当我尝试模拟时,我得到以下警告 警告-[CWUC]与未调整大小的常量连接。 串联中使用了未调整大小的常量“1”。无尺码 常量将用作32位常量 基本上,我只是想把它
`define REG_WIDTH 5
我试着比较一辆同样宽度的巴士,就像这样:
input [2:0][`REG_WIDTH-1:0] aregs_in,
...
if(aregs_in[i] != {`REG_WIDTH{1}})
//do stuff
但是当我尝试模拟时,我得到以下警告
警告-[CWUC]与未调整大小的常量连接。
串联中使用了未调整大小的常量“1”。无尺码
常量将用作32位常量
基本上,我只是想把它与111111进行比较,在111111中,一个人的#是宏定义的在Verilog
1
中,它自己推断出一个32位的十进制值为1。您需要为单个位设置1'b1
input [2:0][`REG_WIDTH-1:0] aregs_in,
...
if(aregs_in[i] != {`REG_WIDTH{1'b1}})
//do stuff
在Verilog
1
中,它本身会推断出一个值为1的32位十进制数。您需要为单个位设置1'b1
input [2:0][`REG_WIDTH-1:0] aregs_in,
...
if(aregs_in[i] != {`REG_WIDTH{1'b1}})
//do stuff
在Verilog中,您可以
if(~&aregs_in[i]) //~& is the NAND operator
// do stuff
在SystemVerilog中,这将更具描述性
if(aregs_in[i] != '1) // '1 means 'fill with 1's'
// do stuff
在Verilog中,您可以
if(~&aregs_in[i]) //~& is the NAND operator
// do stuff
在SystemVerilog中,这将更具描述性
if(aregs_in[i] != '1) // '1 means 'fill with 1's'
// do stuff