| "How can I get clear specifications for my developments?" |
| The system architect and project manager use CoFluent Studio to produce a virtual architecture of the system that clearly defines hardware and software specifications. The complete system can be co-simulated and its expected behavior analyzed with no ambiguity. Specifications include very important timing constraints on software execution, communications and synchronization. |
| "How can I avoid design-to-implementation gap?" |
| Software engineering no longer consists in solely writing and debugging code straight from specifications (when they're available…). Contrary to other computer-aided software engineering (CASE) tools, CoFluent Studio introduces an abstraction level above C that actually works. Thanks to its strong roots in C programming and generic real-time concepts, it ensures no design-to-implementation gap. Code automatically produced by CoFluent Studio can represent more than half of the final code (and the most difficult part of it) and is completely readable and usable by developers. |
| "How can I better master complexity?" |
CoFluent Studio helps you concentrate on data and algorithms; it abstracts multitasking, communications and synchronization problems into intuitive graphical notations inspired from generic concepts found in real-time operating systems (tasks, events, message queues, etc.). Graphical notations help structure your thoughts and abstract complexity. C code is used for data and behavioral description (algorithms and state machines) for which it's the most effective method. |
| "Are tools based on standards?" |
| CoFluent Studio is based on industry standards such as C, C++, SystemC and VHDL. |
| "How can I start programming when the hardware is not available?" |
CoFluent Studio allows system designers to model the entire system as a virtual architecture that abstracts away the hardware. You can use the virtual architecture as programming and co-simulation platform and focus solely on getting your functionality and features quickly out to the market. When you need to validate lower-level software (operating system and hardware abstraction layer integration), you use the virtual prototype automatically generated (C code for a real-time kernel and VHDL code) and run it on the detailed software or hardware co-simulation environment of your choice. |
| "How can I use notations that natively support real-time constructs?" |
| CoFluent Studio was thought and built for real-time. Functional and architectural models are fully timed at all levels: communications, synchronizations, computation blocks. The application's behavior over time can be thoroughly analyzed and critical paths identified. Usual real-time problems such as deadlocks, mutual exclusions, preemption and resource starvation are easily observed and analyzed thanks to the powerful visualization tools. |
| "How can I quickly create executable models?" |
| A push-button code generation mechanism allows you to create a C++ or SystemC model of the entire system you run and analyze on your development host. Even incomplete systems with empty functions or computation blocks can be generated and executed, allowing verification at all stages of the development. |
| "How can I test my application?" |
Test cases and application software are developed in parallel, within the same environment. Multiple configurations can be created for a same component, defining alternative structures or behaviors that may represent different stages of development or different design strategies. Test cases can be used to feed test runs during a simulation, or can act as outside elements to the system (operator, mechanical device, etc.). As developers exactly define what to generate in the system, the code for test cases can be integrated to the application during verification and removed for implementation purpose. |
| "How can I verify my application?" |
| You simulate models with CoFluent Studio and uses visualization tools to observe the behavior of the system based on the value and time dependencies of inputs/outputs and internal variables. |
| "How can I find and analyze real-time problems in my application?" |
CoFluent Studio's TimeLine visualization tool acts like a software logical analyzer and lets you observe all events in the system, including tasks scheduling, inter-functions and inter-processors communications and synchronizations. Synchronization and communications problems are visually detected and understood. Then, you go back to your application, fix the problem and execute a new simulation run to verify it. |
| "How can I analyze performances of my application?" |
| Performances statistics are available for all active components in the system during a simulation: utilization rates for processor/functions and all their inter-relation (communications & synchronization) elements. |
| "How can I use the generated code?" |
| CoFluent Studio automatically generates C code for a real-time operating system for implementation purpose. Generated code is perfectly readable and usable and can represent more than half of the final application software. Configurable generation parameters enable code optimization: number of tasks, task parameters, interrupt service implementation, etc. |
| "How can I integrate legacy code?" |
C/C++ libraries can be integrated to models simulated or generated with CoFluent Studio to implement complete functions, complete computation blocks or just as an API. Behaviors of functions are described in C/C++ so any external C/C++ function call within a model can be easily made. At simulation-time, the imported library has to be available for the simulation host. If it's not the case, simple stubs can be used and the simulation model is parameterized to take into account execution time of functions. |
| "How can I create reusable components?" |
| Reusable components are created in the form of models (graphical + textual representations) that can be integrated into another model. |