Работаю c чипом CYCLONE V - 5CSEMA5F31C6. САПР - Quartus 13.1.
Столкнулся с проблемой, что между Fast input register или выходами DDR регистра и регистром-приёмником данных набегает огромная задержка по данным. Из-за чего возникает нарушение по setup.
Для начала опишу кратко дизайн:
Имеем 3 приёмные LVDS линии c DDR регистрами. На вход CLK подается опорная частота, которая на PLL умножается на
10 5, для тактирования приёмников.

TimeQuest радостно сообщает о том, что у нас нарушение по setup и фиг вам, а не частота приёмников выше 200...230 MHZ.

Посмотрим, чуть внимательнее на само нарушение. Набегает огромная задержка почти в 3 нс по данным.

Может Quartus расположил регистры приёмники в другом конце чипа ?
Да нет, ближе практически некуда:

На данный момент у меня есть 2 мысли как можно решить проблему:
1. На pll сформировать частоту со сдвигом, и от неё тактировать регистры-приёмники.
2. На LCELL сформировать цепь задержки тактового сигнала регистров приёмников(тупиковый вариант).
Хотелось бы услышать совета от более опытных коллег. Может есть какой-то другой способ решения проблемы ?
Пока мой SDC файл выглядит так:
Код
#**************************************************************
# Create Clock
#**************************************************************
set_time_format -unit ns -decimal_places 3
create_clock -name {CLK} -period 80MHz [get_ports {CLK}]
#**************************************************************
# Create PLL Clock
#**************************************************************
derive_pll_clocks
set_false_path -from [get_clocks {MY_PLL_COMP|my_pll_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] -to [get_ports {RX0}]
set_false_path -from [get_clocks {MY_PLL_COMP|my_pll_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] -to [get_ports {RX1}]
set_false_path -from [get_clocks {MY_PLL_COMP|my_pll_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] -to [get_ports {RX2}]
Прикрепляю тестовый проект:
Сообщение отредактировал Flip-fl0p - Aug 9 2017, 07:32