wolfman 0 9 января, 2018 Опубликовано 9 января, 2018 · Жалоба А если взять другую версию Квартуса? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 9 января, 2018 Опубликовано 9 января, 2018 · Жалоба . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 9 января, 2018 Опубликовано 9 января, 2018 · Жалоба А если взять другую версию Квартуса? Я весь проект, фактически, показал. В нем два файла: .sv и .sdc. Каждый может испытать на своем Квартусе. Вот картину из RTL Viewer показываю, чтобы интереснее было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
warrior-2001 0 9 января, 2018 Опубликовано 9 января, 2018 · Жалоба На клоковый вход блока DataOut подан не клок! А некий меандр с выхода мультиплексора. Как-то так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 9 января, 2018 Опубликовано 9 января, 2018 · Жалоба set_time_format -unit ns -decimal_places 3 # create_clock -name clk_in -period "100 MHz" -waveform {0 5.0} ClkIn create_clock -name clk_in -period "100 MHz" [get_ports ClkIn] create_clock -name clk_virt -period "100 MHz" # create_generated_clock -name clk_div ClkDiv -divide_by 2 -source ClkIn create_generated_clock -name clk_div -divide_by 2 -source [get_ports ClkIn] \ [get_registers ClkDiv] set_clock_groups -exclusive -group {clk_in} -group {clk_div} derive_clock_uncertainty # set_input_delay -clock clk_virt -min 0.0 ClkSel # set_input_delay -clock clk_virt -max 1.0 ClkSel # set_input_delay -clock clk_virt -min 0.0 ResetN # set_input_delay -clock clk_virt -max 1.0 ResetN # set_input_delay -clock clk_virt -min 0.0 DataIn # set_input_delay -clock clk_virt -max 1.0 DataIn set_input_delay -clock clk_virt -min 0.0 [all_inputs] # max -> iExt set_input_delay -clock clk_virt -max 0.4 [all_inputs] set_output_delay -clock clk_virt -min 0.0 ClkOut # max -> -oExt set_output_delay -clock clk_virt -max 0.8 ClkOut set_output_delay -clock clk_virt -min 0.0 DataOut set_output_delay -clock clk_virt -max 1.2 DataOut # set_output_delay -clock clk_virt -min 0.0 [all_outputs] # set_output_delay -clock clk_virt -max 1.0 [all_outputs] set_min_delay -from ClkIn -to ClkOut 0.6 set_max_delay -from ClkIn -to ClkOut 8.0 set_min_delay -from ClkSel -to ClkOut 1.0 set_max_delay -from ClkSel -to ClkOut 8.0 С таким файлом укладывается. Такие дробные и разные числа задал только для того, чтобы легче находились на графиках. Нужно запомнить, увеличение set_input_delay уменьшает резервы времени внутри ПЛИС (к Launch clock добавляется iExt). Аналогично, увеличение set_output_delay тоже уменьшает резервы внутри ПЛИС (от Latch clock отнимается время oExt). В-общем, за ~7нс сигналы добираются с одного края ПЛИС на другой. На клоковый вход блока DataOut подан не клок! А некий меандр с выхода мультиплексора. Как-то так. Вам на третью страницу: https://www.altera.com/en_US/pdfs/literatur...st_cookbook.pdf и на седьмую. Картину из первого сообщения комментировать не смогу. Будем считать, неправильно задал некие ограничения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 9 января, 2018 Опубликовано 9 января, 2018 · Жалоба Я как понял ваших данных работает на частоте clk_div и защелкивает данные DataOut. У меня вопрос. А зачем Вам виртуальный клок, если у Вас есть клок относительно которого вы задаете констрейны для данных ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 9 января, 2018 Опубликовано 9 января, 2018 · Жалоба Я как понял ваших данных работает на частоте clk_div и защелкивает данные DataOut. У меня вопрос. А зачем Вам виртуальный клок, если у Вас есть клок относительно которого вы задаете констрейны для данных ? А я же цитату привел, и цифрами подкрепил. Я еще и такт наружу вывел. В самом проекте не ищите смысла. Только в ограничениях для него. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 9 января, 2018 Опубликовано 9 января, 2018 (изменено) · Жалоба А я же цитату привел, и цифрами подкрепил. Я еще и такт наружу вывел. В самом проекте не ищите смысла. Только в ограничениях для него. Я просто прочитал то, на что Вы указали, и нигде не увидел того, что нужно констрейнить относительно виртуального клока. Также сейчас перед глазами пример из "TimeQuest для чайников" - вывод пилы на синхронный параллельный ЦАП. Там так же нет никаких виртуальных клоков. Вот я и пытаюсь понять где я перестал понимать Изменено 9 января, 2018 пользователем Flip-fl0p Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 9 января, 2018 Опубликовано 9 января, 2018 · Жалоба Я просто прочитал то, на что Вы указали, и нигде не увидел того, что нужно констрейнить относительно виртуального клока. Также сейчас перед глазами пример из "TimeQuest для чайников" - вывод пилы на синхронный параллельный ЦАП. Там так же нет никаких виртуальных клоков. Вот я и пытаюсь понять где я перестал понимать Выше. Сообщение 14. Документ все тот же - Cookbook. Там правильные примеры. ПЛИСка всегда с внешними устройствами работает. Если не использовать виртуальные такты, то не учтется неопределенность такта, относительно которого данные поступают на или из ПЛИС. Разница, как видите, небольшая, около 20 ps. Можно забить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
warrior-2001 0 10 января, 2018 Опубликовано 10 января, 2018 · Жалоба Вам на третью страницу: https://www.altera.com/en_US/pdfs/literatur...st_cookbook.pdf и на седьмую. Никогда не порождал клоки таким образом и не планирую! Если так породить сигнал и потом объявить его клоком - не везде получится такой клок использовать и не представляю как его можно завести на клоковое дерево ПЛИС. Тоесть с точки зрения описания констрейнтов все корректно, но чтобы выход регистра использовать как клок для другого регистра - бррррр... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 10 января, 2018 Опубликовано 10 января, 2018 · Жалоба Никогда не порождал клоки таким образом и не планирую! Если так породить сигнал и потом объявить его клоком - не везде получится такой клок использовать и не представляю как его можно завести на клоковое дерево ПЛИС. Тоесть с точки зрения описания констрейнтов все корректно, но чтобы выход регистра использовать как клок для другого регистра - бррррр... Не зарекайтесь! Сам заведется. Но можно и помочь, если химер боитесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 10 января, 2018 Опубликовано 10 января, 2018 · Жалоба Никогда не порождал клоки таким образом и не планирую!не так страшен чёрт, как его малютка. Если так породить сигнал и потом объявить его клоком - не везде получится такой клок использовать и не представляю как его можно завести на клоковое дерево ПЛИС.Инстанцировать глобальный буфер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 10 января, 2018 Опубликовано 10 января, 2018 · Жалоба Меня вот один вопрос мучает. А как Timequest понимает, что виртуальный клок - это клок, который мы выдаем с порта ПЛИС ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 10 января, 2018 Опубликовано 10 января, 2018 · Жалоба Меня вот один вопрос мучает. А как Timequest понимает, что виртуальный клок - это клок, который мы выдаем с порта ПЛИС ? Мы не выдаем виртуальный такт с порта или на порт. Он существует за пределами ПЛИС (виртуально). На порт или из порта идет реальный тактовый сигнал. А временные сдвиги между ними определяются по описанию create_clock, и далее по задержкам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 10 января, 2018 Опубликовано 10 января, 2018 · Жалоба В результате изучения литературы сделал следующие выводы. set_input_delay задает задержку сигнала относительно виртуального такта, совпадающего с реальным тактом на входе в ПЛИС. Для внешнего устройства это будет launch такт. Положительная величина означает, сигнал приходит после такта. set_output_delay задает задержку сигнала относительно виртуального такта, совпадающего с реальным тактом на входе в ПЛИС. Для внешнего устройства это будет latch такт. Положительная величина означает, сигнал выходит до такта. Вот, картинкой подкреплю. Соответствует рисункам 13 и 12 из Cookbook. Слева - для выхода, справа - для входа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться