реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Quartus Design assistant. Ошибки., Ругается Design assistant на то, чего нет
Flip-fl0p
сообщение May 30 2018, 08:31
Сообщение #1


В поисках себя...
****

Группа: Свой
Сообщений: 644
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Приветствую Уважаемые посетители форума !
При синтезировании прошивки я столкнулся с тем, что в 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.

Прикрепленный файл  SCALER.zip ( 9 мегабайт ) Кол-во скачиваний: 15
Go to the top of the page
 
+Quote Post
Marat Zuev
сообщение May 30 2018, 21:49
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 8-05-18
Пользователь №: 103 834



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


--------------------
--
С наилучшими пожеланиями, Marat.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 31 2018, 04:27
Сообщение #3


В поисках себя...
****

Группа: Свой
Сообщений: 644
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Marat Zuev @ May 31 2018, 00:49) *
Ещё компилятор ругается на отсутствие sdc - Вы его забыли приложить?
И, раз Вы говорите об отсутствии в проекте разных тактовых доменов: покажите, в каком файле отчёта видно, что на все триггеры проекта заведена одна и та же глобальная частота?

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

Вот структура проекта. Тут ясно видно, что все сигналы модуля Buff_controller работают в одном домене...
Go to the top of the page
 
+Quote Post
Marat Zuev
сообщение May 31 2018, 12:11
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 8-05-18
Пользователь №: 103 834



Цитата(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"
Думаю, ответ на Ваш вопрос теперь очевиден?


--------------------
--
С наилучшими пожеланиями, Marat.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 31 2018, 12:34
Сообщение #5


В поисках себя...
****

Группа: Свой
Сообщений: 644
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(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.
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение May 31 2018, 18:35
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 10-01-13
Пользователь №: 75 145



Ему не нравится что у вас между регистрами которые формируют сигнал row_ready и регистром внутри синхронизатора есть логика. Добавьте либо триггер на выходе Buff_controller, либо в синхронизаторе сделайте вход для исходной частоты и защелкните data_async в регистр по его родной частоте прежде чем подавать на сдвиговый регистр.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 31 2018, 18:44
Сообщение #7


В поисках себя...
****

Группа: Свой
Сообщений: 644
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



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

Я так и сделал, и проблема с мерцанием изображения ушла. Но непонятно почему ему не нравится изначальный вариант. Ведь по сути передача данных идет из одного домена в другой. Да и в констрейнах я указал не анализировать пути между доменами. Хотя констрейны он вроде проверяет на самом последнем этапе.
Ведь никто не запрещает комбинационный сигнал формируемый в одном домене передать в другой через синхронизатор...
Но всё равно спасибо за совет cheers.gif
Go to the top of the page
 
+Quote Post
Burenkov Sergey
сообщение May 31 2018, 19:45
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 10-01-13
Пользователь №: 75 145



Цитата(Flip-fl0p @ May 31 2018, 21:44) *
Ведь никто не запрещает комбинационный сигнал формируемый в одном домене передать в другой через синхронизатор...

Вот тут, страница 10-12, объясняется почему так не надо делать
http://www.sunburst-design.com/papers/Cumm...8Boston_CDC.pdf
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jun 1 2018, 04:16
Сообщение #9


В поисках себя...
****

Группа: Свой
Сообщений: 644
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



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

Ух ты ! А эту доку я в первый раз вижу. Спасибо огромное !
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2018 - 02:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.00921 секунд с 7
ELECTRONIX ©2004-2016