Modeling of Software Process using VisualSim Architect

Over the past few decades the software industry has been assailed by numerous accounts of schedule and cost overruns as well as poor product quality delivered by software development organizations in both the commercial and government sectors. One of the areas of research which addressed the problem effectively is Software process modeling and simulation.

The Software Process is a critical factor for delivering quality software systems, as it aims to manage and transform the need of user into a software product that meets the user needs. Here software process means the set of activities required to produce a software system and is represented as abstract representation of architecture, definition of the software process.

VisualSim Architect from Mirabilis Design is focused on Simulation of Electronic Systems and allows users to visualize the performance metrics of your system and help you get more confidence in your system architecture.

VisualSim has been used at various companies to model hardware as well as software processes, threads, and assign memory or IO budgets to these threads. Here software thread is defined to contain get data, process and write data.  Each thread or process is assigned a unique identifier value.

For example if you want to access memory, then the data-flow sequence will be Bus –> DRAM –> Bus –> CPU, data size will be 64 bytes and data triggering frequency would be periodic or event-triggered. These attributes define the software process modeling and constitutes the data-flow between devices on board.

Software_Task

If we look at the hardware, it is defined as scheduler + queue + processing resource.  For more accurate or detailed processing, we can add request cycle and arbitration algorithm.  In addition, the hardware can have power definition, which will provide instant and average power measurements for each devices, application and the entire system, as well.

VisualSim has built in parameterized libraries for major hardware, resource and software process modeling.  These include channels, Bus, DRAM, Processor blocks, Schedulers, Processing and RegEx.

To model inter-process communication, and Inter-thread synchronizations like mutex, semaphore and events, VisualSim provides library blocks such as queues (Event Based, Time, Quantity based), Schedulers, Mappers, and Virtual channels. Also you can achieve inter-thread synchronization and inter-process communication using FSM’s.

A number of our customers have been asking is how to model CPU, multiple cores and memory, which are essential for software execution. Answer is quite simple! VisualSim has Hardware modeling libraries which includes, Processor, Cache, DRAM, IO, Hardware Cache, DMA controller, PCI, and PCI Express. These modeling blocks help you model the target hardware for software execution. If you want to build you own processor block, the minimum details required are processor speed, Instruction set, Number of Registers, Pipeline stages, Context switching cycles and Cache execution details.

VisualSim has large number of libraries to model software process. The scripting language allows users to define their own algorithm and data flow processes in a C-like language with modeling-specific extensions.

Libraries like Virtual Machine, Software defining flow libraries, Execution control and traffic generators are some of the example libraries for modeling software process.

VisualSim allows the user to model at different levels of abstraction such as, Block diagram based (using parameterized libraries), Algorithm based (Both non implementation and Implementation level), State Machine based, Mathematical equation based, and Language based (Java, C, C++, SystemC). You can develop systems at multiple levels like floating, fixed point, Analytical, queuing, cycle accurate and transaction.

 Conclusion:

VisualSim is very strong in architecture exploration and performance analysis arena. VisualSim gives you performance numbers of each devices including bus, IO and peripheral devices. Performance figures are available in graphical and textual format. VisualSim allows users to run huge number of simulation runs for different device parameters in a single go and allows you to compare between the simulation runs.

For example, say you have to run simulations for processor speeds 500 MHz to 1500 MHz, and memory speed is 300 MHz to 800 MHz.  You don’t need to change these parameters every time.  Simply specify these different parameter values and run them in batch mode. Once you are done with simulation runs, VisualSim Post Processor enables you to compare the benchmark results.