Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Actel проблема с цифровым автоматом
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Среды разработки - обсуждаем САПРы
plis
Доброго времени суток.
Возникла необходимость переехать с одной ПЛИС на другую, a3p600, опыта работы с libero soc нет, собрал проект, прописал ножки, запускаю, вижу что цифровой автомат перестает работать, по контрольным точкам вижу, что обработка данных остановилась, причем каждый раз, на разном байте данных, пришел к выводу что цифровой автомат уходит в неизвестное состояние.
Ни кто не сталкивался с похожими аномалиями?
Maverick
Цитата(plis @ Oct 11 2017, 18:52) *
Доброго времени суток.
Возникла необходимость переехать с одной ПЛИС на другую, a3p600, опыта работы с libero soc нет, собрал проект, прописал ножки, запускаю, вижу что цифровой автомат перестает работать, по контрольным точкам вижу, что обработка данных остановилась, причем каждый раз, на разном байте данных, пришел к выводу что цифровой автомат уходит в неизвестное состояние.
Ни кто не сталкивался с похожими аномалиями?

Сложно что-то сказать надо видеть хотя бы автомат и объяснения к нему подробнее по работе.
Что показывает симуляция и/или внутри схемный логический анализатор(signaltap как у altera)?
iosifk
Цитата(plis @ Oct 11 2017, 18:52) *
Доброго времени суток.
Возникла необходимость переехать с одной ПЛИС на другую, a3p600, опыта работы с libero soc нет, собрал проект, прописал ножки, запускаю, вижу что цифровой автомат перестает работать, по контрольным точкам вижу, что обработка данных остановилась, причем каждый раз, на разном байте данных, пришел к выводу что цифровой автомат уходит в неизвестное состояние.
Ни кто не сталкивался с похожими аномалиями?

Обычно 2 причины.
входной сигнал для автомата - асинхронный
в автомате нет состояния "по умолчанию"...

Если есть возможность, то сделайте в каждом состоянии автомата запись в регистр. и потом этот регистр пересылайте на хост... Или даже регистр автомата можно проверить на изменения за скажем 1 сек, и в случае отсутствия - пересылать на хост или хотя бы по SPI на какой-нибудь разъем. Ну или сделать "сторожевой таймер для автомата". Тогда увидите, в каком состоянии завис автомат..
Bad0512
Цитата(iosifk @ Oct 12 2017, 02:36) *
Ну или сделать "сторожевой таймер для автомата". Тогда увидите, в каком состоянии завис автомат..

Я конечно дико извиняюсь... Но по моему лечить кривой автомат с помощью вотчдога - очень плохая идея. Нужно искать источник проблемы, а не маскировать ошибку. Тем более что как правило все ошибки банальны - управление автоматом сигналами из другого клокового домена или даже вообще асинхронными по сути.
iosifk
Цитата(Bad0512 @ Oct 12 2017, 05:17) *
Я конечно дико извиняюсь... Но по моему лечить кривой автомат с помощью вотчдога - очень плохая идея. Нужно искать источник проблемы, а не маскировать ошибку. Тем более что как правило все ошибки банальны - управление автоматом сигналами из другого клокового домена или даже вообще асинхронными по сути.

Я же написал, что вызывает "зависание". А все что написано дальше - это не "лечить", а только для отладки, чтобы понять в каком именно месте автомат перестает работать... Я же не знаю, сколько состояний у автомата. Может их 10 или 20... А взять таймер и вставить в проект - минута дело... Ну и потом смотреть что и как. А может вообще автомат клинит вообще не пойми где... Такое тоже может быть. А если сохранять "заклиненное" и предыдущее состояния, то хоть как-то можно отследить... А может быть там число одновременно переключаемых выходов больше нормы? Или сбои по питанию? Причин может быть много...
plis
Цитата(iosifk @ Oct 11 2017, 22:36) *
Обычно 2 причины.
входной сигнал для автомата - асинхронный
в автомате нет состояния "по умолчанию"...

Если есть возможность, то сделайте в каждом состоянии автомата запись в регистр. и потом этот регистр пересылайте на хост... Или даже регистр автомата можно проверить на изменения за скажем 1 сек, и в случае отсутствия - пересылать на хост или хотя бы по SPI на какой-нибудь разъем. Ну или сделать "сторожевой таймер для автомата". Тогда увидите, в каком состоянии завис автомат..


Где и как зависает автомат я увидел, спасибо, это проблема с гонками, сейчас пытаюсь написать временные ограничения, но не могу найти русского описания как это сделать в libero soc, нашел для alter'ы, Либеро не все пропускает, говорит что некоторые команды составлены не правильно, при чем насколько я понял, они не нравится компилятору, а синтез нормально подходит, ни кто случайно не находил мануал как это сделать в Либеро, с пошаговой инструкцией для несведущих?
iosifk
Цитата(plis @ Oct 18 2017, 16:40) *
Где и как зависает автомат я увидел, спасибо, это проблема с гонками,...

Не должно быть "гонок" при синхронном проектировании. Все должно делаться только по клокам...
Либо Вы перемудрили с комбинационной логикой и ее надо убрать...
plis
Цитата(iosifk @ Oct 18 2017, 16:45) *
Не должно быть "гонок" при синхронном проектировании. Все должно делаться только по клокам...
Либо Вы перемудрили с комбинационной логикой и ее надо убрать...


Возможно, но сейчас меня больше интересует, как правильно написать временные ограничения для Либеро
yes
Цитата(plis @ Oct 11 2017, 18:52) *
Ни кто не сталкивался с похожими аномалиями?


а какие констрейны? что говорит designer про тайминг после разводки?

просто актеловские проазики гораздо тормознутее альтер/ксайлинсов и логика у них имеет более длинные пути из-за конструкции - поэтому, возможно, что то, что проходило нахаляву с ПЛИС другого типа, на проазиках заставит понапрягаться

Цитата(plis @ Oct 18 2017, 17:08) *
Возможно, но сейчас меня больше интересует, как правильно написать временные ограничения для Либеро

Либеро это оболочка (никогда ее не пользовал), основной инструмент это designer - должен вызываться из libero - в нем есть кнопка с констрейнами - так проще всего использовать

рекомендую путь симплифай->дизайнер, зачем нужно либеро - вообще непонятно
plis
Цитата(yes @ Oct 18 2017, 17:16) *
рекомендую путь симплифай->дизайнер, зачем нужно либеро - вообще непонятно


Мне этот путь тоже нравится, но как разделить ограничения для симплифай и дизайнер, после симплифай имена цепей меняются, как с этим работать?
yes
Цитата(plis @ Oct 19 2017, 14:00) *
Мне этот путь тоже нравится, но как разделить ограничения для симплифай и дизайнер, после симплифай имена цепей меняются, как с этим работать?

симплифай генерит ограничения для дизайнера из sdc, с учетом переименований
но если дизайн просто синхронный, то проще самому поддерживать два файла
plis
Цитата(yes @ Oct 19 2017, 17:41) *
симплифай генерит ограничения для дизайнера из sdc, с учетом переименований
но если дизайн просто синхронный, то проще самому поддерживать два файла


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