Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Создание собственного IP core
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
a123-flex
Привет докам и all !

Большой проект готовится завершиться уже близок сладостный момент сдачи кучи глюков заказчику... Чтобы никто ни о чем не догадался сдавать будем как IP core.

И вот незадача - непонятно как его делать...
Гугл при слове IP core начинает со страшной силой барыжить и в конфе ниче конкретного тоже не нашел.

В папке проекта после синтеза, рядом с головным файлом laja.v появляется файлик laja.edn

Как понимаю, laja.edn и есть корка, но смущает способ использования всего ентого продукта. В файле laja.v у меня лежит код.... а хочется чтоб был просто интерфейс файл и edn, как у ксила например.

Куда смотреть почитать на ету тему плз !

Среда Aldec Active HDL, Synplify, Xil.
ClockworkOrange
процедура ничем не отличается от использования сторонних IP-core
читай документацию Xilinx на CoreGen (или аналогичную у симплифай)

вкратце: в проект цепляется враппер с интерфейсом модуля, а в эту же папку помещается синтезированный нетлист
a123-flex
Цитата(ClockworkOrange @ Jan 22 2009, 17:46) *
процедура ничем не отличается от использования сторонних IP-core
читай документацию Xilinx на CoreGen (или аналогичную у симплифай)

вкратце: в проект цепляется враппер с интерфейсом модуля, а в эту же папку помещается синтезированный нетлист


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

конкретно, предположим я пишу враппер по образу и подобию ксила.

тогда че писать вместо строчки (а еще конкретней вместо XilinxCoreLib):

for all : wrapped_main_rec_fifo use entity XilinxCoreLib.fifo_generator_v3_3(behavioral)
Kompot
Цитата(a123-flex @ Jan 23 2009, 11:51) *
блин... я спрашиваю не о том, как зацепить чужую корку, а как создать свою. Как сделать етот самый враппер.

конкретно, предположим я пишу враппер по образу и подобию ксила.

тогда че писать вместо строчки (а еще конкретней вместо XilinxCoreLib):

for all : wrapped_main_rec_fifo use entity XilinxCoreLib.fifo_generator_v3_3(behavioral)



А Вы не перепутали враппер для моделирования с враппером собственно нетлиста (который edn)?
a123-flex
Цитата(Kompot @ Jan 23 2009, 18:04) *
А Вы не перепутали враппер для моделирования с враппером собственно нетлиста (который edn)?



Я работаю с Xilinx и Aldec. И в Aldec на моделирование и в Ise для синтеза я вставляю враппер нетлиста вместе с нетлистом.

Такой же враппер мне нужно написать для своего нетлиста. Неужели никто такое не делал ?
dm.pogrebnoy
Здесь думаю легче всего обойтись тем, что отдать заказчику нетлист (*.ngc или *.edn) и в сопровождение к нему создать *.vho файл, в котором по стандарту Xilinx содержится описание компонента и код для вставки в текст проекта (посмотрите, у любой корки от Xilinx Core Generator есть такой). Саму корку предложить подцеплять как black box. Ну это если заказчик согласится.

Можно сделать чуть покрасивее: создать package, в нем component. В архитектуре этого компонента добавить описание своей корки, и вставить как instance, соединив все порты с портами компонента в package. Потом можно будет ссылаться на этот package и на компонент в нем. Но все-равно, например Active-HDL, будет ругаться на то, что не нашел entity для instance (вашей корки). Думаю ISE Project Navigator тоже этому будет не рад. Удобство в том, что не нужно создавать сомнительный *.vho, а работать напрямую, хоть и с кривым, компонентом.

Проблема устраняется, если вам еще требуется и симуляция работы корки без исходных кодов. В этом случае читаем что написано ниже.

Если все делать по-человечески, то тогда нужно библиотеки городить, по типу того как это сделано в Core Generator (есть такая у Xilinx модная библиотека XilinxCoreLib). И уж после этого создавать wrapper, что бы было удобно пользоваться коркой. Но не вижу в этом смысла для единичного случая.
des00
Цитата(dm.pogrebnoy @ Jan 28 2009, 17:04) *
Проблема устраняется, если вам еще требуется и симуляция работы корки без исходных кодов. В этом случае читаем что написано ниже.

Если все делать по-человечески, то тогда нужно библиотеки городить, по типу того как это сделано в Core Generator (есть такая у Xilinx модная библиотека XilinxCoreLib). И уж после этого создавать wrapper, что бы было удобно пользоваться коркой. Но не вижу в этом смысла для единичного случая.


А ничего что сорцы XilinxCoreLib открытые ? И их можно посмотреть, подправить, заново скомпилировать в библиотеку? smile.gif

Если уж заводить речь об IP Core, то нужно начинать сначала. Что надо ?
Отдать конкретному заказчику гарантировано рабочий код, что бы он его просто вставил и у него все сразу заработало? Продавать данное IP ? и т.д.

Вообще по хорошему если заниматься IP то нужно делать 2 кода : для синтеза и для cycle accurate моделирования. На худой конец пропустите код через обфускатор. Будет моделироваться, синтезироваться, но в попытке разобраться там сам черт ногу сломит что к чему %))
a123-flex
Цитата(des00 @ Jan 29 2009, 06:54) *
А ничего что сорцы XilinxCoreLib открытые ? И их можно посмотреть, подправить, заново скомпилировать в библиотеку? smile.gif

Если уж заводить речь об IP Core, то нужно начинать сначала. Что надо ?
Отдать конкретному заказчику гарантировано рабочий код, что бы он его просто вставил и у него все сразу заработало? Продавать данное IP ? и т.д.

Вообще по хорошему если заниматься IP то нужно делать 2 кода : для синтеза и для cycle accurate моделирования. На худой конец пропустите код через обфускатор. Будет моделироваться, синтезироваться, но в попытке разобраться там сам черт ногу сломит что к чему %))



О блин наконец то знающие пришли... слушайте, я на самом деле давно изобрел обфускатор, но не думал, что его ктото продает.. Может на ftp есть что нибудь такое ?

Моя задача отдать ядро конкретному заказчику в виде недоступном для пересборки, чтоб все сразу работало...

Кстати насчет XilinxCoreLib вопрос. Может кто нибудь покажет мне исходник FIFO ?). Да и вообще, насколько я понимаю исходники становятся доступны, после примения генератора лицензии, за который в штатах посадят лет на 25...

А путь с библиотеками я так понимаю ето просто создание либы с компонентом для моделирующей среды и синтезатора, так ?
ClockworkOrange
Цитата(des00 @ Jan 29 2009, 06:54) *
Вообще по хорошему если заниматься IP то нужно делать 2 кода : для синтеза и для cycle accurate моделирования. На худой конец пропустите код через обфускатор. Будет моделироваться, синтезироваться, но в попытке разобраться там сам черт ногу сломит что к чему %))

а что верилог-нетлист уже стало немодным для моделирования использовать?!
des00
Цитата(a123-flex @ Jan 29 2009, 06:06) *
я на самом деле давно изобрел обфускатор, но не думал, что его ктото продает.. Может на ftp есть что нибудь такое ?


не совсем понял причем здесь обфускатор, вы же про IP спрашивали %) Если вы действительно сделали обфускатор то не могли бы рассказать в кратце на чем вы его написали и его параметры. Мне просто интересно.

Цитата
Моя задача отдать ядро конкретному заказчику в виде недоступном для пересборки, чтоб все сразу работало...


тогда в вашем случае я бы сделал так:
1. сделал декларации модулей для ХДЛ(что бы заказчик мог им быстро воспользоваться)
2. накидал бы простой тестбенч, в котором показал бы как это IP использовать
3. собрал ядро под конкретный чип. отдал бы нетлист.
4. узнал бы какой симулятор использует заказчик и отдал бы ему скомпилированную библиотеку с вашим модулем.

Конечно если заказчик не будет симулировать ваше IP в своей системе, то пункты 2/4 лишние.

Цитата
Кстати насчет XilinxCoreLib вопрос. Может кто нибудь покажет мне исходник FIFO ?). Да и вообще, насколько я понимаю исходники становятся доступны, после примения генератора лицензии, за который в штатах посадят лет на 25...


могу ошибаться но ИМХО вы путаете библиотеки для моделирования с библиотеками базовых примитивов. Поведенческие cycle-accurative модели всех примитивов и корок доступны в исходниках. Например у той же альтеры altera_mf.v

Код
// START_MODULE_NAME------------------------------------------------------------
//
// Module Name     : ALTSYNCRAM
//
// Description     : Synchronous ram model for Stratix series family
//
// Limitation      :
//
// END_MODULE_NAME--------------------------------------------------------------


и фирма не делает из этих моделей секрета. и собрать их можно под любой симулятор. Вы можете даже сами пачить либы (у тех же хилых, была ошибка в либах от исе 10.1 вроде, правиться по месту). А вот поведенческие модели ее закрытых IP корок, несмотря на то что идут в сорцах, пропущены через обфускатор %(

Цитата
А путь с библиотеками я так понимаю ето просто создание либы с компонентом для моделирующей среды и синтезатора, так ?


Вот этот вопрос не понял %)

ЗЫ. Кстати "исходники альтеровских FIFO" из коре генератора, я вытаскивал, после этого как то перестал использовать выходы usedw для комбинационной логики %))



Цитата(ClockworkOrange @ Jan 29 2009, 08:29) *
а что верилог-нетлист уже стало немодным для моделирования использовать?!


да без проблем, но давайте оценим скорость моделирования в первом и втором случаях? Подозреваю что она будет отличаться на порядки. У хороших разработчиков IP идет 2 модели, часто модель для моделирования идет на хдл и систем си %) Другое дело что у недобросовестных разработчиков они иногда отличаются и возникают интересные эффекты.

а моделировать vqm файлы в альтере я так и не научился, буду рад если расскажите как в моделсиме запустить vqm модели с верилоговскими, а не вхдл либами, что бы они работали. %(
dm.pogrebnoy
Цитата(des00 @ Jan 29 2009, 06:54) *
А ничего что сорцы XilinxCoreLib открытые ? И их можно посмотреть, подправить, заново скомпилировать в библиотеку? smile.gif

Это я для примера привел. Понятное дело исходники своей библиотеки можно и не раздавать. Тем более XilinxCoreLib хоть и имеет доступные исходники, я уверен что они подойдут только для симуляции smile.gif О чем, собственно, тут уже и возникали разногласия.

Цитата(des00)
огда в вашем случае я бы сделал так:
1. сделал декларации модулей для ХДЛ(что бы заказчик мог им быстро воспользоваться)
2. накидал бы простой тестбенч, в котором показал бы как это IP использовать
3. собрал ядро под конкретный чип. отдал бы нетлист.
4. узнал бы какой симулятор использует заказчик и отдал бы ему скомпилированную библиотеку с вашим модулем.

Конечно если заказчик не будет симулировать ваше IP в своей системе, то пункты 2/4 лишние.


А вот это уже по делу, в принципе согласен по всем пунктам. Весь вопрос как все "это" требуется преподнести заказчику.

Тут между делом и нашлось решение проблемы - пишешь библиотеку для симуляции, с описанием своего компонента и используешь все декларации на компонент из этой библиотеки. На последнем этапе подсовываешь заранее сформированный нетлист ("заполняешь" black box) Вобщем-то практика показала, что хилые, да наверно и все остальные, так и делают. Теперь и сам разобрался smile.gif
a123-flex
[quote name='des00' date='Jan 29 2009, 20:24' post='537978']
не совсем понял причем здесь обфускатор, вы же про IP спрашивали %) Если вы действительно сделали обфускатор то не могли бы рассказать в кратце на чем вы его написали и его параметры. Мне просто интересно.

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


тогда в вашем случае я бы сделал так:
1. сделал декларации модулей для ХДЛ(что бы заказчик мог им быстро воспользоваться)
2. накидал бы простой тестбенч, в котором показал бы как это IP использовать
3. собрал ядро под конкретный чип. отдал бы нетлист.
4. узнал бы какой симулятор использует заказчик и отдал бы ему скомпилированную библиотеку с вашим модулем.

Конечно если заказчик не будет симулировать ваше IP в своей системе, то пункты 2/4 лишние.

THANKS

могу ошибаться но ИМХО вы путаете библиотеки для моделирования с библиотеками базовых примитивов. Поведенческие cycle-accurative модели всех примитивов и корок доступны в исходниках. Например у той же альтеры altera_mf.v

Путаю однозначно.. Поведенческие модели неинтересно, есно я говорил про про примитивы.
des00
Цитата(a123-flex @ Feb 1 2009, 07:26) *
Да саму идею обфускатора придумал собсно. реализации как таковой не было, мне показалось что ето не очень серьезно. Я видел как люди расковыривали исходники на 100 кбайт бинарника 8 разрядного процессора для микроконтроллера, безо всяких стрингов, да и сам имею некоторый опыт разборки, поетому показалось что идея не заслуживает внимания. А оказывается етим зарабатывают.


давно вынашиваю идею собственного обфускатора для верилога, но ничего лучше чем забить в PLY/YACC полную семантику языка, если делать без упрощений, на ум не приходит.

Но вообще планирую полную замену всех идентификаторов(имена модулей, порты, параметры, сигналы, метки и т.д.) на 64х символьные идентификаторы вида p01101010.....01010. Так изменяется все, кроме портов топ-модуля, удаляются все не нужные разделители, комментарии, модули собираются в один файл. Думаю что для проектов от 2-3 тысяч строк, без представления о функциях устройства, даже на слабо никто не возьмется "дизассемблировать" %))))
v_mirgorodsky
Цитата(des00 @ Feb 2 2009, 12:12) *
давно вынашиваю идею собственного обфускатора для верилога, но ничего лучше чем забить в PLY/YACC полную семантику языка, если делать без упрощений, на ум не приходит.

Но вообще планирую полную замену всех идентификаторов(имена модулей, порты, параметры, сигналы, метки и т.д.) на 64х символьные идентификаторы вида p01101010.....01010. Так изменяется все, кроме портов топ-модуля, удаляются все не нужные разделители, комментарии, модули собираются в один файл. Думаю что для проектов от 2-3 тысяч строк, без представления о функциях устройства, даже на слабо никто не возьмется "дизассемблировать" %))))

Хороший подход, но сложный sad.gif Как-то отлаживал грамматику собственного скриптового языка на YACC - отладил, но было очень долго и кошмарно ловить некоторые ошибки на стыке связки парсер - лексический анализатор. А вообще-то, в инете существуют стандартные уже написанные грамматические файлы определений под YACC для распространенных языков программирования. Встречал C/C++, Basic, Pascal. Думаю, что и Verilog в их числе. Может таким образом будет проще.
анатолий
Тут всё переставлено с ног на голову.
IP core - это не для того, чтоб всё было зашифровано - а совсем наоборот-
чтоб всё было понятно.
Тем более, если за разработку платил заказчик.
Так что, будьте любезны, со всеми комментариями,
с интернациональным стилем и даже с поясняющими
картинками функциональной схемы на уровне RTL.
a123-flex
Цитата(анатолий @ Feb 2 2009, 16:40) *
Тут всё переставлено с ног на голову.
IP core - это не для того, чтоб всё было зашифровано - а совсем наоборот-
чтоб всё было понятно.
Тем более, если за разработку платил заказчик.
Так что, будьте любезны, со всеми комментариями,
с интернациональным стилем и даже с поясняющими
картинками функциональной схемы на уровне RTL.



rolleyes.gif Анатолий, неисповедимы пути господни... бывает и наоборот.
des00
Цитата(v_mirgorodsky @ Feb 2 2009, 06:07) *
Хороший подход, но сложный sad.gif Как-то отлаживал грамматику собственного скриптового языка на YACC - отладил, но было очень долго и кошмарно ловить некоторые ошибки на стыке связки парсер - лексический анализатор. А вообще-то, в инете существуют стандартные уже написанные грамматические файлы определений под YACC для распространенных языков программирования. Встречал C/C++, Basic, Pascal. Думаю, что и Verilog в их числе. Может таким образом будет проще.


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

Хотя пара идей появилась.

Насчет готовых парсеров, я в сети открытые парсеры для верилога не встречал. По правде говоря для С/С++/Паскаля я их сильно и не искал. Т.к. немного изучив питон все делаю на нем smile.gif
для питона парсеров верилога я не находил, есть хороший проект pycparser можно сделать на основе этой библиотеки.

Но вы правы нужно сильнее покопаться, по любому кто-то делал нечто подобное %)


Цитата(анатолий @ Feb 2 2009, 07:40) *
Тут всё переставлено с ног на голову.
IP core - это не для того, чтоб всё было зашифровано - а совсем наоборот-
чтоб всё было понятно.
Тем более, если за разработку платил заказчик.
Так что, будьте любезны, со всеми комментариями,
с интернациональным стилем и даже с поясняющими
картинками функциональной схемы на уровне RTL.


Класс, объясните это пожалуйста фирмам Altera/Xilinx/и т.д. которые ух негодяии скрывают сорцы и секреты своих корок. А за то что они не дают "даже с поясняющими
картинками функциональной схемы на уровне RTL" вообще надо расстрелять %)

А если серьезно, то все зависит от того как был составлен договор на IP и что является предметом договора. Тема уже обсуждалась, пользуйтесь поиском.
a123-flex
Цитата(des00 @ Feb 3 2009, 07:06) *
понимаю что сложный, но вот сколько не ломал голову как учесть все тонкости языка, по другому как то не получается sad.gif можно упростить, если наложить ограничения на код.

Хотя пара идей появилась.

Насчет готовых парсеров, я в сети открытые парсеры для верилога не встречал. По правде говоря для С/С++/Паскаля я их сильно и не искал. Т.к. немного изучив питон все делаю на нем smile.gif
для питона парсеров верилога я не находил, есть хороший проект pycparser можно сделать на основе этой библиотеки.


с нетерпением будем ждать релиза.. готов бета тестировать rolleyes.gif
анатолий
Цитата(des00 @ Feb 3 2009, 06:06) *
Класс, объясните это пожалуйста фирмам Altera/Xilinx/и т.д. которые ух негодяии скрывают сорцы и секреты своих корок. А за то что они не дают "даже с поясняющими
картинками функциональной схемы на уровне RTL" вообще надо расстрелять %)

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

Насчет договора согласен. Но, похоже, в 1м письме на такой договор как раз и ссылаются.
Но даже, если проект "для себя" или "для дяди", он должен быть оформлен соответственно,
т.к. через 2-3 года он себе будет выглядеть как чужой.
Правило общее: если что-то разработано, но не описано - значит - не разработано.
Сколько из-за этого в мире полезного труда похерено навсегда!
Так что вещи-то банальные, но напоминать полезно.
Насчет Altera/Xilinx/и т.д - эти корки там делают лбы, не лучше нас с вами,
в секретах - или прячут свои недоделки, или по причине, чтоб числиться незаменимыми,
или по дурости.
Я 1 такого видел - делал для Xilinx фирменное приложение-тест MAC-ядра - и сделал-таки.
Но ранее его выгнали с университета за неуспеваемость- какие с него картинки?
Значит, руководствам фирм Altera/Xilinx/и т.д объяснения не требуются - они об этом и так знают. laughing.gif
vetal
Цитата
в секретах - или прячут свои недоделки, или по причине, чтоб числиться незаменимыми,
или по дурости.

Или ядро с opencores smile.gif
atlantic
Цитата(анатолий @ Feb 3 2009, 15:15) *
Насчет договора согласен. Но, похоже, в 1м письме на такой договор как раз и ссылаются.
Но даже, если проект "для себя" или "для дяди", он должен быть оформлен соответственно,
т.к. через 2-3 года он себе будет выглядеть как чужой.
Правило общее: если что-то разработано, но не описано - значит - не разработано.

Сколько из-за этого в мире полезного труда похерено навсегда!
Так что вещи-то банальные, но напоминать полезно.
Насчет Altera/Xilinx/и т.д - эти корки там делают лбы, не лучше нас с вами,
в секретах - или прячут свои недоделки, или по причине, чтоб числиться незаменимыми,
или по дурости.
Я 1 такого видел - делал для Xilinx фирменное приложение-тест MAC-ядра - и сделал-таки.
Но ранее его выгнали с университета за неуспеваемость- какие с него картинки?
Значит, руководствам фирм Altera/Xilinx/и т.д объяснения не требуются - они об этом и так знают. laughing.gif

Золотые слова!
Лучше не скажешь.
a14.gif

Можно добавить, что исходный код некоторых лидеров и есть обфускатор.
glock17
Цитата
Насчет Altera/Xilinx/и т.д - эти корки там делают лбы, не лучше нас с вами,
в секретах - или прячут свои недоделки, или по причине, чтоб числиться незаменимыми,
или по дурости.



bb-offtopic.gif
Абсолютно согласен. Моей прошлой конторе Альтера сделала под заказ корку SDRAM-контроллера. При изменении тактовой частоты корка переставала работать полностью.
a123-flex
Цитата(des00 @ Jan 29 2009, 20:24) *
тогда в вашем случае я бы сделал так:
1. сделал декларации модулей для ХДЛ(что бы заказчик мог им быстро воспользоваться)
2. накидал бы простой тестбенч, в котором показал бы как это IP использовать
3. собрал ядро под конкретный чип. отдал бы нетлист.
4. узнал бы какой симулятор использует заказчик и отдал бы ему скомпилированную библиотеку с вашим модулем.

Конечно если заказчик не будет симулировать ваше IP в своей системе, то пункты 2/4 лишние.



Огромный фэнкс... Все как Вы сказали... Работает быстро и прямо. Сделать просто.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.