Перейти к содержанию
    

Quartus Design assistant. Ошибки.

Приветствую Уважаемые посетители форума !

При синтезировании прошивки я столкнулся с тем, что в Quartus "Design assistant" ругается на неправильную передачу сигналов между клоковыми доменами.

Но проблема в том, что он обнаружил клоковые домены, которых нет :wacko: .

 

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.

 

SCALER.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При синтезировании прошивки я столкнулся с тем, что в Quartus "Design assistant" ругается на неправильную передачу сигналов между клоковыми доменами.
Ещё компилятор ругается на отсутствие sdc - Вы его забыли приложить?

И, раз Вы говорите об отсутствии в проекте разных тактовых доменов: покажите, в каком файле отчёта видно, что на все триггеры проекта заведена одна и та же глобальная частота?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё компилятор ругается на отсутствие sdc - Вы его забыли приложить?

И, раз Вы говорите об отсутствии в проекте разных тактовых доменов: покажите, в каком файле отчёта видно, что на все триггеры проекта заведена одна и та же глобальная частота?

SDC забыл приложить. Но даже с ним проблема не уходит.

Доменов у меня 2. Домен с частотой pixel_clk и домен с частотой rdclk_FIFO (домен SDRAM)

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

 

Вот структура проекта. Тут ясно видно, что все сигналы модуля Buff_controller работают в одном домене...

CDC_FAIL.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот структура проекта. Тут ясно видно, что все сигналы модуля 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"

Думаю, ответ на Ваш вопрос теперь очевиден?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Загляните в файл SCALER.drc.rpt: там более подробно пояснено, что Design Assistant-у не нравится:

; Synchronizer node(s) from clock "rdclk_FIFO"[/code] Думаю, ответ на Ваш вопрос теперь очевиден?

Совсем не очевиден. Я Совсем ничего не понимаю :wacko: .

Почему он считает, что я передаю эти сигналы в другой клоковый домен ?

Я в другой клоковый домен через синхронизатор передаю только сигнал 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ему не нравится что у вас между регистрами которые формируют сигнал row_ready и регистром внутри синхронизатора есть логика. Добавьте либо триггер на выходе Buff_controller, либо в синхронизаторе сделайте вход для исходной частоты и защелкните data_async в регистр по его родной частоте прежде чем подавать на сдвиговый регистр.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ему не нравится что у вас между регистрами которые формируют сигнал row_ready и регистром внутри синхронизатора есть логика. Добавьте либо триггер на выходе Buff_controller, либо в синхронизаторе сделайте вход для исходной частоты и защелкните data_async в регистр по его родной частоте прежде чем подавать на сдвиговый регистр.

Я так и сделал, и проблема с мерцанием изображения ушла. Но непонятно почему ему не нравится изначальный вариант. Ведь по сути передача данных идет из одного домена в другой. Да и в констрейнах я указал не анализировать пути между доменами. Хотя констрейны он вроде проверяет на самом последнем этапе.

Ведь никто не запрещает комбинационный сигнал формируемый в одном домене передать в другой через синхронизатор...

Но всё равно спасибо за совет :cheers:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ведь никто не запрещает комбинационный сигнал формируемый в одном домене передать в другой через синхронизатор...

Вот тут, страница 10-12, объясняется почему так не надо делать

http://www.sunburst-design.com/papers/Cumm...8Boston_CDC.pdf

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот тут, страница 10-12, объясняется почему так не надо делать

http://www.sunburst-design.com/papers/Cumm...8Boston_CDC.pdf

Ух ты ! А эту доку я в первый раз вижу. Спасибо огромное !

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...