Design Article
Time to exploit IDEs for hardware design and verification
Cristian Amitroaie, Amiq Consulting, Andrew Betts, an independent consultant
5/18/2011 10:26 AM EDT
Integrated Development Environments are solidly established in the software community. Eclipse, a major open source IDE, has been downloaded over 5 million times. Data published in 2008 by its rival, NetBeans, showed their IDE to be in use by over 2 million users worldwide. Commercial IDEs, such as Microsoft’s Visual Studio, are also popular.
The IDE’s advantages to software engineers are many, and most of them are relevant to engineers working on hardware verification. It is, after all, a software task. Languages used include C, C++ and SystemC, of course, but increasingly the dedicated verification languages e and SystemVerilog. Many aspects of hardware design are also language based, and can potentially benefit from the use of an IDE. Most digital designers use VHDL or Verilog, and Analog/Mixed-Signal (AMS) designers are increasingly taking up related languages such as VHDL-A and VerilogAMS.
By taking a closer look at the differences between the general software and the more specialized hardware verification communities, this article will attempt to explain the current growth and future prospects of IDEs in hardware verification. The implications for hardware design are also examined.
The modern IDE
A modern IDE is much more than a glorified editor, both in terms of features and architecture. Furthermore, highly optimized graphical interfaces make initial use quite intuitive, allowing advanced functions to be learnt as the need arises (more on this below).
Figure 1 presents a conceptual snapshot of an IDE’s main functions, with emphasis on the flow of information to the user from multiple sources. In addition, an IDE acts as a central point of control over tools in the environment. A key component of the IDE is therefore the context sensitive user interface. This must display the information and controls that the user needs at any point in time, while suppressing distracting information.
As well as being convenient, the IDE’s ability to control the toolchain, including simulators, has the advantage that different tools may be plugged into the system without changing the way in which they are driven. It therefore decreases the burden of learning new tool interfaces and increases the tool/vendor neutrality of the flow.

Fig.1: IDEs provide all-round project awareness and control
The IDE’s advantages to software engineers are many, and most of them are relevant to engineers working on hardware verification. It is, after all, a software task. Languages used include C, C++ and SystemC, of course, but increasingly the dedicated verification languages e and SystemVerilog. Many aspects of hardware design are also language based, and can potentially benefit from the use of an IDE. Most digital designers use VHDL or Verilog, and Analog/Mixed-Signal (AMS) designers are increasingly taking up related languages such as VHDL-A and VerilogAMS.
By taking a closer look at the differences between the general software and the more specialized hardware verification communities, this article will attempt to explain the current growth and future prospects of IDEs in hardware verification. The implications for hardware design are also examined.
The modern IDE
A modern IDE is much more than a glorified editor, both in terms of features and architecture. Furthermore, highly optimized graphical interfaces make initial use quite intuitive, allowing advanced functions to be learnt as the need arises (more on this below).
Figure 1 presents a conceptual snapshot of an IDE’s main functions, with emphasis on the flow of information to the user from multiple sources. In addition, an IDE acts as a central point of control over tools in the environment. A key component of the IDE is therefore the context sensitive user interface. This must display the information and controls that the user needs at any point in time, while suppressing distracting information.
As well as being convenient, the IDE’s ability to control the toolchain, including simulators, has the advantage that different tools may be plugged into the system without changing the way in which they are driven. It therefore decreases the burden of learning new tool interfaces and increases the tool/vendor neutrality of the flow.

Fig.1: IDEs provide all-round project awareness and control
When oriented towards code development, a platform such as Eclipse may include, for example, toolchain management (compile, run/simulate, debug, revision control), code profiling and linting, function and class browsing/navigation, refactoring support (obsolescing terabytes of grep-sed-awk scripts!) and, of course, syntax and semantic checks with auto-completion. Please see the sidebar for more information on typical IDE features.
The fundamental, differentiating benefit of such systems, when compared to file editors and other file processing tools, is that they are aware of and manage the relationships between many different aspects of the design. That is, they operate on a project basis, relating multiple information sources to the file being worked on and communicating this to the user. Once an engineer has experienced the advantages of such a system over simple file-by-file editing, there is no looking back!
The fundamental, differentiating benefit of such systems, when compared to file editors and other file processing tools, is that they are aware of and manage the relationships between many different aspects of the design. That is, they operate on a project basis, relating multiple information sources to the file being worked on and communicating this to the user. Once an engineer has experienced the advantages of such a system over simple file-by-file editing, there is no looking back!
Navigate to related information



Paddy3118
5/19/2011 4:20 AM EDT
No matter how good the IDE is, I believe what you call toolchain management should be based on the command line ad command scripts. The reason being is that with confidence comes the desire to stretch your tool in ways not envisaged by the GUI. Having all functions accessible by script will allow one to automate a flow in the way one wants and in the scripting language one chooses.
Sign in to Reply
dyson_
5/19/2011 4:27 AM EDT
Doesn't EMACS provide a lot of the capabilities of an IDE? Syntax driven editor, change, build, debug flow support. Also what about the GUI's offered by the various tool vendors: where do they fit in? Historically these have been seen as for beginners and tend to slow down the development process requiring lots of mouse clicks to do something a couple of keystrokes can do (e.g. !r). Also graphical tools have been seen, historically, as associated with out-dated design methods (schematics)
Sign in to Reply
Nick Z
5/19/2011 9:56 AM EDT
For SystemVerilog, I use emacs almost by default. The combination of verilog-mode (http://www.veripool.org/wiki/verilog-mode) and snippets (http://coverification.com/2009/12/17/systemverilog-snippets-for-emacs/) works well enough, but when I'm deep in my environment trying to remember the name of a function or task for a specific class, I would love a nice IntelliSense like any other software IDE. And emacs (still) isn't really for the faint of heart, even with all the help online.
I've tried SVEditor plugin for Eclipse (http://sveditor.sourceforge.net/), and it works fairly well, but the intellisense breaks down a bit for macros and large projects.
Sign in to Reply
ay2011
5/20/2011 8:13 AM EDT
I am also not a fan of Eclipse-like IDE. The people I know who use Eclipse are those coming to Linux world from a Windows background. It looks to me they do not know how to use vi, emacs and the tool chain (effectively). They are not the best programmers in the team no matter what titles they have. While there's no Visual Studio on Linux, the resort to Eclipse, feeling back at home (Windows). For a Unix/Linux veteran, the initial Eclipse experience can be very uncomfortable. It is slow and a memory hog. When it crashes, everything just disappears instantly from your desktop.
I am not against graphical IDE in general; I like Visual Studio when I work on Windows. But on Linux, I haven't seen a graphical IDE that really productive yet. Maybe we can expect a really good open-source open platform IDE (as efficient as Linux tool chain, graphically appealing and feature-rich as Eclipse but written in native C/C++, but Java) in the next 10 years.
Anyway, people just have different tastes, keep up the efforts and I am sure that it has its own market.
Sign in to Reply
MHK_#1
5/21/2011 12:28 AM EDT
I had to admit from my experience that eclipse is the only IDE environment I could find and afford (free). My ear is wide-open to anyone out there, if there is any other IDE that is capable of flexibility at no-cost.
However, I was only able to use eclipse IDE in 2 projects in my 20 years DV experience. It is not that I don’t want to use, but I don’t know how to set it up as if I used to have or a company does not want me to spend a time on it.
In author’s article, there is a quick mention about consultant. You read my mind. Every client has their own directory structure, library name and corresponding instance name, simulation and log files/directories, not to mention about a debugging by matching waveform, error message and waveform. I had a very sweet time over 2 projects, because someone already set it up to link each Eclipse window for its own usage.
Other GUI environment, xvcs, questasim, incisive, or Debussy, tried to implement its own IDE. That is much uglier. My clients decide to use their own choice of tools to substitute one or many part of those EDAs. It is not matter of linux command line pipeline. It is not matter of emacs vs. vi.
In my matter, it is a consistent environment to deal with regardless who is my client would be. If someone develops a well-developed eclipse and plug-in together, I will be the first person to use it.
Sign in to Reply
rharding64
5/24/2011 6:37 AM EDT
I cross trained from EE to MS .NET in 2004. since that time i have been designing/building .net based remote control apps of embedded device under test, and control of electronic test equipment. I am now working on .net GUI to embedded device remote control, next FPGA/CPLD. I would like the opportunity to provide unique .net based tools that provide functionality that development teams desire. i am taking these comments here to heart as to discover desired functionality.
have a good day.
Sign in to Reply
Sabree_Blackmon
5/26/2011 10:17 AM EDT
As far as Linux IDE's go, there's a decent number of modern options outside of Eclipse - KDevelop has matured a great deal and is quite stable. Anjuta 3 is a great alternative to KDevelop on GNOME desktops. QT Develop is a good C/C++ IDE, even if it's centric to QT development obviously. Code::Blocks is a good option if you're using wxWidgets for development. Don't forget NetBeans works quite well on Linux workstations.
Sign in to Reply