Vivado problem I don't know how to google for! - Page 1
Forum section: electronics / general

author: 0culus
author_rank: Super Contributor
timestamp: May 01, 2019, 12:17:11 am
content: So I have an issue with Vivado that I haven't been able to figure out, and I'm guessing I either don't know the right search terms for or I'm a special snowflake.Basically, I have a master XDC constraint file for my boards (Digilent Arty-S7-50 rev B). This file lays out all the correct package pins and i/o standards for each port, button, switch, LED, etc. You're supposed to uncomment what you need. Problem is, when I get the implemented design and look at the i/o ports, all the pins I'm using are still on the default i/o standard and are not placed on a package pin, which means DRC fails and you can't generate a bitstream. How do I get Vivado to actually honor the XDC constraints here? If I set it manually, it clobbers the constraint file and writes it all at the end.

author: hamster_nz
author_rank: Super Contributor
timestamp: May 01, 2019, 12:36:32 am
content: Last time this sort of thing happened to me was when I had the wrong device package selected for the project, so the pin names were not valid, so it just picked any old pin.I've never it just ignore an XDC but if you are willing to share your design files with me (PM / email me) I am happy to have a look.Maybe include a few lines in a "code" tag in a reply?

author: KE5FX
author_rank: Super Contributor
timestamp: May 01, 2019, 12:38:40 am
content: Did you actually add the .XDC file to your project? It won't do anything if the file is just sitting there in the directory, you have to actively add it.

author: NorthGuy
author_rank: Super Contributor
timestamp: May 01, 2019, 01:00:41 am
content: If Vivado doesn't understand something in your XDC files, it usually ignores it, but it also puts up an error or warning. If you look at them, you'll see error description and referebces to line numbers in XDC files. Using this information, it should be easy understand what is wrong in XDC.After you uncomment things, you need to make sure the ports listed in XDC commands have the same names as the ports of the top entity of your design.

author: hamster_nz
author_rank: Super Contributor
timestamp: May 01, 2019, 01:12:37 am
content: Oh, and uppercase/lowercase matters in top-level signal names!

author: 0culus
author_rank: Super Contributor
timestamp: May 01, 2019, 02:08:30 am
content: Hmmm, thanks for your replies everyone. So I do have the XDC file added to the project. I did have some capitalization mismatch, so I fixed that. Now it is getting the i/o standard right (LVCMOS33) but it's doing whatever the hell it wants for package pin assignment, ignoring the ones set in XDC. None of the warnings that usually show up when it doesn't like an XDC directive either. I guess it's better than before where it was leaving everything default and not assigning anything.

author: 0culus
author_rank: Super Contributor
timestamp: May 01, 2019, 02:29:46 am
content: Nevermind. It wrote it's own constraints again at the end of my constraints.So the master XDC file provided by Digilent is here:https://github.com/Digilent/digilent-xdc/blob/master/Arty-S7-50-Rev-B-Master.xdcVivado writes them out all separately rather than using the -dict directive. Maybe Vivado doesn't like having the XDC specified as dictionaries?

author: 0culus
author_rank: Super Contributor
timestamp: May 01, 2019, 03:07:48 am
content: OK, I think I fixed it. I reset all the runs and started a new XDC file from the template linked above. I made sure all the signal names matched, etc., and now it seems to be reading the constraints correctly. Thanks for pointing that out!!!