|
Создание собственного IP core, век живи век учись |
|
|
|
Jan 22 2009, 13:37
|
Профессионал
    
Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884

|
Привет докам и all !
Большой проект готовится завершиться уже близок сладостный момент сдачи кучи глюков заказчику... Чтобы никто ни о чем не догадался сдавать будем как IP core.
И вот незадача - непонятно как его делать... Гугл при слове IP core начинает со страшной силой барыжить и в конфе ниче конкретного тоже не нашел.
В папке проекта после синтеза, рядом с головным файлом laja.v появляется файлик laja.edn
Как понимаю, laja.edn и есть корка, но смущает способ использования всего ентого продукта. В файле laja.v у меня лежит код.... а хочется чтоб был просто интерфейс файл и edn, как у ксила например.
Куда смотреть почитать на ету тему плз !
Среда Aldec Active HDL, Synplify, Xil.
--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
|
|
|
|
|
 |
Ответов
|
Jan 28 2009, 23:04
|

Знающий
   
Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933

|
Здесь думаю легче всего обойтись тем, что отдать заказчику нетлист (*.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, что бы было удобно пользоваться коркой. Но не вижу в этом смысла для единичного случая.
--------------------
|
|
|
|
|
Jan 29 2009, 03:54
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(dm.pogrebnoy @ Jan 28 2009, 17:04)  Проблема устраняется, если вам еще требуется и симуляция работы корки без исходных кодов. В этом случае читаем что написано ниже.
Если все делать по-человечески, то тогда нужно библиотеки городить, по типу того как это сделано в Core Generator (есть такая у Xilinx модная библиотека XilinxCoreLib). И уж после этого создавать wrapper, что бы было удобно пользоваться коркой. Но не вижу в этом смысла для единичного случая. А ничего что сорцы XilinxCoreLib открытые ? И их можно посмотреть, подправить, заново скомпилировать в библиотеку? Если уж заводить речь об IP Core, то нужно начинать сначала. Что надо ? Отдать конкретному заказчику гарантировано рабочий код, что бы он его просто вставил и у него все сразу заработало? Продавать данное IP ? и т.д. Вообще по хорошему если заниматься IP то нужно делать 2 кода : для синтеза и для cycle accurate моделирования. На худой конец пропустите код через обфускатор. Будет моделироваться, синтезироваться, но в попытке разобраться там сам черт ногу сломит что к чему %))
--------------------
|
|
|
|
|
Jan 29 2009, 12:06
|
Профессионал
    
Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884

|
Цитата(des00 @ Jan 29 2009, 06:54)  А ничего что сорцы XilinxCoreLib открытые ? И их можно посмотреть, подправить, заново скомпилировать в библиотеку? Если уж заводить речь об IP Core, то нужно начинать сначала. Что надо ? Отдать конкретному заказчику гарантировано рабочий код, что бы он его просто вставил и у него все сразу заработало? Продавать данное IP ? и т.д. Вообще по хорошему если заниматься IP то нужно делать 2 кода : для синтеза и для cycle accurate моделирования. На худой конец пропустите код через обфускатор. Будет моделироваться, синтезироваться, но в попытке разобраться там сам черт ногу сломит что к чему %)) О блин наконец то знающие пришли... слушайте, я на самом деле давно изобрел обфускатор, но не думал, что его ктото продает.. Может на ftp есть что нибудь такое ? Моя задача отдать ядро конкретному заказчику в виде недоступном для пересборки, чтоб все сразу работало... Кстати насчет XilinxCoreLib вопрос. Может кто нибудь покажет мне исходник FIFO ?). Да и вообще, насколько я понимаю исходники становятся доступны, после примения генератора лицензии, за который в штатах посадят лет на 25... А путь с библиотеками я так понимаю ето просто создание либы с компонентом для моделирующей среды и синтезатора, так ?
--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
|
|
|
|
|
Jan 29 2009, 17:24
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(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 модели с верилоговскими, а не вхдл либами, что бы они работали. %(
--------------------
|
|
|
|
|
Feb 1 2009, 13:26
|
Профессионал
    
Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884

|
[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
Путаю однозначно.. Поведенческие модели неинтересно, есно я говорил про про примитивы.
--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
|
|
|
|
|
Feb 2 2009, 10:12
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(a123-flex @ Feb 1 2009, 07:26)  Да саму идею обфускатора придумал собсно. реализации как таковой не было, мне показалось что ето не очень серьезно. Я видел как люди расковыривали исходники на 100 кбайт бинарника 8 разрядного процессора для микроконтроллера, безо всяких стрингов, да и сам имею некоторый опыт разборки, поетому показалось что идея не заслуживает внимания. А оказывается етим зарабатывают. давно вынашиваю идею собственного обфускатора для верилога, но ничего лучше чем забить в PLY/YACC полную семантику языка, если делать без упрощений, на ум не приходит. Но вообще планирую полную замену всех идентификаторов(имена модулей, порты, параметры, сигналы, метки и т.д.) на 64х символьные идентификаторы вида p01101010.....01010. Так изменяется все, кроме портов топ-модуля, удаляются все не нужные разделители, комментарии, модули собираются в один файл. Думаю что для проектов от 2-3 тысяч строк, без представления о функциях устройства, даже на слабо никто не возьмется "дизассемблировать" %))))
--------------------
|
|
|
|
|
Feb 2 2009, 12:07
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804

|
Цитата(des00 @ Feb 2 2009, 12:12)  давно вынашиваю идею собственного обфускатора для верилога, но ничего лучше чем забить в PLY/YACC полную семантику языка, если делать без упрощений, на ум не приходит.
Но вообще планирую полную замену всех идентификаторов(имена модулей, порты, параметры, сигналы, метки и т.д.) на 64х символьные идентификаторы вида p01101010.....01010. Так изменяется все, кроме портов топ-модуля, удаляются все не нужные разделители, комментарии, модули собираются в один файл. Думаю что для проектов от 2-3 тысяч строк, без представления о функциях устройства, даже на слабо никто не возьмется "дизассемблировать" %)))) Хороший подход, но сложный  Как-то отлаживал грамматику собственного скриптового языка на YACC - отладил, но было очень долго и кошмарно ловить некоторые ошибки на стыке связки парсер - лексический анализатор. А вообще-то, в инете существуют стандартные уже написанные грамматические файлы определений под YACC для распространенных языков программирования. Встречал C/C++, Basic, Pascal. Думаю, что и Verilog в их числе. Может таким образом будет проще.
--------------------
WBR, V. Mirgorodsky
|
|
|
|
|
Feb 3 2009, 04:06
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(v_mirgorodsky @ Feb 2 2009, 06:07)  Хороший подход, но сложный  Как-то отлаживал грамматику собственного скриптового языка на YACC - отладил, но было очень долго и кошмарно ловить некоторые ошибки на стыке связки парсер - лексический анализатор. А вообще-то, в инете существуют стандартные уже написанные грамматические файлы определений под YACC для распространенных языков программирования. Встречал C/C++, Basic, Pascal. Думаю, что и Verilog в их числе. Может таким образом будет проще. понимаю что сложный, но вот сколько не ломал голову как учесть все тонкости языка, по другому как то не получается  можно упростить, если наложить ограничения на код. Хотя пара идей появилась. Насчет готовых парсеров, я в сети открытые парсеры для верилога не встречал. По правде говоря для С/С++/Паскаля я их сильно и не искал. Т.к. немного изучив питон все делаю на нем для питона парсеров верилога я не находил, есть хороший проект pycparser можно сделать на основе этой библиотеки. Но вы правы нужно сильнее покопаться, по любому кто-то делал нечто подобное %) Цитата(анатолий @ Feb 2 2009, 07:40)  Тут всё переставлено с ног на голову. IP core - это не для того, чтоб всё было зашифровано - а совсем наоборот- чтоб всё было понятно. Тем более, если за разработку платил заказчик. Так что, будьте любезны, со всеми комментариями, с интернациональным стилем и даже с поясняющими картинками функциональной схемы на уровне RTL. Класс, объясните это пожалуйста фирмам Altera/Xilinx/и т.д. которые ух негодяии скрывают сорцы и секреты своих корок. А за то что они не дают "даже с поясняющими картинками функциональной схемы на уровне RTL" вообще надо расстрелять %) А если серьезно, то все зависит от того как был составлен договор на IP и что является предметом договора. Тема уже обсуждалась, пользуйтесь поиском.
--------------------
|
|
|
|
Сообщений в этой теме
a123-flex Создание собственного IP core Jan 22 2009, 13:37 ClockworkOrange процедура ничем не отличается от использования сто... Jan 22 2009, 14:46 a123-flex Цитата(ClockworkOrange @ Jan 22 2009, 17... Jan 23 2009, 07:51  Kompot Цитата(a123-flex @ Jan 23 2009, 11:5... Jan 23 2009, 15:04   a123-flex Цитата(Kompot @ Jan 23 2009, 18:04) А Вы ... Jan 26 2009, 08:47        a123-flex Цитата(des00 @ Feb 3 2009, 07:06) понимаю... Feb 3 2009, 11:44        анатолий Цитата(des00 @ Feb 3 2009, 06:06) Класс, ... Feb 3 2009, 12:15         atlantic Цитата(анатолий @ Feb 3 2009, 15:15) Насч... Feb 6 2009, 07:35         glock17 ЦитатаНасчет Altera/Xilinx/и т.д - эти корки там д... Feb 10 2009, 01:20     a123-flex Цитата(des00 @ Jan 29 2009, 20:24) тогда ... Feb 10 2009, 16:01  ClockworkOrange Цитата(des00 @ Jan 29 2009, 06:54) Вообще... Jan 29 2009, 14:29 dm.pogrebnoy Цитата(des00 @ Jan 29 2009, 06:54) А ниче... Jan 29 2009, 20:23 анатолий Тут всё переставлено с ног на голову.
IP core - эт... Feb 2 2009, 13:40 a123-flex Цитата(анатолий @ Feb 2 2009, 16:40) Тут ... Feb 2 2009, 16:12 vetal Цитатав секретах - или прячут свои недоделки, или ... Feb 3 2009, 12:20
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|