|
|
  |
Нестабильные результаты altera EP3C55F, Нестабильные результаты altera EP3C55F |
|
|
|
Jun 25 2012, 10:41
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 27-04-05
Из: Spb, Russia
Пользователь №: 4 544

|
Коллеги, буду признателен, если подскажете как решить проблему:
получаю нестабильные результаты при имплементацмм дизайна в альтеровскую FPGA EP3C55F. Т.е., например, имплементирую прошивку с подключенным сигналтапом, она работает отлично, отключаю сигналтап, она перестает работать. Или вношу изменения в обдин блок, а отрубается другой, не связанный с ним.
Работаю в 9м квартусе. Дизайн написан на верилоге. Цепи сброса описаны как асинхронные (т.е. always @( posedge clk or posedge rst) Максимальная частота - 125Мгц. Имеются тактовые домены с более низкими частотами.
Возможно, кто-то из вас сталкивался с такой проблемой и знает, как это "лечится"?
|
|
|
|
|
Jun 25 2012, 11:13
|

Лентяй
     
Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843

|
Цитата(FAE @ Jun 25 2012, 14:41)  Возможно, кто-то из вас сталкивался с такой проблемой и знает, как это "лечится"? Лечится изгнанием асинхронщины из проекта и грамотным CDC. Используйте TimeQuest, он покажет, где у Вас узкие места. Также, перед добавлением SignalTap'а, включите полный режим инкрементальной компиляции.
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Jun 25 2012, 11:51
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 27-04-05
Из: Spb, Russia
Пользователь №: 4 544

|
Цитата(Stewart Little @ Jun 25 2012, 15:13)  Лечится изгнанием асинхронщины из проекта и грамотным CDC. Используйте TimeQuest, он покажет, где у Вас узкие места. Также, перед добавлением SignalTap'а, включите полный режим инкрементальной компиляции. Спасибо. Режим инкрементальной компиляции у меня включен всегда. Таймквестом еще не пользовался, попробую... А насчет асинхронности можно уточнить: вы об асинхронном сбросе или о чем-то еще? Может быть мне лучше использовать синхронный сброс? Кстати, когда подключаю signaltap, результаты почему-то получаются лучше, чем без него. Для меня это странно.
Сообщение отредактировал FAE - Jun 25 2012, 11:53
|
|
|
|
|
Jun 25 2012, 14:47
|

Лентяй
     
Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843

|
Цитата(FAE @ Jun 25 2012, 15:51)  Режим инкрементальной компиляции у меня включен всегда. Ох, терзают меня смутные сомнения, что Вы таки заблуждаетесь... Цитата(FAE @ Jun 25 2012, 15:51)  А насчет асинхронности можно уточнить: вы об асинхронном сбросе или о чем-то еще? Может быть мне лучше использовать синхронный сброс? Я и о том, и о другом. Как правило, асинхронный сброс используется только для организации глобального сброса всего проекта целиком. Использовать асинхронный сброс для формирования сигналов - моветон. Ну и от прочих приемов, которые использовались на рассыпной логике, нужно отказываться. Цитата(FAE @ Jun 25 2012, 15:51)  Кстати, когда подключаю signaltap, результаты почему-то получаются лучше, чем без него. Для меня это странно. Вот это говорит о том, что инкрементальная компиляция у Вас не используется. Иначе бы результат был всегда плохой, не зависимо от подключения SignalTap'а
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Jun 26 2012, 08:49
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 27-04-05
Из: Spb, Russia
Пользователь №: 4 544

|
Цитата(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 работы ...
Сообщение отредактировал FAE - Jun 26 2012, 09:17
|
|
|
|
|
Jun 26 2012, 11:44
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(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Эти первые три пункта работы на несколько часов. С последним можете провозиться от нуля до бесконечности.
|
|
|
|
|
Jun 26 2012, 12:33
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 27-04-05
Из: Spb, Russia
Пользователь №: 4 544

|
Цитата(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Эти первые три пункта работы на несколько часов. С последним можете провозиться от нуля до бесконечности. Спасибо, нашел сам, уже читаю ...
|
|
|
|
|
Jun 26 2012, 19:21
|
Знающий
   
Группа: Свой
Сообщений: 702
Регистрация: 8-06-06
Пользователь №: 17 871

|
С альтерой не работал, но на Xilinx подобные ужасы нашего городка возникали, если: - ошибочно заданы constraint-ы, например, занижена или не указана частота внешнего тактового сигнала; - неверно сделаны переходы между тактовыми доменами; - тактовый сигнал низкочастотного домена сделан на пользовательской логике (счетчик/делитель) в высокочастотном домене  - существуют локальные асинхронные сигналы сброса. Как правило эти вызванные асинхронностью эффекты бывают весьма плавающими, т.к. реальная схема зависит от того, "как карта ляжет". И, нередко, подключаемый Chipscope (аналог SignalTap) вместо выявления успешно вылечивал проблему
|
|
|
|
|
Jul 2 2012, 07:06
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 27-04-05
Из: Spb, Russia
Пользователь №: 4 544

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