I worked with the spartan 6-series to learn about FPGA a time ago, and I faced a strong challenge to use that technology. The ISE OS compatibility had a huge impact on most of the users when Windows 10 was established as a common user interface for computer use. We required a computer with a lot of resources because the newest version of ISE required a Virtual machine to operate on Windows 10. Another solution is to migrate our computers to Linux environments, but we need an additional learning curve to learn the new OS.
ISE had a distributed toolset, we needed open an app for each process step. Nowadays, Vivado integrates all the tools in one app, it is grateful because I can see the design flow in my designs. Understanding the process, I required some clicks to integrate my designs with the MicroBlaze soft processor in an easy way.
Vitis IDE is based on the most common cross-compiling toolsets, consequently, if you develop software in microcontrollers with eclipse-based IDEs, you will have no challenges to adapt your development habits to this one. You only require one thing, avoid tacit code. You are developing hardware too, both components need to be explicit to reduce data type misunderstanding.
If you are Windows user with Vivado 2021.2, you may face some compiling errors with the generated Makefile with the IP package. According to the Xilinx Community forums, you need to update the original wile with the following,
COMPILER= ARCHIVER= CP=cp COMPILER_FLAGS= EXTRA_COMPILER_FLAGS= LIB=libxil.a RELEASEDIR=../../../lib INCLUDEDIR=../../../include INCLUDES=-I./. -I${INCLUDEDIR} INCLUDEFILES=$(wildcard *.h) LIBSOURCES=$(wildcard *.c) OUTS=$(wildcard *.o) OBJECTS = $(addsuffix .o, $(basename $(wildcard *.c))) ASSEMBLY_OBJECTS = $(addsuffix .o, $(basename $(wildcard *.S))) libs: echo "Compiling QEI..." $(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES) $(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OBJECTS} ${ASSEMBLY_OBJECTS} make clean include: ${CP} $(INCLUDEFILES) $(INCLUDEDIR) clean: rm -rf ${OBJECTS} ${ASSEMBLY_OBJECTS}
Except for this issue, all the required time is for describing the hardware and programming the software. My final architecture for the digital controller is the following,
7 Ways to Leave Your Spartan-6 Proposal final architecture implemented on Arty S7 50