Hi,
During an endurance test, we encountered the following hardware exception on C674x. The address 0xc1ef22f8 was the very last instruction in an SPLOOP. The CGTool we used was 7.3.8. I couldn't reproduce the crash in our unit test environment.
Exception at 0xc1ef22f8
EFR=0x2 NRP=0xc1ef22f8
Internal exception: IERR=0x180
Loop buffer exception
Missed stall exception
ti.sysbios.family.c64p.Exception: line 248: E_exceptionMin: pc = 0xc1ef22f8, sp = 0xc39164a0.
And then I realized that in 7.3.9, there was a fix to a similar problem as shown below.
------------------------------------------------------------------------------
FIXED SDSCM00042974
------------------------------------------------------------------------------
Summary : Resource conflict between instruction in SPLOOP and
instruction in its epilog causing hardware exception
Fixed in : 7.3.9
Severity : S2 - Major
Affected Component : Code Generator
Description:
This bug only happens at the epilog area of a SPLOOP. It could cause
resource conflict which leads to a hardware exception. There is no
obvious link between the user's C source code to this bug so it is hard
to avoid this problem at the source code level.
The fix of this bug could cause performance degradation. Usually this
happens for an early exit SPLOOP where the loop's trip count is less
than the number of iterations running in parallel. The performance could be
severly worse if this SPLOOP is the inner loop and the outer loop
executes many times. If this happens, there is no work around to fix
this problem.
This fix could also cause code size increase. But it is minimal.
Usually it is one NOP per SPLOOP.
Could the problem SDSCM00042974 cause the missed stall exception? Is there a chance that 7.3.9 solves the problem we are seeing?
Best regards,
-YU