Ошибся когда переносил min max. Сейчас попробовал сделать с использованием ALTDDIO_OUT. При этом c0_cl - клок, которым тактируется tx_inclock. Какие то каналы работают с инверсией, какие-то без. Результат зависит от компиляции. Все клоки видны в отчете. Сейчас есть только ошибка minimum pulse width на входе регистров, на которые подаются datain_h datain_l.
Код
ddr_clk ddr_clk_cl
(
.datain_h (1'b1),
.datain_l (1'b0),
.outclock (c0_cl),
.dataout (ClientTxClk)
);
Либо приходится делать так:
ddr_clk ddr_clk_cl
(
.datain_h (1'b0),
.datain_l (1'b1),
.outclock (c0_cl),
.dataout (ClientTxClk)
);
Код
create_generated_clock -name lvds_clk0 -source [get_pins {*lvds_ln_gen[0]*ddr_clk*|ALTDDIO_OUT_component|auto_generated|ddio_outa[0]|muxsel}] -invert [get_ports {LvdsTxClk[0]}]
create_generated_clock -name lvds_clk1 -source [get_pins {*lvds_ln_gen[1]*ddr_clk*|ALTDDIO_OUT_component|auto_generated|ddio_outa[0]|muxsel}] [get_ports {LvdsTxClk[1]}]
create_generated_clock -name lvds_clk2 -source [get_pins {nam1.ddr_clk_cl|ALTDDIO_OUT_component|auto_generated|ddio_outa[0]|muxsel}] [get_ports {ClientTxClk}]
#Tsu Th 0.25 +0.025 extra
set_output_delay -clock [get_clocks lvds_clk0] -min -0.275ns [get_ports *LvdsTxData[0][*]* ]
set_output_delay -clock [get_clocks lvds_clk0] -max 0.275ns [get_ports *LvdsTxData[0][*]* ]
set_output_delay -clock [get_clocks lvds_clk1] -min -0.275ns [get_ports *LvdsTxData[1][*]* ]
set_output_delay -clock [get_clocks lvds_clk1] -max 0.275ns [get_ports *LvdsTxData[1][*]* ]
set_output_delay -clock [get_clocks lvds_clk2] -min -0.275ns [ get_ports *ClientTxData[*]* ]
set_output_delay -clock [get_clocks lvds_clk2] -max 0.275ns [ get_ports *ClientTxData[*]* ]
p.s. линии данных и клока в каждом канале выровнены относительно друг друга.