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

Почему этот код не работает в systemverilog?

Есть конструктор:

function new (const ref UDDCP_header h, const ref int unsigned d[$], bit v[$], int b, int a);

Так он работает:

int be, aa;
...
be = 100;
aa = 250;
trans_single = new(h[i],d[i],valids_single,be,aa);

А так нет:

trans_single = new(h[i],d[i],valids_single,100,250);

Моделсим при компиле говорит, что "The expression "100" is illegal for use with ref argument "b"".

Почему?

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


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

1 hour ago, Tsegorah said:

Есть конструктор:
...

Так он работает:
...

А так нет:
...

Почему?

Укажите явно направление для аргументов b, a. Что-то типа:

function new (const ref UDDCP_header h, const ref int unsigned d[$], bit v[$], input int b, input int a);

В противном случае, modelsim рассматривает аргументы как указатели (ref).

ЗЫ. Ответ на вопрос "почему"- описано в стандарте:

Quote

Function declarations default to the formal direction input if no direction has been specified. Once a direction
is given, subsequent formals default to the same direction. In the following example, the formal arguments a
and b default to inputs, and u and v are both outputs:

function logic [15:0] myfunc3(int a, int b, output logic [15:0] u, v);
...
endfunction

 

Изменено пользователем nice_vladi

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


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

15 часов назад, Tsegorah сказал:

Моделсим при компиле говорит, что "The expression "100" is illegal for use with ref argument "b"".

Почему?

расположите переменные так чтобы ref был последним

function new (bit v[$], int b, int a,const ref UDDCP_header h, const ref int unsigned d[$]);

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


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

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

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

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

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

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

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

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

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

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