C++ is well recognized as an excellent language for representing complex systems due to its object oriented nature and fast execution speed, but is often considered difficult for new users. CppSim removes such difficulty by providing a simple and efficient approach to automating much of the code generation process and seamlessly interfacing to Python, Matlab®, Octave, and several waveform viewers. For many systems, the users can simply connect existing modules within the graphical environment provided by Sue2. When new modules need to be created, a template form is provided which the user simply fills in with code to describe the module behavior. A rich set of examples is provided through the many tutorials available on this site, and a powerful and easy-to-use set of C++ classes is provided to allow straightforward creation of filters, noise generators, and other common system elements.

Using C++ as the underlying language to describe the system provides a significant advantage in simulation speed and the ability to simulate very complex systems over a large number of time steps. In addition, the auto-generated C++ code provides a portable description that can be leveraged in many other environments. For instance, once a CppSim model is created, you can seamlessly turn it into a Matlab® mex function using the associated utilities provided in this package.

In addition to describing modules with C++ code, CppSim also seamlessly incorporates Verilog® modules as well as linear circuit networks and switches. For Verilog® modules, the freely available Verilator program is used to translate synthesizable Verilog® code into C++ code which is then incorporated within the overall system simulation. Likewise, for linear circuits elements such as resistors, capacitors, and inductors, a state-space model is automatically created in C++ and also incorporated within the overall system simulation.

CppSim also allows users to easily share their system descriptions with others. A sophisticated Export tool is provided in this package that allows seamless transfer of CppSim libraries in a manner that embeds all dependent modules and scripts associated with the library. The corresponding Import tool will compare all such dependent modules against the user's existing CppSim cells and only import those modules which are new or modified. The overall process allows a simple and elegant means of transfering system knowledge between users.

To get started with CppSim, simply click on the Downloads navigation button to obtain the Windows install file, and then click on the Manuals navigation bar and read the CppSim Primer document.