Flip-fl0p 4 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба Приветствую Уважаемые посетители форума ! При синтезировании прошивки я столкнулся с тем, что в 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба При синтезировании прошивки я столкнулся с тем, что в Quartus "Design assistant" ругается на неправильную передачу сигналов между клоковыми доменами. Ещё компилятор ругается на отсутствие sdc - Вы его забыли приложить? И, раз Вы говорите об отсутствии в проекте разных тактовых доменов: покажите, в каком файле отчёта видно, что на все триггеры проекта заведена одна и та же глобальная частота? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба Ещё компилятор ругается на отсутствие sdc - Вы его забыли приложить? И, раз Вы говорите об отсутствии в проекте разных тактовых доменов: покажите, в каком файле отчёта видно, что на все триггеры проекта заведена одна и та же глобальная частота? SDC забыл приложить. Но даже с ним проблема не уходит. Доменов у меня 2. Домен с частотой pixel_clk и домен с частотой rdclk_FIFO (домен SDRAM) Quartus по неизвестной мне причине считает, что у меня сигналы, которые я привел в первом сообщении, работают в разных клоковых доменах. Но это не так. Со вторым клоковом доменом работает только DCFIFO. И есть подозрение что именно в том, что Quarus находит "ложные" клоковые домены кроется причина в сбоях, проявляющаяся в мерцании изображения на экране монитора, куда я вывожу данные. Вот структура проекта. Тут ясно видно, что все сигналы модуля Buff_controller работают в одном домене... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба Вот структура проекта. Тут ясно видно, что все сигналы модуля 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 4 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба Загляните в файл 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Burenkov 0 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба Ему не нравится что у вас между регистрами которые формируют сигнал row_ready и регистром внутри синхронизатора есть логика. Добавьте либо триггер на выходе Buff_controller, либо в синхронизаторе сделайте вход для исходной частоты и защелкните data_async в регистр по его родной частоте прежде чем подавать на сдвиговый регистр. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба Ему не нравится что у вас между регистрами которые формируют сигнал row_ready и регистром внутри синхронизатора есть логика. Добавьте либо триггер на выходе Buff_controller, либо в синхронизаторе сделайте вход для исходной частоты и защелкните data_async в регистр по его родной частоте прежде чем подавать на сдвиговый регистр. Я так и сделал, и проблема с мерцанием изображения ушла. Но непонятно почему ему не нравится изначальный вариант. Ведь по сути передача данных идет из одного домена в другой. Да и в констрейнах я указал не анализировать пути между доменами. Хотя констрейны он вроде проверяет на самом последнем этапе. Ведь никто не запрещает комбинационный сигнал формируемый в одном домене передать в другой через синхронизатор... Но всё равно спасибо за совет :cheers: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Burenkov 0 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба Ведь никто не запрещает комбинационный сигнал формируемый в одном домене передать в другой через синхронизатор... Вот тут, страница 10-12, объясняется почему так не надо делать http://www.sunburst-design.com/papers/Cumm...8Boston_CDC.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 1 июня, 2018 Опубликовано 1 июня, 2018 · Жалоба Вот тут, страница 10-12, объясняется почему так не надо делать http://www.sunburst-design.com/papers/Cumm...8Boston_CDC.pdf Ух ты ! А эту доку я в первый раз вижу. Спасибо огромное ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться