我正在研究一个具有不同编译原语
的环境,例如COMP_ALL_MODULES
- 用于编译所有模块COMP_SELECT_MODULES
- 用于编译一组选定的模块
因此,我面临以下错误COMP_SELECT_MODULES而不是COMP_ALL_MODULES
尝试解析跨模块引用时发现错误。 "BLK_B">
对于以下源代码
assign clock = top.dut.BLK_B.clk;
碰巧COMP_SELECT_MODULES没有编译BLK_B从而导致错误。
与在 C 编程中一样,我尝试了如下所示的 ifdef 检查。但这甚至为COMP_ALL_MODULES编制了时钟分配。
`ifdef top.dut.BLK_B
assign clock = top.dut.BLK_B.clk;
`else
assign clock = 1'b0;
`endif
你们能否建议如何检查未定义的跨模块引用,如上所示?
你当然想要
`ifndef COMP_SELECT_MODULES
assign clock = top.dut.BLK_B.clk;
`else
assign clock = 1'b0;
`endif
'ifdef 语句测试是否已定义特定符号(例如 'COMP_ALL_MODULES 或 'COMP_SELECT_MODULES(,而不是层次结构中的特定位置是否存在。