使用预编译器重命名 verilog 模块

verilog module renaming using precompiler

我想使用 `define 指令命名模块

如果我使用像 :

这样的宏似乎可以工作
`define module_rename(NAME,TAG) ``NAME``TAG

module `module_rename(foo,_A) (...);

但如果我执行以下操作,它会失败(在 quartus 中):

`define NAME foo
`define TAG _A

module `NAME`TAG (...);

语法错误 near_A 缺少";"

知道哪里出了问题吗?

谢谢你的帮助

SystemVerilog 标记粘贴运算符 `` 只允许在 `define 文本宏的主体中,这是唯一可以将文本连接在一起以形成单个标识符的地方。你写的第二个例子被认为是非法语法。

module foo _A;