09-04-2019 02:50 AM
I posted this earlier this morning, but for some reason it was flagged as spam and removed...
I have a Zynq Ultrascale+ design, and I want to have LVDS inputs into a HR bank using internal termination. UG571 (v1.11) p.126 says that this is supported if the Vcco is 2.5V (which it is), and the LVDS_25 I/O standard is used.
I have tried to do this, but the IO planning window in Vivado doesn't allow DIFF_TERM_ADV to be set for these inputs. Setting it manually in the xdc file causes the following error during placement.
[DRC PORTPROP-6] I/O standard compatibility with attribute usage: Port clk_p has property DIFF_TERM_ADV set, but its I/O Standard, LVDS_25 does not support this property.
What am I doing wrong?
Here is a minimal example. Create a new project in Vivado 2019.1 targeted towards xczu7ev-fbvb900-1-e, and add the following files. Attempting to implement the design will result in the above errror.
Top.vhd:
library IEEE; use IEEE.STD_LOGIC_1164.ALL; library UNISIM; use UNISIM.VCOMPONENTS.ALL; entity top is Port ( clk_p : in STD_LOGIC; clk_n : in STD_LOGIC; test : out STD_LOGIC); end top; architecture Behavioral of top is signal clk : std_logic; signal test_buf : std_logic; begin buf : IBUFGDS port map ( O => clk, I => clk_p, IB => clk_n ); test_buf <= not test_buf when rising_edge(clk); test <= test_buf; end Behavioral
constraints.xdc
set_property IOSTANDARD LVCMOS33 [get_ports test] set_property PACKAGE_PIN L15 [get_ports test] set_property IOSTANDARD LVDS_25 [get_ports clk_p] set_property IOSTANDARD LVDS_25 [get_ports clk_n] set_property PACKAGE_PIN G13 [get_ports clk_p] set_property DIFF_TERM_ADV TERM_100 [get_ports clk_p] set_property DIFF_TERM_ADV TERM_100 [get_ports clk_n]
09-04-2019 11:24 PM
@josh_tyler You are using Zynq Ultrascale + device which has only HP and HD banks. No HR banks.
HD Banks don't support DIIF_TERM. Below snippet from Page#343 of UG571 v1.11.
Hence you getting the DRC
09-04-2019 02:57 AM
A quick guess,
I think you only have to define the _P side of a diff LVDS,
How have you created these constraints, by text or in the tools ?
09-04-2019 03:05 AM
Yes I agree that you should only need it on one, but the tools added IOSTANDARD LVDS_25 to both, so I tried to be consistent with that.
IOSTANDARD and PACKAGE_PIN constrains were generated using Vivado I/O planning. DIFF_TERM_ADV was added manually because the I/O planning tool wouldn't let me set it.
It would implement okay without DIFF_TERM_ADV set, but I want the internal termination to be used.
09-04-2019 03:09 AM - edited 09-04-2019 02:32 PM
IBUFGDS is not actually a valid primitive according to UG974. Instead, try using IBUFDS, as described in UG974.
Mark
09-04-2019 03:18 AM
Thank you for the suggestion! I've just tried it, and it gives the same error.
Josh
09-04-2019 03:43 AM
I think thats a clue,
if the tools would not let you add the termination, its not valid.
09-04-2019 03:44 AM
Taking step back,
can you instantiate a different receiver, from unisim that has the option for temination on / off ?
I seem to rember there was one , but sorry I dont have vivado here to try.
09-04-2019 04:20 AM
@drjohnsmith wrote:I think thats a clue,
if the tools would not let you add the termination, its not valid.
I agree with you, except for the fact that Xilinx' documentation tells me it is a valid configuration (UG571 (v1.11) p.126). I think I must be configuring something incorrectly in Vivado, but I would like to know how to configure it correctly.
09-04-2019 04:21 AM
@drjohnsmith wrote:Taking step back,
can you instantiate a different receiver, from unisim that has the option for temination on / off ?
I seem to rember there was one , but sorry I dont have vivado here to try.
Good idea, I've just tried this (using IBUFDS_DIFF_OUT_INTERMDISABLE, which seems to be what you were referring to), but unfortunately it gives the same error.
09-04-2019 11:24 PM
@josh_tyler You are using Zynq Ultrascale + device which has only HP and HD banks. No HR banks.
HD Banks don't support DIIF_TERM. Below snippet from Page#343 of UG571 v1.11.
Hence you getting the DRC
09-05-2019 01:37 AM
Thanks @gnarahar, I knew I must be doing something silly!