This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Compiler/TMS320F28377D: Pipeline write-read conflict

Part Number: TMS320F28377D

Tool/software: TI C/C++ Compiler

Have found a workaround for this issue, but wanted to understand if it's fixed or just hidden and could come back.

We are/were getting the following error:

"C:\Users\214008~1\AppData\Local\Temp\2771610", ERROR!   at line 3127: [E9999] Pipeline write-read conflict detected

               MPYF32    R0H,R4H,R7H           ; [CPU_] |1667|

Unfortunately since this is a temporary file so we weren't able to really inspect the details of the error.  But the source of the error was tracked down to the main control model code (see below for details) and only when optimizations are set to level 2.

Using Code Composer 7.0.0.00043 and compiler "TI V16.9.1.LTS"

Main control model:

Due to speed requirements, all of the control code is declared inline and ran from RAM.  The file is ~7000 lines long, with ~3000+ lines of C code, and almost exclusively floating point math.  There are 2 root (non-inline) functions, the initialization function and the running the actual control loop.  Of the two the initialization function is very simple, maybe 100-200 lines of code after everything is placed inline with most of that just initializing structures.  The odd thing is that the pipeline conflict was being caused by the initialization function and not the control loop.

Workaround/"fix"

We found through trial and error that by changing one of the sub sub initialization functions to not be inline, there were several we found that could do this and only changing one of them would fix the issue.  Alternately changing one of the global (file scope) variables to be volatile would fix the error, again there was a number that could be changed and only one was needed.

Dropping the optimization level to 1, 0, or off would also fix the error, but this isn't an option for us due to the speed constraints.

What we are doing:

Currently we are not setting any of the initialization functions to be inline and moved the main state machine to a separate file (~1500 lines, ~800 C code lines).

  • This ...

    Benjamin Cheek said:

    "C:\Users\214008~1\AppData\Local\Temp\2771610", ERROR!   at line 3127: [E9999] Pipeline write-read conflict detected

                   MPYF32    R0H,R4H,R7H           ; [CPU_] |1667|

    ... means the compiler generated assembly code which the assembler says is in error.  One of them is wrong.  

    I'd appreciate if you would put things back in the state where you see that diagnostic.  Then, for the source file which gets that diagnostic, send in a test case as described in the article How to Submit a Compiler Test Case.

    Thanks and regards,

    -George

  • HI George,

    Since this is a critical section of this projects IP I'll have to see if it will be possible for me to send the pre-processed file, even with comments stripped.  I'll ask and hopefully be able to let you know in the next few days.

    Thanks,

    --Ben

  • I hope you have obtained permission to send in a test case.  If so, I'd appreciate getting it.

    Thanks and regards,

    -George

  • Unfortunately I am unable to share the code in it's current form.  Stripping the code to a small snip it with the error is possible, but don't have the time to work on that right now.  I have saved a copy of the code with the issue and will hopefully be able to come back and try to make a sub portion of the source that is acceptable to share at a later date.  Given our schedule that is unlikely to happen before October.

  • I understand.  I will mark this thread resolved, even though that is not quite the case.  That helps me know not to work on it.

    Benjamin Cheek said:
    Given our schedule that is unlikely to happen before October.

    If you really take that long, then this thread will automatically lock.  Unfortunately, that means you cannot post to it.  You will have to start a new thread.  But you can refer back to this one.

    Thanks and regards,

    -George