2013-07-10 1 views
1

у меня есть некоторый Verilog код, который выглядит примерно такVCS XMRE ошибка непрерывного присвоения из некоторого сигнала в условно генерируемой, например

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 error- [XMRE] Кросс-модуль ошибки опорного разрешения с этим кодом на назначение spy2 (назначение spy1 в порядке). spy2 нужно назначить только тогда, когда mypram равно 2, но когда значения параметров синтаксического анализа еще не определены, так что оператор присваивания анализируется независимо от конечного значения параметра. Поскольку существование иерархии зависит от значения параметра, я сталкиваюсь с этой проблемой.

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

ответ

1

Сгенерировать операторы добавить слой к иерархическому имени. Поэтому top_tb.genUnit1.generate_block_2.unit2.some_signal должен быть дорогой.

Смежные вопросы