Verilog [ошибка разрешения кросс-модуля] при расширении определений
Я получаю ошибку разрешения кросс-модуля, когда компилятор расширяет определение следующим образом:
в файле скажем path_defines.vh (где определения):
`define apple aaaa.bbbb.cccc.\pie[0] .dddd.eeee
Я использую символ "\", сопровождаемый хвостовым пробелом, для экранирования символов "[" и "]", как определено в руководстве Verilog 2012 года.
Поэтому, когда компилятор анализирует файл (например, design.vs) с определенным термином, как показано здесь:
`apple.ffff.gggg
и пытается расширить определение, компилятор дает мне:
Ошибка разрешения межмодульного задания.
Обнаружена ошибка при попытке разрешить перекрестную ссылку на модуль.
1 ответ
Если ваш пример похож на приведенный ниже, вам не нужно вводить управляющее имя. Компилятор будет понимать pie[0] как часть имени. []
там все в порядке.
module top;
aaa aaa();
assign aaa.bbb.pie[0].ccc.ddd = 0;
endmodule
module aaa();
bbb bbb();
endmodule
module bbb;
generate
for (i = 0; i < 2; i++) begin: pie
ccc ccc();
end
endgenerate
endmodule // bbb
module ccc;
wire ddd;
endmodule