This website uses cookies on its adverts and sponsored links. By clicking the "Accept" button you are consenting to their use.

Read more

Accept


Mobile Tech Tracker
≡ sections
Home

Tech Advice

Tech Thoughts

Apps

Tech News

About

Welcome to Mobile Tech Tracker. Our mission is to help technically-minded people to become better versions of themselves and to help ordinary people to use modern smart technologies to their own advantage. If you want to support us, please consider visiting the pages of our advertisers.


HDL: how hardware design is programmed

Every tech-savvy person is aware that computer processors nowadays consist of countless tiny circuits of great complexity, which allows them to quickly execute complex calculations required in modern computing. Without this, having a palm-size multi-purpose machines like smartphones would be out of the question. However, not many people know how computer hardware required for such complex tasks is actually designed. The answer will surprise the most: it is programmed, just like software is.

HDL, which stands for Hardware Description Language is a type of computer language that exists solely for the purpose of designing electronic circuits, although it is similar in structure to an object oriented language. There are even companies that produce and licence HDL instructions required to produce hardware, rather than the hardware itself. A notorious example is ARM, which is behind the design of processors on the most of mobile devices.


Language structure and purpose

Structurally, HDL is very similar to a programming language used to write software, for example, variables are declared, control flow elements (such as loops) are executed etc.. However there are also some very important differences, one of which is explicit notion of time not used in software.

HDL is a language that provides high-level description of functionality of proposed hardware. Complete program can be executed as it is to model the processes in the hardware, or synthesizer tool can be used to translate the code into a visual model of circuit, consisting of primitive components known as netlists, understood by CAD software.


Development process

The process of coding with HDL is similar to how it is done for software; however the process contains more thorough review stages. This is why it is rare to see computer hardware functioning abnormally, while bugs in software are relatively common.

The code describes inter-relationship between various components of the hardware and, due to the complexity of the hardware, normally needs repeating blocks of code. Therefore software programming languages are often used in conjunction with HDL to produce those.

Synthesis (i.e. conversion into visual diagram) is the final stage of coding, analogous to compiling the software code. Before this stage, HDL code undergoes many stages of automated error checking to see if any circuit components may function abnormally under any circumstances.


Design validation

Due to impractically large number of possible test cases needed to verify the HDL code against the specifications, the validation process is almost entirely automated with the use of tools such as Property Specification Language. Normally, a tool used in design validation will consist of generator, driver, simulator, monitor and checker, all of which are controlled by arbitration manager.

Generator is the component that generates the input. However this input needs to be translated before it can be understood by the model, so this is when driver component comes into play. The input is then used by simulator to produce an outoput based on the current state of the circuit model as described by HDL. Monitor component records the output result on a score board, which are then checked against the expected results by the checker component. If checker doesn't find any abnormalities, the code can be synthesised into netlist diagram.


Further resources

This article has only provided high-level summary of HDL. If you are interested in knowing more about it, follow one of the links below:

FPGA 4 Fun Tutorials

ALDEC Tutorials

Verilog Tutorial



Written by

Posted on 29 Aug 2015

Comments (0)

Author's Name *

Email *

5 + 7 *

Comment

*


More from Tech Advice


How to play sound on .NET Core

How to play sound on .NET Core


How to protect your website from spammers

How to protect your website from spammers


Proven way to make programming fun

Proven way to make programming fun


Why you should care about functional programming

Why you should care about functional programming


What the heck is WebAssembly

What the heck is WebAssembly


Desktop apps are not dead. Here is why

Desktop apps are not dead. Here is why


Popular misconceptions about Node.js

Popular misconceptions about Node.js


Becoming a software developer is easier than you think

Becoming a software developer is easier than you think


Why every web developer should know Node.js

Why every web developer should know Node.js


When NoSQL is better choice than RDBMS and when it's not

When NoSQL is better choice than RDBMS and when it's not


Share this:

Facebook Google LinkedIn Twitter Become a Patron!


More from Tech Advice











Privacy Policy

© Mobile Tech Tracker. All rights reserved. Unauthorised copying of any of this website's content is prohibited under international law.

For any queries, comments or suggestions, please write to info@mobiletechtracker.co.uk.