Overview
Intel® CoFluent™ studio (CoFluent) is a system modeling and simulation tool for performance predictions and early optimization of architecture and design.
Intel® CoFluent™ studio helps you innovate faster by making it easier to explore the design space and speed up “what if” analyses. It can help you reduce development costs by optimizing architecture for performance, and by maximizing resource utilization. With Intel® CoFluent™, you can analyze system architecture early in the design cycle. In turn, this helps you minimizing design redo’s and shorten time to market.
Since 2004, the Intel® CoFluent™ solution has been adopted in system-on-a-chip (SoC) and consumer electronic markets. The latest releases of Intel® CoFluent™ are now being successfully used to simulate end-to-end Internet of Things (IoT) systems and determine optimal dimensions for big-data clusters.
Intel® CoFluent™ studio can be used to model and simulate the behavior, timing requirements, architecture, and performance estimates of any electronic system. This includes performance estimates for throughput, latency, load, memory, and cost. For example, Intel® CoFluent™ can model and simulate systems such as IoT, hardware (HW) intellectual property (IP), embedded software (SW) applications, and mixed HW/SW multiprocessor systems. The resulting Intel® CoFluent™ models can be used for behavioral validation, executable specifications, performance analysis, and functional architecture.
Behaviors in Intel® CoFluent™ are described with intuitive graphical notations and C/C++ code. Intel® CoFluent™ also allows you to leave algorithms undefined and abstracted to their sole execution time. With Intel® CoFluent™ studio, you can estimate behavior and performance without software application code, firmware, or a precise description of the platform with models of each component/IP core.
Modeling Flow
No one questions the importance of good specifications for developing embedded systems and chips. But once the system is specified, how can you be sure that the chosen design meets the system’s functional and other requirements? A better solution is to create models instead of simply writing documents and drawing figures. The ideal solution? Create and execute models in order to verify and validate them.
Intel® CoFluent™ studio allows you to capture design intent and system use cases in simple graphical models. In these models, the system and use case behavior is represented as a network of concurrent processes that act and interact to accomplish some logical end. Data and control flows between processes, and the flows for each process individually are described using graphical language. C/C++/SystemC* is used as an action language.
Intel® CoFluent™ allows you to perform two distinct types of modeling:
- Behavioral modeling. This is also called statistical or token-based modeling (see Figure 1). Behavioral modeling allows you to leave data types and algorithms empty, so that data communications and computations are abstracted to their sole execution time. This is useful for validating the parallel executions of processes and interprocess communications and synchronization in time.
- Functional modeling. In functional modeling, data types and algorithms correspond to the real data definition and processing done by the system. These data types and algorithms can be defined in C/C++/SystemC* or described with MATLAB*.
In addition, execution times for models can be back-annotated from calibration data. These execution times can be measured by host-based profiling of the C/C++ code, or explored in a variation range. With Intel® CoFluent™, you can describe models and obtain simulation results with limited effort in a very short timeframe.
As system use cases are captured, the resulting SystemC* test cases can be reused in any SystemC-based simulation and verification environment. This then allows you to validate a lower level of the model, a more detailed model, or a final implementation. When compared to manual coding, CoFluent’s graphical abstraction and automatic code generation provide a significant productivity improvement. In turn, this allows you to create more complex and realistic test cases.