Verilog中`include导入宏定义后调用需加反引号的原因咨询
Verilog 宏定义调用需添加反引号前缀的原因
这是Verilog语言标准明确规定的语法规则,和是否完成include导入操作没有关联,核心原因如下:
- 反引号(
)是Verilog预处理器识别*宏对象*的专属标识 Verilog编译流程会先执行预处理阶段,只有带前缀的标识符才会被预处理器判定为需要替换的宏,没有前缀的PipeA只会被编译器当做普通的线网、变量、参数名处理,不会触发宏替换逻辑。 - 该设计可实现宏命名空间与常规设计元素的隔离
反引号前缀可以完全避免宏定义和设计中已有的同名端口、变量、参数产生命名冲突,你完全可以在同一个设计里同时存在名为PipeA的寄存器和名为`PipeA的宏定义,二者互不干扰。 include仅解决宏定义的可见性问题
执行`include "my_defines.v"操作的本质是把定义文件的全部内容原封不动插入到导入语句所在的位置,只是让预处理器可以检索到`define PipeA 8'hA1这个宏的定义规则,并不会修改宏调用的语法要求。
内容的提问来源于stack exchange,提问作者anonymous
相关产品推荐
相关产品推荐

