Next: , Up: Preliminaries


2.1 Why a C++ library for logic circuit simulation

There are many HDLs (Hardware Description Languages) and HVLs (Hardware Verification Languages) currently in use. Among the HDLs, Verilog is the most common language of choice. Among HVLs, the Open Vera language is fast becoming a language of choice. SystemVerilog, a successor of Verilog, can be used as a HDL (Verilog is a subset of SystemVerilog) as well as a HVL. Though these languanges are easy to use, they are all evolving to incorporate features which other general purpose object-oriented languages like C++ already possess. Hence, it is natural to ask wether a language like C++ can be used effectively as a HDL. The answer to this question is exactly what libLCS is trying to seek.


It is said that every library (in whatever base language it may have been developed in) introduces another sublanguage (such a sublanguage is usually reffered to as an API) of its own. Hence, if a C++ library can be so designed that the new sublanguage it introduces is as intuitive and as powerfull as a HDL, then the answer to the question raised in the above paragraph is an emphatic "yes". libLCS is being designed and developed to verify if it really is a "yes". The aim is to be as intuitive and powerfull as the Verilog HDL.

(A C++ API called SystemC, standardised by the IEEE, can already be used for hardware simulation and verification. However, this API is not very intiutive for hardware description.)

Another natural question which one can ask is, "Why only C++? Why not Java?" It is simply because of the operator overloading feature of C++ makes it more flexible, and hence more likely to aid in desiging an intiutive sublanguage/API for hardware description.