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).