реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Не работает отлаженный код, При малейшем изменении проекта
TABKP
сообщение May 19 2011, 13:51
Сообщение #1


Участник
*

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



Исходные данные:
- ПЛИС Xilinx Virtex4, среда ISE 12.2
- мини проект состоит из 8-ми больших FIR - фильтров и небольшой программы на vhdl по обработке выходных данных фильтров. Фильтры занимают процентов так 70 ресурсов ПЛИС.
- работоспособность этого мини проекта полностью проверена в моделсиме
- непосредственно при загрузке в ПЛИС этот проект не заработал. При помощи логического анализатора и многократного переписывания кода (код изначально без ошибок - просто разными способами одно и тоже делается) удалось добиться стабильной правильной работы мини проекта.

Суть проблемы:
- при установке моего проекта в более крупный проект - он опять перестает работать
- более того - часть сигналов выведены на контрольные контакты платы и при удалении любого из этих сигналов из проекта с последующей перекомпиляцией - проект снова перестает работать.
- при отладке есть ощущение что ходишь по кругу - исправишь что-то в одном куске коде, перестает правильно работать другой кусок - и так до бесконечности

Подозреваю что все это результат неких "гонок" сигналов, каких-то проблем синхронизации и пр. в результате значительного заполнения ресурсов ПЛИС. Код полностью работоспособен, ибо при уменьшении количества фильтров проект начинает стабильно работать.

Вопросы к форумчанам:
1. Из-за чего возможно такое поведение проекта
2. Возможно ли победить данную проблему путем настроек компилятора
3. Возможно ли сохранить конфигурацию аппаратных средств ПЛИС после единственной работоспособной компиляции проекта и вставить ее уже в более крупный проект.
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение May 19 2011, 13:58
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



1. Такое вполне возможно, если не выполняются временные ограничения. Проект полнстью синхронный?
2. Победить с помощью компилятора только если попробуете изменить стратегию проекта.
3. Сохранить возможно - нужно найти нетлист после place&route.

Сообщение отредактировал AlphaMil - May 19 2011, 14:01
Go to the top of the page
 
+Quote Post
des00
сообщение May 19 2011, 13:58
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(TABKP @ May 19 2011, 08:51) *
Код полностью работоспособен

код совсем не работоспособен

Цитата
1. Из-за чего возможно такое поведение проекта
2. Возможно ли победить данную проблему путем настроек компилятора
3. Возможно ли сохранить конфигурацию аппаратных средств ПЛИС после единственной работоспособной компиляции проекта и вставить ее уже в более крупный проект.

1. асинхра/не ложиться в констрейны
2. только если причина в констрейнах
3. да, но вам это не поможет


--------------------
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение May 19 2011, 14:03
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Bad0512
сообщение May 19 2011, 14:03
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



UCF файл - в студию!
Go to the top of the page
 
+Quote Post
Джеймс
сообщение May 19 2011, 14:10
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399



Цитата(TABKP @ May 19 2011, 17:51) *
и небольшой программы на vhdl по обработке выходных данных фильтров

Наверное в этом проблема? Вы "программу" писали?

У Вас есть какой-то автоматизированный отчет (отчет синтезатора) о количестве тактовых сигналов в мини-проекте? Сколько их?
Go to the top of the page
 
+Quote Post
TABKP
сообщение May 25 2011, 16:12
Сообщение #7


Участник
*

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



Благодарю и прошу прощения за задержку с ответом.
Свой мини проект я победил. Достаточно было убрать ibuf с одной из цепей и все заработало стабильно.
Временных ошибок не было - это проверил в первую очередь.
Клоков в проекте действительно несколько, но весь проект синхронный. В UCF файле на каждую клоковую цепь стояла запись вида NET xxx PERIOD=19.56ns HIGH 50%. Обычно этого хватало. А здесь видимо сказывалось соотношение фаз клоков.

Крупный проект с моим куском тоже работает, но правда на 20-30 раз включения питания работает не стабильно. В самом проекте разных клоков еще больше и влияние рассогласования их фаз сильнее. Поэтому сижу читаю мануал Xilinx Timing
Constraints User Guide. Надо хорошенько разобраться.
Go to the top of the page
 
+Quote Post
Maverick
сообщение May 25 2011, 18:10
Сообщение #8


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(TABKP @ May 25 2011, 19:12) *
Благодарю и прошу прощения за задержку с ответом.
Свой мини проект я победил. Достаточно было убрать ibuf с одной из цепей и все заработало стабильно.
Временных ошибок не было - это проверил в первую очередь.
Клоков в проекте действительно несколько, но весь проект синхронный. В UCF файле на каждую клоковую цепь стояла запись вида NET xxx PERIOD=19.56ns HIGH 50%. Обычно этого хватало. А здесь видимо сказывалось соотношение фаз клоков.

Крупный проект с моим куском тоже работает, но правда на 20-30 раз включения питания работает не стабильно. В самом проекте разных клоков еще больше и влияние рассогласования их фаз сильнее. Поэтому сижу читаю мануал Xilinx Timing
Constraints User Guide. Надо хорошенько разобраться.

либо нарушена синхронизация между различными клоками или есть асинхронщина
в любом случае нужно править/смотреть само описание


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение May 26 2011, 20:47
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Важные ключевые слова crossclock и metastability.

На самом деле, кроме множества клоков и возможной метастабильности регистров при пересечении данными их границ, есть не менее популярный момент - reset.
Если он асинхронный, то его обычно не учитывает timing analyzer, предполагается, что первый фронт клока случается через достаточное время после снятия сброса. Аргументированно доказать, что это всегда так способен не каждый разработчик, даже если его явно об этом попросить.
Проблема может проясниться даже на одноклоковой схеме, если исходный сигнал reset пропустить через регистр, а уже потом раздать всем (через глобальную сеть и через что попало будет по разному интересно).
В целом этот регистр не обязателен, но без него нужно не забыть описать reset в констрейнах.

Это была ассоциация на "20-30 раз включения питания". Удачи.
Go to the top of the page
 
+Quote Post
Джеймс
сообщение May 26 2011, 22:01
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399



Цитата(TABKP @ May 25 2011, 20:12) *
В самом проекте разных клоков еще больше и влияние рассогласования их фаз сильнее. Поэтому сижу читаю мануал Xilinx Timing Constraints User Guide. Надо хорошенько разобраться.

Раз так много клоков, значит наверное есть и переходы между "доменами". Предпринимаются ли специальные меры для перехода из домена в домен?
Например - везде связь идет через FIFO, и флаги empty/full дополнительно тактируются в соответствующем домене.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 10:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01454 секунд с 7
ELECTRONIX ©2004-2016