FAE 0 25 июня, 2012 Опубликовано 25 июня, 2012 · Жалоба Коллеги, буду признателен, если подскажете как решить проблему: получаю нестабильные результаты при имплементацмм дизайна в альтеровскую FPGA EP3C55F. Т.е., например, имплементирую прошивку с подключенным сигналтапом, она работает отлично, отключаю сигналтап, она перестает работать. Или вношу изменения в обдин блок, а отрубается другой, не связанный с ним. Работаю в 9м квартусе. Дизайн написан на верилоге. Цепи сброса описаны как асинхронные (т.е. always @( posedge clk or posedge rst) Максимальная частота - 125Мгц. Имеются тактовые домены с более низкими частотами. Возможно, кто-то из вас сталкивался с такой проблемой и знает, как это "лечится"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 25 июня, 2012 Опубликовано 25 июня, 2012 · Жалоба Возможно, кто-то из вас сталкивался с такой проблемой и знает, как это "лечится"? Лечится изгнанием асинхронщины из проекта и грамотным CDC. Используйте TimeQuest, он покажет, где у Вас узкие места. Также, перед добавлением SignalTap'а, включите полный режим инкрементальной компиляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FAE 0 25 июня, 2012 Опубликовано 25 июня, 2012 (изменено) · Жалоба Лечится изгнанием асинхронщины из проекта и грамотным CDC. Используйте TimeQuest, он покажет, где у Вас узкие места. Также, перед добавлением SignalTap'а, включите полный режим инкрементальной компиляции. Спасибо. Режим инкрементальной компиляции у меня включен всегда. Таймквестом еще не пользовался, попробую... А насчет асинхронности можно уточнить: вы об асинхронном сбросе или о чем-то еще? Может быть мне лучше использовать синхронный сброс? Кстати, когда подключаю signaltap, результаты почему-то получаются лучше, чем без него. Для меня это странно. Изменено 25 июня, 2012 пользователем FAE Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 25 июня, 2012 Опубликовано 25 июня, 2012 · Жалоба Режим инкрементальной компиляции у меня включен всегда. Ох, терзают меня смутные сомнения, что Вы таки заблуждаетесь... А насчет асинхронности можно уточнить: вы об асинхронном сбросе или о чем-то еще? Может быть мне лучше использовать синхронный сброс? Я и о том, и о другом. Как правило, асинхронный сброс используется только для организации глобального сброса всего проекта целиком. Использовать асинхронный сброс для формирования сигналов - моветон. Ну и от прочих приемов, которые использовались на рассыпной логике, нужно отказываться. Кстати, когда подключаю signaltap, результаты почему-то получаются лучше, чем без него. Для меня это странно. Вот это говорит о том, что инкрементальная компиляция у Вас не используется. Иначе бы результат был всегда плохой, не зависимо от подключения SignalTap'а :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 26 июня, 2012 Опубликовано 26 июня, 2012 · Жалоба По поводу асинхронщины почитайте статью http://iosifk.narod.ru/hdl_coding/hdl_coding_12_kit_2_09.pdf, мне очень помогло, и вообще на сайте iosifk.narod.ru много чего интересного можно найти). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 26 июня, 2012 Опубликовано 26 июня, 2012 · Жалоба ...мне очень помогло, и вообще на сайте iosifk.narod.ru много чего интересного можно найти). Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FAE 0 26 июня, 2012 Опубликовано 26 июня, 2012 (изменено) · Жалоба По поводу асинхронщины почитайте статью http://iosifk.narod.ru/hdl_coding/hdl_coding_12_kit_2_09.pdf, мне очень помогло, и вообще на сайте iosifk.narod.ru много чего интересного можно найти). Спасибо. Сайт уважаемого Иосифа Григорьевича мне известен. Данную статью я читал. Кроме того, у него есть чудесный рассказ "Записки инженера" о об испытаниях Бурана. Читал и одновременно смеялся и плакал. Спасибо за разъяснения. План дальнейших действий: 1. Переписать сорцы под синхронный сброс 2. Проверить, включена ли инкрементальная компиляция. Если нет - включить 3. Написать корректный sdc файл и подключить таймквест. 4. Используя таймквест Убрать узкие места. Где-то месяца на 2 работы ... Изменено 26 июня, 2012 пользователем FAE Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 26 июня, 2012 Опубликовано 26 июня, 2012 · Жалоба 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 0 26 июня, 2012 Опубликовано 26 июня, 2012 · Жалоба 1. не начинайте холивар по поводу синхронного-асинхронного сброса, если это глобальный сброс - оставьте Не до холивара, но часть модулей переписать придется, ибо у них сброс нелокальный. 2. перевод про инкрементальную компиляцию есть здесь - http://www.naliwator.narod.ru/ если коротко и быстро - использовать галку в incremental compilation -> rapid recompile -> on ну и другие настройки В 9м квартусе я такой галки не увидел. Там только два кружочка: "off" и "full incremental compilation". Имеет ли смысл перейти на более новый квартус? 3. как грамотно пользоваться таймквестом начало здесь http://embedders.org/content/timequest-dly...hast-1-vvedenie Эти первые три пункта работы на несколько часов. С последним можете провозиться от нуля до бесконечности. Спасибо, нашел сам, уже читаю ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flood 13 26 июня, 2012 Опубликовано 26 июня, 2012 · Жалоба С альтерой не работал, но на Xilinx подобные ужасы нашего городка возникали, если: - ошибочно заданы constraint-ы, например, занижена или не указана частота внешнего тактового сигнала; - неверно сделаны переходы между тактовыми доменами; - тактовый сигнал низкочастотного домена сделан на пользовательской логике (счетчик/делитель) в высокочастотном домене :) - существуют локальные асинхронные сигналы сброса. Как правило эти вызванные асинхронностью эффекты бывают весьма плавающими, т.к. реальная схема зависит от того, "как карта ляжет". И, нередко, подключаемый Chipscope (аналог SignalTap) вместо выявления успешно вылечивал проблему :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FAE 0 2 июля, 2012 Опубликовано 2 июля, 2012 · Жалоба С альтерой не работал, но на Xilinx подобные ужасы нашего городка возникали, если: - ошибочно заданы constraint-ы, например, занижена или не указана частота внешнего тактового сигнала; - неверно сделаны переходы между тактовыми доменами; - тактовый сигнал низкочастотного домена сделан на пользовательской логике (счетчик/делитель) в высокочастотном домене :) - существуют локальные асинхронные сигналы сброса. Как правило эти вызванные асинхронностью эффекты бывают весьма плавающими, т.к. реальная схема зависит от того, "как карта ляжет". И, нередко, подключаемый Chipscope (аналог SignalTap) вместо выявления успешно вылечивал проблему :) С альтерой тоже самое. К сожалению, дизайн достался мне в наследство, начал разбираться, нашел много некорректностей. Потихонечку убираю ... Реально помогает TimeQuest. Спасибо всем откликнувшимся. Советы были полезными. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться