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

Обработка нетлиста на Си

Привет! Не нашел, куда лучше приткнуть тему, но думаю что здесь я скорее получу ответ.

 

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

 

Т.е. что я ищу: Библиотека должна содержать функции чтения и записи нетлиста, создания базы объектов, и должна предоставлять простые функции: соединять/удалять/создавать и т.д. И все это под линукс.

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


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

Была еще библиотека nldb - на яве, которую можно использовать из C/C++. Это, вроде, более высокая степень компилированности, чем perl. Но я не знаю, померла, или нет...

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


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

Вы могли бы уточнить, почему вас не устраивают средства, предоставляемые синтезаторами. Например, весь описанный вами функционал есть в DC и в RC. Средствами встроенного TCL всё прекрасно читается, меняется и записывается. Плюс: не будет сомнений в валидности инструментария.

 

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

 

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

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


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

Была еще библиотека nldb - на яве, которую можно использовать из C/C++. Это, вроде, более высокая степень компилированности, чем perl. Но я не знаю, померла, или нет...

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

 

Вы могли бы уточнить, почему вас не устраивают средства, предоставляемые синтезаторами. Например, весь описанный вами функционал есть в DC и в RC. Средствами встроенного TCL всё прекрасно читается, меняется и записывается. Плюс: не будет сомнений в валидности инструментария.

Жутко тормозной интерпретатор. По моему опыту, интерпретатор perl обрабатывает нетлист в 20 раз быстрее, чем DC справляется с теми же алгоритмами на TCL. Хотя, работать с командами DC (конкретно - с коллекциями) намного удобнее. imho

Про RC ничего не знаю, но думаю что то же самое.

Из интерпретаторов вряд ли что нибудь сравнится с perl. Быстрее - только под компилятор писать. Да и с защитой авторских прав, компилятор лучше. Код на перле я пока не знаю как защитить (впрочем, особо этот вопрос пока не изучал, надеюсь переписать все на Си).

 

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

Только моделирование, ничего другого я не знаю. И еще DFT для проверки на фабе/плате.

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


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

Из интерпретаторов вряд ли что нибудь сравнится с perl.

Возможно, ruby будет быстрее, вместе с вериложным gem

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


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

Возможно, ruby будет быстрее, вместе с вериложным gem

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

 

На Verilog-Perl больше всего не хватает команд вроде all_fanin/all_fanout, да и вообще там нет связей между объектами. Т.е. есть объекты - селл, пин, ассайн, нет. Пин связан с селлом, нет с пином. Но вот в обратную эти связи не работают, и получить что то вроде all_connected для цепи нельзя, надо создавать собственные массивы из связей. Переподключение пина выливается в его полное удаление, а затем создание нового. В общем, Verilog-Perl далек от идеала. Почитаю про ruby-gem, что умеет.

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


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

Спасибо!

Не за что. Я сам про это только слышал, но не видел, и на что оно способно, не знаю.

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


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

вот наткнулся случайно:

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, ставшие стандартом де-факто для таких вещей - можно подсмотреть как там написано и сделать по образцу

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


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

Для аналоговых парсеров нетлистов типа spice, spectre, eldo движок у меня есть.

Если нужно написать какую-либо программу на C - обращайтесь.

 

Если нужен бесплатный вариант - в PDK Микрона был файл calibre2spectre, написанный на перле моим коллегой

для post layout simulation.

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


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

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

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

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

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

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

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

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

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

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