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

развертывание макросов

Не секрет, что во всех(многих) масштабируемых проектах размеры переменных задаются в виде define-ов,

например

`define size 32
reg [`size-1:0] variable;

как можно этот код превратить в

reg [31:0] variable;

для наглядного представления и проверки. Знаю точно, что в С можно каким-то образом исходный файл преобразовать при помощи компилятора.

А как такое сделать в verilog?

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


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

А как такое сделать в verilog?

Наверное каждый симулятор имеет парсер. Например ключ -E для Icarus Verilog

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


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

Наверное каждый симулятор имеет парсер. Например ключ -E для Icarus Verilog

 

Спсибо, но я хотел бы услышать обо всех возможных вариантах.

А если конкретно, то у меня в распоряжении только modelsim (лицензионный), и мне хотелось бы провернуть такое дело именно в нем. Скорее всего у меня хватит прав скомпилить какую-нибудь бесплатную вещицу, но не уверен.

 

Использовал Verilator с опцией -Е, получил, откровенно говоря, не совсем то, что хотел.

А именно пример:

`define size 32
`define size_range `size-1:0
reg [`size_range] variable;

преобразовался в

reg [32-1:0] variable;

то есть он мне сам предлагает вычислить 32-1, а у меня в макроопределениях много скобочных структур и арифметики, и мне не хочется все самому вычислять

Изменено пользователем griha-leha

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


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

мне не хочется все самому вычислять

Мне кажется, вы озадачились не очень важным вопросом. Думаю, со временем у вас пропадет желание видеть вместо понятных слов ничего не говорящие числа.

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


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

то есть он мне сам предлагает вычислить 32-1, а у меня в макроопределениях много скобочных структур и арифметики, и мне не хочется все самому вычислять
А придется. Вычислениями занимается не препроцессор, а собственно сам компилятор Verilog'а. И скорее всего у него эти вычисления происходят уже после преобразования .v файла во внутренние структуры, т.ч. он вам не сможет вывести текст с вычисленными константами, даже если вам этого и очень хочется :smile3046:

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


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

А придется. Вычислениями занимается не препроцессор, а собственно сам компилятор Verilog'а. И скорее всего у него эти вычисления происходят уже после преобразования .v файла во внутренние структуры, т.ч. он вам не сможет вывести текст с вычисленными константами, даже если вам этого и очень хочется :smile3046:

 

Спасибо всем за ответы. Вопрос считаю исчерпанным

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


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

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...