我看了直通的LRM,还没有找到一个明确的答案...如何在下面的解释:的SystemVerilog:比较使用的未分级与unbased文字
logic [7:0] data;
logic sig_out;
assign sig_out = (data == '1);
将它解释为:
assign sig_out = (data == 8'hFF);
请问sim &综合解释这个不同吗?
THX
PB &Ĵ
我看了直通的LRM,还没有找到一个明确的答案...如何在下面的解释:的SystemVerilog:比较使用的未分级与unbased文字
logic [7:0] data;
logic sig_out;
assign sig_out = (data == '1);
将它解释为:
assign sig_out = (data == 8'hFF);
请问sim &综合解释这个不同吗?
THX
PB &Ĵ
5.7.1整数1800至2012年LRM的立即数解释'1
具有基于它被使用的上下文中的值的宽度。在自我确定的环境中使用时,它的宽度为1位。表11-21解释了关系运算符的操作数在上下文大小为最大操作数
所以'1在你的上下文中是8'hff。
它作为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
“1意味着所有的,因此,如果数据是8比特宽的数据然后= 8'hff。 如果您打算按上下文确定的长度方式编写值8'h01,请使用'b1,在这种情况下将解释为8'h01。
我不知道这个问题的答案,但我正在努力研究如何将sig_out =(data =='1)'解释为与sig_out =(data == 8'hFF)'不同。你有什么想法? –
合成它并找出答案。 – toolic