By Gwyneth Saldanha | Jan 7, 2014
Back in the day, FPGA and software developers only had access to a single workstation for developing, simulating production on n-tier systems, and running tests for all their projects. Virtual machines (VMs) allow developers to have multiple machines at their disposal, opening up a whole new world of business and technical opportunities.
Virtualization has been a key tool for data centers for quite some time, but it is now being recognized as an essential part of a developer’s toolbox as well. With support for Windows, Linux, and Mac, and a host of other guest operating systems, test-driving a VM is easier than ever before. Most virtualization platforms offer free versions of their products that allow you to create and run a virtual machine, with some more popular ones including VMWare, VirtualPC, and VirtualBox.
4 reasons to use VMs
1) Improved Isolation and Security
Virtual Machines offer strong isolation, which is key to avoiding cross-contamination in projects. Developing inside a VM allows a developer to keep their environment dedicated to just information for that project. It can also prevent different version installs of FPGA development software from conflicting with each other. By sandboxing the VM, any sensitive corporate or personal information residing on the host computer is kept secure.
2) Flexible Configurations
Virtual Machines lend themselves well to testing different configurations and setups. Developers can use VM snapshots to try various scenarios, and then quickly and easily restore the environment. This allows developers and software testers to identify configuration problems before end users run into them.
3) Simulation Options
Virtual Machines make great simulators for n-tier architecture. When we developed our Angry Moose iPad app, we used a VM to simulate the NIOS based web-server that the iPad application would talk to. When it came time to integrate with the real system, the iPad app communicated with the sling-shot controller with no issues whatsoever. While having a well-defined communication specification was also key to this smooth integration, using a VM for testing helped identify and fix issues early in the development cycle.
4) Ease of Distribution
When the software or FPGA code is ready to deploy and distribute, VMs can be packaged up and delivered. A flash drive or solid-state hard drive can contain an entire development environment, and end-users can simply download and run the VM. There are no complex installation instructions, no configuration headaches, no on-site engineers necessary, and all the settings, system variables, and environment variables are the same. The hardware abstraction also allows for simpler troubleshooting with it comes to support. An increasing number of server-based products, like Twiki for example, are being released as packaged VMs. This eliminates the need for compiling or OS configuration.
Migration tools are available to convert between various VM formats. Tools are also available to deploy a virtual machine to a physical machine – albeit a non-trivial task. This combination of factors makes virtualization an undeniable boon for developers and testers.