How to set up Xilinx Vivado for source control
github.com
github.com
Use your own editor and source control tools outside of Xilinx's 1990s straightjacket. It creates Vivado projects and invokes it to do synthesis. You can open the generated projects in Vivado if you really need their GUI.
There's Xilinx App Note 1165 [Circa 2013] which is getting long in the tooth but still valid: https://www.xilinx.com/support/documentation/application_not...
And, Chapter 5 in Xilinx User Guide 892 is "Source Management and Revision Control Recommendations" https://www.xilinx.com/support/documentation/sw_manuals/xili...
There is also a .gitignore example which can be helpful but is not geared towards a minimal file set without alot of tweaking: https://www.xilinx.com/support/answers/61232.html
A few words of warning here: The documentation recommends using the write_project_tcl and write_bd_tcl scripts. I have experienced problems with both of these not faithfully recreating the .xpr and .bd files so exercise caution with them. A better approach is to avoid .xpr files and to use a non-project or scripted flow. If you have to use a Vivado project for some reason (I can think of a couple) then create and maintain tcl script to generate the project by hand. One can use the write_project_tcl to get started and then update it by copying the tcl generated by Vivado after each GUI operation out of the Vivado tcl console into the project generation script when making changes to the project one wants to keep.
I have had the most problems with write_bd_tcl so I am now experimenting with just checking in the .bd file and setting the .bd extension to "binary" and various merge strategies in the .gitattributes file after several projects worth of frustration with the write_xx_tcl nonsense.
Finally, take all other Xilinx recommendation of source files to check in with a grain of salt. The documentation recommends checking in way too much. I recommend sticking with the "Minimum Set of Source Files to Manage" with archival backups of all output products for critical tags (eg. releases) somewhere outside the VCS.
The only parts that actually work reliably are whatever ancient Actel-branded tools are hidden in the suite.
(The other reason is that I am unbelievably bad at getting the damn thing to meet timing.)
In their defense, nobody is buying FPGAs for the tooling, so "just good enough to check the boxes" is probably the correct economic decision with the current state of affairs, since it's probably 10x as expensive to write software that is actually pleasant to use, and while they sell a lot of FPGAs, they don't sell very many FPGA dev tools, so the economies of scale aren't there.
I agree you need to do pin-planning and possibly play with constraints, but all of that is possible from a post-synthesis design checkpoint. The advantage of OOC flow is it's scriptable, reproducible, you can parallelise different place and route strategies if you're really stuck. This advice about IP in out of context mode is good though - you need that whether you're scripting or using the UI.
The only thing that really grinds my gears about source control is that checkpoints are 50-100MB, so it's not great if you want to incrementally place and route (which is often a nice time saver)
There’s also a lot of volatility these days since all chip stocks rise and fall with trade news related to China. If you know or have faith that the trade tensions between the West and China are going to be resolved in the near future, buy. If you don’t, stay away.
Xilinx/Altera/Lattice have never found a real high volume mass market.
Xilinx for example is trying to push for cloud storage and AI applications but the reality is that if your are not worried about power consumption, then the development time/cost will be far less if you just use a GPU+CPU instead.
Unless you are doing nanosecond high criticality i/o or signal processing that benefits from high parallelization then FPGA's are probably overengineering.