Node:Basics, Next:, Up:Introduction to libLCS



Basics

In this section, we will go over some of the basic information and concepts which one needs to know inorder to use libLCS correctly. We will assume that the reader has successfully downloaded, built and installed the static library for libLCS in the way presented in the Preliminaries chapter.

The lcs/lcs.h file and the namespace lcs

The only file which a user needs to include inorder to use libLCS is the lcs/lcs.h header file. However, this file includes everything that is there in libLCS. Hence, the consequent compilation process can end up being time consuming. To improve on this, one will have to include only those header files which are relevant to his/her application. Refer to the subsquent sections/chapters to learn about the relevant header files for any particular feature of libLCS.

Another basic point to note is that all constructs in libLCS are defined under the namespace lcs. Further in this userguide, you will notice that the libLCS constructs are illustrated without using the namespace lcs. It should be understood in such cases that a using namespace lcs; statement is being assumed.

Logic States

Like Verilog, libLCS also supports four-state logic. Logic states are provided as an enumerated type LineState. This enumeration is defined is the header file lcs/linestate.h. The following is the description of the four enumerated values corresponding to the four logic states.


LOW
Corresponds to the logic state '0' or false.
HIGH
Corresponds to the logic state '1' or true.
UNKNOWN
Corresponds to the logic state 'x' or an unknown state.
HIGH_IMPEDENCE
Corresponds to the logic state 'z' or a high impedence on the line.

Modules and Busses

All circuit elements, which have an input and an output, will be called as modules when reffered to in the context of libLCS. Since logic gates and flipflops have a well defined input and output, they are also called as modules in libLCS (unlike in Verilog where logic gates are reffered to as primitives). Connections between modules are made using constructs called 'busses' ('bus' in singular). They are very similar to the real world abstract concept of a 'bus' as being a carrier of n-bit data, for some n. You can now understand as to why the logic states, as described above, are enumerated under an enumerated type with name LineState. They represent the four possible states which the bus lines can take.

Compiling libLCS applications

(This section is relevant only for users of the g++ compiler of the GNU GCC set.)

If you have installed the libLCS static library as described in Installing libLCS section, then you will have to link the static library during compilation using the normal linker option. For example, if you have implemented your libLCS application in a file named myapp.cpp, then you will have to build your application binary using the following command.

     g++ -o myapp myapp.cpp -lLCS
     
If you have installed libLCS static library in your own custom way, then you should remember to link to the static library by adding the path to the static library file into the list of standard linker paths. This is done in this way:
     g++ -o myapp myapp.cpp -L"$PATH_TO_LIBLCS_STATIC_LIBRAY" -lLCS
     
It is assumed in the above command that the static library for libLCS has been named libLCS.a.