Jump to content

    
Sign in to follow this  
Kluwer

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

Recommended Posts

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

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

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

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

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

Edited by Kluwer

Share this post


Link to post
Share on other sites

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

2 hours ago, Kluwer said:

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

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

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

Удачи! Rob. 

 

Share this post


Link to post
Share on other sites

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

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

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

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

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

Share this post


Link to post
Share on other sites
1 hour ago, RobFPGA said:

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

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

Удачи! Rob. 

 

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

Share this post


Link to post
Share on other sites

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

35 minutes ago, Kluwer said:

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

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

 

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

 

Удачи! Rob.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this