Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обработка нетлиста на Си
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Разработка цифровых, аналоговых, аналого-цифровых ИС
Shivers
Привет! Не нашел, куда лучше приткнуть тему, но думаю что здесь я скорее получу ответ.

Есть задача - сильно менять нетлист. Прежде всего, его нужно зачитать, представить как набор объектов, а затем править: удалять/добавлять порты, элементы, цепи и ассайны, делать переподключения. Все это хочется делать на Си. Если кто с подобным работал, есть такая библиотека Verilog-Perl. Вот, хочется ровно то же самое, но лучше. Perl устраивает, но производительности не хватает - нужен компилятор, а не интерпретатор.

Т.е. что я ищу: Библиотека должна содержать функции чтения и записи нетлиста, создания базы объектов, и должна предоставлять простые функции: соединять/удалять/создавать и т.д. И все это под линукс.
SM
Была еще библиотека nldb - на яве, которую можно использовать из C/C++. Это, вроде, более высокая степень компилированности, чем perl. Но я не знаю, померла, или нет...
Fat Robot
Вы могли бы уточнить, почему вас не устраивают средства, предоставляемые синтезаторами. Например, весь описанный вами функционал есть в DC и в RC. Средствами встроенного TCL всё прекрасно читается, меняется и записывается. Плюс: не будет сомнений в валидности инструментария.

Кстати, если не секрет, как для такого сильно модифицированного нетлиста сделать функциональную верификацию?

Цитата(Shivers @ Feb 13 2015, 06:34) *
Есть задача - сильно менять нетлист. Прежде всего, его нужно зачитать, представить как набор объектов, а затем править: удалять/добавлять порты, элементы, цепи и ассайны, делать переподключения. Все это хочется делать на Си. Если кто с подобным работал, есть такая библиотека Verilog-Perl. Вот, хочется ровно то же самое, но лучше. Perl устраивает, но производительности не хватает - нужен компилятор, а не интерпретатор.
Shivers
Цитата(SM @ Feb 13 2015, 09:59) *
Была еще библиотека nldb - на яве, которую можно использовать из C/C++. Это, вроде, более высокая степень компилированности, чем perl. Но я не знаю, померла, или нет...

Спасибо! Яву пока использовать не хочется, надеюсь найти чистые Си-шные либы.

Цитата(Fat Robot @ Feb 13 2015, 17:42) *
Вы могли бы уточнить, почему вас не устраивают средства, предоставляемые синтезаторами. Например, весь описанный вами функционал есть в DC и в RC. Средствами встроенного TCL всё прекрасно читается, меняется и записывается. Плюс: не будет сомнений в валидности инструментария.

Жутко тормозной интерпретатор. По моему опыту, интерпретатор perl обрабатывает нетлист в 20 раз быстрее, чем DC справляется с теми же алгоритмами на TCL. Хотя, работать с командами DC (конкретно - с коллекциями) намного удобнее. imho
Про RC ничего не знаю, но думаю что то же самое.
Из интерпретаторов вряд ли что нибудь сравнится с perl. Быстрее - только под компилятор писать. Да и с защитой авторских прав, компилятор лучше. Код на перле я пока не знаю как защитить (впрочем, особо этот вопрос пока не изучал, надеюсь переписать все на Си).

Цитата(Fat Robot @ Feb 13 2015, 17:42) *
Кстати, если не секрет, как для такого сильно модифицированного нетлиста сделать функциональную верификацию?

Только моделирование, ничего другого я не знаю. И еще DFT для проверки на фабе/плате.
SM
Цитата(Shivers @ Feb 13 2015, 17:20) *
Из интерпретаторов вряд ли что нибудь сравнится с perl.

Возможно, ruby будет быстрее, вместе с вериложным gem
Shivers
Цитата(SM @ Feb 13 2015, 18:26) *
Возможно, ruby будет быстрее, вместе с вериложным gem

Спасибо! Про такое я вообще не слышал.

На Verilog-Perl больше всего не хватает команд вроде all_fanin/all_fanout, да и вообще там нет связей между объектами. Т.е. есть объекты - селл, пин, ассайн, нет. Пин связан с селлом, нет с пином. Но вот в обратную эти связи не работают, и получить что то вроде all_connected для цепи нельзя, надо создавать собственные массивы из связей. Переподключение пина выливается в его полное удаление, а затем создание нового. В общем, Verilog-Perl далек от идеала. Почитаю про ruby-gem, что умеет.
SM
Цитата(Shivers @ Feb 13 2015, 17:33) *
Спасибо!

Не за что. Я сам про это только слышал, но не видел, и на что оно способно, не знаю.
Doka
вот наткнулся случайно:
https://github.com/verilog-to-routing/vtr-v.../master/ODIN_II
Tool for converting a subset of the Verilog Hardware Description Language (HDL) into a BLIF netlist.

хорош тем, что там для парзенья используются bison и flex, ставшие стандартом де-факто для таких вещей - можно подсмотреть как там написано и сделать по образцу
baumanets
Для аналоговых парсеров нетлистов типа spice, spectre, eldo движок у меня есть.
Если нужно написать какую-либо программу на C - обращайтесь.

Если нужен бесплатный вариант - в PDK Микрона был файл calibre2spectre, написанный на перле моим коллегой
для post layout simulation.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.