Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Снова Altium и FPGA (Xilinx)
Форум разработчиков электроники ELECTRONIX.ru > Печатные платы (PCB) > Разрабатываем ПП в САПР - PCB development > Altium Designer, DXP, Protel
bms
Тема поднята в продлжение разговора в ветке http://electronix.ru/forum/index.php?showtopic=97632
Там вопрос так и не решился...

В поисках решения проблемы экспорта пинаута в файл ucf (кто знаком с FPGA от Xilinx - меня поймут) набрел на скрипт, который в принципе должен решать эту (и не только) проблему. И он даже немного ее решает.
Скрипт лежит тут: http://altium-designer-addons.googlecode.c...rTools_v3.0.zip

Проблема в том, что лично у меня этот скрипт заработал "частично". Т.е. экспорт он выполняет, но как-то уж очень выборочно... В моем случае имеется многолистовой проекте, где FPGA разбит на несколько партов. Парты находятся на разных листах схемы. Скрипт по непонятной логике выбирает какой-то один парт (не первый и не последний) и для него генерит ucf-файл. Генерит правильно. Но не для всего FPGA, а только для "понравившегося" кусочка. Всего остального как-будто и нет...
Скрипт заточен на разных производителей FPGA, я использую Xilinx, поэтому проверял работу скрипта в режиме экспорта для этого производителя. Возможно для, например, плисов от Altera он работает нормально...

Сам я в Delphi не силен, но может найдется человек, который "допилит" этот скрипт до нормального состояния? Ну или подскажет куда смотреть. Уверен, что этот скрипт был бы полезен очень многим разработчикам. Если бы работал нормально sm.gif

Заранее благодарен.
andrewkrot
1. Экспортируйте свой проект из PCB в FPGA "tools/pcb to fpga project wizard".
2. Соедините два любых пина - чтобы проект не был пустым.
3. Синтезируйте этот проект в альтиуме
4. В папке ProjectOutputs\Configuration 1 появится желаемый ucf файл со всеми пинами и локами.
bms
Цитата(andrewkrot @ Mar 16 2012, 23:13) *
1. Экспортируйте свой проект из PCB в FPGA "tools/pcb to fpga project wizard".
2. Соедините два любых пина - чтобы проект не был пустым.
3. Синтезируйте этот проект в альтиуме
4. В папке ProjectOutputs\Configuration 1 появится желаемый ucf файл со всеми пинами и локами.


Этот путь был опробован (и обсужден на форуме) ранее. Путь кривой ибо приводит только к сообщениям "No valid FPGA components in project.", "No valid components. Cannot proceed."
Понятно, что это из-за того, что FPGA-библиотека не альтиумовская, а своя. Альтиумовская библиотека по ряду причин не годится. Это все обсуждалось уже, не хочется к этому возвращаться...

Сейчас речь идет о скрипте, который напрямую (прямо из схемы) способен генерить пинаут из проекта. Без всяких дополнительных телодвижений. (соединений пинов... синтеза проекта... и т.д.) Просто при старте скрипта нужно указать, какой компонент считать за FPGA. Все. Очень удобно. Но работает криво.
Скрипт требует доработки.
gammanoid
В очередном проекте появилось желание автоматизировать создание UCF для Xilinx в AD.
Скрипт VendorTools_v3.0 из google code - пропускал много выводов.
Вместо того, чтобы тратить время на ручное набивание UCF, и то я не большой знаток Delphi и API Альтиума,
все же решил попытаться поправить VendorTools_v3.0 под реальную задачу.

Может найдется кто потестировать и отправить коммит в Google Code.

Вот что у меня получилось.

Модифицированная версия на базе VendorTools_v3.0
  1. Добавлена переменная Net Tolerance для поиска метки на цепи подходящей к выводу.
    Она почему-то в метрической системе "плавает" и не точно "ложится" на цепь.
    Возможно что цепь не точно подводится к пину элемента.
  2. Добавлена возможность изменять Wire Length при экспорте UCF.
    Вроде бы так надежнее ищет метки цепей около выводов.
    В оригинальном скрипте было фиксированное значение 30000000,
    исчисляемое во внутренних "попугаях" (cInternalPrecision в 0,1 микродюймах).
    Было (пример для Pin.Orientation = eRotate180):
    Код
    NetItr.AddFilter_Area(Pin.Location.X - 30000000, Pin.Location.Y - 1, Pin.Location.X + 1, Pin.Location.Y + 1)

    Стало (пример для Pin.Orientation = eRotate180):
    Код
    GridSizeMM := CoordToMMs(SchDoc.VisibleGridSize);
    WireSizeMax := StrToInt(EditLength.Text) * GridSizeMM;
    WireSizeMin := 1;
    if Pin.Orientation = eRotate180 then
    begin
      X1 := Pin.Location.X - MMsToCoord(WireSizeMin);
      Y1 := Pin.Location.Y - MMsToCoord(WireSizeMin);
      X2 := Pin.Location.X + MMsToCoord(WireSizeMax);
      Y2 := Pin.Location.Y + MMsToCoord(WireSizeMin);
    end
            
    NetItr.AddFilter_Area(X1,Y1,X2,Y2);

    Т.е. по вертикали "окно поиска метки" расширено с 0,1 микродюйма до ±1 мм,
    а по горизонтали - до величины, заданной в поле Wire Length в единицах видимой сетки.
  3. Добавлена поддержка экспорта в xdc файл для Vivado
  4. Добавлена возможность сортировки ucf/xdc по имени цепи.
  5. Для отладки, при экспорте в Xilinx, создается второй файл с выводами элемента, у которых не обнаружено Net Label.


З.Ы. Почему-то мне попался для правки VendorTools_v3.0 и уже после своих доработок обнаружил более новую версию VendorTools_v3.5 by Caludio Veronesi
Глянул на изменения в коде - мне кажется его изменения незначительны для ликвидации пропусков.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.