F29H850TU: Source code to object code traceability with VLIW architecture

Part Number: F29H850TU
Other Parts Discussed in Thread: TMS320F28386D

Tool/software:

Hello,

We are currently studying the C29x documentation and have a question related to the source code to object code traceability.

As the new C29x has a VLIW architecture, meaning big part of the job to enhance performances is handled by the compiler to pack instructions, traceability between the C source code and the object code could become tricky.

At which optimization level does the compiler start re-organizing the assembly code corresponding to direct translation of the C code into optimized packed instructions ?

Best regards,

Clément

  • Hello Clément!

    The compiler can't ever guarantee an absolute "direct translation of the C code into optimized, packed instructions" because there will always be some minor instruction movement as a result of instruction scheduling, but nevertheless using a lower optimization level, such as -O1, will mitigate this effect and is what we recommend (particularly for maximum debuggability).  I would refer you to the C29 compiler user's guide section on Optimization Options for a bit more information on this. 

  • Hello Alan,

    Yes, that's what I was wondering.

    We usually do not go over -O1 in our field. Will still there be some minor instruction movement with -O1 ?

    What we fear though is that without the instructions packing optimization, we might not gain as much computation power as advertised compared to the TMS320F28386D we are currently using. Do you have some figures to share of the gain with -O1 or is that confidential ?

    From my understanding of the documentation you pointed out, the software pipelining optimization is anyways only included in -O3, right ?

    Regards,

    Clément

  • Hello Clément,

    There will be minor instruction movement with -O1, but this is expected of any compiler.  It will not be enough to be a problem for traceability between source code and assembly code. However, to really gain the performance entitlement of the C29, you need to use higher optimization levels.  Can you be more specific about why traceability between the C source code and the object code is of concern? Is it debuggability?