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

Как обконстрейнить hold time для xilinx?

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

 

дано:

Спецификация PCI rev 3.0, Table 7-4, Tval, значения min=2нс, max=6нс, CLK=66МГц

 

задача:

Написать констрейн для выхода FPGA, описывающий это требование.

 

для латиса:

CLOCK_TO_OUT PORT "pci_nTRDY" MAX 6.00 ns MIN 2.00 ns CLKPORT "pci_CLK" ;

 

для альтеры:

set_output_delay 9.1515 -clock pci_CLK -max [get_ports pci_nTRDY]

set_output_delay -2.00 -clock pci_CLK -min -add_delay [get_ports pci_nTRDY]

 

Для пояснения, 9.1515 это период клока 66 МГц (15.1515) минус те самые 6 нс спецификации PCI/66

 

 

А для XILINX как это написать, конкретно в части того самого min=2нс?

 

VALID в купе с OFFSET OUT оказался неработоспособным. Его не ругают, но он ничего и не делает. Да и документация говорит о том, что он не применяется к OFFSET OUT, а только к IN

 

 

 

И, хочу заметить, давайте не обсуждать "а нафига это надо". Надо, чтобы проект гарантировано соответствовал спецификации во всех диапазонах всего, и точка.

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


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

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

 

дано:

Спецификация PCI rev 3.0, Table 7-4, Tval, значения min=2нс, max=6нс, CLK=66МГц

 

задача:

Написать констрейн для выхода FPGA, описывающий это требование.

И, хочу заметить, давайте не обсуждать "а нафига это надо". Надо, чтобы проект гарантировано соответствовал спецификации во всех диапазонах всего, и точка.

Вот с картинкой (базовый клок и какие там задержки на пине относительно него надо) было-бы понятнее....

А-то как-то PCI стандарт не читал....

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


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

Вот с картинкой (базовый клок и какие там задержки на пине относительно него надо) было-бы понятнее....

А-то как-то PCI стандарт не читал....

 

Ну ё... Какие картинки. Берем любой даташит, открываем, находим картинку таймингов любого интерфейса, и смотрим - для каждого выходного сигнала всегда даны два времени - сколько времени после клока предыдущее значение сигнала еще стабильно (минимальное время, через которое может смениться сигнал после фронта, обычно аббревиатура Tco min), и через сколько времени сигнал после фронта клока гарантировано меняется (максимальное время, через которое гарантировано новое значение стабильно, обычно аббревиатура Tco max).

 

Вот у PCI, для примера, они требуются 2 нс и 6 нс, их и надо задать констрейном для выхода FPGA, указав синтезатору и анализатору, что сигнал на выходе должен смениться не ранее, чем через 2 нс после фронта клока, и не позднее, чем через 6.

 

Это вот второе время, для PCI равное 6 нс, у xilinx задается как OFFSET OUT AFTER. А вопрос про первое время, минимальное.

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


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

Ну ё... Какие картинки. Берем любой даташит, открываем, находим картинку таймингов любого интерфейса, и смотрим - для каждого выходного сигнала всегда даны два времени - сколько времени после клока предыдущее значение сигнала еще стабильно (минимальное время, через которое может смениться сигнал после фронта, обычно аббревиатура Tco min), и через сколько времени сигнал после фронта клока гарантировано меняется (максимальное время, через которое гарантировано новое значение стабильно, обычно аббревиатура Tco max).

 

Вот у PCI, для примера, они 2 нс и 6 нс, их и надо задать констрейном для выхода FPGA.

 

Это вот второе время, для PCI равное 6 нс, у xilinx задается как OFFSET OUT AFTER. А вопрос про первое время, минимальное.

В SDC формате можно так попробовать:

 

set_output_delay -max Tsetup -clock SCK [get_ports SDO]

set_output_delay -min -Thold -clock SCK [get_ports SDO]

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


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

В SDC формате

 

А куда их ise (v14.3) указать? В SDC-формате? Я так понимаю, что прямо в UCF нельзя указать Tco min?

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


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

А куда их ise (v14.3) указать? В SDC-формате? Я так понимаю, что прямо в UCF нельзя указать Tco min?

 

ISE & Quartus 100-пудово понимают SDC формат.

Я только так и констрейню проекты ... и всем рекомендую.

Всё в хелпе

 

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


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

с квартусом нет проблем, и не было никогда, см. исходный пост. а c ISE сложнее - в документе "Constraints Guide" (UG625) ни слова о SDC нет, как и в "Timing Closure User Guide" (UG612)

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


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

с квартусом нет проблем, и не было никогда, см. исходный пост. а c ISE сложнее - в документе "Constraints Guide" (UG625) ни слова о SDC нет, как и в "Timing Closure User Guide" (UG612)

так а в чём проблема-то?

Изучить SDC формат и пользовать его или загрузить в ISE файл в формате SDC?

 

google -> Xilinx ISE load SDC -> http://www.xilinx.com/support/documentatio...x12_3/ug612.pdf -> страница 97 -> "Specifying Timing Constraints in an SDC File (TCL)"

 

-------------------------

Был не прав... похоже Xilinx ISE SDC не поддерживает для синтеза и роутинга...

То что безчестный производитель назвал "Specifying Timing Constraints in an SDC File (TCL)" есть просто ограниченная и не соответствующая формату имитация...

Единственное что можно, так это использовать внешний симулятор для финального STA с поддержкой SDC

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


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

То, куда Вы сослались, это констрейны для synplify, я не использую synplify. да и SDC у synplify кривой по жизни, там не set_output_delay, а define_output_delay и никаких -min/-max

 

define_output_delay [ -disable ] { outputportName } |-default ns [ -route ns ] [ -ref clockName:edge ] [ -comment textString ]

 

то есть вопрос, как скормить ISE set_output_delay c -min так, чтобы он дошел до плейсера-роутера и trce - остается открытым.

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


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

То, куда Вы сослались, это констрейны для synplify, я не использую synplify. да и SDC у synplify кривой по жизни, там не set_output_delay, а define_output_delay и никаких -min/-max

 

define_output_delay [ -disable ] { outputportName } |-default ns [ -route ns ] [ -ref clockName:edge ] [ -comment textString ]

 

то есть вопрос, как скормить ISE set_output_delay c -min так, чтобы он дошел до плейсера-роутера и trce - остается открытым.

В квартусе так можно:

http://quartushelp.altera.com/current/merg...ext_ver_1.0.htm

http://quartushelp.altera.com/current/merg...utput_delay.htm

 

В айсе....хммм... не работал ... но может через PlanAhead?

http://www.xilinx.com/support/documentatio...0_patut_tcl.pdf

 

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


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

в готовом ядре хилинха дается готовый файл нужных констрейнов, плюс в сопроводительной документации про времянку 2-6нс сказано - Controlled by SelectIO configured for PCI66_3.

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


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

... но может через PlanAhead?

 

Вот самый первый вопрос как раз и был адресован к тем, кто работал и знает :) Как сделать в квартусе, в левере, в даймонде, я и сам кому угодно рассказать могу. А в айсе заблудился.

 

плюс в сопроводительной документации про времянку 2-6нс сказано - Controlled by SelectIO configured for PCI66_3.

 

Ну это, конечно, супер. Однако 2-6нс это был просто пример. А если надо 3-8 нс например, или 4-16 нс, что тогда делать?

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


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

ISE & Quartus 100-пудово понимают SDC формат.

Я только так и констрейню проекты ... и всем рекомендую.

Всё в хелпе

Quartus да

ISE никогда не поддерживал и не будет поддерживать SDC. а вот новое творение от хилых вивадо поддерживает XDC ( sdc subset от хилых)

тут документ про миграцию в xdc

http://www.xilinx.com/support/documentatio...o-migration.pdf

так что только ucf в ISE.

а как скормить set_output_delay -min в planahead я думаю что никак (надеюсь что не прав :) ) тем более чтобы trce _всё_ понял

 

+в вивадо конечно все проще

http://www.xilinx.com/support/documentatio...constraints.pdf

страница 77

 

про UCF

http://forums.xilinx.com/t5/Timing-Analysi...TER/td-p/205513

You can't constrain the minimum delay, but you can see it in the static timing report if you enable

"Report fastest path(s) in each constraint."

и ниже там же ответ хилых

 

The one nice thing about placing the output registers in the IOB is that the timing is fixed - as far as the data path goes. The clock skew is different depending on which pin location you choose, and the compensation of any PLL, but is also deterministic for that specific pin location.

 

What Gabor was stating is that for hold times, you want to look at the fastest path of output for the downstream hold times. But, one additional consideration is that you may receive a faster part than labeled. In order to account for this, you should use the "absolute" minimum delays for downstream device hold time in system sycnhronous I/O applications. Please keep in mind that this minimum speed grade (-0) is only characterized for minimum output delays, and is not to be used for input, or register to register delays. Also, source synchronous interfaces do not need this analysis given the clock and data skew is all that is relevant.

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


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

А при подсчёте hold time параметр skew не участвует? Может skew указать нереально большой, тем самым заставить думать про hold.

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


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

You can't constrain the minimum delay, but you can see it in the static timing report if you enable

"Report fastest path(s) in each constraint."

Короче в таком случае только одно поможет - рукосуйство

делаем SP&R, при этом тригер идущий на выход желательно плейсим в ручную в фиксированное место.

нужный HOLD TIME набираем ручным-же втыканием буферов... для 2нс думаю штук 5 хватит....

 

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


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

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

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

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

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

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

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

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

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

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