Hi Support,
my customer is performing benchmark tests on FastRTS library (in particular function sincos()) on TMS320F28065 device.
The selection of CGT leads to significative compiling time and execution difference!
Tested CGTs: 6.4.10 and 15.12.3.LTS
Same settings: optimization OFF, as in following screenshots:
CGT 6.4.10
CGT 15.12.3.LTS
The execution timing is measured using GPIO set and clear on the following code (within the same source code):
MARK2_SET;
sincos(angle_test, &sin_theta, &cos_theta);
MARK2_CLR;
where:
#define MARK2_SET {\
GpioDataRegs.GPASET.bit.MK2GPIO = 1u;\
}
#define MARK2_CLR {\
GpioDataRegs.GPACLEAR.bit.MK2GPIO = 1u;\
}
Results
CGT 6.4.10
Compilation time: 44 seconds
Execution time ("sincos" with FastRTS): 0.98522 us
CGT 15.12.3.LTS
Compilation time: 4 minutes and 2 seconds
Execution time ("sincos" with FastRTS): 1.0714 us
This is a 8.75% increase in computational time and a huge increase in compilation time!
Moreover, from the fastRTS Libary user's guide (chapter 7 - Benchmarks):
The TMS320F28065 has zero-wait states Boot ROM (datasheet, sprs698f.pdf, Figure 6-5, pag 52) so I consider 44 cycles.
At 90 MHz the "ideal" execution time would be:
ExecTime = 44 / 90000000 = 0.49 us
Even if considering 50 cycles I get 0.55 us
In the best case (CGT 6.4.10), knowing that there is an overhead for managing input data + results and GPIO toggle, I get almost twice the expected timing.
Even worse using CGT 15.12.3.LTS, not to speak about the compiling time that lasts ages (compared to the other CGT).
What do I have to do / set in my project?
Many thanks in advance for helping me supporting customer with this issue.
Alberto


