My final rotation began on May 17, 2000. I was assigned to work on
the TMS320C55x DSP emulation team. The objective of this rotation
was to learn in detail about the emulation process, and to assist with
tasks that the team needed accomplished over the summer. For the
first half of my rotation I worked with Rational Purify and Rational PureCoverage.
Respectively, these two tools are designed to expose memory leaks in code
and provide statistics on how well a given test suite utilizes given source
files of code.
There were numerous problems encountered in working with these tools, many
of which were detailed architecture-specific issues. These problems
were worked through with the help of my team members, especially Paul Kolonay
and Mark Buser. Encountering these problems was actually a very educational
experience, as it enabled me to work with others, utilizing our problem
solving skills together to work towards finding a solution. After
the aforementioned issues had been worked through, I proceeded to learn
and utilize the two tools as needed. There were no problems exposed
in the emulation code by Rational Purify, but code coverage improvements
were needed in the test suite, and Rational PureCoverage exposed the areas
where improvements were needed. I made modifications to the test
suite and wrote additional tests (using the programming language Perl)
to improve code coverage to an acceptable level.
After this task was
accomplished, I was given the task of writing/modifying the emulation code
to enable a functionality known as profiling in the TMS320C55x Code Composer
Studio product. This functionality enables the reading of the clock
registers of the DSP so that a user can determine how many clock cycles
a specific portion of code takes to run by setting profile points in his
code. This required me to extensively understand a sizeable portion
of the emulation code, written in C, and to write code in the necessary
areas of the emulation library so that the functionality would work properly.
I accomplished this task successfully, and it was an educational experience
for me in doing so. I learned a great deal about how code development
is done in a work environment, especially how the code which a person writes
is not standalone, but rather must be understood by his fellow team members
to enable future work to be done more efficiently. This is an educational
experience which many students are unable to receive in college, as in
many instances code development is done individually and not for componets
of a larger project. I am fortunate to have had such an educational
experience.