如何在系统Verilog宏中包含逗号","



有些参数包含"quot;逗号,例如一个参数中的num、val、int。

例如,`定义ACTION_DO(num,val,int(

实际上只作为一个自变量通过,有没有办法包括"逗号在代码中,并且不会被编译器单独假设为3参数?

不幸的是,没有好的通用方法来处理宏中包含逗号的单个参数。有几种可能性可能适合也可能不适合您的使用模式:

  1. 带引号的字符串,它们总是被视为单个参数
  2. 在括号或方括号内列出的参数。但在这种情况下,括号和大括号将是参数的一部分:

以下将起作用:


`define PRINT(A) $display A
... 
`PRINT(("a=%b, b=%b, c=%b", a, b, c));

将扩展到$display ("a=%b, b=%b, c=%b", a, b, c)

以下将在编译时失败

`define PRINT(A) $display("a=%b b=%b c=%b", A)
`PRINT((a, b, c));

因为扩展CCD_ 2在语法上是错误的。

最新更新