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

 
 
12 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Методика применения I/O_Designer
fill
сообщение Sep 15 2009, 12:26
Сообщение #1


Гуру
******

Группа: Модераторы
Сообщений: 4 361
Регистрация: 17-08-04
Из: КП Две Поляны
Пользователь №: 512



Т.к. судя по всему многие до сих пор не понимают, что такое IOD и зачем он нужен, попытаюсь популярно объяснить это в приложении к ПЛИС:

1. Предположим мы начинаем новый проект платы в которой будет стоять ПЛИС(ы).
2. Проработали функционально наш проект и определили какие сигналы (цепи) будут подключены к ПЛИС.
3. Можно начинать определение ПЛИС, используя проект в IOD, сделать это можно несколькими путями:
а) Написали VHDL(Verilog) файл в котором есть "шапка", т.е. определены порты - соответственно его можно:
- прочитать в IOD и таким образом список сигналов окажется в IOD.
- передать разработчику ПЛИС (естественно если не он сам его сделал) для дальнейшего формирования функционально\структурного описания внутренности ПЛИС
б) Ввели сигналы непосредственно внутри IOD:
- можем сгенерить VHDL(Verilog) файл и передать разработчику ПЛИС.
4. Выбрали изготовителя ПЛИС, конкретный device и маршрут ПЛИС.
5. Сделали предварительное присвоение выводов внутри IOD.
6. Генерировали\нарисовали символ(ы) внутри IOD.
7. Экспортировали символы\PDB в DxDesigner.
8. Нарисовали схему платы в DxD.
9. Создали проект платы и сделали размещение.
10. Обратно аннотировали размещение в IOD.
11. Сделали перераспределение выводов для улучшения длин соединений и распутывания их.
12. Теперь надо связаться с разработчиком внутренности ПЛИС на предмет передачи ему информации о текущем распределении выводов. Передать ему можно любой файл из трех типов:
- P&R_Constraints_File (Actel (.pin, .gcf or .pdc), Altera (.csf or .qsf), Xilinx (.ucf), Lattice (.lpf)
- Pin Report File (Actel (.rpt), Altera (.pin), Xilinx (.pad or .csv), Lattice (.pad)
- FPGA Xchange File
Как правило любой из этих файлов могут прочитать (а также генерировать) системы разработки ПЛИС и таким образом ему не нужно будет в ручную определять выводы.
13. После того как разработчик ПЛИС одобрил это размещение или предложил свое (переделанное через такой же файл), вы решаете задачу трассировки платы. Походу этого естественно могут возникать вопросы дальнейших итерации по перераспределению выводов ибо как у разработчика платы может возникнуть потребность в этом, так и у разработчика ПЛИС - все это решается через процесс аннотаций и генерирования указанных выше обменных файлов. Процесс контролирует "Синхронизатор" - если изменились какие-либо подключенные к проекту IOD файлы, он это увидит и предложит соответствующие действия.

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


--------------------
Чем больше познаю, тем больше понимаю ... насколько мало я все таки знаю.

www.megratec.ru
Go to the top of the page
 
+Quote Post
insector
сообщение Sep 15 2009, 13:06
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 29-11-07
Из: Россия
Пользователь №: 32 816



Александр, спасибо за описание, действительно - кратко, толково, без лишней воды.
Но, несмотря на безмерное уважение к Вам с моей стороны, по поводу продукта возникают некоторые вопросы:

Пока, я вижу в этом только один плюс: "Как правило любой из этих файлов могут прочитать системы разработки ПЛИС и таким образом ему не нужно будет в ручную определять выводы." Т.е. я убью 2 дня времени, пройду через кучу гемора с IOD, наловлю косяков и все это только для того, чтобы душечка программист не мучался с назначением портов вручную ?
Я, конечно, не махровый гуру, еще только учусь, но у нас все просто:
1. Сформировать перечень сигналов, которые пойдут в/на плис. Из них лишь небольшое кол-во является предопределенным, остальные свободные, поэтому это Я буду в декларативном порядке сообщать программисту какие сигналы на каких ножках будут, а не ОН мне. Т.к. ему это фиолетово, а мне на плате - нет. Случай с DDR модулем немного другой, но там тоже от программиста немного зависит.
2. Выслушать от программиста пожелания - какие бы он особые сигналы хотел видеть на спец. ножках, типа глобальных клоков.
3. Спокойно разводить плату.
4. Сообщить программисту где будут какие сигналы. И он за полчаса вручную их назначит.

В результате мне не нужно мучаться с IOD, писать там всякие описания и прочее. Как-то так, уж извините.

Может быть, конечно, если делать плату с 100 плисами, причем разными, через IOD это будет и удобнее. Я таких не делал. Но, если почитать, большинство народа, пройдя через кучу создания разных описаний, символов и наловив кучу глюков, остаются с недовольным осадком.

Случай, когда разводчик и программист в разных странах - не рассматриваю. Там - возможно.


--------------------
Гибрид мастерской и гостинной с уклоном в музей и гараж - вот мой дом :)
Go to the top of the page
 
+Quote Post
fill
сообщение Sep 15 2009, 13:51
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 4 361
Регистрация: 17-08-04
Из: КП Две Поляны
Пользователь №: 512



Тогда дополню:
1. Передача информации автоматом через файл исключает человеческий фактор - если у вас 1000 выводов, то при ручном вводе легко сделать ошибку, причем это касается как разработчика ПЛИС так и схемотехника-тополога (в PDB также легко можно сделать ошибку).
2. IOD контролирует правильность назначения сигналов. Я уже видел проекты, где разработчики плат сделали ошибки в назначении сигналов "не в те выводы" - когда делали схему и плату они не всегда дотошно изучали datasheets. А затем схемотехники, заказавшие эти платы у них, разбирались почему они не работают и пытались ускорить процесс поиска таких неправильных назначений в том числе с помощью IOD.
3. При достаточно плотном заполнении ПЛИС возникает потребность компромиса между получением нужной скорости внутри ПЛИС и внешней длины\распутывания связей на плате. Ориентируясь только на один критерий вы неизбежно проиграете в другом - выбрав только внешнюю длину\чистоту связей вы можете не получить нужную частоту внутри ПЛИС и наоборот. В таких случаях и нужны итерации назначения выводов, а значит IOD может помочь.


--------------------
Чем больше познаю, тем больше понимаю ... насколько мало я все таки знаю.

www.megratec.ru
Go to the top of the page
 
+Quote Post
Vadim
сообщение Sep 15 2009, 15:01
Сообщение #4


Неиодный дизайнер
*****

Группа: Свой
Сообщений: 1 240
Регистрация: 1-12-04
Из: Минск
Пользователь №: 1 273



Цитата
1. Предположим мы начинаем новый проект платы в которой будет стоять ПЛИС(ы).

Предположим smile.gif
Цитата
2. Проработали функционально наш проект и определили какие сигналы (цепи) будут подключены к ПЛИС.

Ну, допустим smile.gif
Цитата
3. Можно начинать определение ПЛИС, используя проект в IOD, сделать это можно несколькими путями:
а) Написали VHDL(Verilog) файл в котором есть "шапка", т.е. определены порты - соответственно его можно:
- прочитать в IOD и таким образом список сигналов окажется в IOD.
- передать разработчику ПЛИС (естественно если не он сам его сделал) для дальнейшего формирования функционально\структурного описания внутренности ПЛИС
б) Ввели сигналы непосредственно внутри IOD:
- можем сгенерить VHDL(Verilog) файл и передать разработчику ПЛИС.

Я извиняюсь, но чтобы начинать определение ПЛИС, не нужно ничего, кроме Вашего любимого текстового редактора smile.gif
И если уж так хочется сгенерить hdl-файл, а не набрать его ручками, никакие иоды не нужны. Достаточно скриптов smile.gif
Цитата
4. Выбрали изготовителя ПЛИС, конкретный device и маршрут ПЛИС.

Для этого иод не нужен smile.gif
Цитата
5. Сделали предварительное присвоение выводов внутри IOD.

Зачем? Предварительное присвоение выводов делается в схемном редакторе путем рисования схемы smile.gif Для этого нам понадобятся библиотечные символы, схемный редактор и руки. Возможно даже голова, но никак не иод smile.gif
Цитата
6. Генерировали\нарисовали символ(ы) внутри IOD.
7. Экспортировали символы\PDB в DxDesigner.

Это ключевой момент. Если ПЛИС многоногая, и ее символ получается слишком большой, чтобы разместить ее на схеме, этот самый символ необходимо разбить на части. Причем я не верю, что существует ПЛИС, символ которой физически невозможно разместить на схеме. Это всегда можно сделать, но такой символ не будет удовлетворять гостам. Существует и другая причина побить символ на более мелкие - удобочитаемость. Во всех остальных случаях необходим один символ на одну ПЛИС, который рисуется штатными средствами используемого вами пакета разработки печатных плат. Таким образом, IOD предназначен лишь для разбиения символа ПЛИС на более мелкие, все остальное притянуто за уши. Имхо на всякий случай smile.gif
Цитата
8. Нарисовали схему платы в DxD.

Существует жизнь и вне DxD smile.gif
Цитата
9. Создали проект платы и сделали размещение.

Ну сделали smile.gif
Цитата
10. Обратно аннотировали размещение в IOD.

Это еще зачем?
Цитата
11. Сделали перераспределение выводов для улучшения длин соединений и распутывания их.

Причем штатными средствами, без иодов smile.gif
Цитата
12. Теперь надо связаться с разработчиком внутренности ПЛИС на предмет передачи ему информации о текущем распределении выводов. Передать ему можно любой файл из трех типов:
- P&R_Constraints_File (Actel (.pin, .gcf or .pdc), Altera (.csf or .qsf), Xilinx (.ucf), Lattice (.lpf)
- Pin Report File (Actel (.rpt), Altera (.pin), Xilinx (.pad or .csv), Lattice (.pad)
- FPGA Xchange File
Как правило любой из этих файлов могут прочитать системы разработки ПЛИС и таким образом ему не нужно будет в ручную определять выводы.

Очень мило smile.gif Ну если лень разработчику вручную определить выводы согласно имеющейся схеме, так и быть, я ему определю вручную. Затрачу я на это, ну, допустим, час. И что? А если очень хочется погенерить текстовые файлы, в моем распоряжении всегда есть всевозможные скриптовые языки smile.gif
Цитата
13. После того как разработчик ПЛИС одобрил это размещение или предложил свое переделанное (через такой же файл), вы решаете задачу трассировки платы. Походу этого естественно могут возникать вопросы дальнейших итерации по перераспределению выводов ибо как у разработчика платы может возникнуть потребность в этом, так и у разработчика ПЛИС - все это решается через процесс аннотаций и генерирования указанных выше обменных файлов. Процесс контролирует "Синхронизатор" - если изменились какие-либо подключенные к проекту IOD файлы, он это увидит и предложит соответствующие действия.

Перераспределение выводов делается путем правки схемы и прямой аннотации в плату без участия каких-либо посредников, которые непонятно что синхронизируют. И какие такие действия может предложить таинственный синхронизатор? Как у Жванецкого: "Продолжать движение!!!"? smile.gif


--------------------
SPECCTRA forever! IO/Designer forever!
Go to the top of the page
 
+Quote Post
SM
сообщение Sep 15 2009, 16:10
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(insector @ Sep 15 2009, 17:06) *
поэтому это Я буду в декларативном порядке сообщать программисту какие сигналы на каких ножках будут, а не ОН мне. Т.к. ему это фиолетово, а мне на плате - нет.

Это обоим одинаково не фиолетово. Сделав так, как удобно разводчику платы, можно поднагадить разводчику ПЛИСовых внутренностей так, что критический путь ну никак не уложится в констрейны. Тут надо этот процесс делать совместно на равных, если разводчик платы и разводчик внутренностей ПЛИСы не одно лицо.
Go to the top of the page
 
+Quote Post
disel
сообщение Sep 15 2009, 18:04
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Цитата(Vadim @ Sep 15 2009, 19:01) *


На создание компонета с ~700 ногами в ИОДе уходит час-два, это если не спешить. Это при том, что несколько групп свапирования, разные стандарты ввода-вывода, разные клоки, МГТ и т.д. И даже мысли не приходит что возможна ошибка с нумерацией, перепутыванием ног и прочими косяками. Изменения в сигналах делаются еще быстрее. ОДно из основных достоинств - это база по всем ПЛИС.
Даже думать не хочу сколько человеко-месяцев нужно чтобы без ошибки создать такой компонент без ИОД, а потом его править при изменении количества сигналов\банков и т.д.
Поэтому можно забить на все глюки ИОД, коих ни чуть не меньше чем в ДхД.
Go to the top of the page
 
+Quote Post
Vadim
сообщение Sep 15 2009, 19:08
Сообщение #7


Неиодный дизайнер
*****

Группа: Свой
Сообщений: 1 240
Регистрация: 1-12-04
Из: Минск
Пользователь №: 1 273



Цитата(disel @ Sep 15 2009, 21:04) *
На создание компонета с ~700 ногами в ИОДе уходит час-два, это если не спешить.

Допустим.
Цитата(disel @ Sep 15 2009, 21:04) *
Это при том, что несколько групп свапирования, разные стандарты ввода-вывода, разные клоки, МГТ и т.д. И даже мысли не приходит что возможна ошибка с нумерацией, перепутыванием ног и прочими косяками.

Имхо, несерьезно. На этапе создания символа задача библиотекаря - тупо повторить даташит.
Цитата(disel @ Sep 15 2009, 21:04) *
Изменения в сигналах делаются еще быстрее.

Извините, не понял, в каких таких сигналах?
Цитата(disel @ Sep 15 2009, 21:04) *
ОДно из основных достоинств - это база по всем ПЛИС.

Сомнительное достоинство. Заходим на сайт производителя и скачиваем даташит.
Цитата(disel @ Sep 15 2009, 21:04) *
Даже думать не хочу сколько человеко-месяцев нужно чтобы без ошибки создать такой компонент без ИОД, а потом его править при изменении количества сигналов\банков и т.д.

Т.е на создание компонента с 700 ногами без ошибок у Вас уйдет несколько человеко-месяцев? Не сочтите за наезд, но теперь я понимаю, что ИОД иногда полезен smile.gif И не понимаю, зачем править созданный без ошибок компонент. Как в компоненте, серийно выпускаемой славной капиталистической промышленностью, может измениться количество сигналов (каких сигналов?) и банков? Это же не трансформер какой нибудь, а FPGA!!!


--------------------
SPECCTRA forever! IO/Designer forever!
Go to the top of the page
 
+Quote Post
Frederic
сообщение Sep 15 2009, 19:28
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 791
Регистрация: 14-05-05
Из: Минск
Пользователь №: 5 035



Цитата(Vadim @ Sep 15 2009, 22:08) *
Имхо, несерьезно. На этапе создания символа задача библиотекаря - тупо повторить даташит.

интересно как ты в базе пропишишь ногу с функционалом Diff/Clock/IO/DiffClock ???
и через день придется поменять Clock на IO чтобы сделать своп

Цитата
Сомнительное достоинство. Заходим на сайт производителя и скачиваем даташит.

надо скачивать не даташит, а ээээ как правильно выразится файл распиновки для IOD
хотя даташин нужен, чтобы нарисовать Cell

Цитата
Это же не трансформер какой нибудь, а FPGA!!!

в яблочко и этим подведен итог дискусии.


bb-offtopic.gif в четверг я вправлю тебе мозги


--------------------
Будь ты рабочий, будь ты профессор, а DxD-IOD-Exp должен знать каждый, чтобы не стать пособником империализма.
Go to the top of the page
 
+Quote Post
Vadim
сообщение Sep 15 2009, 20:10
Сообщение #9


Неиодный дизайнер
*****

Группа: Свой
Сообщений: 1 240
Регистрация: 1-12-04
Из: Минск
Пользователь №: 1 273



Цитата(Frederic @ Sep 15 2009, 22:28) *
интересно как ты в базе пропишишь ногу с функционалом Diff/Clock/IO/DiffClock ???

Не поверишь, с помощью клавиатуры smile.gif
Цитата(Frederic @ Sep 15 2009, 22:28) *
и через день придется поменять Clock на IO чтобы сделать своп

Стесняюсь сказать, но мне не нужно менять "Clock на IO", чтобы сделать своп smile.gif
Цитата(Frederic @ Sep 15 2009, 22:28) *
надо скачивать не даташит, а ээээ как правильно выразится файл распиновки для IOD
хотя даташин нужен, чтобы нарисовать Cell

Ну если даташит не нужен, не скачивай. Медитируй над "файлом распиновки для IOD". Там информации больше smile.gif


--------------------
SPECCTRA forever! IO/Designer forever!
Go to the top of the page
 
+Quote Post
disel
сообщение Sep 16 2009, 03:43
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Цитата(Vadim @ Sep 15 2009, 23:08) *
Имхо, несерьезно. На этапе создания символа задача библиотекаря - тупо повторить даташит.

Исключение человеческого фактора. Вероятность ошибки при вводе м\сх с 1000 ногами далека от нулевой, а ее цена очень высока.
Создать универсальный символ для ПЛИС невозможно, поскольку в каждом проекте свои сигналы, разные питания. И соответственно разные группы свапа.

Цитата(Vadim @ Sep 15 2009, 23:08) *
Извините, не понял, в каких таких сигналах?

Например есть группа ног для ЦАПа, они 3,3В, им заданы банки 1-2 где они могут свапиться, есть ноги АЦП, они ЛВДС, т.е.2,5В им заданы банки 3-4. И нужно поменять местами. Или для ЦАП отдать 1,3. А еще есть клоки которые должны попадать на клоковые ноги, МГТ с его питанием, и т.д.
В ИОД все это делается элементарно, в нем уже вся информация о плис. Без него все вручную, долго, непроизводительно, и при этом есть вероятность ошибки.

Цитата(Vadim @ Sep 15 2009, 23:08) *
Т.е на создание компонента с 700 ногами без ошибок у Вас уйдет несколько человеко-месяцев? Не сочтите за наезд, но теперь я понимаю, что ИОД иногда полезен smile.gif И не понимаю, зачем править созданный без ошибок компонент. Как в компоненте, серийно выпускаемой славной капиталистической промышленностью, может измениться количество сигналов (каких сигналов?) и банков? Это же не трансформер какой нибудь, а FPGA!!!

см. выше.

Цитата(Vadim @ Sep 15 2009, 23:08) *
Стесняюсь сказать, но мне не нужно менять "Clock на IO", чтобы сделать своп

Каждый волен расставлять вокруг себя любые грабли. Удачи.
Go to the top of the page
 
+Quote Post
Inpharhus
сообщение Sep 16 2009, 06:45
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 167
Регистрация: 7-02-08
Из: Ростовская обл.
Пользователь №: 34 835



Цитата(Vadim @ Sep 15 2009, 23:08) *
Сомнительное достоинство. Заходим на сайт производителя и скачиваем даташит.

А в случае использования IOD даже не обязательно его качать, большинство ПЛИС уже в базе, надо только выбрать производителя, модель и корпус.
Цитата(Vadim @ Sep 15 2009, 23:08) *
Имхо, несерьезно. На этапе создания символа задача библиотекаря - тупо повторить даташит.

Сколько времени надо для того чтобы "тупо повторить даташит"? В IOD тупо генерация символов проделывается минут за 5-10, плюс полчаса-час на подгонку под ГОСТ, и это речь о корпусе FF1760 например.
А сколько времени нужно для создания компонента? Создание групп свопирования, сверка с даташитом каждого пина банка, питания и т.д... В IOD же просто надо по фильтру выделить все пины банка и пачкой определить в одну группу свопирования. И, как говорилось выше, исключение пресловутого человеческого фактора, ошибиться при ручном создании компонента элементарно.
Go to the top of the page
 
+Quote Post
SM
сообщение Sep 16 2009, 07:28
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Inpharhus @ Sep 16 2009, 10:45) *
А сколько времени нужно для создания компонента? Создание групп свопирования

Группы свопирования для ФПГА вещь совершенно бездарная, так как можно или нельзя свопнуть два пина определяется не только даташитом на ПЛИС, но и доп.функциями пинов и назначением соответствующих цепей, и особенностями разводки схемы внутри ПЛИС. Так что нет смысла вообще определять свопируемые пины в pdb на плисину.
Go to the top of the page
 
+Quote Post
Inpharhus
сообщение Sep 16 2009, 11:29
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 167
Регистрация: 7-02-08
Из: Ростовская обл.
Пользователь №: 34 835



Цитата(SM @ Sep 16 2009, 11:28) *
Группы свопирования для ФПГА вещь совершенно бездарная, так как можно или нельзя свопнуть два пина определяется не только даташитом на ПЛИС, но и доп.функциями пинов и назначением соответствующих цепей, и особенностями разводки схемы внутри ПЛИС. Так что нет смысла вообще определять свопируемые пины в pdb на плисину.

А кто мешает создавать отдельный pdb для каждого нового проекта учитывая все эти особенности? Или вы хотите сказать что проще редактировать схематик? В IOD можно быстренько набросать несколько вариантов pdb для разных плис проекта. А если использовать его по уму - с синхронизацией и прочим, то в теории всё вообще должно быть замечательно smile.gif
но внедрить что-то новое довольно сложно... вот и делается многое по-старинке

Сообщение отредактировал Inpharhus - Sep 16 2009, 11:30
Go to the top of the page
 
+Quote Post
Frederic
сообщение Sep 16 2009, 12:36
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 791
Регистрация: 14-05-05
Из: Минск
Пользователь №: 5 035



Цитата(SM @ Sep 16 2009, 10:28) *
Группы свопирования для ФПГА вещь совершенно бездарная, так как можно или нельзя свопнуть два пина определяется не только даташитом на ПЛИС, но и доп.функциями пинов и назначением соответствующих цепей, и особенностями разводки схемы внутри ПЛИС. Так что нет смысла вообще определять свопируемые пины в pdb на плисину.

в ЦБ вообще можно не делать компанент.
работать локально и как сказал Inpharhus для каждого проекта своя индивидульная плисина


--------------------
Будь ты рабочий, будь ты профессор, а DxD-IOD-Exp должен знать каждый, чтобы не стать пособником империализма.
Go to the top of the page
 
+Quote Post
SM
сообщение Sep 16 2009, 12:42
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Inpharhus @ Sep 16 2009, 15:29) *
А кто мешает создавать отдельный pdb для каждого нового проекта учитывая все эти особенности? Или вы хотите сказать что проще редактировать схематик?


Да вот я пока ничего не хочу сказать smile.gif Еще не вник в суть. Но точно могу сказать - что в pdb нет механизма учета "всех этих особенностей", поэтому однозначно делать это не в pdb. А значит именно IOD и генерация каждый раз всего заново для каждого проекта.

PS.
Хотя, как по мне, лучше бы один универсальный символ по даташиту и разветвленная и продвинутая система констрейнов по части того, что с чем можно свопить и по каким правилам. И никакого IOD не надо бы, все необходимое было бы в Exp.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 16th June 2025 - 16:09
Рейтинг@Mail.ru


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