Jump to content

    

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

Привет!

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

package pck

`define PI 3.14
...

endpackage

 

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

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

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

 

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

 

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

Edited by Fynjisx

Share this post


Link to post
Share on other sites

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

parameter PI = 3.14;

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

 

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

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

 

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

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

Share this post


Link to post
Share on other sites
Дальше попытался использовать макрос в выражении как сразу ModelSim стал выдавать ошибку что он не определен.

 

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

 

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this