11.07.2015 Views

Static Stability Analysis of Embedded, Autocoded Software

Static Stability Analysis of Embedded, Autocoded Software

Static Stability Analysis of Embedded, Autocoded Software

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>of</strong> invariants that will effectively enable checking the correctness <strong>of</strong> the executable model withgood performance. Fortunately, there is a substantial body <strong>of</strong> work already published that addressesmany the problems involved in the design <strong>of</strong> such abstract domains, like the inference <strong>of</strong>numerical invariants for floating-point computations [5] or the discovery <strong>of</strong> ellipsoidal invariantsfor the analysis <strong>of</strong> linear digital filters [4], with extensions to uncertain dynamical systems [1].Abstract domains specialized for certain properties can be combined in various ways in orderto obtain more expressive ones that can handle more complex properties. Therefore, the effort<strong>of</strong> building a new abstract domain is incremental. We plan to use CodeHawk as a repository <strong>of</strong>abstract domains as well as a generator for building new abstract domains from combination<strong>of</strong> existing ones.3.4 Analyzing implementation artifactsStudying the analysis <strong>of</strong> the executable model provides us with the core concepts for carryingout the verification at the implementation level. In order to translate these concepts into anactual analyzer that operates at the generated code level, we need a number <strong>of</strong> auxiliary analyseswhose purpose is to recover structural data from the implementation artifacts. For example,consider the following function which has been taken out <strong>of</strong> the C code generated by Real-TimeStudio from the sample continuous model described in Section 3.1.static void rt_ertODEUpdateContinuousStates(RTWSolverInfo *si , int_T tid){time_T tnew = rtsiGetSolverStopTime(si);time_T h = rtsiGetStepSize(si);real_T *x = rtsiGetContStates(si);ODE1_IntgData *id = rtsiGetSolverData(si);real_T *f0 = id->f[0];int_T i;int_T nXc = 2;rtsiSetSimTimeStep(si,MINOR_TIME_STEP);rtsiSetdX(si, f0);logic_derivatives();rtsiSetT(si, tnew);for (i = 0; i < nXc; i++) {*x += h * f0[i];x++;}}rtsiSetSimTimeStep(si,MAJOR_TIME_STEP);6

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!