Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Quartus Design assistant. Ошибки.
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Среды разработки - обсуждаем САПРы
Flip-fl0p
Приветствую Уважаемые посетители форума !
При синтезировании прошивки я столкнулся с тем, что в Quartus "Design assistant" ругается на неправильную передачу сигналов между клоковыми доменами.
Но проблема в том, что он обнаружил клоковые домены, которых нет wacko.gif .

Код
Critical Warning (308067): (High) Rule D103: Data bits are not correctly synchronized when transferred between asynchronous clock domains. (Value defined:2). Found 4 asynchronous clock domain interface structure(s) related to this rule.
    Critical Warning (308012): Node  "Buff_controller:Buff_controller_comp|pres_state.buff3"
    Critical Warning (308012): Node  "Buff_controller:Buff_controller_comp|pres_state.buff2"
    Critical Warning (308012): Node  "Buff_controller:Buff_controller_comp|KAA_shreg_debouncer:KAA_shreg_debouncer_comp|data_out"
    Critical Warning (308012): Node  "Buff_controller:Buff_controller_comp|KAA_edge_dtct:DE_Fedge_detect|edge_detector"


Проверял в Quartus 13.1 Web Edition, Quartus 15.0 Web Edition, Quartus Prime 17.1 Lite Edition. Все они ругаются на одно и тоже.
Либо у меня крыша едет и я действительно в упор ошибку не вижу. Либо это врет "Design assistant".
Прикладываю полностью весь модуль, который вызывает параною у "Design assistant".
Верхний уровень проекта - SCALER
Имя модуля в котором обнаруживаются "ложные" клоковые домены - Buff_controller.

Нажмите для просмотра прикрепленного файла
Marat Zuev
Цитата(Flip-fl0p @ May 30 2018, 08:31) *
При синтезировании прошивки я столкнулся с тем, что в Quartus "Design assistant" ругается на неправильную передачу сигналов между клоковыми доменами.
Ещё компилятор ругается на отсутствие sdc - Вы его забыли приложить?
И, раз Вы говорите об отсутствии в проекте разных тактовых доменов: покажите, в каком файле отчёта видно, что на все триггеры проекта заведена одна и та же глобальная частота?
Flip-fl0p
Цитата(Marat Zuev @ May 31 2018, 00:49) *
Ещё компилятор ругается на отсутствие sdc - Вы его забыли приложить?
И, раз Вы говорите об отсутствии в проекте разных тактовых доменов: покажите, в каком файле отчёта видно, что на все триггеры проекта заведена одна и та же глобальная частота?

SDC забыл приложить. Но даже с ним проблема не уходит.
Доменов у меня 2. Домен с частотой pixel_clk и домен с частотой rdclk_FIFO (домен SDRAM)
Quartus по неизвестной мне причине считает, что у меня сигналы, которые я привел в первом сообщении, работают в разных клоковых доменах. Но это не так. Со вторым клоковом доменом работает только DCFIFO. И есть подозрение что именно в том, что Quarus находит "ложные" клоковые домены кроется причина в сбоях, проявляющаяся в мерцании изображения на экране монитора, куда я вывожу данные.

Вот структура проекта. Тут ясно видно, что все сигналы модуля Buff_controller работают в одном домене...
Marat Zuev
Цитата(Flip-fl0p @ May 31 2018, 04:27) *
Вот структура проекта. Тут ясно видно, что все сигналы модуля Buff_controller работают в одном домене...
Загляните в файл SCALER.drc.rpt: там более подробно пояснено, что Design Assistant-у не нравится:
Код
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
; High Violations                                                                                                                                                                                                   ;
+-----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------+
; Rule name                                                                                                            ; Name                                                                                      ;
+-----------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------+
; Rule D103: Data bits are not correctly synchronized when transferred between asynchronous clock domains - Structure 1;                                                                                           ;
;  Source node(s) from clock "pixel_clk"                                                                               ; Buff_controller:Buff_controller_comp|pres_state.buff3                                     ;
;  Synchronizer node(s) from clock "rdclk_FIFO"                                                                        ; KAA_sreg_syncronizer:KAA_domain_syncronizer_comp|sreg[2]                                  ;
;  Synchronizer node(s) from clock "rdclk_FIFO"                                                                        ; KAA_sreg_syncronizer:KAA_domain_syncronizer_comp|sreg[1]                                  ;
; Rule D103: Data bits are not correctly synchronized when transferred between asynchronous clock domains - Structure 2;                                                                                           ;
;  Source node(s) from clock "pixel_clk"                                                                               ; Buff_controller:Buff_controller_comp|pres_state.buff2                                     ;
;  Synchronizer node(s) from clock "rdclk_FIFO"                                                                        ; KAA_sreg_syncronizer:KAA_domain_syncronizer_comp|sreg[2]                                  ;
;  Synchronizer node(s) from clock "rdclk_FIFO"                                                                        ; KAA_sreg_syncronizer:KAA_domain_syncronizer_comp|sreg[1]                                  ;
; Rule D103: Data bits are not correctly synchronized when transferred between asynchronous clock domains - Structure 3;                                                                                           ;
;  Source node(s) from clock "pixel_clk"                                                                               ; Buff_controller:Buff_controller_comp|KAA_shreg_debouncer:KAA_shreg_debouncer_comp|data_out;
;  Synchronizer node(s) from clock "rdclk_FIFO"                                                                        ; KAA_sreg_syncronizer:KAA_domain_syncronizer_comp|sreg[2]                                  ;
;  Synchronizer node(s) from clock "rdclk_FIFO"                                                                        ; KAA_sreg_syncronizer:KAA_domain_syncronizer_comp|sreg[1]                                  ;
; Rule D103: Data bits are not correctly synchronized when transferred between asynchronous clock domains - Structure 4;                                                                                           ;
;  Source node(s) from clock "pixel_clk"                                                                               ; Buff_controller:Buff_controller_comp|KAA_edge_dtct:DE_Fedge_detect|edge_detector          ;
;  Synchronizer node(s) from clock "rdclk_FIFO"                                                                        ; KAA_sreg_syncronizer:KAA_domain_syncronizer_comp|sreg[2]                                  ;
;  Synchronizer node(s) from clock "rdclk_FIFO"
Думаю, ответ на Ваш вопрос теперь очевиден?
Flip-fl0p
Цитата(Marat Zuev @ May 31 2018, 15:11) *
Загляните в файл SCALER.drc.rpt: там более подробно пояснено, что Design Assistant-у не нравится:
; Synchronizer node(s) from clock "rdclk_FIFO"[/code] Думаю, ответ на Ваш вопрос теперь очевиден?

Совсем не очевиден. Я Совсем ничего не понимаю wacko.gif .
Почему он считает, что я передаю эти сигналы в другой клоковый домен ?
Я в другой клоковый домен через синхронизатор передаю только сигнал row_ready.
И вот регистры этого синхронизатора:
Код
;  Synchronizer node(s) from clock "rdclk_FIFO"    ; KAA_sreg_syncronizer:KAA_domain_syncronizer_comp|sreg[2]                              
;  Synchronizer node(s) from clock "rdclk_FIFO"    ; KAA_sreg_syncronizer:KAA_domain_syncronizer_comp|sreg[1]

Остальные данные передаю через DCFIFO.
Но вот, что интересно, он ругается именно на те сигналы, которые участвуют в формировании сигнала row_ready.
Burenkov Sergey
Ему не нравится что у вас между регистрами которые формируют сигнал row_ready и регистром внутри синхронизатора есть логика. Добавьте либо триггер на выходе Buff_controller, либо в синхронизаторе сделайте вход для исходной частоты и защелкните data_async в регистр по его родной частоте прежде чем подавать на сдвиговый регистр.
Flip-fl0p
Цитата(Burenkov Sergey @ May 31 2018, 21:35) *
Ему не нравится что у вас между регистрами которые формируют сигнал row_ready и регистром внутри синхронизатора есть логика. Добавьте либо триггер на выходе Buff_controller, либо в синхронизаторе сделайте вход для исходной частоты и защелкните data_async в регистр по его родной частоте прежде чем подавать на сдвиговый регистр.

Я так и сделал, и проблема с мерцанием изображения ушла. Но непонятно почему ему не нравится изначальный вариант. Ведь по сути передача данных идет из одного домена в другой. Да и в констрейнах я указал не анализировать пути между доменами. Хотя констрейны он вроде проверяет на самом последнем этапе.
Ведь никто не запрещает комбинационный сигнал формируемый в одном домене передать в другой через синхронизатор...
Но всё равно спасибо за совет cheers.gif
Burenkov Sergey
Цитата(Flip-fl0p @ May 31 2018, 21:44) *
Ведь никто не запрещает комбинационный сигнал формируемый в одном домене передать в другой через синхронизатор...

Вот тут, страница 10-12, объясняется почему так не надо делать
http://www.sunburst-design.com/papers/Cumm...8Boston_CDC.pdf
Flip-fl0p
Цитата(Burenkov Sergey @ May 31 2018, 22:45) *
Вот тут, страница 10-12, объясняется почему так не надо делать
http://www.sunburst-design.com/papers/Cumm...8Boston_CDC.pdf

Ух ты ! А эту доку я в первый раз вижу. Спасибо огромное !
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.