Я использовал ModelSim для моделирования в эти дни, и у меня возникла проблема, а именно:
И это был кусок кода Verilog, подобный этому:
if (cnt == `END_CNT)
...
reg [7:0] cnt;
always @(posedge clk)
if (en)
cnt <= cnt +1;
...
что означает, что я определяю reg прямо до блока назначения, и я могу использовать переменную до определения. Это мой стиль кодирования, и он отлично работает в Quartus.
Но когда я компилировал файл в ModelSim, появлялась ошибка "variables undefined", и мне приходилось перемещать строку определения над оператором if
:
reg [7:0] cnt;
...
if (cnt == `END_CNT)
...
always @(posedge clk)
if (en)
cnt <= cnt +1;
...
У меня много такого кода, и это меня очень беспокоит. Как новичок в ModelSim, мне интересно, есть ли настройка компилятора (я не могу найти) для решения моей проблемы?