У меня есть код 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 анализируется независимо от конечного значения параметра. Поскольку существование иерархии зависит от значения параметра, я сталкиваюсь с этой проблемой.
Итак, как мне сделать этот тип зависимого от параметра назначения?