Fynjisx 0 25 мая, 2013 Опубликовано 25 мая, 2013 (изменено) · Жалоба Привет! Пишу на SystemVerilog. Написал пакет внутри которого определил макрос PI: package pck `define PI 3.14 ... endpackage в модуле располагающемся в другом файле, попытался импортировать пакет: module any () import pck::*; ... endmodule Дальше попытался использовать макрос в выражении как сразу ModelSim стал выдавать ошибку что он не определен. Вообще павомерно ли, обращаться к макросам обьявленным в пакетах в модулях импортирующих этот пакет??? Заранее спасибо Изменено 25 мая, 2013 пользователем Fynjisx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doc17 0 26 мая, 2013 Опубликовано 26 мая, 2013 · Жалоба Обращаться можно, но в данном случае Вам нужно использовать в пакете parameter PI = 3.14; вместо макроса. Макросы - это тупая автоподстановка текста (как "поиск-замена" в тектовом редакторе), она ортогональна иерархии типов и объектов языка. Макрос может быть объявлен где угодно (внутри или вне package/module/etc) и применён где угодно. Чтобы сработал макрос, нужно написать `include "<первый_файл.sv>" перед module, но в данном случае это явно не то, что Вы хотите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaPpuCcino 0 27 июня, 2013 Опубликовано 27 июня, 2013 · Жалоба Дальше попытался использовать макрос в выражении как сразу ModelSim стал выдавать ошибку что он не определен. Вообще павомерно ли, обращаться к макросам обьявленным в пакетах в модулях импортирующих этот пакет??? Заранее спасибо попробуйте конструкцию let, если нужно что-то большее чем определение константы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться