我看过LRM,还没有找到明确的答案......以下解释如下:
logic [7:0] data;
logic sig_out;
assign sig_out = (data == '1);
是否会被解释为:
assign sig_out = (data == 8'hFF);
做sim&综合解释不同吗?
THX
PB&安培;Ĵ
答案 0 :(得分:3)
5.7.1 1800-2012 LRM的整数字面常量说明'1
具有基于其使用的上下文的值的宽度。在自定义上下文中使用它时,它的宽度为1位。表11-21解释了上下文中关系运算符的操作数,其大小与最大操作数
因此,在你的背景下,1' hff。
答案 1 :(得分:0)
它的效果为8'hff。
考虑下面的代码,用它的输出 -
module top();
logic [7:0] data;
logic sig_out;
assign sig_out = (data == '1);
initial
begin
data = 'h01;
#1 $display("sig_out - %0h", sig_out);
data = 'h0f;
#1 $display("sig_out - %0h", sig_out);
data = 'hff;
#1 $display("sig_out - %0h", sig_out);
end
endmodule
输出 -
sig_out - 0
sig_out - 0
sig_out - 1
答案 2 :(得分:0)
'1表示全1,所以如果数据是8位宽,则数据= 8'hff。 如果您打算以上下文确定的长度方式写入值8'h01,请使用'b1,在这种情况下将被解释为8'h01。