• Home
  • :
  • Community
  • :
  • Blogs
  • :
  • Cadence Academic Network
  • :
  • Increasing Functional Verification Coding Process Effic…

Cadence Academic Network Blogs

Daniel Bayer
Daniel Bayer
14 Sep 2016
Subscriptions

Get email delivery of the Cadence blog featured here

  • All Blog Categories
  • Breakfast Bytes
  • Cadence Academic Network
  • Cadence on the Beat
  • Cadence Support
  • Custom IC Design
  • Digital Implementation
  • Functional Verification
  • IC Packaging and SiP Design
  • The India Circuit
  • Insights on Culture
  • Mixed-Signal Design
  • PCB Design
  • RF Design
  • Signal and Power Integrity (PCB/IC Packaging)
  • Silicon Signoff
  • System Design and Verification
  • Tensilica, Design, and Verification IP
  • Whiteboard Wednesdays
  • Archive
    • Industry Insights
    • Logic Design
    • Low Power
    • The Design Chronicles

Increasing Functional Verification Coding Process Efficiency

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…

  • … writing code
  • … debugging failures due to code
  • … code analysis with respect to implemented and missing features

And again each of these factors is determined by a set of parameters, such as:

  • Programming language
  • Language tool chain
  • Methodology
  • Developer’s skill
  • Developer’s experience
  • Complexity of the task/project

 

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).

2.    Auto-Completion

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!

Daniel Bayer

  • eclipse
  • Cadence Academic Network
  • Functional Verification
  • DVT
  • Coding Efficiency

Share Your Comment

Post (Login required)