2016-04-09 181 views
0

我看了直通的LRM,还没有找到一个明确的答案...如何在下面的解释:的SystemVerilog:比较使用的未分级与unbased文字

logic [7:0] data; 
logic  sig_out; 

assign sig_out = (data == '1); 

将它解释为:

assign sig_out = (data == 8'hFF); 

请问sim &综合解释这个不同吗?

THX

PB &Ĵ

+0

我不知道这个问题的答案,但我正在努力研究如何将sig_out =(data =='1)'解释为与sig_out =(data == 8'hFF)'不同。你有什么想法? –

+0

合成它并找出答案。 – toolic

回答

2

5.7.1整数1800至2012年LRM的立即数解释'1具有基于它被使用的上下文中的值的宽度。在自我确定的环境中使用时,它的宽度为1位。表11-21解释了关系运算符的操作数在上下文大小为最大操作数

所以'1在你的上下文中是8'hff。

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 
0

“1意味着所有的,因此,如果数据是8比特宽的数据然后= 8'hff。 如果您打算按上下文确定的长度方式编写值8'h01,请使用'b1,在这种情况下将解释为8'h01。