Design of any communications system usually starts with a pen and paper. After some initial thoughts and theoretical studies, it will be time to perform some studies and prove that the concept works at least in simulation. There are many tools that can be used for simulation and are useful to communications system engineers. Here is a list of some of the most common software:
- MATLAB/Simulink : this simulation software appears to be one of the most widely used tools, not only among communications system engineers, but among other engineering communities as well as other areas of science and even in finance. MATLAB stands for MAtrix LABoratory and is used to perform matrix based numerical computation has powerful toolboxes with a large number of built in functions each to perform a specif type of calculations. Also data visualization in MATLAB is very easy and powerful. Simulink on the other hand is a graphical simulation software that runs in MATLAB environment. It can closely represent the actual implementation of a system in hardware and has the clock concept. Simulink also has many toolbox for example communications system tool box.
- Octave: it is a free equivalent of MATLAB. Octave primarily use is for numerical computations. Similar to MATLAB it also provides simple graphical capabilities for data visualization. The Octave language is very similar to MATLAB and codes written in Octave can be easily ported into MATLAB and vice verse.
- R : this is another simulation tool and software which is mainly used for statistical computation and has good graphical capabilities.
- Mathematica: it is another software tool for mathematical computations.
- Maple : this is a well know software for symbolic computation. So it is useful in the first stages of the design mainly in the theoretical study stage.
- SPW: Signal Processing Worksystem is a system level design tool that was originally designed to develop DSP algorithms. Later capability of simulating communication systems also were added to SPW.
- SystemVu: this tool is developed by Agilent. It enables system architects and algorithm developers to develop physical layer (PHY) for wireless and aerospace/defense communications systems. It is also useful for RF, DSP, and FPGA/ASIC implementers.
- Scilab: is a free open source software for numerical computation. It has hundreds of pre-designed functions and has 2-D and 3-D graphical capabilities.
- Sage: is a free open source mathematics software. Its mission is to create free open source alternative for tools like Mathematica and MATLAB.
And also many communications system engineers use some programming languages to create their own simulation platforms. Some of the more widely used programming languages for writing simulation tools are:
- The simulator, if written effectively, can run faster compared to pre-designed simulation tools and simulators.
- There are free compilers, so the simulator can be free.
- There are free codes, and libraries that can speed up the development of simulation software.
Some of the disadvantages of writing your own simulation software are:
- It could take much longer to write and develop a simulation system.
- Import and export and data visualization is not as easy and user friendly as in some tools like MATLAB; usually data is stored in a file and exported to a file to be visualized in MATLAB, or other tools with powerful visualization capabilities.
- If there are not good comments in the software understanding of the code might not be very easy for other users
Overall if the cost and price is not an issue, my first choice among simulation tools and software is MATLAB and Simulink. Prototyping and setting up a simulation using MATLAB and Simulink is quick, easy and accurate. Also Simulink can be used as a live documentation of the system, and can easily be transferred to ASIC engineers and is easy to understand. If the cost is an issue the next best software for simulation in my opinion is C/C++. C/C++ compilers are free and there are a large number of pre-written functions that can be used to develop a simulator.
I would love to hear from you some of your favorite tools for simulation, and your thoughts.