I am currently building my project with the command lines from an original ISE project. I copied the command lines from the BLD, MRP, and PAR reports. Everything was working fine, and I cleaned up the project. Now all of my constraints are missing. Why? What can I do to get back to the correct functionality?
The NGDBuild command line created by Project Navigator contains a '-i' which indicates that NGDBuild should use the constraints file(s) (".ucf") which have been identified as source files in Project Navigator rather than using a default ".ucf" file found by matching the top level netlist name. This information is stored in the .ise file and it affects the way that the constraints database is created.
The constraints database is contained in the "<project>_xdb" directory in a "<project>.xbcd" file. When a project is cleaned up, this directory is removed. When running from command line, the constraints database is not automatically recreated based on the ".ise" information. Therefore, none of the constraints will get applied correctly.
1. If you want to run from command line with the exact same options, then the "<project>_xdb" directory will have to be preserved from an ISE GUI run. Any time constraints are modified or a Project Cleanup has been performed, an ISE GUI flow will need to be executed once to properly generate the constraints database so that it is updated with the new constraint information.
2. The recommended and more stable alternative is to remove the '-i' from the NGDBuild command line, and replace it with a '-uc <constraint_file>.ucf' switch. This way, NGDBuild will pull in the UCF file for each implementation. This is not possible if there are multiple ".ucf" files, and so option 1 should be used in that case.
A CR is under investigation asking for more consistent behavior between the GUI and command line flows.