реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Создание собственного IP core, век живи век учись
a123-flex
сообщение Jan 22 2009, 13:37
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 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.


--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
Go to the top of the page
 
+Quote Post
ClockworkOrange
сообщение Jan 22 2009, 14:46
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 337
Регистрация: 17-05-07
Пользователь №: 27 784



процедура ничем не отличается от использования сторонних IP-core
читай документацию Xilinx на CoreGen (или аналогичную у симплифай)

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


--------------------
Чтoбы yзнaть, кaкaя дopoгa впepeди, cпpocи тex, ктo пo нeй вoзвpaщaeтcя ©
Go to the top of the page
 
+Quote Post
a123-flex
сообщение Jan 23 2009, 07:51
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 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)


--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
Go to the top of the page
 
+Quote Post
Kompot
сообщение Jan 23 2009, 15:04
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 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)?
Go to the top of the page
 
+Quote Post
a123-flex
сообщение Jan 26 2009, 08:47
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884



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



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

Такой же враппер мне нужно написать для своего нетлиста. Неужели никто такое не делал ?


--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Jan 28 2009, 23:04
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 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, что бы было удобно пользоваться коркой. Но не вижу в этом смысла для единичного случая.


--------------------
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 29 2009, 03:54
Сообщение #7


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(dm.pogrebnoy @ Jan 28 2009, 17:04) *
Проблема устраняется, если вам еще требуется и симуляция работы корки без исходных кодов. В этом случае читаем что написано ниже.

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


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

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

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


--------------------
Go to the top of the page
 
+Quote Post
a123-flex
сообщение Jan 29 2009, 12:06
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884



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

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

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



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

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

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

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


--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
Go to the top of the page
 
+Quote Post
ClockworkOrange
сообщение Jan 29 2009, 14:29
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 337
Регистрация: 17-05-07
Пользователь №: 27 784



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

а что верилог-нетлист уже стало немодным для моделирования использовать?!


--------------------
Чтoбы yзнaть, кaкaя дopoгa впepeди, cпpocи тex, ктo пo нeй вoзвpaщaeтcя ©
Go to the top of the page
 
+Quote Post
des00
сообщение Jan 29 2009, 17:24
Сообщение #10


Вечный ламер
******

Группа: Модераторы
Сообщений: 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 модели с верилоговскими, а не вхдл либами, что бы они работали. %(


--------------------
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Jan 29 2009, 20:23
Сообщение #11


Знающий
****

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



Цитата(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


--------------------
Go to the top of the page
 
+Quote Post
a123-flex
сообщение Feb 1 2009, 13:26
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 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

Путаю однозначно.. Поведенческие модели неинтересно, есно я говорил про про примитивы.


--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 2 2009, 10:12
Сообщение #13


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



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


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

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


--------------------
Go to the top of the page
 
+Quote Post
v_mirgorodsky
сообщение Feb 2 2009, 12:07
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804



Цитата(des00 @ Feb 2 2009, 12:12) *
давно вынашиваю идею собственного обфускатора для верилога, но ничего лучше чем забить в PLY/YACC полную семантику языка, если делать без упрощений, на ум не приходит.

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

Хороший подход, но сложный sad.gif Как-то отлаживал грамматику собственного скриптового языка на YACC - отладил, но было очень долго и кошмарно ловить некоторые ошибки на стыке связки парсер - лексический анализатор. А вообще-то, в инете существуют стандартные уже написанные грамматические файлы определений под YACC для распространенных языков программирования. Встречал C/C++, Basic, Pascal. Думаю, что и Verilog в их числе. Может таким образом будет проще.


--------------------
WBR,
V. Mirgorodsky
Go to the top of the page
 
+Quote Post
анатолий
сообщение Feb 2 2009, 13:40
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 10-12-05
Из: Украина
Пользователь №: 12 052



Тут всё переставлено с ног на голову.
IP core - это не для того, чтоб всё было зашифровано - а совсем наоборот-
чтоб всё было понятно.
Тем более, если за разработку платил заказчик.
Так что, будьте любезны, со всеми комментариями,
с интернациональным стилем и даже с поясняющими
картинками функциональной схемы на уровне RTL.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th May 2024 - 11:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01511 секунд с 7
ELECTRONIX ©2004-2016