цикл Verilog с макросом определения

Я работаю над своими первыми кодами Verilog: я определил некоторые макросы определения ADDR1,ADDR2, `ADDR3 ... количество этих макросов определения отличается для каждого проекта. В моем коде я написал цикл как:

for (i=0; i<num_of_macros;i++) begin
   `ADDR1 = 0;
   `ADDR2 = 0;
   ... (according to the macros number)
end

Сейчас я пытаюсь написать общий цикл. Мой вопрос: есть ли возможность написать макросы, зависящие от i? Например, ADDR%i или что-то в этом роде? Спасибо и хорошего дня Джульетта


person Juliette    schedule 14.04.2016    source источник


Ответы (1)


Нет, вы не можете сохранить значение времени выполнения макроса, но для ваших фиксированных требований мы можем сделать это, как показано ниже,

`define ADDR(i) i

module tb;

integer j;
initial
begin
  for (j=0;j<10;j=j+1)
  begin
    $display("%d", `ADDR(j));
  end
end
endmodule


Result:

# Loading work.tb(fast)
# run -all
#           0
#           1
#           2
#           3
#           4
#           5
#           6
#           7
#           8
#           9
#  quit -f

Таким образом, вы можете использовать ADDR(1) вместо ADDR1.

person Prakash Darji    schedule 14.04.2016