|
|
  |
TimeQuest, кто ж тебя выдумал?, поговорим на простом нестандартном примере |
|
|
|
Jan 9 2018, 12:42
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Код 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нс сигналы добираются с одного края ПЛИС на другой. Цитата(warrior-2001 @ Jan 9 2018, 15:36)  На клоковый вход блока DataOut подан не клок! А некий меандр с выхода мультиплексора. Как-то так. Вам на третью страницу: https://www.altera.com/en_US/pdfs/literatur...st_cookbook.pdfи на седьмую. Картину из первого сообщения комментировать не смогу. Будем считать, неправильно задал некие ограничения.
|
|
|
|
|
Jan 9 2018, 13:23
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Flip-fl0p @ Jan 9 2018, 16:15)  Я просто прочитал то, на что Вы указали, и нигде не увидел того, что нужно констрейнить относительно виртуального клока. Также сейчас перед глазами пример из "TimeQuest для чайников" - вывод пилы на синхронный параллельный ЦАП. Там так же нет никаких виртуальных клоков. Вот я и пытаюсь понять где я перестал понимать  Выше. Сообщение 14. Документ все тот же - Cookbook. Там правильные примеры. ПЛИСка всегда с внешними устройствами работает. Если не использовать виртуальные такты, то не учтется неопределенность такта, относительно которого данные поступают на или из ПЛИС. Разница, как видите, небольшая, около 20 ps. Можно забить.
|
|
|
|
|
Jan 10 2018, 09:23
|
Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792

|
Цитата(ViKo @ Jan 9 2018, 15:42)  Никогда не порождал клоки таким образом и не планирую! Если так породить сигнал и потом объявить его клоком - не везде получится такой клок использовать и не представляю как его можно завести на клоковое дерево ПЛИС. Тоесть с точки зрения описания констрейнтов все корректно, но чтобы выход регистра использовать как клок для другого регистра - бррррр...
--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
|
|
|
|
|
Jan 10 2018, 09:48
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Цитата(warrior-2001 @ Jan 10 2018, 12:23)  Никогда не порождал клоки таким образом и не планирую! не так страшен чёрт, как его малютка. Цитата Если так породить сигнал и потом объявить его клоком - не везде получится такой клок использовать и не представляю как его можно завести на клоковое дерево ПЛИС. Инстанцировать глобальный буфер.
|
|
|
|
|
Jan 10 2018, 13:20
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
В результате изучения литературы сделал следующие выводы. set_input_delay задает задержку сигнала относительно виртуального такта, совпадающего с реальным тактом на входе в ПЛИС. Для внешнего устройства это будет launch такт. Положительная величина означает, сигнал приходит после такта. set_output_delay задает задержку сигнала относительно виртуального такта, совпадающего с реальным тактом на входе в ПЛИС. Для внешнего устройства это будет latch такт. Положительная величина означает, сигнал выходит до такта. Вот, картинкой подкреплю. Соответствует рисункам 13 и 12 из Cookbook. Слева - для выхода, справа - для входа.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|