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: 
Observer dagan.martinez
Observer
275 Views
Registered: ‎11-05-2018

Vivado: don't place unused terminals

In IP integrator, I created an EMC(external memory controller) block for the 512K SRAM on the CMOD-A7. Being 512K, the SRAM only has a 19-bit address space, but the EMC provides an interface for a 32-bit address space. I assumed since these extra bits weren't used, I could ignore them, but when I run implementation, I get:

[Place 30-58] IO placement is infeasible. Number of unplaced terminals (21) is greater than number of available sites (0).
The following are banks with available pins: 
 IO Group: 0 with : SioStd: LVCMOS18   VCCO = 1.8 Termination: 0  TermDir:  Out  RangeId: 1 Drv: 12  has only 0 sites available on device, but needs 21 sites.
	Term: EMC_INTF_0_addr[19]
	Term:  EMC_INTF_0_addr[20]
	Term:  EMC_INTF_0_addr[21]
	Term:  EMC_INTF_0_addr[22]
	Term:  EMC_INTF_0_addr[23]
	Term:  EMC_INTF_0_addr[24]
	Term:  EMC_INTF_0_addr[25]
	Term:  EMC_INTF_0_addr[26]
	Term:  EMC_INTF_0_addr[27]
	Term:  EMC_INTF_0_addr[28]
	Term:  EMC_INTF_0_addr[29]
	Term:  EMC_INTF_0_addr[30]
	Term:  EMC_INTF_0_addr[31]
	Term:  EMC_INTF_0_ben[0]
	Term:  EMC_INTF_0_ce[0]
	Term:  EMC_INTF_0_qwen[0]
	Term:  EMC_INTF_0_adv_ldn
	Term:  EMC_INTF_0_clken
	Term:  EMC_INTF_0_lbon
	Term:  EMC_INTF_0_rnw
	Term:  and EMC_INTF_0_rpn

I believe I also don't use the other terminals mentioned. What is the correct way to avoid this error?

0 Kudos
3 Replies
Xilinx Employee
Xilinx Employee
231 Views
Registered: ‎05-22-2018

Re: Vivado: don't place unused terminals

HI @dagan.martinez ,

One of the way to avoid the unused ports getting place is to set property on the respective ports as :

set_property IO_BUFFER_TYPE none [get_ports unused_port_name]

It can be applied in XDC or in HDL, for further information on this Attribute please check page no. 55 of below link:

https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug901-vivado-synthesis.pdf

 

Please note that it  should be applied on top level port.

Hope that fulfils your requirement.

Thanks,

Raj

0 Kudos
Observer dagan.martinez
Observer
208 Views
Registered: ‎11-05-2018

Re: Vivado: don't place unused terminals

Hi @rshekhaw ,

Thank you. When I try this I get the following error in implementation>opt_design>drc>netlist>port>required_buffer:

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_addr[19] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_addr[20] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_addr[21] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_addr[22] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_addr[23] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_addr[24] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_addr[25] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_addr[26] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_addr[27] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_addr[28] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_addr[29] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_addr[30] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_addr[31] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_adv_ldn should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_ben[0] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_ce[0] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_clken should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_lbon should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_qwen[0] should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_rnw should be connected to an IO cell such as an [IO]BUF*.

[DRC RPBF-1] IO port is missing a buffer: Device port emc_rtl_0_rpn should be connected to an IO cell such as an [IO]BUF*.

My constraints file now looks like:

...
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_addr[31]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_addr[30]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_addr[29]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_addr[28]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_addr[27]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_addr[26]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_addr[25]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_addr[24]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_addr[23]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_addr[22]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_addr[21]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_addr[20]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_addr[19]}]

set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_ben[0]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_ce[0]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_qwen[0]}]
set_property IO_BUFFER_TYPE none [get_ports {emc_rtl_0_wait[0]}]
set_property IO_BUFFER_TYPE none [get_ports emc_rtl_0_adv_ldn]
set_property IO_BUFFER_TYPE none [get_ports emc_rtl_0_clken]
set_property IO_BUFFER_TYPE none [get_ports emc_rtl_0_cre]
set_property IO_BUFFER_TYPE none [get_ports emc_rtl_0_lbon]
set_property IO_BUFFER_TYPE none [get_ports emc_rtl_0_rnw]
set_property IO_BUFFER_TYPE none [get_ports emc_rtl_0_rpn]

 

0 Kudos
Xilinx Employee
Xilinx Employee
151 Views
Registered: ‎05-08-2012

Re: Vivado: don't place unused terminals

Hi @dagan.martinez 

 

I noticed a case difference between the error and the IOSTANDARD constraints. Is this expected? Does the case (upper/lower) of the constraints match that of the IO ports? Also, what is the specific device?

---------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
---------------------------------------------------------------------------------------------
0 Kudos