Ошибка VCS XMRE при непрерывном присвоении некоторого сигнала в условно сгенерированном экземпляре

У меня есть код Verilog, который выглядит примерно так

module top_tb
  genUnit genUnit1;
  spyUnit spyUnit1;
endmodule

module unitX(...)
  logic some_signal;
endmodule

module genUnit
  unitX unit1(….);
  **generate
  if(myparam==2) begin : generate_block_2
    unitX unit2(….);
  end
  endgenerate**
endmodule

module spyUnit
  output logic spy1;
  output logic spy2;
  assign spy1 = genUnit1.unit1.some_signal;
  **generate
  if(myparam==2) begin : assign_spy_2
    assign spy2 = genUnit1.unit2.some_signal;
  end
  endgenerate**
endmodule

Ошибка VCS-[XMRE] Ошибка разрешения межмодульной ссылки с этим кодом при назначении шпиону 2 (назначение шпиона 1 в порядке). spy2 нужно назначать только тогда, когда mypram равно 2, но при синтаксическом анализе значения параметров еще не определены, поэтому оператор assign анализируется независимо от конечного значения параметра. Поскольку существование иерархии зависит от значения параметра, я сталкиваюсь с этой проблемой.

Итак, как мне сделать этот тип зависимого от параметра назначения?


person Scott Miller    schedule 10.07.2013    source источник


Ответы (1)


Операторы Generate добавляют слой к иерархическому имени. Следовательно, top_tb.genUnit1.generate_block_2.unit2.some_signal должен быть путем.

person Greg    schedule 10.07.2013