SM 0 8 января, 2014 Опубликовано 8 января, 2014 · Жалоба В процессе обсуждения там возник вопрос, который логичнее задать тут: дано: Спецификация 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 И, хочу заметить, давайте не обсуждать "а нафига это надо". Надо, чтобы проект гарантировано соответствовал спецификации во всех диапазонах всего, и точка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topor_topor 0 8 января, 2014 Опубликовано 8 января, 2014 · Жалоба В процессе обсуждения там возник вопрос, который логичнее задать тут: дано: Спецификация PCI rev 3.0, Table 7-4, Tval, значения min=2нс, max=6нс, CLK=66МГц задача: Написать констрейн для выхода FPGA, описывающий это требование. И, хочу заметить, давайте не обсуждать "а нафига это надо". Надо, чтобы проект гарантировано соответствовал спецификации во всех диапазонах всего, и точка. Вот с картинкой (базовый клок и какие там задержки на пине относительно него надо) было-бы понятнее.... А-то как-то PCI стандарт не читал.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 8 января, 2014 Опубликовано 8 января, 2014 · Жалоба Вот с картинкой (базовый клок и какие там задержки на пине относительно него надо) было-бы понятнее.... А-то как-то PCI стандарт не читал.... Ну ё... Какие картинки. Берем любой даташит, открываем, находим картинку таймингов любого интерфейса, и смотрим - для каждого выходного сигнала всегда даны два времени - сколько времени после клока предыдущее значение сигнала еще стабильно (минимальное время, через которое может смениться сигнал после фронта, обычно аббревиатура Tco min), и через сколько времени сигнал после фронта клока гарантировано меняется (максимальное время, через которое гарантировано новое значение стабильно, обычно аббревиатура Tco max). Вот у PCI, для примера, они требуются 2 нс и 6 нс, их и надо задать констрейном для выхода FPGA, указав синтезатору и анализатору, что сигнал на выходе должен смениться не ранее, чем через 2 нс после фронта клока, и не позднее, чем через 6. Это вот второе время, для PCI равное 6 нс, у xilinx задается как OFFSET OUT AFTER. А вопрос про первое время, минимальное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topor_topor 0 8 января, 2014 Опубликовано 8 января, 2014 · Жалоба Ну ё... Какие картинки. Берем любой даташит, открываем, находим картинку таймингов любого интерфейса, и смотрим - для каждого выходного сигнала всегда даны два времени - сколько времени после клока предыдущее значение сигнала еще стабильно (минимальное время, через которое может смениться сигнал после фронта, обычно аббревиатура 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] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 8 января, 2014 Опубликовано 8 января, 2014 · Жалоба В SDC формате А куда их ise (v14.3) указать? В SDC-формате? Я так понимаю, что прямо в UCF нельзя указать Tco min? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topor_topor 0 8 января, 2014 Опубликовано 8 января, 2014 · Жалоба А куда их ise (v14.3) указать? В SDC-формате? Я так понимаю, что прямо в UCF нельзя указать Tco min? ISE & Quartus 100-пудово понимают SDC формат. Я только так и констрейню проекты ... и всем рекомендую. Всё в хелпе Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 8 января, 2014 Опубликовано 8 января, 2014 · Жалоба с квартусом нет проблем, и не было никогда, см. исходный пост. а c ISE сложнее - в документе "Constraints Guide" (UG625) ни слова о SDC нет, как и в "Timing Closure User Guide" (UG612) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topor_topor 0 8 января, 2014 Опубликовано 8 января, 2014 · Жалоба с квартусом нет проблем, и не было никогда, см. исходный пост. а 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 8 января, 2014 Опубликовано 8 января, 2014 · Жалоба То, куда Вы сослались, это констрейны для 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 - остается открытым. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topor_topor 0 8 января, 2014 Опубликовано 8 января, 2014 · Жалоба То, куда Вы сослались, это констрейны для 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZASADA 0 8 января, 2014 Опубликовано 8 января, 2014 · Жалоба в готовом ядре хилинха дается готовый файл нужных констрейнов, плюс в сопроводительной документации про времянку 2-6нс сказано - Controlled by SelectIO configured for PCI66_3. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 8 января, 2014 Опубликовано 8 января, 2014 · Жалоба ... но может через PlanAhead? Вот самый первый вопрос как раз и был адресован к тем, кто работал и знает :) Как сделать в квартусе, в левере, в даймонде, я и сам кому угодно рассказать могу. А в айсе заблудился. плюс в сопроводительной документации про времянку 2-6нс сказано - Controlled by SelectIO configured for PCI66_3. Ну это, конечно, супер. Однако 2-6нс это был просто пример. А если надо 3-8 нс например, или 4-16 нс, что тогда делать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 9 января, 2014 Опубликовано 9 января, 2014 · Жалоба 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MadMakc 0 9 января, 2014 Опубликовано 9 января, 2014 · Жалоба А при подсчёте hold time параметр skew не участвует? Может skew указать нереально большой, тем самым заставить думать про hold. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
topor_topor 0 9 января, 2014 Опубликовано 9 января, 2014 · Жалоба 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 хватит.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться