Коллеги,что-то я опять запутался. Есть шина DDR 24 бита между двумя FPGA, режим шины - Center-Aligned,Source-Synchronous Interfaces,
тактовая частота 275МГц, чип Arria V.
Проблема с
hold. Пользуюсь методом FPGA-Centric Input Delay Constraints, поэтому виртуального клока нет.
Описываю входные задержки:
Код
set clkddr "275mhz"
create_clock -name {clk_ddr} -period $clkddr [get_ports {clk_ddr}]
set tCOmax 1
set tCOmin 0.8
set_input_delay -max $tCOmax -clock [get_clocks {clk_ddr}] [get_ports {data_ddr_*}] -add_delay
set_input_delay -max $tCOmax -clock [get_clocks {clk_ddr}] -clock_fall [get_ports {data_ddr_*}] -add_delay
set_input_delay -min $tCOmin -clock [get_clocks {clk_ddr}] [get_ports {data_ddr_*}] -add_delay
set_input_delay -min $tCOmin -clock [get_clocks {clk_ddr}] -clock_fall [get_ports {data_ddr_*}] -add_delay
На картинке видна очень большая задержка по клоку,почти 10нс. При том что период тактовой 3,6нс. Фазой PLL такую задержку не устранишь. Путь от входной ножки клока к регистру DDR :
дифф-пара - IO-IBUF - clkctrl - PLL - регистр. Выход PLL называется clk275. Вроде ничего лишнего. Delay chain уже накрутил почти по максимуму, кстати они автоматом учитываются при анализе?
Что посоветуете,коллеги?
Эскизы прикрепленных изображений