Перейти к содержанию
    

Методика применения I/O_Designer

Вы будете смеяться, но символ транзистора сгенерировать не удалось. Пишет нечетное число ног.

Она даже не открывает символ транзистора из demo папки.

 

Но даже и без этого недочета могу ответственно сказать Symgen и компилятор AXEL полный отстой.

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

тему досконально. Принципиально не удастся сделать символ детали, который потом не придется

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

ног он просто не понимает.

Так что для больших чипов остается только один вариант IOD, а для дискретных элементов вручную

рисовать. Может оно и правильно.

 

А это не пробовали http://www.pcbmatrix.com/Products/SymbolWi.../DxDesigner.asp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.к. судя по всему многие до сих пор не понимают, что такое 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 файлы, он это увидит и предложит соответствующие действия.

 

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

 

Подводные камни на маршруте проектирования в IOD7.4 (мои бывшие проблемы из-за п.п.1, 2 и 5).

Будем рассматривать только иерархическую схему, т.е. используем один функциональный символ (т.е. один на всю ПЛИС) и работа в локальной PDB (без создания полноценного компонента в ЦБ). В фильме IOD_DxD_2007.avi очень хорошо показан принцип работы, но обычно проблемы начинаются после того как начались изменения в IOD или Ехр.

 

При любом изменение в IOD и передачи изменений в DxD необходимо следовать следующим советам :):

1. Перед передачей изменений в DxD сохранить базу через CommonDatabaseProperties. Поставить галку на Export_PartData и точку на Write_to_Local_PDB_file. У меня галка не скидывается, но и почему то база первоначально не сохранялась. Для нормальной работы пришлось первоначально сохранить проект по дефолтному *.hkp и сразу поставить точку на Write_to_Local_PDB_file и сохранить базу. Базу следует сохранять при закрытом Ехр, иначе IOD не сможет корректно сохранить базу из-за блокировки ее Ехр, т.е. при любом действии в IOD настоятельно рекомендуется закрывать Ехр.

2. Сделанные изменения передаются в DxD через Export/Schematic_and_Symbols, а не через светофоры синхронизации.

3. При изменениях, когда изменяются имена сигналов (но без изменения расположения пина в функциональном элементе) при экспорте в DxD данный пин будет отключен от цепи в DxD. Необходимо будет подвигать цепь для подключения к пину.

4. При кардинальных изменениях, когда добавляются, удаляются или изменяются имена сигналов проще провести изменения через SimbolWizard/UpdateSimbols (не проверял) или вообще удалить в IOD символы и заново сгенерить двумя щелчками мышки и пройти путь по п.1 (так поступаю). Предварительно удалить ПЛИС в DxD на схеме, в навигаторе и в базе Symbol_View/local_symbols, сделать FA & BA. Чтобы не пропали разведенные цепи относящиеся к ПЛИС, необходимо убрать галки Trace_removal_options в FA .

5. Пины JTAG и питания (они не изменяются) выделяю в отдельные pcb символы. В этом случае сигналы JTAG необходимо добавить в IOD.

6. Перед серьезными изменениями советую закрыть DxD, Exp, IOD и сделать дамп проекта тупым копированием всего директория на архивный веник.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за наводку, попробую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот... Первая попытка работы с IOD...

Ввел сигналы, назначил, создал символы в визарде, экспортировал. Получил два блока в моем проекте - "name" и "name_top" где "name" то, как я назвал в iod. А, собственно, как мне теперь все это соединить с моей схемой? Где мне взять символ, соответствующий тому, что я описывал в IOD, чтобы его поставить в схему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот... Первая попытка работы с IOD...

Ввел сигналы, назначил, создал символы в визарде, экспортировал. Получил два блока в моем проекте - "name" и "name_top" где "name" то, как я назвал в iod. А, собственно, как мне теперь все это соединить с моей схемой? Где мне взять символ, соответствующий тому, что я описывал в IOD, чтобы его поставить в схему?

если без ЦБ, то из Symbols/Symbol_View/local_symbols , т.е. стандарный ввод элемента на схему

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если без ЦБ, то из Symbols/Symbol_View/local_symbols , т.е. стандарный ввод элемента на схему

Да, там такой символ есть, но этот символ уже задействован в блоке "<name>_top", сгенеренном IOD-ом. Вот это меня смущает. Т.е. как я понял в этом блоке IOD понацеплял к нему цепей, но вот что дальше делать с этим блоком, я не понимаю. И символа, который соответствует этому "топовому" блоку я не вижу.

 

Или этот "топ" надо переместить из блоков в схемный лист проекта? Или вообще "забить" на него и по образу и подобию как в топе все подключить там, где мне надо?

 

(2007.7 версия, и IOD оттуда же встроенный)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, там такой символ есть, но этот символ уже задействован в блоке "<name>_top", сгенеренном IOD-ом. Вот это меня смущает. Т.е. как я понял в этом блоке IOD понацеплял к нему цепей, но вот что дальше делать с этим блоком, я не понимаю. И символа, который соответствует этому "топовому" блоку я не вижу.

 

Или этот "топ" надо переместить из блоков в схемный лист проекта? Или вообще "забить" на него и по образу и подобию как в топе все подключить там, где мне надо?

 

(2007.7 версия, и IOD оттуда же встроенный)

даю картинку, если не поймешь - завтра уточним

сненерил компонент из трех символов, котрорые ставим на схему :

ХС35S700_configpins.1

XC35S700_powerpins.1

XC35S700.1

и автоматом получаем еще XC35S700_pcb.1 (на схему его не ставим, это подсхема функционального символа XC35S700.1)

почему удобно использовать функциональный символ - вместо кучи проводников шины рисуем шину и она подключина к ПЛИС

post-5035-1255898904_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

даю картинку, если не поймешь - завтра уточним

Тема... Ну в общем не совсем раскрыта. Поясните назначение того, что находится в Blocks и кончается на _top (у Вас XC35S700AN-4FGG484C_top). Все символы я нашел, но я не понял смысла этого блока с окончанием на "top" - я должен его как-то его использовать, или это образец, как подключать все символы? Лично у меня в этом блоке, кончающемся на _top, установлен как раз сгенерированный функциональный символ, распихано часть .pcb-символов с питаниями, не касающимися IO, ну и config/JTAG, и к ним подведены "обрывки" цепей с названиями, как я их указал в IOD-е.

 

Я тоже использую функциональный символ, но я не совсем понимаю, как правильно его использовать, и для чего мне сгенерили этот самый блок, кончающийся на "_top".

 

И еще - а на кой он мне генерирует кучу символов с VREF-ами (либо добавляет их в символ с конфиг-пинами, смотря какие опции split-а символов), причем вне завсисмости от галки "Add VREF pins if required by I/O Standard" визарда. Да и ни одного пина у меня нет в таком стандарте, чтобы VREF нужен был. Т.е. по идее все врефы априори обычные I/O.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тема... Ну в общем не совсем раскрыта. Поясните назначение того, что находится в Blocks и кончается на _top (у Вас XC35S700AN-4FGG484C_top). Все символы я нашел, но я не понял смысла этого блока с окончанием на "top" - я должен его как-то его использовать, или это образец, как подключать все символы? Лично у меня в этом блоке, кончающемся на _top, установлен как раз сгенерированный функциональный символ, распихано часть .pcb-символов с питаниями, не касающимися IO, config, JTAG, и к ним подведены "обрывки" цепей с названиями, как я их указал в IOD-е.

 

Я тоже использую функциональный символ, но я не совсем понимаю, как правильно его использовать, и для чего мне сгенерили этот самый блок, кончающийся на "_top"

то что находится в Blocks не трогай, функциональный символ и есть блок (как я понимаю) и он прописан в секции Blocks

top это верхний уровень, под ним лежит подсхема функциональ\ного символа

 

ты должен ставить на схему символы из Symbols/Symbol_View/local_symbols (если работаешь без ЦБ)

"подведены "обрывки" цепей с названиями, как я их указал в IOD-е." - увидеть цепи можно , если открыть функциональный символ в Blocks или выделить его на схеме и ПКМ Push_Schematic. обрывки цепей (это имена сигналов IOD) в символьном элементе превращаются в имена пинов и к ним в DxD подключить можно любую цепь или шину (если в IOD имеется шина то для DxD к функциональному символу возможно подключить шину с кол-вом сигналов прописанных в IOD или иначе не пройдешь упаковку)

 

"генерирует кучу символов с VREF-ами" и IOD кидает в символ ХС35S700_configpins.1 т.е. наверно считает их по функционалу JTAG, другого объяснения я не нашел, просто смирился с этим

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

то что находится в Blocks не трогай, функциональный символ и есть блок (как я понимаю) и он прописан в секции Blocks

top это верхний уровень, под ним лежит подсхема функциональ\ного символа

 

Не-не, там похоже не все так просто. Там сгенерено два блока. Первый, который не top, это и есть то, что снаружи представлено функциональным символом. А вот именно блок "top" - ведь не спроста он сгенерирован, наверное для чего то нужен. А если в него посмотреть - там просто стоит функциональный символ, символ с питачем и символ, в котором конфиг-пины. И к ним подведены цепи с такими названиями, как я их собственно и назвал. Спрашивается, зачем? Если его, этот топ, использовать не надо, а надо ставить сразу функциональный символ в свою схему. Или же top это просто образец, как цеплять сгенеренные символы, чтобы все соответствовало? Ведь именно в том самом top на power пины подается правильное питание, прописанное IOD-ом в соответсвии с тем, как он разбросал по банкам разные пины разных IO-стандартов. И если я его не использую, то мне придется powerpins вручную подключать.

 

обрывки цепей (это имена сигналов IOD) в символьном элементе превращаются в имена пинов и к ним в DxD подключить можно любую цепь или шину (если в IOD имеется шина то для DxD к функциональному символу возможно подключить шину с кол-вом сигналов прописанных в IOD или иначе не пройдешь упаковку)

Это все так для того блока, который без добавки "_top". А я пытаюсь выяснить назначение "_top"-а

 

 

Вот картинка того, что у меня в top-e сгенерилось. То, что слева вверху - это уже экземпляр функционального символа! Соотв. этот блок никак не может быть "содержимым" функционального символа, если он сам в себе его содержит!

 

post-2881-1255903753_thumb.png

 

ЗЫ.

Еще засада - если не ставить галку "Generate Full PCB Symbols", то похериваются сигналы питания PLL, которые в БД по плисам почему-то имеют тип "OTHER", и даже если я их принудительно описываю в списке сигналов, то все равно они пропадают. Причем, что удивительно, земля одной из PLL попала в тип "GND", земля второй - увы... нет... Тоже Other... Так что их база данных требует не меньшей перепроверки, чем собственно изготовленные символs :) :) Ужос. Никому доверять нельзя.

 

ЗЗЫ. Ну а под конец он просто упал, сказав такое :) Так что на сегодня явно возиться хорошь....

[PROLOG SYSTEM ERROR:  Thread 1
    Recursively received fatal signal 11
PROLOG STACK:
]

Action? /opt/mentor/EE2007.7/2007.7EE/SDD_HOME/IODesigner/resource/iod_env: line 15: 11184 Killed                  ${IOD_HOME}/IODesigner/iod "$@"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем - конкретизирую вопрос. Как мне подключить блок "<name>_top" к схеме, чтобы все подключения цепей VCC/GND, сделанных IOD-ом, учитывались в моем проекте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем - конкретизирую вопрос. Как мне подключить блок "<name>_top" к схеме, чтобы все подключения цепей VCC/GND, сделанных IOD-ом, учитывались в моем проекте?

да не трогай блок "<name>_top

вставляй в схему функциональный символ и свои два pcb JTAG и питания

дай картинки в word-е как ты генерил в IOD, по символу питания вижу ты делал замену имен питания в Preferences/SymbolGeneration

выложи проект или вышли по личке

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вставляй в схему функциональный символ и свои два pcb JTAG и питания

Да как я могу вставить символ питания, когда IOD сам его должен подключать в зависимости от того, какие VCC на какой банк нужны с его точки зрения. Иначе зачем он мне все эти питачные сигналы авто-присваивает? Или мне вручную каждый раз в процессе оптимизации там питачи перекидывать?

 

Я не понял, как это дать картинки в ворде... Но скриншот могу:

 

 

вижу ты делал замену имен питания в Preferences/SymbolGeneration

Да, естественно, чтобы подогнать под мои стандартные названия.

post-2881-1255943517_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да как я могу вставить символ питания, когда IOD сам его должен подключать в зависимости от того, какие VCC на какой банк нужны с его точки зрения. Иначе зачем он мне все эти питачные сигналы авто-присваивает? Или мне вручную каждый раз в процессе оптимизации там питачи перекидывать?

ты можешь пойти по нескольким путям с питанием например:

- сделать символ рсв питания без изменения имени пининия, т.е. имя пина в рсв будет как был по умолчани (типа Vdd Vcc и так далее). В схеме к кадждому пину к нему подключишь все что хочешь. Этот путь меня устраивает.

- не добавлять никуда, они попадут в pdb и станут глобальными

Я не понял, как это дать картинки в ворде... Но скриншот могу:

путь генерации в IOD

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ты можешь пойти по нескольким путям с питанием например:

 

Вы мне вот что скажите - а я могу просто как-то подключить тот самый блок, который на _top кончается, к проекту? Чтобы он стал одним из листов схемы. Меня бы это устроило полностью и безоговорочно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...