05-22-2019 09:38 AM
I am trying to use the IBUFDISABLE of the IBUFDS_DIF_OUT_IBUFDSABLE in an Artix 7, Vivado 2017.4. I have the pin connected to internal logic thru the power_down signal, and I get a conflicting error during implementation:
[Constraints 18-608] We cannot route the nets within the site IOB_X1Y104. Reason: Conflicting nets for physical connection IBUFDISABLE_SEL_OUT driven by M6.IBUFDISABLE_SEL.OUT: 1: GROUND, 2: bbif_if_i1/ad9361_bbif_if_i/ad9361_if_rx_inst/ad9361_if_rx_dpa_inst/IBUFDS_inst_i_1__0_n_0
What might be wrong? UG471 does not say anything about conflicts or restrictions on the pin or IOSTANDARD . The HW has external termination, so the internal termination must be set to FALSE. I confirmed after synthesis the internal logic for the power_down signal connected to IBUFDISABLE is as expected.
Here is the instantiation ( I used the template from Vivado):
.DIFF_TERM("FALSE"), // Differential Termination
.IBUF_LOW_PWR("TRUE"), // Low power="TRUE", Highest performance="FALSE"
.IOSTANDARD("LVDS_25"), // Specify the input I/O standard
.USE_IBUFDISABLE("TRUE") // Set to "TRUE" to enable IBUFDISABLE feature
) IBUFDS_inst_rxd (
.IBUFDISABLE(power_down) // Buffer disable input, high=disable
05-22-2019 11:06 PM
05-23-2019 12:46 AM
Hi @joleen.hind ,
Because I didn't get your source files, so I tested the instantiation which you posted in my design. The instantiation is fine.
Below is my source file ,you can have a try . Hope it can help you.
module forums( input clk, input enable, input rxd_p, input rxd_n, output rxp, output rxn ); IBUFDS_DIFF_OUT_IBUFDISABLE #( .DIFF_TERM("FALSE"), // Differential Termination .IBUF_LOW_PWR("TRUE"), // Low power="TRUE", Highest performance="FALSE" .IOSTANDARD("LVDS_25"), // Specify the input I/O standard .USE_IBUFDISABLE("TRUE") // Set to "TRUE" to enable IBUFDISABLE feature ) IBUFDS_inst_rxd ( .O(rxdp), .OB(rxdn), .I(rxd_p), .IB(rxd_n), .IBUFDISABLE(power_down) // Buffer disable input, high=disable ); reg power_down; reg rxp,rxn; always@(posedge clk)begin power_down<=enable; rxp<=rxdp; rxn<=rxdn; end endmodule
set_property IOSTANDARD LVCMOS25 [get_ports clk] set_property IOSTANDARD LVCMOS25 [get_ports enable] set_property IOSTANDARD LVCMOS25 [get_ports rxn] set_property IOSTANDARD LVCMOS25 [get_ports rxp] set_property PACKAGE_PIN AD11 [get_ports enable] set_property PACKAGE_PIN AF9 [get_ports rxd_p] set_property PACKAGE_PIN AF8 [get_ports rxd_n] set_property PACKAGE_PIN AG9 [get_ports rxn] set_property PACKAGE_PIN AH9 [get_ports rxp] set_property PACKAGE_PIN AG6 [get_ports clk]
05-23-2019 11:46 AM
I will not be able to share the RTL in a public forum. This design works with IBUFDS_DIFF_OUT and has been so for several years. But now there is a need to have a disable mode on the inputs, so that is the only change I am making it to instantiate the IBUFDS_DIFF_OUT with the IBUFDISABLE option tied to some internal logic.
Here is the schematic after synthesis, failed to implement in 2017.4, but implements with same RTL in 2018.1. However my design fails timing in 2018.1 wihtout any build setting changes or RTL changes. For IP reasons, the desire is to stay in 2017.4 version. Is there a known issue that was fixed in 2018.1 for this? Is there a 2017.4 workaround?
05-23-2019 07:40 PM
Hi @joleen.hind ，
Different Vivado version maybe performs different timing report as its algorithm has changed . Even with the same vivado version , the timing report is different when you choose different implementation strategy.
Could you install Vivado 2017.4 update 1 and have a try?
05-24-2019 06:04 AM
The specific issue with 2017.4 is not a timing issue, it is a failure to implement due to trying to use the IBUFDS_DIFF_OUT_IBUFDISABLE instantiation. I see nothing in the release notes that suggest 2017.4.1 fixes this. Our flow uses a server installation shared across many sites so I cannot get this installed in a timely manner. Is there a way of patching it in without a full install, in a Linux environment so I can prove it works before having to go thru a full tool reinstall?
If there isn't a method, I will have to open a service request against the tool.