Мне нужно исследовать 2 канала по (1+16)разрядов данных LVDS DDR и clk под 400МГц для управления DMD . Все LVDS. сейчас хотел бы сделать на selectio_wiz_5.1 . Vivado 2014.4.1 ,плата Artix-701 и для приема использую компонент selectio_wiz_5.1 . он 16-ти разрядный, да и хотелось подвигать немного фронты, а то есть много непонятного.
Я сделал 1компонент на 16разрядов и 1 на 1разряд selectio_wiz и это для каждого канала. Каналы разнес по разным банкам. В каждом Data Delay задал Fixed, с надеждой, что здесь я смогу двигать фронты данных. У каждого компонента получилась своя группа IODELAY_GROUP, но я в каждом компоненте руками изменил и задал одно и то же имя "selectio_wiz_d_serg_A_group" – для А и "selectio_wiz_d_serg_B_group" для В. Надеялся ,что IDELAYCTRL таким образом будет один для банка одного канала и другой – для банка другого.
И еще добавил
Код
(* IODELAY_GROUP = "selectio_wiz_d_serg_A_group" *) IDELAYCTRL dlyctrl_A
(
.RDY (delay_ready_A),
.REFCLK (ref_clk_200MHz_A),//refclk_bufg),
.RST (~locked_dmd_A)//idelayctrl_reset)
);
//-------------------
(* IODELAY_GROUP = "selectio_wiz_d_serg_B_group" *) IDELAYCTRL dlyctrl_B
(
.RDY (delay_ready_B),
.REFCLK (ref_clk_200MHz_B),//refclk_bufg),
.RST (~locked_dmd_B)//idelayctrl_reset)
);
(
.RDY (delay_ready_A),
.REFCLK (ref_clk_200MHz_A),//refclk_bufg),
.RST (~locked_dmd_A)//idelayctrl_reset)
);
//-------------------
(* IODELAY_GROUP = "selectio_wiz_d_serg_B_group" *) IDELAYCTRL dlyctrl_B
(
.RDY (delay_ready_B),
.REFCLK (ref_clk_200MHz_B),//refclk_bufg),
.RST (~locked_dmd_B)//idelayctrl_reset)
);
Как сделать это автоматом не знаю. Но ничего это не помогло. В каждом компоненте остался свой IDELAYCTRL . Выдается ошибка
[Drc 23-20] Rule violation (PLIDC-3) IDELAYCTRL DRC Checks - IDELAYCTRL instances 'dlyctrl_B' and 'selectio_wiz_2_B/inst/delayctrl' have same IODELAY_GROUP 'selectio_wiz_d_serg_B_group' but their REFCLK signals are different
[Drc 23-20] Rule violation (PLIDC-3) IDELAYCTRL DRC Checks - IDELAYCTRL instances 'dlyctrl_B' and 'selectio_wiz_2_B/inst/delayctrl' have same IODELAY_GROUP 'selectio_wiz_d_serg_B_group' but their RST signals are different
[Drc 23-20] Rule violation (PLIDC-3) IDELAYCTRL DRC Checks - IDELAYCTRL instances 'dlyctrl_B' and 'selectio_wiz_sctrl_B/inst/delayctrl' have same IODELAY_GROUP 'selectio_wiz_d_serg_B_group' but their REFCLK signals are different
[Drc 23-20] Rule violation (PLIDC-3) IDELAYCTRL DRC Checks - IDELAYCTRL instances 'dlyctrl_B' and 'selectio_wiz_sctrl_B/inst/delayctrl' have same IODELAY_GROUP 'selectio_wiz_d_serg_B_group' but their RST signals are different
[Drc 23-20] Rule violation (PLIDC-4) IDELAYCTRL DRC Checks - Found IODELAY instances with different IODELAY group constraints for same I/O bank 16. The IODELAY instances and its group constrained to this bank are: 'selectio_wiz_2/inst/pins[1].idelaye2_bus : selectio_wiz_2_group' 'selectio_wiz_2/inst/pins[13].idelaye2_bus : selectio_wiz_2_group' 'selectio_wiz_sctrl_A/inst/pins[0].idelaye2_bus : selectio_wiz_d_serg_A_group' 'selectio_wiz_2/inst/pins[14].idelaye2_bus : selectio_wiz_2_group' 'selectio_wiz_2/inst/pins[0].idelaye2_bus : selectio_wiz_2_group'
Посмотрел схему – там все равно остались delayctrl в каждом компоненте ,но при этом RST signals один и тот же приходит . REFCLK signals проходит через свой bufg. т.е. он не может быть один и тот же.
И еще одна ошибка.
[Drc 23-20] Rule violation (PLIDC-1) IDELAYCTRL DRC Checks - IODELAY elements have been found to be associated with IODELAY_GROUP 'selectio_wiz_2_group', but there is no IDELAYCTRL associated with this IODELAY_GROUP.
'selectio_wiz_2_group' – имя группы, полученное при формировании компонента. И я вроде бы везде заменил его на новое 'selectio_wiz_d_serg_A_group'.
Для IDELAYE2 в компоненте сделал
Код
(* BOX_TYPE = "PRIMITIVE" *)
(* IODELAY_GROUP = "selectio_wiz_d_serg_A_group" *)
(* SIM_DELAY_D = "0" *)
IDELAYE2 #(
.CINVCTRL_SEL("FALSE"),
…
);
(* IODELAY_GROUP = "selectio_wiz_d_serg_A_group" *)
(* SIM_DELAY_D = "0" *)
IDELAYE2 #(
.CINVCTRL_SEL("FALSE"),
…
);
Где не заменил - найти не могу.
Может так нельзя делать?
Что я не так делаю и как решить эту проблему?