Tools exist for producing computer-implemented graphical models. Using the tools, models can be created, edited, and executed within a computing system. These models can then be translated into a high-level language program code, such as C, C++, Ada, Java, or Javascript which may then be compiled into an object code or executable code. The object code or executable code can then be run on computing hardware independent of the graphical modeling tools.
Current graphical modeling tools produce program codes that are generic in nature. For example, current tools may use program code that compiles or may be precompiled into object code or executable code which can be run on a wide variety of computing hardware. A single program code generated from a graphical model may compile into a single object code that may be run on, for example, an x086 Intel-type processor, an AMD-type processor, and a PowerPC-type processor. This generic single program code and the single object code the generic single program code compiles into may not be able to take advantage of specific performance enhancing features of these various processor types because the single program code was generated and compiled to run on all of these processor types.
Single program code compiled into the single object code may not achieve optimal or improvable performance on any computing hardware. Additionally, current graphical modeling tools may produce processor specific program code that may use processor-optimized function calls, inlined assembly code, or C/C++ language extensions in order to access the hardware specific optimization capabilities. For example, Simulink® and Real-Time Workshop® by The MathWorks, Inc. of Natick, Mass. (hereinafter “The MathWorks”) may provide target specific optimization capabilities for the C90 (ISO/IEC 9899:1990) and C99 (ISO/IEC 9899:1999) C-language standards as well as the GNU compiler tool chain. Additionally, target specific optimizations may be achieved with Simulink and Real-Time Workshop by creating a user-defined S-function block. However, these existing approaches may not be configurable, customizable or extensible through a documented API. Furthermore, their capability may be limited to predefined replacements and are not generally applied across all graphical modeling constructs.