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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> TimeQuest, кто ж тебя выдумал?, поговорим на простом нестандартном примере
wolfman
сообщение Jan 9 2018, 07:36
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 525
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032



А если взять другую версию Квартуса?


--------------------
Россия это даже не страна.
Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jan 9 2018, 07:38
Сообщение #17


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 631
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 9 2018, 07:52
Сообщение #18


Универсальный солдатик
******

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



Цитата(wolfman @ Jan 9 2018, 10:36) *
А если взять другую версию Квартуса?

Я весь проект, фактически, показал. В нем два файла: .sv и .sdc. Каждый может испытать на своем Квартусе.
Вот картину из RTL Viewer показываю, чтобы интереснее было.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
warrior-2001
сообщение Jan 9 2018, 12:36
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 369
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792



На клоковый вход блока DataOut подан не клок! А некий меандр с выхода мультиплексора.
Как-то так.


--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 9 2018, 12:42
Сообщение #20


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 523
Регистрация: 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
и на седьмую.
Картину из первого сообщения комментировать не смогу. Будем считать, неправильно задал некие ограничения.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 9 2018, 13:03
Сообщение #21


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

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



Я как понял ваших данных работает на частоте clk_div и защелкивает данные DataOut.
У меня вопрос. А зачем Вам виртуальный клок, если у Вас есть клок относительно которого вы задаете констрейны для данных ?

Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 9 2018, 13:05
Сообщение #22


Универсальный солдатик
******

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



Цитата(Flip-fl0p @ Jan 9 2018, 16:03) *
Я как понял ваших данных работает на частоте clk_div и защелкивает данные DataOut.
У меня вопрос. А зачем Вам виртуальный клок, если у Вас есть клок относительно которого вы задаете констрейны для данных ?

А я же цитату привел, и цифрами подкрепил.
Я еще и такт наружу вывел.
В самом проекте не ищите смысла. Только в ограничениях для него.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 9 2018, 13:15
Сообщение #23


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

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



Цитата(ViKo @ Jan 9 2018, 16:05) *
А я же цитату привел, и цифрами подкрепил.
Я еще и такт наружу вывел.
В самом проекте не ищите смысла. Только в ограничениях для него.

Я просто прочитал то, на что Вы указали, и нигде не увидел того, что нужно констрейнить относительно виртуального клока.
Также сейчас перед глазами пример из "TimeQuest для чайников" - вывод пилы на синхронный параллельный ЦАП. Там так же нет никаких виртуальных клоков.
Вот я и пытаюсь понять где я перестал понимать biggrin.gif

Сообщение отредактировал Flip-fl0p - Jan 9 2018, 13:16
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 9 2018, 13:23
Сообщение #24


Универсальный солдатик
******

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



Цитата(Flip-fl0p @ Jan 9 2018, 16:15) *
Я просто прочитал то, на что Вы указали, и нигде не увидел того, что нужно констрейнить относительно виртуального клока.
Также сейчас перед глазами пример из "TimeQuest для чайников" - вывод пилы на синхронный параллельный ЦАП. Там так же нет никаких виртуальных клоков.
Вот я и пытаюсь понять где я перестал понимать biggrin.gif

Выше. Сообщение 14. Документ все тот же - Cookbook. Там правильные примеры.
ПЛИСка всегда с внешними устройствами работает. Если не использовать виртуальные такты, то не учтется неопределенность такта, относительно которого данные поступают на или из ПЛИС.
Разница, как видите, небольшая, около 20 ps. Можно забить.
Go to the top of the page
 
+Quote Post
warrior-2001
сообщение Jan 10 2018, 09:23
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 369
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792



Цитата(ViKo @ Jan 9 2018, 15:42) *
Вам на третью страницу: https://www.altera.com/en_US/pdfs/literatur...st_cookbook.pdf
и на седьмую.

Никогда не порождал клоки таким образом и не планирую!
Если так породить сигнал и потом объявить его клоком - не везде получится такой клок использовать и не представляю как его можно завести на клоковое дерево ПЛИС.
Тоесть с точки зрения описания констрейнтов все корректно, но чтобы выход регистра использовать как клок для другого регистра - бррррр...


--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 10 2018, 09:42
Сообщение #26


Универсальный солдатик
******

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



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

Не зарекайтесь!
Сам заведется. Но можно и помочь, если химер боитесь.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jan 10 2018, 09:48
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 959
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(warrior-2001 @ Jan 10 2018, 12:23) *
Никогда не порождал клоки таким образом и не планирую!
не так страшен чёрт, как его малютка.
Цитата
Если так породить сигнал и потом объявить его клоком - не везде получится такой клок использовать и не представляю как его можно завести на клоковое дерево ПЛИС.
Инстанцировать глобальный буфер.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 10 2018, 10:19
Сообщение #28


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

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



Меня вот один вопрос мучает. А как Timequest понимает, что виртуальный клок - это клок, который мы выдаем с порта ПЛИС ?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 10 2018, 10:26
Сообщение #29


Универсальный солдатик
******

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



Цитата(Flip-fl0p @ Jan 10 2018, 13:19) *
Меня вот один вопрос мучает. А как Timequest понимает, что виртуальный клок - это клок, который мы выдаем с порта ПЛИС ?

Мы не выдаем виртуальный такт с порта или на порт. Он существует за пределами ПЛИС (виртуально). На порт или из порта идет реальный тактовый сигнал. А временные сдвиги между ними определяются по описанию create_clock, и далее по задержкам.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 10 2018, 13:20
Сообщение #30


Универсальный солдатик
******

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



В результате изучения литературы сделал следующие выводы.

set_input_delay задает задержку сигнала относительно виртуального такта,
совпадающего с реальным тактом на входе в ПЛИС. Для внешнего устройства это
будет launch такт. Положительная величина означает, сигнал приходит после такта.

set_output_delay задает задержку сигнала относительно виртуального такта,
совпадающего с реальным тактом на входе в ПЛИС. Для внешнего устройства это
будет latch такт. Положительная величина означает, сигнал выходит до такта.

Вот, картинкой подкреплю. Соответствует рисункам 13 и 12 из Cookbook. Слева - для выхода, справа - для входа.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post

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

 


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


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