Jump to content

    
Sign in to follow this  
Kokos

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

Recommended Posts

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

 

делаю так :

 

`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

Share this post


Link to post
Share on other sites
Но модельсим ругается. такое ощущение, что макрос принимает не значение y, а использует как аргумент сам символ y

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

 

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

Share this post


Link to post
Share on other sites
Я правильно понимаю что порт в виде массива можно использовать только в 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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this