реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Парсер языка Verilog
Fitc
сообщение May 28 2015, 11:06
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 21-10-11
Пользователь №: 67 894



Добрый день,
Кто-нибудь встречал парсер языка verilog (в частности verilog-netlist)?
Желательно open-source на Си/Си++
Go to the top of the page
 
+Quote Post
dvladim
сообщение May 29 2015, 15:58
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Посмотрите открытые проекты.
Например Icarus Verilog, Verilator, Odin II, Verilog-to-Routing (VTR), ABC (университет беркли занимается).
У всех есть чтение из верилог файлов, соответственно и парсер должен быть.
Go to the top of the page
 
+Quote Post
Fitc
сообщение May 29 2015, 18:02
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 21-10-11
Пользователь №: 67 894



Цитата(dvladim @ May 29 2015, 18:58) *
Посмотрите открытые проекты.
Например Icarus Verilog, Verilator, Odin II, Verilog-to-Routing (VTR), ABC (университет беркли занимается).
У всех есть чтение из верилог файлов, соответственно и парсер должен быть.

Спасибо, за ответ.
Да, я тоже об этом думал. В частности смотрел в сторону Verilator, но судя по комментариям у них на форуме, чтобы извлечь парсер из симулятора и сделать его удобным для работы нужно "попотеть". Этот вариант я не отрицаю, но может есть уже готовые парсеры на си/си++?

Сообщение отредактировал Fitc - May 29 2015, 18:05
Go to the top of the page
 
+Quote Post
krux
сообщение May 29 2015, 18:12
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



распарсить верилог - относительно несложно.
вопрос в другом - какова конечная цель этого процесса.
вы ведь так и не указали её.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Fitc
сообщение May 29 2015, 18:23
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 21-10-11
Пользователь №: 67 894



Цитата(krux @ May 29 2015, 21:12) *
распарсить верилог - относительно несложно.
вопрос в другом - какова конечная цель этого процесса.
вы ведь так и не указали её.

Зачем изобретать велосипед?
Конечная цель - возможность менять/генерировать код.

Кстати, я в стандарте verilog не нашёл описания подмножества netlist-конструкций языка.
Кто-нибудь знает какой-нибудь документ, который регламентирует, что должно быть в netlist?
Go to the top of the page
 
+Quote Post
krux
сообщение May 29 2015, 18:26
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



т.е. вам нужно неким образом обрабатывать синтезируемое подмножество конструкций verilog-а
верно?


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Fitc
сообщение May 29 2015, 18:43
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 21-10-11
Пользователь №: 67 894



Цитата(krux @ May 29 2015, 21:26) *
т.е. вам нужно неким образом обрабатывать синтезируемое подмножество конструкций verilog-а
верно?

нет, что должно быть после синтеза: verilog-netlist
Go to the top of the page
 
+Quote Post
krux
сообщение May 29 2015, 18:53
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



то, что после синтеза, обычно называют gate-level netlist.
часто используют verilog-perl
но посмотрите до кучи
https://github.com/cliffordwolf/yosys


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Fitc
сообщение May 29 2015, 21:00
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 21-10-11
Пользователь №: 67 894



Цитата(krux @ May 29 2015, 21:53) *
то, что после синтеза, обычно называют gate-level netlist.
часто используют verilog-perl
но посмотрите до кучи
https://github.com/cliffordwolf/yosys

Я кстати слышал про yosys (используется в edaplayground.com), правда не знаю проще ли будет из него вытащить парсер, чем из verilator.

Есть ли в каких-нибудь стандартах описание gate-level netlist на яызке verilog? Что примечательно, на edif стандарт есть.
Go to the top of the page
 
+Quote Post
Shivers
сообщение May 31 2015, 07:49
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Цитата(Fitc @ May 30 2015, 00:00) *
Есть ли в каких-нибудь стандартах описание gate-level netlist на яызке verilog? Что примечательно, на edif стандарт есть.

А вы видели своими глазами гейт-нетлист?
Трудно придумать что то проще.
Но формально, это верилог, поэтому и описывается стандартом верилог.

Если хотите сделать что то свое, я бы посоветовал почитать описание классов verilog-perl. Там очень доходчиво все обясняется - что есть и для чего использутся. Учитывая популярность (люди реально это используют) verilog-perl, если сможете повторить все их классы - точно не прогадаете.

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

p.s. более того, я уже поднимал этот вопрос на форуме. Помнится, SM присоветовал обратить внимание на ruby-gem.
Нашел эту тему: http://electronix.ru/forum/index.php?showtopic=126074
Go to the top of the page
 
+Quote Post
Fitc
сообщение May 31 2015, 13:45
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 21-10-11
Пользователь №: 67 894



Цитата(Shivers @ May 31 2015, 10:49) *
А вы видели своими глазами гейт-нетлист?
Трудно придумать что то проще.
Но формально, это верилог, поэтому и описывается стандартом верилог.


видел, но хотел бы знать формальные требования.
хотелось бы видеть что-то типа стандарта IEEE Std 1364.1™-2002, где прописано синтезируемое подмножество verilog.
Иначе получается, что хочу, то пишу в netlist.

Цитата(Shivers @ May 31 2015, 10:49) *
Если хотите сделать что то свое, я бы посоветовал почитать описание классов verilog-perl. Там очень доходчиво все обясняется - что есть и для чего использутся. Учитывая популярность (люди реально это используют) verilog-perl, если сможете повторить все их классы - точно не прогадаете.

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

p.s. более того, я уже поднимал этот вопрос на форуме. Помнится, SM присоветовал обратить внимание на ruby-gem.
Нашел эту тему: http://electronix.ru/forum/index.php?showtopic=126074

ruby жеж тоже интерпретируемый язык?
К тому же нет желания изучать для себя новые языки.
Пока Verilator более интересен тем, что написан на С++ и что поддерживает systemverilog, т.е. есть куда расти в случае чего.
Go to the top of the page
 
+Quote Post
Shivers
сообщение May 31 2015, 20:10
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Цитата(Fitc @ May 31 2015, 16:45) *
Пока Verilator более интересен тем, что написан на С++ и что поддерживает systemverilog, т.е. есть куда расти в случае чего.

Ваш интерес стандартом показывает, что с нетлистом вы толком не работали. Тогда зачем это все, какова цель? Что хотитет получить в итоге?

Гейт-нетлист, это исключительно иерархический верилог, содержащий обявление проводов и подключение ими модулей. Есть конструкции ассайн (в т.ч. на 1 и 0). И все, больше ничего нет, поскольку нижний уровень - несинтезируемые модели элементов, т.е. библиотека. Даже инверсий нет. Еще раз - почитайте описание классов Verilog-perl, сразу станет ясно, с чем имеют дело при парсинге нетлиста. Отдельный стандарт вы не найдете, имхо
Go to the top of the page
 
+Quote Post
Fitc
сообщение Jun 1 2015, 17:50
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 21-10-11
Пользователь №: 67 894



Цитата(Shivers @ May 31 2015, 23:10) *
Ваш интерес стандартом показывает, что с нетлистом вы толком не работали. Тогда зачем это все, какова цель? Что хотитет получить в итоге?

Гейт-нетлист, это исключительно иерархический верилог, содержащий обявление проводов и подключение ими модулей. Есть конструкции ассайн (в т.ч. на 1 и 0). И все, больше ничего нет, поскольку нижний уровень - несинтезируемые модели элементов, т.е. библиотека. Даже инверсий нет. Еще раз - почитайте описание классов Verilog-perl, сразу станет ясно, с чем имеют дело при парсинге нетлиста. Отдельный стандарт вы не найдете, имхо

с нетлистом, действительно особо не работал. Хотя и был небольшой опыт разбора verilog, используя индусскую библиотеку на java (фиговая).
Вот Вы говорите, что нет инверсий, есть провода и подключение ими модулей - это мне понятно, так как всё отображается на экземпляры селлов.
А почему установка в 1 и 0 делается ассайнами, а не селлами?
Ещё некоторые синтез-щие компиляторы вставляют перед селлами атрибуты, например, yosys вставляет имя исходного файла и номер строки в этом файле, которому соответствует селл.
Т.е. парсер возможно должен уметь обрабатывать атрибуты.

А вы не собирали базу селлов производителей?
В каком формате они обычно хранятся?
Взять например, altera - у них есть библиотека симуляции селлов на верилог и других HDL. Извлекать оттуда описание селлов неудобно, а откуда еще можно выдрать эти описания я не нашел.

Сообщение отредактировал Fitc - Jun 1 2015, 17:51
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 1 2015, 18:15
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Дико любопытно, а зачем это все надо? Не слишком ли фундоментально подходите?
Причина редактирования: Нарушение правил форума 2.1б (с) модератор
Go to the top of the page
 
+Quote Post
krux
сообщение Jun 1 2015, 18:21
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



Цитата(Fitc @ Jun 1 2015, 20:50) *
А почему установка в 1 и 0 делается ассайнами, а не селлами?

присвоения - имеют физический смысл в виде соединения двух проводников при помощи транзистора.
в случае 0 или 1 это тоже самое - соединение нужного проводника с проводником VCC или с проводником GND - также при помощи транзистора.

Цитата
синтезящие компиляторы вставляют перед селлами атрибуты

у ячейки могут быть различные конфигурации, которые легко, кратко и ясно описываются одним аттрибутом с человекочитаемым именем, но "в железе" выбираются соединением десятка, сотни а то и двух сотен проводников с выбором 0-1 по каждому.

Цитата
базу селлов производителей

если вы про ту что для синтеза - то это у всех производителей считается закрытой информацией. В абстрактном виде - да, вам какую-то условную блок-схему покажут, но в реальности у какого-нибудь LUT от ПЛИС есть не просто 4 входа, а ещё два десятка конфигурационных соединений, программирующих этот LUT.
для проведения симуляции они не нужны, и пользователю ПЛИС про них знать вообще не надо. А вот для расчета таймингов во время Place & Route - нужны, ну и для получения окончательной прошивки конечно же.

Цитата
например, altera - у них есть библиотека симуляции селлов на верилог и других HDL. Извлекать оттуда описание селлов неудобно, а откуда еще можно выдрать эти описания я не нашел.

там описания только для симуляции. для синтеза они не пригодны, т.к. являются вторичным продуктом, получаемым по исходным данным из закрытой базы.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th July 2025 - 03:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.0148 секунд с 7
ELECTRONIX ©2004-2016