【问题标题】:Compile error in define macro when using $bits使用 $bits 时定义宏中的编译错误
【发布时间】:2021-10-15 20:49:39
【问题描述】:

在编写以下宏时,我收到编译错误:

`define TEST1(out, in, sel)      \ \
  integer i;                      \ \
  always_comb begin                  \ \
    out = $bits(1'b0);               \\

    for(i=0; i<=$bits(sel); i=i+1)   \\
        out = out | ({$bits(out){sel[i]}} & in[i]);    \\
    end          ;

错误消息:

near "[": syntax error, unexpected '[', expecting ',' or '}'.

【问题讨论】:

    标签: verilog system-verilog


    【解决方案1】:

    删除空行,每行只使用一个反斜杠。参考 IEEE Std 1800-2017, section 22.5.1 `define:

    如果需要多行来指定文本,则换行 字符前应有反斜杠 (\)。第一个换行符 前面没有反斜杠的字符将结束宏文本。

    `define TEST1(out, in, sel)      \
      integer i;                      \
      always_comb begin                  \
        out = $bits(1'b0);               \
        for(i=0; i<=$bits(sel); i=i+1)   \
            out = out | ({$bits(out){sel[i]}} & in[i]);    \
        end          ;
    

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 2015-09-23
      • 1970-01-01
      • 2015-10-23
      • 2016-02-16
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多