A Diamond Xilinx licence adds to the functionality of Diamond by building complete firmware from user-defined tasks. To these it automatically adds any pre-defined blocks needed to give communication resources and deal with issues such as managing different clock domains. The firmware is embedded in the final application image and is loaded automatically to the correct FPGAs when the program is executed. Diamond supports both independent FPGA modules and FPGAs attached to DSP modules.
You can create FPGA tasks for Diamond with a wide range of tools, including Matlab Simulink, Impulse-C, and Xilinx System Generator. Simply placing a task on a processor declared to be an FPGA will instruct the configurer to take the task's VHDL or netlist description and incorporate it as a bitstream into the final application image file. When the application is loaded, Diamond takes care of configuring each FPGA onto which you have placed tasks.
Communication between pairs of tasks is still managed by channels. You can connect a DSP task to an FPGA task, a DSP task to another DSP task, or an FPGA task to another FPGA task. All the firmware blocks needed to implement this communication are added to the bitstream automatically. Because Diamond and the Diamond IDE provide the know-how for creating firmware, even if you are not an expert in FPGA technology you can create highly parallel applications very quickly; adding the logic needed for efficient communication with the outside world and between tasks is handled automatically. If you are an expert, Diamond can expose the low-level details to let you fine-tune your solution.


