A method for internally testing a plurality of embedded memories of a data processor, wherein the data processor is formed on a single integrated circuit and at least two of the plurality of embedded memories are different in both physical placement and number of memory, locations contained therein, the plurality of embedded memories residing within the single integrated circuit, the method comprising the steps of:
- (a) generating, by an internal test controller of the data processor, a test pattern for testing the plurality of embedded memories, the test pattern having a plurality of bits;
- (b) transmitting the plurality of bits of the test pattern in a parallel manner via at least one bus of the data processor to one embedded memory in the plurality of embedded memories, the at least one bus being internal to the single integrated circuit and having no direct connection to an environment external to the integrated circuit, the at least one bus being time multiplexed to be a functional bus that is used by the data processor to communicate information in a normal mode of operation and being a test bus that is used to transmit the plurality of bits of the test pattern in a test mode of operation;
- (c) storing at least a portion of the test pattern within predetermined cells of the one embedded memory;
- (d) reading, by the internal test controller, the at least a portion of the test pattern from the predetermined cells of the one embedded memory;
- (e) verifying, by the internal test controller via the steps of reading and storing, that the one embedded memory is functioning properly, the verifying being performed by storing data in a verification storage element wherein the verification storage element has an input and an output wherein a feedback path is coupled between the input of the verification storage element and the output of the verification storage element so that the output of the verification storage element affects the input of the verification storage element;
- and
- changing the test pattern to a new test pattern and repeating steps (b) through (f) until no new test patterns are available.