VHDL UCF - how to define a constraint that has no pin?

constraints, fpga, vhdl

Solution

You've asked for pins within the top level of your code (on your `entity`). The tools therefore have to provide them. Hence you have to map them (otherwise it'll pick some random ones for you, which you usually don't want)

If those pins really have nowhere to go on the board and never will have, then remove them from the design completely (UCF and HDL).

Otherwise, you have to LOC them. You could add a `PULLDOWN` in the UCF to them to ensure they go to a low value.

Problem

I'm working with some simple VGA driver code for use with the Xilinx Spartan 6 FPGA (via a Papilio Pro board). The code expects to have 4-bits of output per color, and so defines logic vectors for each color. However, my setup doesn't happen to provide the full 4 bits per color so I wanted to find a creative way to control this via the UCF. The original UCF defined 4 pins for each color. In the case of blue, I only have two pins, so I chose to map the two I have to blues MSBs, thus: ``` NET Blue(0) IOSTANDARD=LVTTL; # N/C NET Blue(1) IOSTANDARD=LVTTL; # N/C NET Blue(2) LOC="P92" | IOSTANDARD=LVTTL; # to a pin NET Blue(3) LOC="P87" | IOSTANDARD=LVTTL; # to a pin ``` (I totally omitted the first two constraints at first, and it still compiled and worked but complained about the inconsistent voltage standards (the absent ones defaulted to IOSTANDARD = LVCMOS25), thus throwing "WARNING:Place:838 - An IO Bus with more than one IO standard is found.") The main warning is the one I'd like to know how to eliminate, preferably within the UCF: ``` WARNING:Place:837 - Partially locked IO Bus is found. Following components of the bus are not locked: Comp: Blue<1> Comp: Blue<0> ``` What's the right way to map a net without a programmable pin location to a default value (logic '1' or '0', or perhaps a tri-state value) within the UCF in such a way as to eliminate this "Partially locked IO Bus" sort of warning? My goal is that, in a setup with more or fewer bits per channel being driven by pins, only the UCF should need to change (not the source code). What I did works, despite the warnings... I'd just like to do it better and properly eliminate these warnings.

Original source