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: 
Explorer
Explorer
223 Views
Registered: ‎01-15-2008

Why does Vivado reject my bi-directional ports?

Jump to solution

Vivado 2018.3, custom board.  I have a custom IP with two bi-directional IO ports.  I ask Vivado to make these external, and it does:


Capture.JPG

But when I synthesize the design, Vivado puts in an OBUF, not an IOBUF.

Thanks,

Rick

0 Kudos
1 Solution

Accepted Solutions
Scholar brimdavis
Scholar
166 Views
Registered: ‎04-26-2012

Re: Why does Vivado reject my bi-directional ports?

Jump to solution

@rikraf   "a colleague of mine used the same IP core instantiated in a Vivado (same version, I believe) block diagram, and got an IO port..... Must be a setting somewhere."

Vivado doesn't handle lower level tristate and bidirectional ports correctly when using either Out-of-Context flows or certain hierarchial synthesis settings, as under those conditions it can not transmogrify the single wire port into the multiple wires needed to build these constructs in hardware.

See the following for more info:

  https://forums.xilinx.com/t5/Synthesis/Setting-flatten-hierarchy-none-causes-generate-bitstream-to-fail/m-p/797580/highlight/true#M22893

  https://forums.xilinx.com/t5/Implementation/tristate-logic-not-implemented-in-2016-4/m-p/742355/highlight/true#M16967

  AR# 46743 Would Vivado Synthesis be able to infer tristate logic in a lower level module when flatten_hierarchy is set to none?

 

-Brian

5 Replies
202 Views
Registered: ‎01-22-2015

Re: Why does Vivado reject my bi-directional ports?

Jump to solution

Hi Rick,

“No IOBUFs for Custom IP” seems to be one of the unwritten rules.  A solution is to have signal_I (input), signal_O (output), and signal_T (tri-state) ports on your custom IP – and to connect these to an IOBUF, which in turn, connects to FPGA pins at the top-level of your design.

Mark

0 Kudos
Explorer
Explorer
193 Views
Registered: ‎01-15-2008

Re: Why does Vivado reject my bi-directional ports?

Jump to solution

Right, and that's what I usually do!  But in fact a colleague of mine used the same IP core instantiated in a Vivado (same version, I believe) block diagram, and got an IO port.....  Must be a setting somewhere.  I'm loath to dig into this core.

Thanks

0 Kudos
Voyager
Voyager
191 Views
Registered: ‎06-20-2017

Re: Why does Vivado reject my bi-directional ports?

Jump to solution

Look at naming convention on QSPI IP.  If you follow that I think it *might* auto instantiate IOBUF.  Hope this helps.  (But be warned, it's been awhile and I am going from memory). 

 

EDIT:  Based on comment below, I also remember I had to turn off OOC to get it to infer an IOB correctly.

Mike
0 Kudos
Scholar brimdavis
Scholar
167 Views
Registered: ‎04-26-2012

Re: Why does Vivado reject my bi-directional ports?

Jump to solution

@rikraf   "a colleague of mine used the same IP core instantiated in a Vivado (same version, I believe) block diagram, and got an IO port..... Must be a setting somewhere."

Vivado doesn't handle lower level tristate and bidirectional ports correctly when using either Out-of-Context flows or certain hierarchial synthesis settings, as under those conditions it can not transmogrify the single wire port into the multiple wires needed to build these constructs in hardware.

See the following for more info:

  https://forums.xilinx.com/t5/Synthesis/Setting-flatten-hierarchy-none-causes-generate-bitstream-to-fail/m-p/797580/highlight/true#M22893

  https://forums.xilinx.com/t5/Implementation/tristate-logic-not-implemented-in-2016-4/m-p/742355/highlight/true#M16967

  AR# 46743 Would Vivado Synthesis be able to infer tristate logic in a lower level module when flatten_hierarchy is set to none?

 

-Brian

Highlighted
Explorer
Explorer
134 Views
Registered: ‎01-15-2008

Re: Why does Vivado reject my bi-directional ports?

Jump to solution

Yes!  thank you.  One needs to "Regenerate Output Products" and select "Global".  Then Vivado can figure out what you want.

Capture.JPGThis works

Thanks,

Rick

Tags (1)