 | | Are the CoFluent Studio™ tools portable? |
|  | | CoFluent Studio tools are written using the Java™ technology and can be used on Windows®, UNIX® and Linux workstation. |
|
| What level of detail are models created with CoFluent Studio at? |
|  | | CoFluent Studio lets designers create models at any level of detail. For a given application, developers have to identify the granularity of the model to be created in relation to the results they expect from the model. Granularity is defined by the basic blocks of computation and the abstract data types considered. CoFluent Studio is appropriate for coarse-grain modeling. |
|
| What level of communications is modeled and simulated with CoFluent Studio? |
|  | | With CoFluent Studio, designers create models at the message-level. System components communicate by exchanging data encapsulated as messages through 2 primitives: send and receive. Communications are atomic and mutually exclusive: a send or receive can’t be refined or interrupted and blocks the communications channel (physical link) it uses until it’s complete. Data types are of any kind: elementary, array, structured or composite. Communications protocols are implementation-independent and fully timed. |
|
| What does technology-independent mean? |
|  | CoFluent Studio’s functional model is technology-independent in a sense that no implementation-specific considerations are introduced in the system at hand. Implementation-specific considerations can be: size of data exchanged, speed and kind of processor, compilation options, bus’ throughput, operating system’s primitives, drivers, register’s address, etc. This approach guarantees that the functional solution can be verified on its own and implemented on various hardware and software architectures. |
|
| What is the “Y” design flow? |
|  | The “Y” design flow first separates the logical architecture (or application) from the physical architecture (or platform) and joins these two views in a mapping operation to obtain the complete system architecture. The logical architecture (or functional model, also called timed-behavioral model) describes a system in an organizational viewpoint by a set of interacting functional elements (functional structure) and defines the behavior for each of them. This model must represent the correct behavior of the system without any references to its potential implementation. The physical architecture (or executive structure model) describes the system’s hardware based on active components (microprocessors, specific processors, memories, analog and digital components) and their interconnections. The 2 models, functional and physical, considered separately, are independent. A design solution is complete when the mapping between the functional and executive viewpoints is achieved by defining a hardware/software partition and allocation correspondence, also called architectural configuration. The resulting model is an architectural solution = functional solution + executive structure + functional-to-executive mapping. This approach enables designers to maintain and change the system’s functions and/or platform independently. |
|
| Can CoFluent Studio’s models be executed? |
|  | | Yes, CoFluent Studio’s functional and architectural models are fully executable by simulation. |
|
| What kind of simulation is available with CoFluent Studio? |
|  | | CoFluent Studio provides an event-based simulator that delivers much higher simulation speed than instruction-set simulators (ISS) or register transfer-level (RTL) simulators. |
|
| What does timed-behavioral mean? |
|  | CoFluent Studio’s functional model is fully timed in a sense that execution times of computation blocks and communications are introduced. Therefore, the system’s time dependency (i.e. the system’s behavior over time) can be predicted. By default, the functional model is executed in an ideal environment (fully paralleled functions, immediate communications, unlimited resources). Time constraints can be added to elements of the behavioral model in order to assign more realistic execution or communication times. In the architectural model, additional time constraints are added based on chosen hardware and software elements of the architecture. |
|
| What kind of performances can CoFluent Studio analyze? |
|  | Difficulties in designing systems come from the integration of multiple individual parts and the communications between parts. It’s not enough to optimize each part individually: the integration of optimized parts can result in a poorly optimized system. CoFluent Studio aims at addressing system-level optimization, making sure that the integration of the individual parts designed with CoFluent Studio, developed and optimized separately, results in an optimal system. Models created with CoFluent Studio represent a macroscopic view of electronic hardware/software systems. Performances analysis with CoFluent Studio enables designers to validate the system’s behavior in regards to the chosen performances (and other non-functional) attributes. Generic results such as bus throughput and CPU utilization can be easily extracted. Once the complete model of the system including all its performance constraints has been validated, it gives developers a high-level image of the required hardware/software elements and organization for the final product. Designers know that if the final product respects the specified time constraints in the final model, no major performances problems should occur. However, fine-grain performances analysis taking into account CPU caches or bus cycle accurate models is not possible with CoFluent Studio. Such a simulation becomes very rapidly impossible to handle due to the system’s complexity, the amount of results generated and extremely long simulation times. |
|
| How precise performance results delivered by CoFluent Studio are? |
|  | Analyzing performances with CoFluent Studio aims at identifying the right system architecture and specifying high-level requirements for hardware components in the system. The focus is on global properties of the system: studying the effects of interactions between functions sharing CPUs and physical communications links. Hence, only significant parameters contributing to influencing the above effects are taken into account: execution time of computation blocks, communications times, software multitasking parameters (scheduling policy, task switching overhead), processors speed, communications links speed. To analyze the execution time of computation blocks, the most precise method consists of using an instruction-set model of the target processor. With CoFluent Studio, developers execute the piece of code on a reference CPU (their host machine) and obtain a reference execution time (profiling technique). This alternative method is precise-enough, simple (no need to adapt the program), quick and takes into account the real data values that influence greatly execution times. During a simulation performed with CoFluent Studio, a speed-up or speed-down scaling factor can be applied to the reference time in order to take into account speed differences between the reference CPU and the considered target CPU. Such a method allows system architects to get very accurate (with an estimated error factor of less than 10%) performances results very quickly and early on the project in order to guide them in their architectural decisions. As this analysis is done at 2 abstraction levels above the RTL, developers save time and efforts in system modeling time and simulation cycles (estimated 1000x speed-up) they can invest in finding the right architecture following an iterative exploration process. |
|
| What is the difference between software and hardware processors? |
|  | With CoFluent Studio, designers define the system’s executive structure (or physical architecture/platform) in terms of memories, communications nodes and processors. Processors, taken here in their literal sense, are processing engines capable of executing the described behavior of one or several functions. Functions of the functional model are allocated to the available processors on the executive structure. Hardware/software partitioning between functions depends on the type of processor they are mapped to and executed on: hardware or software. A “software processor” indicates that functions it executes are software ones. The processor itself is an abstraction of a unit of computation: microcontroller or microprocessor and its dedicated memory and peripherals, with associated low-level software (BSP, drivers) and RTOS. A “hardware processor” indicates that functions it executes are implemented in hardware (typically an ASIC or FPGA). From the degree of parallelism point of view: - Hardware processors are able to execute all their functions concurrently; - Software processors execute one function at a time (a processor sharing policy is required to schedule execution of multiple functions). |
|
| Can the generated code be read and understood by developers? |
|  | | The generated code is optimized, completely readable and easily understood on the basis of the graphical and textual modeling. |
|
| What RTOS is supported by the C-RTK code generator? |
|  | The current version of the CoFluent Studio C-RTK code generator generates implementation-ready C code for targets running Wind River’s VxWorks® real-time operating system, or running no OS at all. The obtained VxWorks code can be directly compiled and loaded to the target from Wind River’s Tornado® IDE. In the case of targets running no OS, the ANSI C code can be cross-compiled and downloaded with the tools of your choice. The C-RTK generator can be easily extended to support additional operating systems upon request. |
|
|