描述
一般描述:
当先前定义的宏再次被提交给XST Verilog编译器时,会发生以下警告:
“警告:HDL编译器:38 <文件>行XX宏”<名称>“重新定义”。
当包含一组宏的文件多次使用“包含语句”读取时,通常会发生这种情况。
解决方案
编译器提供这些消息以确保您知道宏重新声明,如果您不希望发生这种情况。
编译器很难确定新的声明是否是新的或冗余的,因为宏定义可以来自不同的地方,或者由其他声明或变量组成。为了安全起见,当执行重新声明时,XST将始终发出警告。
为了避免这些冗余消息,使用条件编译控件使编译器意识到这些宏已经被定义。
例如,假设要声明一个常量宽度:
“定义宽度32”
如果在使用“包含语句”的多个Verilog模块调用的文件中引用此文件,则将在每个实例之外报告上述警告。可以使用条件编译来指示编译器确定宏是否已被预先定义:
“IFNDEF宽度”
“定义宽度32”
足弓
您可以在“IFNDEF”和“EnEnF语句”中放置尽可能多的宏,并创建“IFNDEF语句”来引用所包含的宏中的任何一个。
没有回复内容