I have a HDL design that has a 16-bit inout port. Unfortunately the dev board (Arty Z7) I am using does not have enough I/O pins for me to constrain all the signals in the 16-bit port. I'm using all the other I/O pins already for other parts of the design.
On a similar design using a Spartan3e and the Xilinx ISE 14.7 tools, I was able to handle the unconnected signals in a port in the .ucf file like this:
NET "PA<0>" LOC = "D9" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<1>" LOC = "B10" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<2>" LOC = "E6" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<3>" LOC = "P12" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<4>" LOC = "D12" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<5>" LOC = "E9" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<6>" LOC = "C10" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<7>" LOC = "D1" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<8>" LOC = "D10" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<9>" LOC = "D11" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<10>" LOC = "C12" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<11>" IOSTANDARD = LVTTL | PULLDOWN ;
NET "PA<12>" LOC = "F9" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<13>" LOC = "B16" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<14>" LOC = "E11" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<15>" IOSTANDARD = LVTTL | PULLDOWN ;
I tried doing the same thing in the constraints file:
The Synthesis and Implementation complete successfully. But when I try to generate the Bitstream I get an error:
[DRC UCIO-1] Unconstrained Logical Port: 9 out of 158 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined. To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: PA[15], PA[14], PA[13], PA[12], PA[11], PA[8], PA[7], PA[4], and PA[0].
Is there anyway to fix or get around this? The HDL code that handles these signals also handles other 16-bit ports and I really don't want to make a "special" version just for this.
Question
Hartley
Hello all,
I have a HDL design that has a 16-bit inout port. Unfortunately the dev board (Arty Z7) I am using does not have enough I/O pins for me to constrain all the signals in the 16-bit port. I'm using all the other I/O pins already for other parts of the design.
On a similar design using a Spartan3e and the Xilinx ISE 14.7 tools, I was able to handle the unconnected signals in a port in the .ucf file like this:
NET "PA<0>" LOC = "D9" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<1>" LOC = "B10" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<2>" LOC = "E6" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<3>" LOC = "P12" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<4>" LOC = "D12" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<5>" LOC = "E9" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<6>" LOC = "C10" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<7>" LOC = "D1" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<8>" LOC = "D10" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<9>" LOC = "D11" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<10>" LOC = "C12" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<11>" IOSTANDARD = LVTTL | PULLDOWN ;
NET "PA<12>" LOC = "F9" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<13>" LOC = "B16" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<14>" LOC = "E11" | IOSTANDARD = LVTTL | PULLUP ;
NET "PA<15>" IOSTANDARD = LVTTL | PULLDOWN ;
I tried doing the same thing in the constraints file:
set_property IOSTANDARD LVCMOS33 [get_ports {PA[0]}]
set_property PULLDOWN true [get_ports {PA[0]}]
set_property PACKAGE_PIN W14 [get_ports {PA[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[1]}]
set_property PULLUP true [get_ports {PA[1]}]
set_property PACKAGE_PIN V12 [get_ports {PA[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[2]}]
set_property PULLUP true [get_ports {PA[2]}]
set_property PACKAGE_PIN V16 [get_ports {PA[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[3]}]
set_property PULLUP true [get_ports {PA[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[4]}]
set_property PULLDOWN true [get_ports {PA[4]}]
set_property PACKAGE_PIN Y14 [get_ports {PA[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[5]}]
set_property PULLUP true [get_ports {PA[5]}]
set_property PACKAGE_PIN W13 [get_ports {PA[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[6]}]
set_property PULLUP true [get_ports {PA[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[7]}]
set_property PULLDOWN true [get_ports {PA[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[8]}]
set_property PULLDOWN true [get_ports {PA[8]}]
set_property PACKAGE_PIN T11 [get_ports {PA[9]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[9]}]
set_property PULLUP true [get_ports {PA[9]}]
set_property PACKAGE_PIN T10 [get_ports {PA[10]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[10]}]
set_property PULLUP true [get_ports {PA[10]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[11]}]
set_property PULLDOWN true [get_ports {PA[11]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[12]}]
set_property PULLDOWN true [get_ports {PORTA[12]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[13]}]
set_property PULLDOWN true [get_ports {PA[13]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[14]}]
set_property PULLDOWN true [get_ports {PA[14]}]
set_property IOSTANDARD LVCMOS33 [get_ports {PA[15]}]
set_property PULLDOWN true [get_ports {PA[15]}]
The Synthesis and Implementation complete successfully. But when I try to generate the Bitstream I get an error:
[DRC UCIO-1] Unconstrained Logical Port: 9 out of 158 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined. To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: PA[15], PA[14], PA[13], PA[12], PA[11], PA[8], PA[7], PA[4], and PA[0].
Is there anyway to fix or get around this? The HDL code that handles these signals also handles other 16-bit ports and I really don't want to make a "special" version just for this.
Thanks
Link to comment
Share on other sites
5 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now