|
|
  |
Не работает отлаженный код, При малейшем изменении проекта |
|
|
|
May 19 2011, 13:51
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
Исходные данные: - ПЛИС Xilinx Virtex4, среда ISE 12.2 - мини проект состоит из 8-ми больших FIR - фильтров и небольшой программы на vhdl по обработке выходных данных фильтров. Фильтры занимают процентов так 70 ресурсов ПЛИС. - работоспособность этого мини проекта полностью проверена в моделсиме - непосредственно при загрузке в ПЛИС этот проект не заработал. При помощи логического анализатора и многократного переписывания кода (код изначально без ошибок - просто разными способами одно и тоже делается) удалось добиться стабильной правильной работы мини проекта.
Суть проблемы: - при установке моего проекта в более крупный проект - он опять перестает работать - более того - часть сигналов выведены на контрольные контакты платы и при удалении любого из этих сигналов из проекта с последующей перекомпиляцией - проект снова перестает работать. - при отладке есть ощущение что ходишь по кругу - исправишь что-то в одном куске коде, перестает правильно работать другой кусок - и так до бесконечности
Подозреваю что все это результат неких "гонок" сигналов, каких-то проблем синхронизации и пр. в результате значительного заполнения ресурсов ПЛИС. Код полностью работоспособен, ибо при уменьшении количества фильтров проект начинает стабильно работать.
Вопросы к форумчанам: 1. Из-за чего возможно такое поведение проекта 2. Возможно ли победить данную проблему путем настроек компилятора 3. Возможно ли сохранить конфигурацию аппаратных средств ПЛИС после единственной работоспособной компиляции проекта и вставить ее уже в более крупный проект.
|
|
|
|
|
May 19 2011, 13:58
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(TABKP @ May 19 2011, 08:51)  Код полностью работоспособен код совсем не работоспособен Цитата 1. Из-за чего возможно такое поведение проекта 2. Возможно ли победить данную проблему путем настроек компилятора 3. Возможно ли сохранить конфигурацию аппаратных средств ПЛИС после единственной работоспособной компиляции проекта и вставить ее уже в более крупный проект. 1. асинхра/не ложиться в констрейны 2. только если причина в констрейнах 3. да, но вам это не поможет
--------------------
|
|
|
|
|
May 19 2011, 14:03
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(TABKP @ May 19 2011, 17:51)  1. Из-за чего возможно такое поведение проекта 2. Возможно ли победить данную проблему путем настроек компилятора 3. Возможно ли сохранить конфигурацию аппаратных средств ПЛИС после единственной работоспособной компиляции проекта и вставить ее уже в более крупный проект. 1. Проверьте проект на наличие временных ошибок 2. Можно, но не всегда. Для фильтров лучше применить конвейер, т.е. разделить времненной путь от регистра к регистру 3. Можно создать и закрепить нетлист отдельных частей и использовать его со всеми характеристиками в топовом модуле PS Все вопросы обсуждались на форуме много раз, воспользуйтесь поиском... Удалите пожалуйста мой пост, а то три раза уже одно и тоже примерно написали, сам удалить не смог...
Сообщение отредактировал bogaev_roman - May 19 2011, 14:06
|
|
|
|
|
May 19 2011, 14:10
|
Местный
  
Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399

|
Цитата(TABKP @ May 19 2011, 17:51)  и небольшой программы на vhdl по обработке выходных данных фильтров Наверное в этом проблема? Вы "программу" писали? У Вас есть какой-то автоматизированный отчет (отчет синтезатора) о количестве тактовых сигналов в мини-проекте? Сколько их?
|
|
|
|
|
May 25 2011, 16:12
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130

|
Благодарю и прошу прощения за задержку с ответом. Свой мини проект я победил. Достаточно было убрать ibuf с одной из цепей и все заработало стабильно. Временных ошибок не было - это проверил в первую очередь. Клоков в проекте действительно несколько, но весь проект синхронный. В UCF файле на каждую клоковую цепь стояла запись вида NET xxx PERIOD=19.56ns HIGH 50%. Обычно этого хватало. А здесь видимо сказывалось соотношение фаз клоков.
Крупный проект с моим куском тоже работает, но правда на 20-30 раз включения питания работает не стабильно. В самом проекте разных клоков еще больше и влияние рассогласования их фаз сильнее. Поэтому сижу читаю мануал Xilinx Timing Constraints User Guide. Надо хорошенько разобраться.
|
|
|
|
|
May 26 2011, 20:47
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
Важные ключевые слова crossclock и metastability.
На самом деле, кроме множества клоков и возможной метастабильности регистров при пересечении данными их границ, есть не менее популярный момент - reset. Если он асинхронный, то его обычно не учитывает timing analyzer, предполагается, что первый фронт клока случается через достаточное время после снятия сброса. Аргументированно доказать, что это всегда так способен не каждый разработчик, даже если его явно об этом попросить. Проблема может проясниться даже на одноклоковой схеме, если исходный сигнал reset пропустить через регистр, а уже потом раздать всем (через глобальную сеть и через что попало будет по разному интересно). В целом этот регистр не обязателен, но без него нужно не забыть описать reset в констрейнах.
Это была ассоциация на "20-30 раз включения питания". Удачи.
|
|
|
|
|
May 26 2011, 22:01
|
Местный
  
Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399

|
Цитата(TABKP @ May 25 2011, 20:12)  В самом проекте разных клоков еще больше и влияние рассогласования их фаз сильнее. Поэтому сижу читаю мануал Xilinx Timing Constraints User Guide. Надо хорошенько разобраться. Раз так много клоков, значит наверное есть и переходы между "доменами". Предпринимаются ли специальные меры для перехода из домена в домен? Например - везде связь идет через FIFO, и флаги empty/full дополнительно тактируются в соответствующем домене.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|