Hardware and software developments have been following separate but parallel evolutions to address the common challenges of increasing complexity and shrinking development time for electronic devices. These evolutions are producing a similar result – hardware and software developers are looking to design at higher abstraction levels. Hardware design has gone from gate-level design to RTL design, while embedded software design has gone from assembly code to procedural and object-oriented programming languages such as C and C++.
Today, the hardware and software worlds are in the midst of a concurrent structural evolution. This evolution not only represents the next stage of abstraction above RTL and programming languages, but also offers an opportunity for a common development paradigm.
Those two parallel evolutions have different names but have much in common. The hardware world calls this evolution ESL (electronic system level), with SystemC as a key driving technology. The software world calls this evolution model-based design or MDE (model-driven engineering), with the Object Management Group model-driven architecture – MDA – known as its most popular representative. Unified Modeling Language (UML) and its various flavors, and Matlab/Simulink, are the leading MDE technologies.
From a high-level perspective, ESL implies working with models and generating other models or code for the following:
• System architecting (virtual systems)
• Early software development (virtual platforms)
• Verification (virtual prototypes)
• Hardware implementation (high-level synthesis)
Simulating the execution of an electronic system that consists of both hardware and software requires a common platform. Today, most ESL virtual platforms provide the same software execution paradigm as RTL virtual prototypes: ISS (instruction-set simulators) for executing C/C++. This is not in phase with where the software design goes, which is MDE.
CoFluent Studio is the only tool that offers true capabilities for
hardware/software real-time co-modeling and
application-level design space exploration based on prospective performance analysis allowing for architecture decisions very early on the project.