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

Пользовательский препроцессор для Verilog'а

Коллеги, а никто не знает какого-нибудь кастомного препроцессора, к-рый бы переводил несинтезируемые конструкции в синтезируемые?

Поясню мысль. Например, вам просто хочется сгенерировать меандр длиной N импульсов, и частотой в 5 раз меньше тактовой. Какие варианты?

Первый: написать руками на 2х счётчиках - не бог весть как сложно, но, блин, сколько ж можно.

Второй: использовать готовый модуль, написанный на стороне, или заложенный, например, в Квартусовские шаблоны. Свои плюсы и минусы.

А третий - просто написать  repeat (N)  #5 a = !a; - но это не синтезируемая конструкция. Но, в обычном программинге сплошь и рядом сейчас используются пользовательские конструкции. Перед тем, как скормить код компилятору, код прогоняется через "кастомный" препроцессор, к-рый эти конструкции заменяет на понятное компилятору. В нашем случае, заменить это repeat на некий модуль - элементарно. Вот, ну наверняка же есть уже что-то (полу)готовое?

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

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


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

2 minutes ago, des00 said:

Leka делал подобное)

Спасибо, что хоть кто-то ответил :) Leka, я так понимаю, один из форумчан?

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


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

Приветствую!

2 hours ago, Kluwer said:

Коллеги, а никто не знает какого-нибудь кастомного препроцессора, к-рый бы переводил несинтезируемые конструкции в синтезируемые?

...  Вот, ну наверняка же есть уже что-то (полу)готовое?

IMHO тупиковый путь - не синтезируемые конструкции на то и НЕ синтезируемые что нет однозначного способа отобразить эту конструкцию в железо. Поэтому препроцессор будет всегда требовать специфичного синтаксиса/ограничений для использования этих конструкций.  В чем тогда будет выгода?

Удачи! Rob. 

 

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


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

в свое время был очень доволен verilog-mode - это плагин для emacs писанный на лиспе. имхо, функции полезнее приведенного примера.

https://www.veripool.org/projects/verilog-mode/wiki/Examples

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

для VHDL есть такая хрень в GRLIBe - там всякие xconfig и т.п. в стиле олдскульных линуксных конфигураторов

но стоит ли ...

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


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

1 hour ago, RobFPGA said:

Приветствую!

IMHO тупиковый путь - не синтезируемые конструкции на то и НЕ синтезируемые что нет однозначного способа отобразить эту конструкцию в железо. Поэтому препроцессор будет всегда требовать специфичного синтаксиса/ограничений для использования этих конструкций.  В чем тогда будет выгода?

Удачи! Rob. 

 

Коллега, я извиняюсь, но мой пост был не с целью обсудить "выгоду". Я просто написал, что существует такой способ, точка. И хотелось бы понять есть ли какие-то инструменты для реализации данного способа. Если у вас есть что на примете - буду благодарен, а обсуждать "да зачем оно нужно..." я не намерен.

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


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

Приветствую!

35 minutes ago, Kluwer said:

Коллега, я извиняюсь, но мой пост был не с целью обсудить "выгоду". Я просто написал, что существует такой способ, точка. И хотелось бы понять есть ли какие-то инструменты для реализации данного способа. Если у вас есть что на примете - буду благодарен, а обсуждать "да зачем оно нужно..." я не намерен.

Да на здоровье. Я как раз вам и ответил что НЕТ инструмента для конверсии не синтезируемых стандартных конструкций языка в синтезируемые. Окромя  написания собственного полноценного синтезатора со всеми вытекающими. 

 

Ну а для пре-процессинга собственных макросов можно и на `define много чего наваять.

 

Удачи! Rob.

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


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

17 часов назад, yes сказал:

да и питон есть

Не препроцессор, но генератор кода: COG

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


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

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

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

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

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

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

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

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

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

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