Я думаю, что вопрос довольно хорошо подводит итог тому, что я хочу: передать значение переменной в макрос в SystemVerilog.
Например, что я хочу: Скажем, есть 4 сигнала по имени abc_X_def и я хочу их все инициализировать в 0. Итак, без макросов:
abc_0_def = 4'b0000;
abc_1_def = 4'b0000;
abc`define set_value(bit) abc_``bit``_def = 4'b0000
for (int i = 0; i < 4; i++) begin
`set_value(i);
end
def = 4'b0000;
abc_3_def = 4'b0000;
Теперь код, который я написал, имеет проблему:
`define set_value(bit) abc_``bit``_def = 4'b0000
for (int i = 0; i < 4; i++) begin
`set_value(i);
end
Ошибка в том, что он пытается найти сигнал abc_i_def, что явно неверно. Просто интересно, можно ли передать фактическое значение переменной «i» в макрос.