Есть плата контроллера SDR SDRAM, пишу VHDL-код для него.
Код
set_time_format -unit ns
create_clock -name "iF14" -period 71.428 [get_ports {iF14}]
create_generated_clock -name {sPLL126} -source [get_pins {altpll0_inst|altpll_component|pll|inclk[0]}] \
-multiply_by 9 [get_pins {altpll0_inst|altpll_component|pll|clk[0]}]
set_output_delay -clock {sPLL126} -reference_pin [get_ports {oSDR_CLK}] -max 2.0 [get_ports {oSDR_A[*] oSDR_BA[*] oSDR_RAS oSDR_CAS oSDR_WE oSDR_DQM_L oSDR_DQM_H ioSDR_DQ[*]}]
set_output_delay -clock {sPLL126} -reference_pin [get_ports {oSDR_CLK}] -min -1.0 [get_ports {oSDR_A[*] oSDR_BA[*] oSDR_RAS oSDR_CAS oSDR_WE oSDR_DQM_L oSDR_DQM_H ioSDR_DQ[*]}]
set_input_delay -clock {sPLL126} -reference_pin [get_ports {oSDR_CLK}] -max 2.5 [get_ports {ioSDR_DQ[*]}] -add_delay
set_input_delay -clock {sPLL126} -reference_pin [get_ports {oSDR_CLK}] -min 1.0 [get_ports {ioSDR_DQ[*]}] -add_delay
create_clock -name "iF14" -period 71.428 [get_ports {iF14}]
create_generated_clock -name {sPLL126} -source [get_pins {altpll0_inst|altpll_component|pll|inclk[0]}] \
-multiply_by 9 [get_pins {altpll0_inst|altpll_component|pll|clk[0]}]
set_output_delay -clock {sPLL126} -reference_pin [get_ports {oSDR_CLK}] -max 2.0 [get_ports {oSDR_A[*] oSDR_BA[*] oSDR_RAS oSDR_CAS oSDR_WE oSDR_DQM_L oSDR_DQM_H ioSDR_DQ[*]}]
set_output_delay -clock {sPLL126} -reference_pin [get_ports {oSDR_CLK}] -min -1.0 [get_ports {oSDR_A[*] oSDR_BA[*] oSDR_RAS oSDR_CAS oSDR_WE oSDR_DQM_L oSDR_DQM_H ioSDR_DQ[*]}]
set_input_delay -clock {sPLL126} -reference_pin [get_ports {oSDR_CLK}] -max 2.5 [get_ports {ioSDR_DQ[*]}] -add_delay
set_input_delay -clock {sPLL126} -reference_pin [get_ports {oSDR_CLK}] -min 1.0 [get_ports {ioSDR_DQ[*]}] -add_delay
Так вот - чтение сбоит (вывожу через VGA содержимое ОЗУ), на экране видно непостоянство точек.
Тактовая 14*9=126 МГц.
Сильно подозреваю, что я чего-то не так задал.
1) Как правильно рассчитать констрейны? Особенно непонятен set_input_delay
2) CLK на ОЗУ идет от вывода 151 PLLOut. Обязательно ли выводить CLK с такого вывода ?