UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
472 Views
Registered: ‎05-22-2017

defining differential vector ports in IP block

I have an IP block with an output bus called laser_out [3:0] which I need to connect to an external differential port bus which I defined in my xdc file (see definition below).  I am unable to find any way to define a differential output in the IP block which makes sense as from a logical point of view the IP block outputs singled ended signals which become differential only in the physical layer when they become ports.  However when I try to synthesise the design I get the following error message.

 

[DRC 23-20] Rule violation (IOSTDTYPE-1) IOStandard Type - I/O port laser[1] is Single-Ended but has an IOStandard of TMDS_33 which can only support Differential.

 

Can you explain how to define and use differential signals as vectors/busses ?

I am using vivado to design for the Zynq7 7z020 FPGA.

 

 

set_property direction OUT [get_ports {laser[0]}]
set_property direction OUT [get_ports {laser[1]}]
set_property direction OUT [get_ports {laser[2]}]
set_property direction OUT [get_ports {laser[3]}]
set_property direction OUT [get_ports {laser_N[0]}]
set_property direction OUT [get_ports {laser_N[1]}]
set_property direction OUT [get_ports {laser_N[2]}]
set_property direction OUT [get_ports {laser_N[3]}]
make_diff_pair_ports laser[0] laser_N[0]
make_diff_pair_ports laser[1] laser_N[1]
make_diff_pair_ports laser[2] laser_N[2]
make_diff_pair_ports laser[3] laser_N[3]
set_property PACKAGE_PIN K14 [get_ports {laser[0]}]
set_property PACKAGE_PIN H15 [get_ports {laser[1]}]
set_property PACKAGE_PIN G19 [get_ports {laser[2]}]
set_property PACKAGE_PIN J20 [get_ports {laser[3]}]
set_property IOSTANDARD TMDS_33 [get_ports {laser[0]}]
set_property IOSTANDARD TMDS_33 [get_ports {laser_N[0]}]
set_property IOSTANDARD TMDS_33 [get_ports {laser[1]}]
set_property IOSTANDARD TMDS_33 [get_ports {laser_N[1]}]
set_property IOSTANDARD TMDS_33 [get_ports {laser[2]}]
set_property IOSTANDARD TMDS_33 [get_ports {laser_N[2]}]
set_property IOSTANDARD TMDS_33 [get_ports {laser[3]}]
set_property IOSTANDARD TMDS_33 [get_ports {laser_N[3]}]

 

0 Kudos
1 Reply
Adventurer
Adventurer
468 Views
Registered: ‎11-13-2017

Re: defining differential vector ports in IP block

You can simply use OBUFDS: 

 

   OBUFDS_inst : OBUFDS
   port map (
      O => O,   -- 1-bit output: Diff_p output (connect directly to top-level port)
      OB => OB, -- 1-bit output: Diff_n output (connect directly to top-level port)
      I => I    -- 1-bit input: Buffer input
   );