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

Фиксация элементов на кристалле. Xilinx ISE

Доброго времени суток.

У меня есть вопрос по поводу фиксации элемента на кристалле.

 

Основной проект собран в Project Navigator. Проект используется в ЦОС, активно используются DSP блоки и блочная память.

Я дописал свою часть и пытаюсь её интегрировать в то, что уже есть.

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

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

Это я посмотрел в Plane Ahead, который можно запустить после Place & Route.

В той части которая уже написана, видимо тоже решали такую проблему и решили её так : зафиксировали положение ключевых блоков на кристалле. DSP и блочную память.

В очередной раз проект собрался практически хорошо. Все развелось, с незначительными нареканиями, но это не критично.

Я решил сделать такой же финт ушами, и зафиксировать положение своих DSP. И посмотреть, что будет дальше.

 

Попытался зафиксировать позицию этих элементов в Plane Ahead. Выбираю элемент, нажимаю fix он помечается оранжевым цветом. Проверяю, что в ucf файле появились строчки вида:

INST "main/RXTX/ddc.UUT/repress/capture_data/dsp48_i/blk00000001/blk00000019" LOC = DSP48_X2Y21;

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

Хорошо. Запускаю имплементацию заново, констрейны снова плавают. Снова запускаю Plane Ahead и вижу, то что я фиксировал, находится в другом месте. То что было зафиксировано ранее - тоже уползло. А часть всё таки легло как было написано.

Если сделать PBlock, он отображается на кристалле корректно. А элементы которые я в него хочу поместить уезжают.

То есть, то что я прописываю в ucf файле просто игнорируется, но игнорируется не совсем. Что то мешает.

 

Что я делаю не так? Почему игнорируются мои констрейны?

Если запустить например FPGA Editor после маппинга, то по пути, который прописан в констрейне этот элемент есть. Но он находится в другой позиции, не той что задаю я. А если после маппинга посмотреть в Plane Ahead. Элементы там где я бы хотел. Но после Place and Route где получится.

 

Прикладываю к сообщению принтскирины свойств имплиментации. Стратегия сборки выбиралась SmartXplorer ом - maplogicopt.

post-12235-1367045381_thumb.png

post-12235-1367045391_thumb.png

post-12235-1367045400_thumb.png

post-12235-1367045408_thumb.png

post-12235-1367045417_thumb.png

post-12235-1367045423_thumb.png

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


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

Попробуйте убрать флаги Combinatorial Logic Optimization и Register Duplication. Но лично я ни разу с подобными проблемами не сталкивался.

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


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

Утром попробую. Спасибо.

А может в каком-то логе можно поглядеть, почему это происходит? Я не нашел где.

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


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

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

А по поводу синтаксиса надо быть очень внимательным...действительно некоторые констрейны могут игнориться и никаких воплей от среды разработки не слышно при этом.

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


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

Не нужно фиксировать отдельные элементы, только модули назначить по pblock. На самом деле, ISE настолько плохо трассирует, что самое элементарное распределение проекта по блокам позволяет достичь максимальных тактовых частот, особенно при цос обработке. В planahead есть экспорт ucf, он туда пишет area constraint. Последние версии planahead довольно стабильны и от ise можно отказаться полностью, даже chipscope он вставляет сам, без core inserter. Правда тормоз жуткий.

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


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

Выключение флага Register Duplication - не помогло. AREA_GROUP на праздниках попробую..

А как назначить в pblock весь модуль?

Изменено пользователем Женёк

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


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

Совершенно забыл про тему.

В общем проблема решилась следующим образом.

Выяснилось, что если из Project Navigator запустить Plane Ahead. Например в меню Place and Route, то он своим запуском ломает файлы проекта (в частности UCF, но не только его). Собственно проект после этого запуска начинает вести себя некорректно.

Решил так. Собрал проект средствами Project Navigator, так, что Failing Constraints отсутствуют. Я делал через SmartXplorer.

Потом, скопировал собранный проект, со всеми всеми исходниками в отдельную папку. И уже из неё запустился и включил Plane Ahead.

Отметил на кристалле все что я хочу зафиксировать. Зафиксировал. Из полученного UCF файла скопировал новые сгенеренные строки и удалил этот проект.

Все. После этого добавил строки в исходный проект в UCF, он их нормально ест.

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

Элементы действительно фиксируются, я проверил. Проект собирается значительно быстрее.

 

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


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

Решил так. Собрал проект средствами Project Navigator, так, что Failing Constraints отсутствуют. Я делал через SmartXplorer.

Потом, скопировал собранный проект, со всеми всеми исходниками в отдельную папку. И уже из неё запустился и включил Plane Ahead.

Отметил на кристалле все что я хочу зафиксировать. Зафиксировал. Из полученного UCF файла скопировал новые сгенеренные строки и удалил этот проект.

Эх-эх-эх... Откройте для себя систему контроля версий, что ли. Тогда не нужны будут все эти временные папки и проекты.

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


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

Эх-эх-эх... Откройте для себя систему контроля версий, что ли. Тогда не нужны будут все эти временные папки и проекты.

Тут вопрос не в системе контроля версий, а в том, что некоторые тулзы от хилых (в частности Planahead) курочат UCF файлы.

Это давно известный глюк. Меняют последовательность строк, убивают комментарии, добавляют какие-то свои ничем не обусловленные constraints.

Это обстоятельство надо иметь ввиду и при пользовании такими тулзами я обычно сохраняю оригинальный UCF под другим именем, потом делаю

изменения в нём и ручками переношу добавления из нового UCF в старый.

 

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


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

Тут вопрос не в системе контроля версий,
Вопрос именно в этом.

Если файл под контролем, то все эти приседания с сохранением оригинальных файлов не нужны. git diff (ну или svn diff) всё прекрасно показывают.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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