Capsim Text Mode Kernel
Visit the CCDSP Blog for updates. Visit CCDSP.ORG for Capsim® related information and developments.
Major Enhancement V6 (C Embedded in XML and Built in TCL Interpreter)
on the Simulation Model Kernel and Buffer Management in Capsim.
CAPSIM Text Mode Kernel (TMK) is a hierarchical interactive block diagram simulation and design system for digital signal processing and communications. All Capsim TMK models are written in C with provisions for parameters, input /output buffers, internal state maintenance, and three phases of execution: initialization, run-time and wrap-up.
Capsim Blocks are written in C embedded in XML for modular/re-usable design. Capsim includes a built in TCL interpreter for support of iterative simulation and design optimization.
Capsim TMK has been the basis for advanced research projects and undergraduate and graduate courses in communications and signal processing.
Capsim TMK based designs have resulted in the rapid introduction of new products into the market. Start your projects with Capsim TMK's built in models and extensive DSP and communications applications. Then easily incorporate your own custom C models into Capsim TMK . Capsim TMK is provided with extensive documentation.
Capsim TMK has built in IIR and FIR filter design blocks. It also incorporates LMS and fast RLS adaptive filters and block LMS adaptive filters. More and more DSP and communication applications will be added to the Capsim TMK release.
The new model for block C code generation is illustrated below, Blocks are written in embedded C code in XML and transformed to C code and incorporated into Capsim. The XML code is transformed using XSLT (Extensible Stylesheet Language for Transformation) to C code and HTML for documentation.
Capsim TMK Licensing
The Capsim Text Mode Kernel is written in C and along with hundreds of stars (blocks) and a subroutine DSP library is licensed under the GNU Lesser General Public License. Tools used to develop blocks including many Perl scripts are covered by the GNU General Public License. These tools are separate from the Capsim TMK library. The intention is to provide all of the source code of the Capsim kernel, blocks and subroutine libraries as open source code with freedom to modify and enhance the code. The GNU Lesser General Public License is intended to allow the linking in of blocks developed by the community without having to expose the code for the linked blocks. However, we encourage all developers to publish the code for their blocks and subroutines. All modifications and enhancements to the Kernel, any of the supplied blocks and subroutines with the CapsimTMK distribution must be published if distributed. Any distribution of the created Capsim executable must include a statement showing links to the original CapsimTMK source code. Top
Capsim TMK History
Capsim was originaly developed by XCAD Corporation. All XCAD Open Source projects have been transferred to and taken over by Silicon DSP Corporation. Silicon DSP Corporation has since 2006 added major enhancements to Capsim and CapsimTMK. The predecessor and original model of CAPSIM was BLOSIM. BLOSIM is a block diagram signal processing simulation program, originally developed at the University of California, Berkeley, 1985. The primary authors were D. G. Messerschmitt and D. J. Hait. Since arrival at NCSU in November 1987, the program has been extensively debugged. Capsim was completely remodeled, enhanced with new commands, and improved by XCAD Corporation and later by Silicon DSP Corporation. The person-hours spent on this task have made Capsim a vast improvement over the original in user convenience, capability and reliability. For papers on BLOSIM visit this link. The latest version changes the block models to full XML support with the capability to transform the C embedded in XML code to C/C++, SystemC, and HTML or stand alone C subroutines. A major enhancement has been the integration of TCL scripting capability where TCL scripts control the blocks in a block diagram and can change parameters and retrieve results from the blocks after a simulation completes.
The principal authors for the enhancements to BLOSIM are Professor Sasan Ardalan formerly with the Dept. of Electrical and Computer Engineering, North Carolina State Univertsity, Raleigh, NC and Jim Faber, Ph.D. Top
CapsimTMK Capability Improvements over Blosim
Many features have been added to improve simulation design and run-time efficiency.
- program re-organization, saving 20% on executable size
- improved scheduling algorithm:Before a simulation is run, blocks are "scheduled" or put into an appropriate order of execution by the controller. The new algorithm selects a more efficient ordering.
- improved run-time control of data buffer size. Previously, certain buffers could grow abnormally large, requiring excessive memory usage. Buffer size is now balanced throughout the topology via an improved visitation algorithm.
- data buffer de-allocation, allowing multiple runs. Previously, multiple runs would overflow available memory.
- internal block (both star and galaxy) parameter model storage, specification, and definition. This provides consistency checking and prevents run-time errors. Additionally, the block author now specifies parameter default values and definitions.
- parameter broadcast (via "args") is possible even from the highest topology level.
- buffer signals can be named. These signal names are accessible by the star operational code, for printing, labeling, etc, and are displayed for reference.
- compilation is controlled internally for either UNIX or VMS operating systems. Allows maintenance of a single program version for use on several systems, and allows less painful installation.
- Argument numbers may be noncontiguous. However, when stored they become contiguous.
- Plugged all memory leaks so that unlimited size simulations can be run with bounded memory foot print.
CAPSIM Convenience Improvements
Many features have been added or improved to aid the user in creating, editing and running simulations.
- on-line parameter changes with prompting; automatic type checking and compatibility enforcement for galaxy referenced parameters (args).
- on-line help descriptions for all commands.
- on-line review of star/galaxy source files.
- command history: repeat/review of previous commands.
- command alias mechanism allows shortened commands.
- new movement command "to": accepts full or partial name for a star or galaxy.
- change checking: prevents inadvertent exit or re-loading before saving a modification.
- run a simulation from any location in the topology
- improved information display format:block modification status, parameter descriptions, signal names,galaxy argument values and descriptions.
- improved error reporting: full block path names used; complete messages from star errors.
- simplified block creation: automatic instance name, default parameter creation.
- simplified block connection/disconnection: automatic default port numbering.
- re-loading of any sub-topology is possible.
- Buffer growth monitoring. This facility allows the user to monitor the growth of buffers during simulations.
- new command "replace": pin-for-pin block substitution.
- Galaxies(Hierarchical Blocks) can be substituted for stars, etc. Connections are saved, and parameters are modified automatically.
- new command "insert": put a block into an existing connection.Useful for temporary measurement stars, etc.
- new command "delete": remove a block, but restore connections.
- Single command to make buffer numbers contiguous.
- Incorporation of TCL interpreter for iterative simulation support and design optimization
CAPSIM Development Improvements
- Conversion from AWK to PERL and XSLT.
- Changed block code to embedded C in XML
- Using XSLT to transform block XML to C code
- Development and addition of Open Source Tools for Block Code Generation, and Block Database Maintenance.
- Single make command to add new blocks to Capsim executable.