Get email delivery of the Cadence blog featured here
In EDA you traditionally have to know several modelling languages for several domains. One of those domains is functional verification. In functional verification you will be working with Hardware Design Languages (HDLs), Hardware Verification Languages (HVLs), scripting languages as well as source code revision systems and the tool chain that is required for running code analysis and simulations.
Measuring a developer’s coding efficiency is dependent on multiple time-oriented factors:
The time spent on…
And again each of these factors is determined by a set of parameters, such as:
Being efficient in implementing features is measured in time. In order to be able to implement a feature quickly, one has to know how to add new functionality to the code base, and in big projects this boils down to knowing and understanding the language and libraries that are involved in creating new code, which calls for an IDE that is capable of increasing coding efficiency.
In the domain of functional verification the most comprehensive IDE on the market is the Design and Verification Toolkit (DVT) plugin for Eclipse. Eclipse is an open-source framework, which is augmented by the commercial plug-ins, such as the DVT made by Amiq.
One of the most important features in the DVT plug-in is auto-completion. This feature facilitates learning and applying possible solution approaches for coding a new feature.
Let’s have a look at some IDE features within Eclipse and DVT:
1. Syntax-Highlight and Automatic On-the-Fly Error Indication
As a novice, these two features will help you to quickly internalize your verification project’s language very quickly. Syntax highlighting is a great indicator if you used the right keywords and, in conjunction with the automatic on-the-fly error indication, you get to see if your source code compiles instantaneously.
As a long-term professional these features are still quite helpful since they will still catch syntax issues as you are implementing more complex algorithms and data structures.
Without these features you’d have to switch to a console prompt, launch your compilation process, and wait for the compiler to process the file with the changes you just made. Your time savings are somewhere between a few seconds (small project) to potentially hours (big projects).
This feature is also helpful to novice and long-term professionals. As a novice you will get to learn which fields, methods, etc. are available simply by using the auto-completion feature from the current scope of programming. This alleviates time-intensive searches in language reference manuals or the library description. Once you are already more seasoned, auto-completion will become a very convenient way to shorten the numbers of characters you write, potentially avoiding typos as well as increasing the characters-per-minute ratio, allowing you to write more quality code in less time.
3. Project Setup
Setting up a project is probably not the first thing that comes to mind when thinking about efficiency; however, this serves the purpose to design and implement a clean structure for your project. With Eclipse DVT you have a guided way to get all your project files included in your project and, as a result, you get a central file that contains all the files and folders that are used throughout your project. With this file, it is possible to not only get all the DVT features, but also to utilize it for your full Incisive tool chain: simulation, regression, debug, linting, profiling, etc.
All of these come with message outputs that can be filtered by the DVT’s predefined filters and linked directly with your source code. This alleviates the need to duplicate the code-base setup for various tools and is also fully compatible with the Incisive Runner (irun) options.
These features will help you improve your coding process efficiency noticeably. This list is not intended to be complete, but should serve as a starting point to start thinking about how code efficiency can be achieved with modern software development tools.
Thanks for reading!