cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
dagan.martinez
Observer
Observer
816 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
rshekhaw
Xilinx Employee
Xilinx Employee
772 Views
Registered: ‎05-22-2018

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

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
marcb
Moderator
Moderator
692 Views
Registered: ‎05-08-2012

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