Перейти к содержанию
    

использование genvar как аргумента в макросе. verilog.

Добрый день! Возможно ли сделать то, о чем я написал выше?

 

делаю так :

 

`define in(arg)  signal_in_``arg
module top(
.
.
.
input signal_in_0,
.
);

.
.
.
genvar y;
generate 
for (y=0;y<=2;y=y+1)
begin : bit

module module_inst (
.in(`in(y)),
.
.
.
);


end
endgenerate
.
.
.
endmodule

 

Но модельсим ругается. такое ощущение, что макрос принимает не значение y, а использует как аргумент сам символ y

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но модельсим ругается. такое ощущение, что макрос принимает не значение y, а использует как аргумент сам символ y

Так и есть, поскольку макроопределение подставляется перед компиляцией, а generate выполняется во время линковки (elaboration)

 

В вашем случае можно порт объявить в виде массива, разрядность которого определяется через список параметров модуля, а в generate обращаться к соответствующему элементу массива

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я правильно понимаю что порт в виде массива можно использовать только в systemverilog?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я правильно понимаю что порт в виде массива можно использовать только в systemverilog?

Да.

В verilog двумерные массивы в портах к сожалению не поддерживаются.

 

Нужно писать что-то типа:

input[pWORDS_CNT*pWORD_LENGTH-1:0] arr;

genvar geni;

for(geni=0; geni<pWORDS_CNT; ++geni) begin
  wire[pWORD_LENGTH-1:0] my_word;
  assign my_word = arr[geni*pWORD_LENGTH+pWORD_LENGTH-1:geni*pWORD_LENGTH];
end

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...