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

Макросы в пакетах на SystemVerilog

Привет!

Пишу на SystemVerilog. Написал пакет внутри которого определил макрос PI:

package pck

`define PI 3.14
...

endpackage

 

в модуле располагающемся в другом файле, попытался импортировать пакет:

module any ()
import pck::*;
...
endmodule

Дальше попытался использовать макрос в выражении как сразу ModelSim стал выдавать ошибку что он не определен.

 

Вообще павомерно ли, обращаться к макросам обьявленным в пакетах в модулях импортирующих этот пакет???

 

Заранее спасибо

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

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


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

Обращаться можно, но в данном случае Вам нужно использовать в пакете

parameter PI = 3.14;

вместо макроса.

 

Макросы - это тупая автоподстановка текста (как "поиск-замена" в тектовом редакторе), она ортогональна иерархии типов и объектов языка.

Макрос может быть объявлен где угодно (внутри или вне package/module/etc) и применён где угодно.

 

Чтобы сработал макрос, нужно написать `include "<первый_файл.sv>" перед module,

но в данном случае это явно не то, что Вы хотите.

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


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

Дальше попытался использовать макрос в выражении как сразу ModelSim стал выдавать ошибку что он не определен.

 

Вообще павомерно ли, обращаться к макросам обьявленным в пакетах в модулях импортирующих этот пакет???

 

Заранее спасибо

попробуйте конструкцию let, если нужно что-то большее чем определение константы

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


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

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

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

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

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

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

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

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

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

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