Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Непредсказуемые результаты синтеза?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Cont
Имеется проект для ПЛИС Virtex4 на базе встроенного процессора PowerPC.
По мере роста проекта и обвешивания процессора различной периферией
результаты синтеза(по-моему предположению) стали непредсказуемыми.

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

Констрейнты указаны на тактовый сигнал, на шины памяти, результаты синтеза удовлетворительные.
Процессорная система является подмодулем в ISE.
Еще возникает вопрос, нужно ли указывать констрейнты в самом EDK?

Как можно найти причину и решить эту проблему?
Дмитрий Мазунин
Какой версии у Вас ISE ?
Почему не собираете прямо в EDK ?
Cont
ISE 11.5
Когда pcore разрастается до больших размеров, включает в себя много файлов и корок из coregen, работать в EDK становится очень сложно
Mad_max
Вы уверены, что блочная память под загрузчик расположена в соответствие с system_bd.bmm?

Дмитрий Мазунин
Если XMD не цепляется, БРАМ не при чем.
Бывало такое, основная причина - не стартуют DCM. Проверьте чипскопом LOCKи DCM, на них завязан ресет проца. Проверьте конфиграцию и режимы работы DCM.
Попробуйте по-другому построить блок формирования сетки частот.

100% рецепта нет, но мы выходили из ситуации таким образом.

PS кореген не рекомендую использовать, очень избыточно и непонятно что внутри. Неудобно в EDK.
Cont
Спасибо за советы!
1) С блочной памятью все в порядке
2) DCM обязательно проверю завтра на роботе.
Под сеткой частот Вы понимаете частоты, заводимые на PLB/CPU?
Если действительно дело в DCM то какие могут быть альтернативные варианты настройки DCM и по какой причине, настройки предлагаемые по-умолчанию в EDK не работают?
disel
Цитата(Cont @ Jul 8 2010, 20:49) *
Если действительно дело в DCM то какие могут быть альтернативные варианты настройки DCM и по какой причине, настройки предлагаемые по-умолчанию в EDK не работают?


По причине того, что частоты (входные, выходные) находятся на границе допустимого диапазона или за его пределами. EDK такое допускает ( по крайней мере 10,3). У V4 все достаточно грустно с DCM, пределы частотных диапазонов его работы очень маленькие. Также если частота на входе DCM отсутствует при включении питания, то он может не лочиться, или же лочиться на произвольной частоте. Для корректной работы в этом случае нужен ресет.
Дмитрий Мазунин
Да, согласен с предыдущим постом.
Автор темы, пожалуйста, отпишитесь - как решилась Ваша проблема.
Cont
Извиняюсь за задержку. Проблему решить не удалось. DCM лочиться и частота на его выходе правильная. В чем же причина?
Koluchiy
По симптомам я бы предположил 50% вероятности проблем с матчастью.
Если проект не перекомпилировать, а одной и той же прошивкой ("рабочей") прошить несколько раз - запускаться будет стабильно?
SFx
А попробуйте загрузить старую прошивку, может проблема в железе ?
Cont
Цитата
Если проект не перекомпилировать, а одной и той же прошивкой ("рабочей") прошить несколько раз - запускаться будет стабильно?

Да, запускается стабильно.
Дмитрий Мазунин
Вы проверили - ВСЕ DCM, задействованные в проекте, лочатся ?
Нет ли предупреждений по частотам DCM при сборке проекта ?
SFx
неплохо бы Timing Error глянуть wink.gif
Cont
DCM лочаться.
Единственное, я не написал раньше(а надо было бы), что у меня тактовый сигнал заходит не на global clock input, а на user pin. Возможно из-за этого.

DCM_AUTOCALIBRATION_CPU/clock_generator_0/clock_generator_0/DCM0_INST/Using_D
CM_ADV.DCM_ADV_INST/CPU/clock_generator_0/clock_generator_0/DCM0_INST/Using_D
CM_ADV.DCM_ADV_INST/cd/CLK<6> is sourced by a combinatorial pin. This is not
good design practice. Use the CE pin to control the loading of data into the
flip-flop.

Ошибка уже не поправимая, но с ней как-то нужно бороться.
Koluchiy
Доводилось работать с платой, где тактовые приходили куда попало.
Ничего, работало вроде...

На мой взгляд, гораздо критичнее, чтобы все выходные сигналы DCM (с которых собственно работает схема) были подключены через BUFG.
Если так не сделать, то глюки возможны, даже если конкретный тактовый "питает" относительно немного логики.
И констрейны здесь не очень помогают (по крайней мере, констрейны на период клока).
Cont
Проблема из той же оперы:
не работает конечный автомат.
Начинаю искать причину: подключаю
к выходам автомата schipscope.
Автомат начинает работать!
Удаляю из проекта schipscope -
автомат не работает!
des00
Цитата(Cont @ Sep 20 2010, 03:50) *
Начинаю искать причину: подключаю
к выходам автомата schipscope.
Автомат начинает работать!
Удаляю из проекта schipscope -
автомат не работает!

асинхра на входах управления?
Cont
Асинхра есть, но ее я протактировал через триггер.
des00
Цитата(Cont @ Sep 20 2010, 12:29) *
Асинхра есть, но ее я протактировал через триггер.

а надо было через два минимум
YVA
Цитата(Cont @ Jul 8 2010, 01:08) *
Имеется проект для ПЛИС Virtex4 на базе встроенного процессора PowerPC.
По мере роста проекта и обвешивания процессора различной периферией
результаты синтеза(по-моему предположению) стали непредсказуемыми.

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

Констрейнты указаны на тактовый сигнал, на шины памяти, результаты синтеза удовлетворительные.
Процессорная система является подмодулем в ISE.
Еще возникает вопрос, нужно ли указывать констрейнты в самом EDK?

Как можно найти причину и решить эту проблему?

Это не простая задача, к томуже мало информации:
какая частота на входе?
сколько частот используется для синхронизации проекта и их значения?
сколько DСM и синхронизируется ли их запуск?
сколько модулей на шине и сколько из них с своим интерфейсом?
сколько модулей с возможностью их чтения и не используются ли при этом BUFT?
есть ли модули с выработкой сигналов прерывания и сколько?
используется ли DMA?
память внешняя или BRAM, если внешняя какого типа?
используется ли FPU и CACHE?
есть ли констрейнты на все тактовые сигналы или только на один и при этом на входной?

В зависимости от ответов потребуется дальнейшая конкретизация.
Как получилось что системный клок не глобальный и нельзя использовать отладчик?
Такой проект как мне кажется лучше похоронить иначе или рак мозга будет или станеш
супер специалистом.
В любом случае если нет возможности залезть внутрь, необходимо тщательно и по возможности
полно задать ограничения на все критичные элементы проекта с учётом приоритетов (имеются в виду приоритеты
выполнения операторов в .ucf).
Тогда вы получите максимум информции в Timing Constraints и хотя бы так сможете оценить
критичные задержки и найти решение. Т.к. исходя из "По мере роста проекта и обвешивания процессора различной периферией результаты синтеза(по-моему предположению) стали непредсказуемыми." это
оновная причина.
Хотя как мне кажется ещё могут быть версии.
Люди подскажут.

По поводу констрейнов в EDK:
Если проект ISE, в версиях до 9-ой было без разницы использовался только ISE-овый .ucf
с 9-ой я не работал, а вот начиная с 10 - ой ISE стал цеплять EDK-й .ucf и информацию прописанную
в нём переносить в ISE в файл <имя файла>.ncf и использовать в проекте.
Но как мне показалось исходя из Timing Constraints приоритет остаётся за ISE .ucf.
Возможно кто-то подробнее сможет осветить данный вопрос.





YVA
Цитата(YVA @ Sep 21 2010, 11:58) *
Это не простая задача, к томуже мало информации:
какая частота на входе?
сколько частот используется для синхронизации проекта и их значения?
сколько DСM и синхронизируется ли их запуск?
сколько модулей на шине и сколько из них с своим интерфейсом?
сколько модулей с возможностью их чтения и не используются ли при этом BUFT?
есть ли модули с выработкой сигналов прерывания и сколько?
используется ли DMA?
память внешняя или BRAM, если внешняя какого типа?
используется ли FPU и CACHE?
есть ли констрейнты на все тактовые сигналы или только на один и при этом на входной?

В зависимости от ответов потребуется дальнейшая конкретизация.
Как получилось что системный клок не глобальный и нельзя использовать отладчик?
Такой проект как мне кажется лучше похоронить иначе или рак мозга будет или станеш
супер специалистом.
В любом случае если нет возможности залезть внутрь, необходимо тщательно и по возможности
полно задать ограничения на все критичные элементы проекта с учётом приоритетов (имеются в виду приоритеты
выполнения операторов в .ucf).
Тогда вы получите максимум информции в Timing Constraints и хотя бы так сможете оценить
критичные задержки и найти решение. Т.к. исходя из "По мере роста проекта и обвешивания процессора различной периферией результаты синтеза(по-моему предположению) стали непредсказуемыми." это
оновная причина.
Хотя как мне кажется ещё могут быть версии.
Люди подскажут.

По поводу констрейнов в EDK:
Если проект ISE, в версиях до 9-ой было без разницы использовался только ISE-овый .ucf
с 9-ой я не работал, а вот начиная с 10 - ой ISE стал цеплять EDK-й .ucf и информацию прописанную
в нём переносить в ISE в файл <имя файла>.ncf и использовать в проекте.
Но как мне показалось исходя из Timing Constraints приоритет остаётся за ISE .ucf.
Возможно кто-то подробнее сможет осветить данный вопрос.

Извините за словоблудие Alex77 сделал мне замечание но я тут успел
влезть до того как прочитал его замечание.
Постараюсь больше не мусорить.

Cont
1)сколько частот используется для синхронизации проекта и их значения?
Два тактовых сигнала заходят в ПЛИС: 50Mhz и 65Mhz.
50 идет на вход EDK-ой системы, где данный сигнал с помощью DCM(который мне вставил сам визард) умножается на 2 и на 4. (100 Mhz на шину PLB, а 200 на CPU). 65Mhz используется в модуле(там задействован еще один DCM), который вне EDK. Но эта же частота является входом в модуль на шине PLB. На этой частоте принимаются данные. С PLB синхронизация выполнена с помощью FIFO.

2)сколько DСM и синхронизируется ли их запуск?
И того - DCM в EDK и еще один вне EDK. Запуск никак не синхронизируется.

3) сколько модулей на шине и сколько из них с своим интерфейсом?
на шине 11 модулей. из них 3 - custom.

4) сколько модулей с возможностью их чтения и не используются ли при этом BUFT?
все с возможностью чтения. BUFT в моих модулях нет, а вот в Xilinx-их скорее всего есть.

5) есть ли модули с выработкой сигналов прерывания и сколько?
есть. не думаю, что проблема в этом. проблемы с зависаниями по причине прерываний я успешно не решил,
( до CPU то ведь при этом можно достучаться с отладчиком)

6) используется ли DMA?
нет

7) память внешняя или BRAM, если внешняя какого типа?
Внешняя DDR 256Mbit, и внутренняя BRAM 64k

8)используется ли FPU и CACHE?
Используются

9)есть ли констрейнты на все тактовые сигналы или только на один и при этом на входной?
только на входной. Наверное, вот здесь нужно что-то доработать.

Как получилось что системный клок не глобальный и нельзя использовать отладчик?
это ошибка. отладчик использовать можно, без него никак, проблема в том, что после перекомпиляции часто невозможно подключиться с CPU.

Такой проект как мне кажется лучше похоронить иначе или рак мозга будет или станеш
супер специалистом.

Похоронить никак нельзя, остается только последний вариант! :-)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.