|
Создание собственного 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 23 2009, 07:51
|
Профессионал
Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884
|
Цитата(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)
--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
|
|
|
|
|
Jan 23 2009, 15:04
|
Местный
Группа: Участник
Сообщений: 242
Регистрация: 10-06-08
Из: Хочу в пампасы...
Пользователь №: 38 192
|
Цитата(a123-flex @ Jan 23 2009, 11:51) блин... я спрашиваю не о том, как зацепить чужую корку, а как создать свою. Как сделать етот самый враппер.
конкретно, предположим я пишу враппер по образу и подобию ксила.
тогда че писать вместо строчки (а еще конкретней вместо XilinxCoreLib):
for all : wrapped_main_rec_fifo use entity XilinxCoreLib.fifo_generator_v3_3(behavioral) А Вы не перепутали враппер для моделирования с враппером собственно нетлиста (который edn)?
|
|
|
|
|
Jan 26 2009, 08:47
|
Профессионал
Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884
|
Цитата(Kompot @ Jan 23 2009, 18:04) А Вы не перепутали враппер для моделирования с враппером собственно нетлиста (который edn)? Я работаю с Xilinx и Aldec. И в Aldec на моделирование и в Ise для синтеза я вставляю враппер нетлиста вместе с нетлистом. Такой же враппер мне нужно написать для своего нетлиста. Неужели никто такое не делал ?
--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
|
|
|
|
|
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 модели с верилоговскими, а не вхдл либами, что бы они работали. %(
--------------------
|
|
|
|
|
Jan 29 2009, 20:23
|
Знающий
Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933
|
Цитата(des00 @ Jan 29 2009, 06:54) А ничего что сорцы XilinxCoreLib открытые ? И их можно посмотреть, подправить, заново скомпилировать в библиотеку? Это я для примера привел. Понятное дело исходники своей библиотеки можно и не раздавать. Тем более XilinxCoreLib хоть и имеет доступные исходники, я уверен что они подойдут только для симуляции О чем, собственно, тут уже и возникали разногласия. Цитата(des00) огда в вашем случае я бы сделал так: 1. сделал декларации модулей для ХДЛ(что бы заказчик мог им быстро воспользоваться) 2. накидал бы простой тестбенч, в котором показал бы как это IP использовать 3. собрал ядро под конкретный чип. отдал бы нетлист. 4. узнал бы какой симулятор использует заказчик и отдал бы ему скомпилированную библиотеку с вашим модулем.
Конечно если заказчик не будет симулировать ваше IP в своей системе, то пункты 2/4 лишние. А вот это уже по делу, в принципе согласен по всем пунктам. Весь вопрос как все "это" требуется преподнести заказчику. Тут между делом и нашлось решение проблемы - пишешь библиотеку для симуляции, с описанием своего компонента и используешь все декларации на компонент из этой библиотеки. На последнем этапе подсовываешь заранее сформированный нетлист ("заполняешь" black box) Вобщем-то практика показала, что хилые, да наверно и все остальные, так и делают. Теперь и сам разобрался
--------------------
|
|
|
|
|
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
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|