Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Нестабильные результаты altera EP3C55F
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
FAE
Коллеги, буду признателен, если подскажете как решить проблему:

получаю нестабильные результаты при имплементацмм дизайна в альтеровскую FPGA EP3C55F.
Т.е., например, имплементирую прошивку с подключенным сигналтапом, она работает отлично,
отключаю сигналтап, она перестает работать.
Или вношу изменения в обдин блок, а отрубается другой, не связанный с ним.

Работаю в 9м квартусе.
Дизайн написан на верилоге. Цепи сброса описаны как асинхронные (т.е. always @( posedge clk or posedge rst)
Максимальная частота - 125Мгц.
Имеются тактовые домены с более низкими частотами.

Возможно, кто-то из вас сталкивался с такой проблемой и знает, как это "лечится"?
Stewart Little
Цитата(FAE @ Jun 25 2012, 14:41) *
Возможно, кто-то из вас сталкивался с такой проблемой и знает, как это "лечится"?

Лечится изгнанием асинхронщины из проекта и грамотным CDC.
Используйте TimeQuest, он покажет, где у Вас узкие места.
Также, перед добавлением SignalTap'а, включите полный режим инкрементальной компиляции.
FAE
Цитата(Stewart Little @ Jun 25 2012, 15:13) *
Лечится изгнанием асинхронщины из проекта и грамотным CDC.
Используйте TimeQuest, он покажет, где у Вас узкие места.
Также, перед добавлением SignalTap'а, включите полный режим инкрементальной компиляции.


Спасибо.

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

Кстати, когда подключаю signaltap, результаты почему-то получаются лучше, чем без него. Для меня это странно.
Stewart Little
Цитата(FAE @ Jun 25 2012, 15:51) *
Режим инкрементальной компиляции у меня включен всегда.

Ох, терзают меня смутные сомнения, что Вы таки заблуждаетесь...

Цитата(FAE @ Jun 25 2012, 15:51) *
А насчет асинхронности можно уточнить: вы об асинхронном сбросе или о чем-то еще?
Может быть мне лучше использовать синхронный сброс?

Я и о том, и о другом. Как правило, асинхронный сброс используется только для организации глобального сброса всего проекта целиком. Использовать асинхронный сброс для формирования сигналов - моветон.
Ну и от прочих приемов, которые использовались на рассыпной логике, нужно отказываться.

Цитата(FAE @ Jun 25 2012, 15:51) *
Кстати, когда подключаю signaltap, результаты почему-то получаются лучше, чем без него. Для меня это странно.

Вот это говорит о том, что инкрементальная компиляция у Вас не используется. Иначе бы результат был всегда плохой, не зависимо от подключения SignalTap'а sm.gif
novartis
По поводу асинхронщины почитайте статью http://iosifk.narod.ru/hdl_coding/hdl_coding_12_kit_2_09.pdf, мне очень помогло, и вообще на сайте iosifk.narod.ru много чего интересного можно найти).
iosifk
Цитата(novartis @ Jun 26 2012, 08:33) *
...мне очень помогло, и вообще на сайте iosifk.narod.ru много чего интересного можно найти).

Спасибо!
FAE
Цитата(novartis @ Jun 26 2012, 08:33) *
По поводу асинхронщины почитайте статью http://iosifk.narod.ru/hdl_coding/hdl_coding_12_kit_2_09.pdf, мне очень помогло, и вообще на сайте iosifk.narod.ru много чего интересного можно найти).


Спасибо.
Сайт уважаемого Иосифа Григорьевича мне известен. Данную статью я читал. Кроме того, у него есть чудесный рассказ "Записки инженера" о об испытаниях Бурана. Читал и одновременно смеялся и плакал.

Спасибо за разъяснения.
План дальнейших действий:
1. Переписать сорцы под синхронный сброс
2. Проверить, включена ли инкрементальная компиляция. Если нет - включить
3. Написать корректный sdc файл и подключить таймквест.
4. Используя таймквест Убрать узкие места.

Где-то месяца на 2 работы ...
bogaev_roman
Цитата(FAE @ Jun 26 2012, 12:49) *
1. Переписать сорцы под синхронный сброс
2. Проверить, включена ли инкрементальная компиляция. Если нет - включить
3. Написать корректный sdc файл и подключить таймквест.
4. Используя таймквест Убрать узкие места.

1. не начинайте холивар по поводу синхронного-асинхронного сброса, если это глобальный сброс - оставьте
2. перевод про инкрементальную компиляцию есть здесь - http://www.naliwator.narod.ru/
если коротко и быстро - использовать галку в incremental compilation -> rapid recompile -> on ну и другие настройки
3. как грамотно пользоваться таймквестом начало здесь http://embedders.org/content/timequest-dly...hast-1-vvedenie
Эти первые три пункта работы на несколько часов. С последним можете провозиться от нуля до бесконечности.
FAE
Цитата(bogaev_roman @ Jun 26 2012, 15:44) *
1. не начинайте холивар по поводу синхронного-асинхронного сброса, если это глобальный сброс - оставьте

Не до холивара, но часть модулей переписать придется, ибо у них сброс нелокальный.

Цитата(bogaev_roman @ Jun 26 2012, 15:44) *
2. перевод про инкрементальную компиляцию есть здесь - http://www.naliwator.narod.ru/
если коротко и быстро - использовать галку в incremental compilation -> rapid recompile -> on ну и другие настройки

В 9м квартусе я такой галки не увидел. Там только два кружочка: "off" и "full incremental compilation".
Имеет ли смысл перейти на более новый квартус?


Цитата(bogaev_roman @ Jun 26 2012, 15:44) *
3. как грамотно пользоваться таймквестом начало здесь http://embedders.org/content/timequest-dly...hast-1-vvedenie
Эти первые три пункта работы на несколько часов. С последним можете провозиться от нуля до бесконечности.

Спасибо, нашел сам, уже читаю ...
Flood
С альтерой не работал, но на Xilinx подобные ужасы нашего городка возникали, если:
- ошибочно заданы constraint-ы, например, занижена или не указана частота внешнего тактового сигнала;
- неверно сделаны переходы между тактовыми доменами;
- тактовый сигнал низкочастотного домена сделан на пользовательской логике (счетчик/делитель) в высокочастотном домене sm.gif
- существуют локальные асинхронные сигналы сброса.

Как правило эти вызванные асинхронностью эффекты бывают весьма плавающими, т.к. реальная схема зависит от того, "как карта ляжет". И, нередко, подключаемый Chipscope (аналог SignalTap) вместо выявления успешно вылечивал проблему sm.gif
FAE
Цитата(Flood @ Jun 26 2012, 23:21) *
С альтерой не работал, но на Xilinx подобные ужасы нашего городка возникали, если:
- ошибочно заданы constraint-ы, например, занижена или не указана частота внешнего тактового сигнала;
- неверно сделаны переходы между тактовыми доменами;
- тактовый сигнал низкочастотного домена сделан на пользовательской логике (счетчик/делитель) в высокочастотном домене sm.gif
- существуют локальные асинхронные сигналы сброса.

Как правило эти вызванные асинхронностью эффекты бывают весьма плавающими, т.к. реальная схема зависит от того, "как карта ляжет". И, нередко, подключаемый Chipscope (аналог SignalTap) вместо выявления успешно вылечивал проблему sm.gif

С альтерой тоже самое. К сожалению, дизайн достался мне в наследство, начал разбираться, нашел много некорректностей. Потихонечку убираю ...
Реально помогает TimeQuest. Спасибо всем откликнувшимся. Советы были полезными.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.