Перейти к содержанию
    

TimeQuest

Добрый день,

 

решил разобраться с заданием временных ограничений.

 

Допустим есть простой проект:

 

на входную ногу ПЛИС поступает частота 50 МГц (имя пина 50_MHz_5B_1), внутри одна делится счетчиком Джонсона на выходе которого сигнал Q1, синхронный с входной частотой.

 

Частота 50 Мгц выводится на ногу GPIO1, сигнал Q1 на ногу GPIO2.

 

Создаю .sdc файл, где прописываю параметры клока

create_clock -name top_clk -period 20.000 [get_ports {50_MHz_5B_1}]

 

Компилирую проект и смотрю осциллографом задержку между фронтом клока и фронтом сигнала Q1 на ногах ПЛИС. Задержка составляет 3,5 нс.

 

Теперь вопросы:

 

Могу я прописыванием констрейнов менять эту задержку?

Я прописывал в sdc фале следующие строки:

set_output_delay -clock top_clk 5.5 [get_ports {GPIO2}] - после компиляции ничего не меняется

set_output_delay -clock clk -reference_pin [get_ports clkout] 5.5 [get_ports myout*] - - после компиляции ничего не меняется

Что я делаю не так?

 

ПЛИС Cyclone V E, Quartus 15.0

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще бы -max и -min атрибутики бы выставить в то какой вы путь определяете.

 

Задержка составляет 3,5 нс.

 

set_output_delay -clock top_clk 5.5

 

ну собственно ничего и не должно, :) задержка не может быть точной, она может быть в воротах. Потому что от температуры и питания плавает.

 

так что ограничивайте ее сверху или снизу, но не задавайте точно, это невозможно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще бы -max и -min атрибутики бы выставить в то какой вы путь определяете.

 

 

 

 

 

ну собственно ничего и не должно, :) задержка не может быть точной, она может быть в воротах. Потому что от температуры и питания плавает.

 

так что ограничивайте ее сверху или снизу, но не задавайте точно, это невозможно.

 

В описании команды set_output_delay написано

 

-reference_pin <name> Specifies a port in the design to which the output delay is relative

 

то есть если я напишу так:

 

set_output_delay -clock top_clk -min 1.2 -reference_pin [get_ports {GPIO1}] [get_ports {GPIO2}]

set_output_delay -clock top_clk -max 2.2 -reference_pin [get_ports {GPIO1}] [get_ports {GPIO2}]

 

то задержка между сигналами на ножках будет в диапазоне 1,2-2,2 нс?

 

а если напишу:

 

set_output_delay -clock top_clk -min 1.2 [get_ports {GPIO2}]

set_output_delay -clock top_clk -max 2.2 [get_ports {GPIO2}]

 

то сигнал будет задержан относительно клока где-то внутри схемы, а на пины они выведутся с непредсказуемой задержкой?

 

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В процессе изучения возникли дополнительные вопросы:

 

проект такой же как ранее

 

на входную ногу ПЛИС поступает частота 50 МГц (имя пина 50_MHz_5B_1), внутри одна делится счетчиком Джонсона на выходе которого сигнал Q1, синхронный с входной частотой.

 

Частота 50 МГц выводится на ногу GPIO1, сигнал Q1 на ногу GPIO2.

 

в .sdc файле прописываю параметры клока

create_clock -name top_clk -period 20.000 [get_ports {50_MHz_5B_1}]

 

и затем

set_net_delay -min 4.0 -from [get_nets {50_MHz_5B_1~inputCLKENA0}]

set_net_delay -max 6.0 -from [get_nets {50_MHz_5B_1~inputCLKENA0}]

 

как я понимаю этими констрейнами я ограничил сверху и снизу значение задержки от входа частоты до всех мест куда эта частота поступает. В моем случае это 32 clk входа D-триггеров счетчика Джонсона.

После компиляции открываю TimeQuest и выполняю report_net_delay.

 

image.png

 

Как видно в отчете TimeQuest прописывает разные Actual значения задержек для констрейна min и max.

 

image.png

 

На графике я привел графики значений задержек для min и max.

Далее я выполнил команду report_net_timing, где указал в target get_nets {50_MHz_5B_1~inputCLKENA0}, в консоль вывелась другая таблица задержек:

 

=======================================================================
======
        # :  RR  ,  FR  ,  RF  ,  FF    :  Destination Pin Name (Location)  
=============================================================================
Node 50_MHz_5B_1~inputCLKENA0|outclk has fanout = 33
    --> 1 : 3.131, -----, -----, 2.899  : UART_RX~output|i ( IOOBUF_X10_Y0_N53 ) 
    --> 2 : 2.430, -----, -----, 2.139  : inst13|\delay_line:0:zuzu|clk ( FF_X10_Y1_N55 ) 
    --> 3 : 2.430, -----, -----, 2.139  : inst13|\delay_line:1:zuzu|clk ( FF_X10_Y1_N34 ) 
    --> 4 : 2.430, -----, -----, 2.139  : inst13|\delay_line:2:zuzu|clk ( FF_X10_Y1_N59 ) 
    --> 5 : 2.430, -----, -----, 2.139  : inst13|\delay_line:3:zuzu|clk ( FF_X10_Y1_N17 ) 
    --> 6 : 2.430, -----, -----, 2.139  : inst13|\delay_line:4:zuzu|clk ( FF_X10_Y1_N23 ) 
    --> 7 : 2.430, -----, -----, 2.139  : inst13|\delay_line:5:zuzu|clk ( FF_X10_Y1_N20 ) 
    --> 8 : 2.430, -----, -----, 2.139  : inst13|\delay_line:6:zuzu|clk ( FF_X10_Y1_N7 ) 
    --> 9 : 2.430, -----, -----, 2.139  : inst13|\delay_line:7:zuzu|clk ( FF_X10_Y1_N38 ) 
    --> 10 : 2.430, -----, -----, 2.139  : inst13|\delay_line:8:zuzu|clk ( FF_X10_Y1_N47 ) 
    --> 11 : 2.430, -----, -----, 2.139  : inst13|\delay_line:9:zuzu|clk ( FF_X10_Y1_N10 ) 
    --> 12 : 2.430, -----, -----, 2.139  : inst13|\delay_line:10:zuzu|clk ( FF_X10_Y1_N4 ) 
    --> 13 : 2.430, -----, -----, 2.139  : inst13|\delay_line:11:zuzu|clk ( FF_X10_Y1_N49 ) 
    --> 14 : 2.431, -----, -----, 2.141  : inst13|\delay_line:12:zuzu|clk ( FF_X9_Y1_N35 ) 
    --> 15 : 2.431, -----, -----, 2.141  : inst13|\delay_line:13:zuzu|clk ( FF_X9_Y1_N10 ) 
    --> 16 : 2.431, -----, -----, 2.141  : inst13|\delay_line:14:zuzu|clk ( FF_X9_Y1_N4 ) 
    --> 17 : 2.431, -----, -----, 2.141  : inst13|\delay_line:15:zuzu|clk ( FF_X9_Y1_N41 ) 
    --> 18 : 2.431, -----, -----, 2.141  : inst13|\delay_line:16:zuzu|clk ( FF_X9_Y1_N14 ) 
    --> 19 : 2.431, -----, -----, 2.141  : inst13|\delay_line:17:zuzu|clk ( FF_X9_Y1_N43 ) 
    --> 20 : 2.431, -----, -----, 2.141  : inst13|\delay_line:18:zuzu|clk ( FF_X9_Y1_N50 ) 
    --> 21 : 2.431, -----, -----, 2.141  : inst13|\delay_line:19:zuzu|clk ( FF_X9_Y1_N31 ) 
    --> 22 : 2.431, -----, -----, 2.141  : inst13|\delay_line:20:zuzu|clk ( FF_X9_Y1_N29 ) 
    --> 23 : 2.431, -----, -----, 2.141  : inst13|\delay_line:21:zuzu|clk ( FF_X9_Y1_N25 ) 
    --> 24 : 2.431, -----, -----, 2.141  : inst13|\delay_line:22:zuzu|clk ( FF_X9_Y1_N56 ) 
    --> 25 : 2.431, -----, -----, 2.141  : inst13|\delay_line:23:zuzu|clk ( FF_X9_Y1_N58 ) 
    --> 26 : 2.431, -----, -----, 2.141  : inst13|\delay_line:24:zuzu|clk ( FF_X9_Y1_N37 ) 
    --> 27 : 2.431, -----, -----, 2.141  : inst13|\delay_line:25:zuzu|clk ( FF_X9_Y1_N8 ) 
    --> 28 : 2.431, -----, -----, 2.141  : inst13|\delay_line:26:zuzu|clk ( FF_X9_Y1_N17 ) 
    --> 29 : 2.430, -----, -----, 2.139  : inst13|\delay_line:27:zuzu|clk ( FF_X10_Y1_N43 ) 
    --> 30 : 2.430, -----, -----, 2.139  : inst13|\delay_line:28:zuzu|clk ( FF_X10_Y1_N53 ) 
    --> 31 : 2.430, -----, -----, 2.139  : inst13|\delay_line:29:zuzu|clk ( FF_X10_Y1_N26 ) 
    --> 32 : 2.430, -----, -----, 2.139  : inst13|\delay_line:30:zuzu|clk ( FF_X10_Y1_N32 ) 
    --> 33 : 2.430, -----, -----, 2.139  : inst13|\delay_line:31:zuzu|clk ( FF_X10_Y1_N28 ) 
=============================================================================

 

На график я также вывел значения задержек в полях RR и FF.

 

Как видно из графика все значения разные.

Вопросы в том почему отличаются результаты report_net_delay и report_net_timing?

И что все-таки обозначают задержки min и max?

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

там можно открыть и посмотреть из чего складывается время.

Подозреваю что одно из них это только путь от выхода триггера до входа включая логику. А другое от выхода до выхода, с учетом времени защелки и разбежки клоков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...