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
Другие вопросы по тегам