Methods for Modeling and Code Generation for Custom Lookup Tables 2010-01-0941
Lookup tables and functions are widely used in real-time embedded automotive applications to conserve scarce processor resources. To minimize the resource utilization, these lookup tables (LUTs) commonly use custom data structures. The lookup function code is optimized to process these custom data structures. The legacy routines for these lookup functions are very efficient and have been in production for many years. These lookup functions and the corresponding data structures are typically used for calibration tables. The third-party calibration tools are specifically tailored to support these custom data structures. These tools assist the calibrators in optimizing the control algorithm performance for the targeted environment for production.
Application software typically contains a mix of both automatically generated software and manually developed code. Some of the same calibration tables may be used in both auto generated and hand-code [
]. Model Based Design (MBD) and Automatic Code Generation (ACG) Tools support a variety of general purpose lookup table constructs. Automatically generated software for these lookup tables and functions may not meet the needs of some customers in terms of readability and efficiency. Additionally, the data format of the resulting data structures and the code for the general purpose lookup functions may not be compatible with the existing legacy code. For example, some code generation tools flatten multi-dimensional arrays making the code unable to share the same calibration tables with legacy or hand-coded portions of the application software.
This paper presents methods to model and automatically generate efficient code and the necessary data structures for the custom lookup tables and functions. The proposed graphical LUT modeling blocks encapsulate highly optimized, readable, and reusable code that can be used in multiple environments such as model-in-loop, software-in-loop, and hardware-in-loop without modifications. The encapsulated code uses the same data storage format as the legacy software or manually generated code and thus allows integration, without additional processing, with the rest of the application software.