# Patent

## Title
Frequency trimming for internal oscillator for test-time reduction

## Abstract

An internal precision oscillator (IPO) is trimmed within a microcontroller integrated circuit. The microcontroller integrated circuit receives a test program into flash memory on the microcontroller integrated circuit from a tester. The microcontroller integrated circuit also receives a reference signal from the tester. The IPO generates a clock signal having a frequency that depends upon a trim value. A general purpose timer on the microcontroller integrated circuit counts the number of cycles of the clock signal during a time period defined by the reference signal and outputs a digital value. A processor on the microcontroller integrated circuit executes the test program, reads the digital output, and adjusts the trim value such that the frequency of the clock signal is calibrated with respect to the reference signal. Test-time on the tester is reduced because the decision making during the frequency trimming process is made by the processor instead of the tester.

## Background
TECHNICAL FIELD
The disclosed embodiments relate to frequency trimming of on-chip oscillators for Device Under Test (DUT) test-time reduction.
BACKGROUND
External crystal oscillators and internal precision oscillators (IPOs) are used to provide clock signals for many electronic circuits and applications. Although an external crystal oscillator provides an accurate oscillation frequency, a crystal oscillator is usually more expensive and less reliable. Therefore, an internal precision oscillator (IPO) is sometimes preferred over an external crystal oscillator. However, IPOs are implemented on semiconductor chips (known as Integrated Circuits) and could generate inaccurate oscillation frequencies due to production-related parameter fluctuations (i.e., process, voltage and temperature variations). For systems or inter-system communications that require a high precision target frequency, an IPO generally needs to be tested such that it generates an oscillation frequency that is substantially equal to the target frequency. Commonly, the oscillation frequency of an IPO is dependant upon a trim value representing either resistance or capacitance within the IPO. During the testing process (also known as trimming), the oscillation frequency is calibrated with respect to the target frequency by adjusting the trim value.
FIG. 1 (prior art) is a diagram of a microcontroller integrated circuit 1 and a production tester 2 (Teradyne J750 as illustrated). Microcontroller integrated circuit 1 includes a RC IPO 3, an on-chip debugger 4, a trim register 5, and a parallel data bus 6. Microcontroller integrated circuit 1 also includes terminal 7 and terminal 8. RC IPO 3 generates a clock signal that is output onto terminal 7. Tester 2 receives the clock signal from terminal 7. Tester 2 has a serial port 9. Serial port 9 of tester 2 is connected to terminal 8 of microcontroller integrated circuit 1 for serial communication.
FIG. 1 illustrates an example of a frequency trimming method for RC IPO 3 using production tester 2. In the example of FIG. 1, the frequency of the clock signal is dependant upon a 10-bit trim value that is stored in trim register 5. Tester 2 receives the clock signal and measures the frequency of the clock signal. Tester 2 then compares the measured frequency with a desirable target frequency (for instance, a frequency of 5.5296 MHz). If the measured frequency is different from 5.5296 MHz, then tester 2 sends out a new 10-bit trim value in serial digital format through serial port 9. On-chip debugger 4 receives the new trim value from terminal 8 in serial digital format and converts the new trim value to parallel format. On-chip debugger 4 then writes the new trim value into trim register 5 across parallel bus 6. RC IPO 3 then generates a clock signal with a different frequency that is closer to 5.5296 MHz due to the new trim value. Tester 2 measures the new frequency of the clock signal and repeats the same trimming process until the frequency of the clock signal is substantially equivalent to the target frequency of 5.5296 MHz.
This frequency trimming process for RC IPO 3 using tester 2 is performed for each chip individually and is time consuming. Extra cost and test latency is introduced for a number of reasons. First, a regular tester is usually designed for sending predefined inputs and checking predefined outputs. In order to measure frequency and make a decision in adjusting the trim value, tester 2 is more intelligent and therefore more expensive than a regular tester. Second, sending the new trim value in serial digital format through serial communication is slow. Third, tester 2 is occupied throughout the entire trimming process because it uses its serial port to communicate to microcontroller integrated circuit 1 through debug terminal 8. As a result, tester 2 may not be able to perform other tests during the frequency trimming process. The large amount of test time required to trim RC IPO 3 adds to the total cost of microcontroller integrated circuit 1. Therefore, it is desirable to reduce the amount of test time required to trim RC IPO 3.
SUMMARY
An on-chip oscillator is trimmed internally within the microcontroller integrated circuit. In one embodiment, the microcontroller integrated circuit receives a test program into a flash memory of the microcontroller integrated circuit from a tester. The microcontroller integrated circuit also receives a reference signal from the tester. The on-chip oscillator on the microcontroller integrated circuit generates a clock signal with a clock frequency that depends upon a trim value stored in a trim register. A general purpose timer on the microcontroller integrated circuit counts the number of cycles of the clock signal during a time period defined by the reference signal and outputs a digital count. A processor on the microcontroller integrated circuit executes the test program, reads the digital count, and adjusts the trim value accordingly. The frequency of the clock signal is adjusted from time period to time period of the reference signal until the frequency of the clock signal is calibrated with respect to the reference signal. The final trim value is then saved in a predetermined memory location of the flash memory. Finally, the processor sends a DONE signal to the tester, and the test program is erased from the flash memory before the microcontroller integrated circuit is taken off the tester.
In another embodiment, a microcontroller integrated circuit is a device-under-test (DUT) to be tested by a tester. An on-chip oscillator on the microcontroller integrated circuit generates a clock signal to be tested and calibrated with respect to a target frequency. The frequency of the clock signal is trimmed internally within the DUT using the same internal frequency trimming method as described above. This internal frequency trimming method reduces the testing and trimming time because the decision making during the frequency trimming process is made by the processor instead of the tester. The tester is also able to perform other parallel tests on the microcontroller integrated circuits during the frequency trimming process. Another advantage of this internal frequency trimming method is that the tester is no longer required to measure the frequency of the clock signal and do decision-making and therefore can be less expensive than an intelligent tester like the Teradyne J750.
In another embodiment, a method includes receiving a reference signal and a program from a tester onto a microcontroller integrated circuit. An internal precision oscillator (IPO) is used to generate a clock signal, and a timer is used to generate a count of a number of cycles of the clock signal that occur during a period of time defined by the reference signal. The program is executed on the processor such that the processor repeats a process of reading the count and adjusting the trim value based on the count such that the frequency of the clock signal is adjusted from pulse to pulse of the reference signal and such that the frequency of the clock signal is calibrated with respect to the reference signal. A trim value is written into non-volatile memory on the microcontroller, and the program is erased from the memory. The aforementioned steps occur while the microcontroller is coupled to the tester.
The method also includes automatically reading the trim value out of the non-volatile memory upon a power-up condition of the microcontroller when the microcontroller is not coupled to the tester, and using the trim value to set a frequency of a clock signal generated by the IPO after the power-up condition. The timer is a general purpose timer that is usable by a user to time pulses received onto a terminal of the microcontroller integrated circuit.
Other embodiments and advantages are described in the detailed description below. This summary does not purport to define the invention. The invention is defined by the claims.



BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings, where like numerals indicate like components, illustrate embodiments of the invention.
FIG. 1 (prior art) illustrates an example of a conventional frequency trimming method for a RC oscillator using a production tester.
FIG. 2 is a diagram of a system in accordance with one novel aspect.
FIG. 3 is a flowchart of an internal frequency trimming method for a RC oscillator.
FIG. 4 is a diagram of a reference pulse and some oscillation signals with different frequencies.
FIG. 5 is an example of a software implementation of a frequency counter.



DETAILED DESCRIPTION
Reference will now be made in detail to some embodiments of the invention, examples of which are illustrated in the accompanying drawings.
FIG. 2 is a diagram of a system 10 in accordance with one novel aspect. System 10 includes a microcontroller integrated circuit 11 and a production tester 12. Microcontroller integrated circuit 11 is also a device under test (DUT) to be tested by production tester 12. Microcontroller integrated circuit 11 includes an on-chip oscillator 13 (also referred to as an Internal Precision Oscillator or “IPO”) and a general purpose timer 14. On-chip oscillator 13 generates a clock signal output CLK. Clock signal CLK is coupled to the clock input lead of timer 14 through a multiplexer 20. Tester 12 supplies a fixed reference signal onto a terminal 23 of microcontroller integrated circuit 11. Terminal 23 is coupled to the ENABLE input lead (EN) of timer 14. Microcontroller integrated circuit 11 also includes a trim register 15, an input/output (I/O) register 16, a processor 17, flash memory 18, and a parallel bus 19 for internal data access and communication. Processor 17 can read the output of timer 14 and write to trim register 15 and I/O register 16 across bus 19. In addition, microcontroller integrated circuit 11 includes an external crystal oscillator 21, an on-chip debugger 22, a debugger terminal 26, and I/O terminals 24 and 25. A serial port 27 of tester 12 is connected to debugger terminal 26 of microcontroller integrated circuit 11 for serial communication. Tester 12 also receives signals from I/O terminals 24 and 25 of microcontroller integrated circuit 11.
FIG. 3 is a flowchart of a frequency trimming method in accordance with one novel aspect. Initially, DUT 11 receives (step 41) a test program 28 and loads it into flash memory 18. Test program 28 is sent in serial digital format from serial port 27 of tester 12. On-chip debugger 22 receives test program 28 in serial digital format from debugger terminal 26 and converts test program 28 to parallel format. On-chip debugger 22 then writes test program 28 into flash memory 18 across parallel bus 19. Processor 17 starts executing test program 28 after test program 28 has been successfully loaded into flash memory 18. DUT 11 also receives (step 42) a reference signal (for instance, a square wave of pulses with a pulse width of 100 microseconds as illustrated) onto the enable input lead EN of timer 14 through terminal 23.
On-chip oscillator 13 generates (step 43) a clock signal output CLK. Processor 17 executes test program 28 and sends a CONTROL value to the select input lead of multiplexer 20 such that the data input lead 1 of multiplexer 20 is selected. Clock signal CLK is then coupled to the clock input lead of timer 14 through multiplexer 20. Timer 14 then counts (step 44) the number of pulses of clock signal CLK during a period of time defined by the reference signal (for instance, 100 microseconds as illustrated). An example of a period of time defined by the reference signal is a pulse of the reference signal. Timer 14 is a general purpose timer. External crystal oscillator 21 is an oscillator sometimes used to provide an alternate system clock SYSCLK. If SYSCLK is selected to be the system clock source, then processor 17 sends a different CONTROL value to the select input lead of multiplexer 20 such that the data input lead 0 of multiplexer 20 is selected. SYSCLK is then coupled to the clock input lead of timer 14.
FIG. 4 illustrates an example of measuring an oscillation frequency using timer 14. In the example of FIG. 4, the target oscillation frequency is 1000 Hz and the width of the reference pulse is ten milliseconds. Because the reference pulse is connected to the enable input lead of counter 14, counter 14 is enabled and starts to count the number of cycles of clock signal CLK when the reference pulse goes high. Counter 14 stops counting when the reference pulse goes low. If the oscillation frequency of clock signal CLK is accurate, then the number of cycles counted during ten milliseconds is equal to ten. If the number of cycles within ten milliseconds is smaller than ten (for instance, seven as illustrated), then clock signal CLK has a slower oscillation frequency of 700 Hz. On the other hand, if the number of cycles within ten milliseconds is larger than ten (for instance, thirteen as illustrated), then clock signal CLK has a faster oscillation frequency of 1300 Hz.
By counting the number of cycles of clock signal CLK during a fixed time period (for example, during a pulse of the reference signal), the oscillation frequency of clock signal CLK can be calculated. However, this method introduces some measuring error. The number of cycles of clock signal CLK during the width of the reference pulse could be miscounted by up to one cycle because the reference signal and clock signal CLK are not synchronized. In the example of FIG. 4, up to ten percent measuring error may be introduced. In order to reduce the measuring error, the width of the reference pulse is generally long enough for timer 14 to count at least 500 cycles of clock signal CLK. In the example of FIG. 2, the target frequency is 5.5296 MHZ. The reference signal has a pulse width of 100 microseconds such that 553 cycles of clock signal CLK occur during the time period of 100 microseconds.
Timer 14 outputs a 16-bit number COUNT as the number of cycles of clock signal CLK. Processor 17 reads the digital value of COUNT and compares it with number 553 in step 45 of FIG. 3. If COUNT is initially smaller than 553, then the oscillation frequency of clock signal CLK is initially lower than the target frequency 5.5296 MHz. Processor 17 determines a new trim value and writes the new trim value into trim register 15 (step 46). The new trim value causes on-chip oscillator 13 to generate clock signal CLK with a higher oscillation frequency (step 43). Timer 14 then counts the number of cycles of clock signal CLK during the next pulse of the reference signal (step 44). Steps 43 through 46 are repeated during this frequency trimming process. The oscillation frequency of clock signal CLK is adjusted from pulse to pulse of the reference signal and is eventually calibrated to be substantially equivalent to the target frequency of 5.5296 MHz. Similarly, if COUNT is initially larger than 553, then the oscillation frequency of clock signal CLK is initially higher than the target frequency 5.5296 MHz. By repeating steps 43 through 46, the oscillation frequency of clock signal CLK is adjusted downward from pulse to pulse of the clock signal and is eventually calibrated and fixed with respect to the target frequency of 5.5296 MHz.
After the above frequency trimming process has been completed, final trim value 29 is saved (step 47) into a predetermined location of memory 18. Processor 17 also sends a DONE signal onto I/O terminal 24. Tester 12 receives the DONE signal. Test program 28 is erased in the final step 48. When microcontroller integrated circuit 11 is later powered up, processor 17 automatically reads final trim value 29 from the predetermined location of memory 18 and writes final trim value 29 into trim register 15. Final trim value 29 causes on-chip oscillator 13 to generate clock signal CLK with a frequency that is substantially equivalent to target frequency 5.5296 MHz.
Instead of using tester 12 to measure the frequency of clock signal CLK and to determine the final trim value, the frequency of clock signal CLK in FIG. 2 is internally trimmed within microcontroller integrated circuit 11. Processor 17 executes test program 28 and does the decision-making in the trimming process without involving tester 12. This internal frequency trimming method substantially reduces the calibration and test time of DUT 11. First, it is faster for processor 17 to execute test program 28 and do decision-making than tester 12. Second, the internal trimming method eliminates the need to transfer the 10-bit trim value between tester 12 and microcontroller integrated circuit 11 through serial communication. Third, serial port 27 of tester 12 is not occupied throughout the trimming process. Tester 12 is therefore able to perform other tests during the same time when the internal frequency trimming method is performed. Another advantage of this internal frequency trimming method is that tester 12 can be less expensive than an intelligent tester like the Teradyne J750 because tester 12 is no longer required to measure the frequency and do decision-making.
The frequency of clock signal CLK sometimes deviates significantly from the target frequency due to process variations involved in the manufacturing of on-chip oscillator 13. Under such a situation, it may be that the frequency cannot be calibrated with respect to the target frequency. Processor 17 sends a FAIL signal onto I/O terminal 25. Tester 12 receives the FAIL signal, causes test program 28 to be erased and continues with tests of other DUTs. By sending the FAIL signal, the total test time of DUT 11 is reduced because tester 12 does not have to wait for a longer time out period before continuing with other tests or the testing of other DUTs.
General purpose timer 14 is not always available in microcontroller integrated circuit 11. If it is not available, then a software program is implemented to measure the frequency of clock signal CLK in a similar way as timer 14. FIG. 5 illustrates an example of a software implementation of a frequency counter. In the example of FIG. 5, variable COUNT is reset to zero and incremented by one each time when clock signal CLK rises during a high pulse of the reference signal. Therefore, variable COUNT in this software pseudo code of FIG. 5 is usable in place of the 16-bit digital output COUNT of timer 14 of FIG. 2.
Although certain specific exemplary embodiments are described above in order to illustrate the invention, the invention is not limited to the specific embodiments. Accordingly, various modifications, adaptations, and combinations of various features of the described embodiments can be practiced without departing from the scope of the invention as set forth in the claims.

## Claims

1. A method comprising:
receiving a reference signal from a tester onto a terminal of a microcontroller integrated circuit;
generating a clock signal internal to the microcontroller integrated circuit, wherein a frequency of the clock signal is dependant upon a trim value stored in a trim register;
using a timer on the microcontroller integrated circuit to generate a count of number of cycles of the clock signal that occur during a pulse of the reference signal; and
executing a test program on a processor on the microcontroller integrated circuit such that the processor reads the count and changes the trim value based on the count such that the frequency of the clock signal is adjusted from pulse to pulse of the reference signal and such that the frequency of the clock signal is calibrated with respect to the reference signal.

2. The method of claim 1, wherein the microcontroller integrated circuit includes an on-chip debugger circuit that is coupled to a debugger terminal, and wherein the tester serially loads the test program into the microcontroller integrated circuit through the debugger terminal.

3. The method of claim 1, wherein the microcontroller controller integrated circuit includes a non-volatile memory, the method further comprising:
writing the trim value stored in the trim register into a predetermined location of the non-volatile memory.

4. The method of claim 1, wherein the microcontroller integrated circuit includes a general purpose input/output (I/O) terminal, the method further comprising:
outputting a signal onto the I/O terminal, wherein the signal indicates that calibration of the frequency of the clock signal is completed.

5. The method of claim 1, wherein the test program is executed by the processor when the microcontroller integrated circuit is coupled to the tester and is receiving the reference signal from a tester, the method further comprising:
erasing the test program while the microcontroller integrated circuit is coupled to the tester.

6. A method comprising:
receiving a reference signal from a tester onto a terminal of a microcontroller integrated circuit;
generating a clock signal internal to the microcontroller integrated circuit, wherein a frequency of the clock signal is dependant upon a trim value stored in a trim register;
using a timer on the microcontroller integrated circuit to generate a count of number of cycles of the clock signal that occur during a pulse of the reference signal;
executing a test program on a processor on the microcontroller integrated circuit such that the processor reads the count and changes the trim value based on the count such that the frequency of the clock signal is adjusted from pulse to pulse of the reference signal and such that the frequency of the clock signal is calibrated with respect to the reference signal; and
executing the test program on the processor such that a multiplexer on the microcontroller integrated circuit is controlled to couple a selectable one of either the clock signal generated by the on-chip oscillator or another oscillation signal onto an input lead of the timer.

7. A microcontroller integrated circuit comprising:
a terminal, wherein a reference signal is received onto the terminal from a tester;
a register;
an on-chip oscillator that generates a clock signal internal to the microcontroller integrated circuit, wherein a frequency of the clock signal is dependent upon a trim value stored in the register;
a timer that generates a count of number of cycles of the clock signal that occur during a period of time defined by the reference signal;
a processor that reads the count and based on the count changes the trim value in the register; and
a memory that stores a test program of processor-executable instructions, wherein execution of the test program causes the processor to read the count and to change the trim value based on the count such that the frequency of the clock signal is calibrated with respect to the reference signal from the tester.

8. The integrated circuit of claim 7, further comprising:
an on-chip debugger circuit that is coupled to a debugger terminal, wherein the tester serially loads the test program into the microcontroller integrated circuit through the debugger terminal.

9. A microcontroller integrated circuit comprising:
a terminal, wherein a reference signal is received onto the terminal from a tester;
a register;
an on-chip oscillator that generates a clock signal internal to the microcontroller integrated circuit, wherein a frequency of the clock signal is dependent upon a trim value stored in the register;
a timer that generates a count of number of cycles of the clock signal that occur during a period of time defined by the reference signal;
a processor that reads the count and based on the count changes the trim value in the register; and
a general purpose input/output (I/O) terminal, wherein a signal is output through the I/O terminal to the tester indicating that calibration of the clock frequency is completed.

10. A microcontroller integrated circuit comprising:
a terminal, wherein a reference signal is received onto the terminal from a tester;
a register;
an on-chip oscillator that generates a clock signal internal to the microcontroller integrated circuit, wherein a frequency of the clock signal is dependent upon a trim value stored in the register;
a timer that generates a count of number of cycles of the clock signal that occur during a period of time defined by the reference signal;
a processor that reads the count and based on the count changes the trim value in the register;
a memory that stores a test program of processor-executable instructions, wherein execution of the test program causes the processor to read the count and to change the trim value based on the count such that the frequency of the clock signal is calibrated with respect to the reference signal from the tester; and
a multiplexer that is controlled by executing the test program on the processor to couple a selectable one of either the clock signal generated by the on-chip oscillator or another oscillation signal onto an input lead of the timer.

11. A system, comprising:
a tester; and
a device-under-test (DUT), wherein the DUT is a microcontroller integrated circuit comprising:
a terminal that receives a reference signal from the tester;
a register;
an on-chip oscillator that generates a clock signal internal to the DUT, wherein a frequency of the clock signal is dependent upon a trim value stored in the register;
a timer that generates a count of number of cycles of the clock signal that occur during a period of time defined by the reference signal;
a processor that reads the count and based on the count changes the trim value in the register; and
a memory that stores a test program of processor-executable instructions, wherein execution of the test program causes the processor to read the count and to change the trim value based on the count such that the frequency of the clock signal is calibrated with respect to the reference signal from the tester.

12. The system of claim 11, wherein the DUT further comprises:
an on-chip debugger circuit that is coupled to a debugger terminal, wherein the test program is serially loaded into the memory of the DUT through the debugger terminal from the tester.

13. A system, comprising:
a tester; and
a device-under-test (DUT), wherein the DUT is a microcontroller integrated circuit comprising:
a terminal that receives a reference signal from the tester;
a register;
an on-chip oscillator that generates a clock signal internal to the DUT, wherein a frequency of the clock signal is dependent upon a trim value stored in the register;
a timer that generates a count of number of cycles of the clock signal that occur during a period of time defined by the reference signal;
a processor that reads the count and based on the count changes the trim value in the register; and
a general purpose input/output (I/O) terminal, wherein a signal is output through the I/O terminal to the tester indicating that calibration of the clock frequency is completed.

14. A system, comprising:
a tester;
a device-under-test (DUT), wherein the DUT is a microcontroller integrated circuit comprising:
a terminal that receives a reference signal from the tester;
a register;
an on-chip oscillator that generates a clock signal internal to the DUT, wherein a frequency of the clock signal is dependent upon a trim value stored in the register;
a timer that generates a count of number of cycles of the clock signal that occur during a period of time defined by the reference signal;
a processor that reads the count and based on the count changes the trim value in the register;
a memory that stores a test program of processor-executable instructions, wherein execution of the test program causes the processor to read the count and to change the trim value based on the count such that the frequency of the clock signal is calibrated with respect to the reference signal from the tester; and
a multiplexer that is controlled by executing the test program on the processor to couple a selectable one of either the clock signal generated by the on-chip oscillator or another oscillation signal onto an input lead of the timer.

15. A method comprising:
(a) receiving a reference signal from a tester and onto a microcontroller integrated circuit, wherein the microcontroller integrated circuit comprises an on-chip debugger terminal, an internal precision oscillator (IPO), a timer, a processor, and a memory;
(b) receiving a program from the tester onto the microcontroller integrated circuit through the on-chip debugger terminal and storing the program in the memory;
(c) using the internal precision oscillator (IPO) to generate a clock signal, wherein a frequency of the clock signal depends upon a trim value;
(d) using the timer to generate a count of a number of cycles of the clock signal that occur during a period of time defined by the reference signal;
(e) executing the program on the processor such that the processor repeats a process of reading the count and adjusting the trim value based on the count such that the frequency of the clock signal is adjusted from pulse to pulse of the reference signal and such that the frequency of the clock signal is calibrated with respect to the reference signal;
(f) writing a trim value into non-volatile memory on the microcontroller integrated circuit; and
(g) erasing the program from the memory, wherein steps (a) through (g) occur while the microcontroller integrated circuit is coupled to the tester.

16. The method of claim 15, wherein the memory is an amount of non-volatile memory, wherein the program is stored in (b) into the amount of non-volatile memory, and wherein the trim value is written in (f) into the amount of non-volatile memory.

17. The method of claim 15, further comprising:
(h) automatically reading the trim value out of the non-volatile memory upon a power-up condition of the microcontroller integrated circuit when the microcontroller integrated circuit is not coupled to the tester, and using the trim value to set a frequency of a clock signal generated by the IPO after the power-up condition.

18. The method of claim 15, wherein the timer is a general purpose timer that is usable by a user to time pulses received onto a terminal of the microcontroller integrated circuit.