systemverilog:使用unsized&基于非基础的文字

时间:2016-04-09 11:07:57

标签: system-verilog literals

我看过LRM,还没有找到明确的答案......以下解释如下:

logic [7:0] data;
logic       sig_out;

assign  sig_out = (data == '1);  

是否会被解释为:

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

做sim&综合解释不同吗?

THX

PB&安培;Ĵ

3 个答案:

答案 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。