IP Library › Granted Patent US 12,203,986
Granted Patent B2
US 12,203,986 · App. 18/323,716 · Granted Jan 21, 2025

Random function selection and insertion during compilation for post-silicon validation

Inventors: Hillel Mendelson (Glen Iris, AU); Idan Horowitz (Haifa, IL); Karen Holtz (Jerusalem, IL); Dani Szebenyi (Moran, IL); Ido Plat (Shimshit, IL)
Assignee: International Business Machines Corporation
G01R31/31908
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,203,986
App. No.
18/323,716
Granted
Jan 21, 2025
Kind
B2
Abstract

A computer system, computer readable storage medium, and computer-implemented method for generating a test program for a device-under-test (DUT). The method includes transmitting a plurality of uncompiled snippets and a plurality of uncompiled micro-functions into a compiler. The method also includes selecting, randomly, a portion of uncompiled micro-functions from the plurality of uncompiled micro-functions. The method further includes compiling the uncompiled snippets and the portion of uncompiled micro-functions, thereby generating a plurality of compiled snippets and a compiled portion of micro-functions. The method also includes interweaving, randomly, the compiled portion of micro-functions with the plurality of compiled snippets, thereby at least partially generating a test program for the DUT. The method further includes executing one or more post-silicon validation tests for the DUT with the test program.

Claims (86)

1. A computer system to execute a test program for a device-under-test (DUT) comprising:

a validation platform;

a compiler communicatively coupled to the validation platform; and

a preprocessor communicatively coupled to the compiler, wherein:

the preprocessor is configured to transmit a plurality of uncompiled authored C-code snippets and a plurality of uncompiled micro-functions into the compiler;

the compiler is configured to:

randomly select a portion of uncompiled micro-functions from the plurality of uncompiled micro-functions;

compile the uncompiled authored C-code snippets and the portion of uncompiled micro-functions, thereby generating a plurality of compiled authored C-code snippets and a compiled portion of micro-functions; and

interleave, randomly, the compiled portion of micro-functions with the plurality of compiled authored C-code snippets, thereby at least partially generating a test program for the DUT; and

the validation platform is configured to execute one or more post-silicon validation tests for the DUT with the test program.

2. The system of claim 1 , the validation platform further configured to:

generate the plurality of uncompiled authored C-code snippets; and

embed, randomly, one or more keywords into the uncompiled authored C-code snippets.

3. The system of claim 1 , the preprocessor further configured to:

generate a plurality of random numbers;

arrange the plurality of random numbers in a random number array; and

index the random number array, thereby generating a plurality of index values.

4. The system of claim 3 , the preprocessor further configured to:

precompile, sequentially, an index value from the plurality of index values; and

transmit, for each instance of one or more keywords in the plurality of uncompiled authored C-code snippets, the random number array and the precompiled index value into the compiler in conjunction with the plurality of uncompiled authored C-code snippets and the plurality of uncompiled micro-functions.

5. The system of claim 4 , wherein:

the preprocessor is configured to transmit a switch function into the compiler with the precompiled index value, the random number array, and the plurality of uncompiled micro-functions; and

the compiler is configured to:

switch each precompiled index value with a corresponding micro-function from the plurality of uncompiled micro-functions, at least partially as a function of the random number array and the associated precompiled index value.

6. The system of claim 5 , wherein the compiler is further configured to:

compile the portion of uncompiled micro-functions in a first sequence; and

interleave randomly, with the plurality of compiled authored C-code snippets, the portion of compiled micro-functions in a second sequence different from the first sequence.

7. The system of claim 6 , wherein the compiler is further configured to:

generate a plurality of test programs through one or more of:

varying, randomly, a sequence of an interleaved first portion of compiled micro-functions in each copy of a plurality of copies of a first portion of the plurality of compiled authored C-code snippets, wherein the second portion of the plurality of compiled authored C-code snippets is different from the first portion of the plurality of compiled authored C-code snippets;

varying, randomly, one or more invocations of one or more compiled micro-functions at least partially as a function of the random number array;

generating, randomly, a second portion of compiled micro-functions that is different from the first portion of compiled micro-functions;

interleaving, for a first test program of the plurality of test programs, the first portion of compiled micro-functions with a selected compiled authored C-code snippet of the plurality of compiled authored C-code snippets; and

interleaving, for a second test program of the plurality of test programs, the second portion of compiled micro-functions with the selected compiled authored C-code snippet of the plurality of compiled authored C-code snippets.

8. A computer readable storage medium having computer executable instructions that when executed by at least one computing device executes a test program for a device-under-test (DUT), comprising instructions to:

transmit a plurality of uncompiled authored C-code snippets and a plurality of uncompiled micro-functions into a compiler;

select, randomly, a portion of uncompiled micro-functions from the plurality of uncompiled micro-functions;

compile the uncompiled authored C-code snippets and the portion of uncompiled micro-functions, thereby generating a plurality of compiled authored C-code snippets and a compiled portion of micro-functions;

interleave, randomly, the compiled portion of micro-functions with the plurality of compiled authored C-code snippets, thereby at least partially generating a test program for the DUT; and

execute one or more post-silicon validation tests for the DUT with the test program.

9. The computer readable storage medium of claim 8 , further comprising instructions to:

generate the plurality of uncompiled authored C-code snippets; and

embed, randomly, one or more keywords into the uncompiled authored C-code snippets.

10. The computer readable storage medium of claim 8 , further comprising instructions to:

generate a plurality of random numbers;

arrange the plurality of random numbers in a random number array; and

index the random number array, thereby generating a plurality of index values.

11. The computer readable storage medium of claim 10 , further comprising instructions to:

precompile, sequentially, an index value from the plurality of index values; and

transmit, for each instance of one or more keywords in the plurality of uncompiled authored C-code snippets, the random number array and the precompiled index value into the compiler in conjunction with the plurality of uncompiled authored C-code snippets and the plurality of uncompiled micro-functions.

12. The computer readable storage medium of claim 11 , further comprising instructions to:

transmit a switch function into the compiler with the precompiled index value, the random number array, and the plurality of uncompiled micro-functions; and

switch each precompiled index value with a corresponding micro-function from the plurality of uncompiled micro-functions, at least partially as a function of the random number array and the associated precompiled index value.

13. The computer readable storage medium of claim 12 , further comprising instructions to:

compile the portion of uncompiled micro-functions in a first sequence; and

interleave, randomly, with the plurality of compiled authored C-code snippets, the portion of compiled micro-functions in a second sequence different from the first sequence.

14. A computer-implemented method for executing a test program for a device-under-test (DUT), comprising:

transmitting a plurality of uncompiled authored C-code snippets and a plurality of uncompiled micro-functions into a compiler;

selecting, randomly, a portion of uncompiled micro-functions from the plurality of uncompiled micro-functions;

compiling the uncompiled authored C-code snippets and the portion of uncompiled micro-functions, thereby generating a plurality of compiled authored C-code snippets and a compiled portion of micro-functions;

interleaving, randomly, the compiled portion of micro-functions with the plurality of compiled authored C-code snippets, thereby at least partially generating a test program for the DUT; and

executing one or more post-silicon validation tests for the DUT with the test program.

15. The method of claim 14 , further comprising:

generating the plurality of uncompiled authored C-code snippets; and

embedding, randomly, one or more keywords into the uncompiled authored C-code snippets.

16. The method of claim 14 , further comprising:

generating a plurality of random numbers;

arranging the plurality of random numbers in a random number array; and

indexing the random number array, thereby generating a plurality of index values.

17. The method of claim 16 , further comprising:

precompiling, sequentially, an index value from the plurality of index values; and

transmitting, for each instance of one or more keywords in the plurality of uncompiled authored C-code snippets, the random number array and the precompiled index value into the compiler in conjunction with the plurality of uncompiled authored C-code snippets and the plurality of uncompiled micro-functions.

18. The method of claim 17 , further comprising:

transmitting a switch function into the compiler with the precompiled index value, the random number array, and the plurality of uncompiled micro-functions; and

switching each precompiled index value with a corresponding micro-function from the plurality of uncompiled micro-functions, at least partially as a function of the random number array and the associated precompiled index value.

19. The method of claim 18 , further comprising:

compiling the portion of uncompiled micro-functions in a first sequence; and

interleaving, randomly, with the plurality of compiled authored C-code snippets, the portion of compiled micro-functions in a second sequence different from the first sequence.

20. The method of claim 19 , further comprising:

generating a plurality of test programs through one or more of:

varying, randomly, a sequence of an interleaved first portion of compiled micro-functions in each copy of a plurality of copies of a first portion of the plurality of compiled authored C-code snippets;

varying, randomly, a sequence of the interleaved first portion of compiled micro-functions in each copy of a plurality of copies of a second portion of the plurality of compiled authored C-code snippets, wherein the second portion of the plurality of compiled authored C-code snippets is different from the first portion of the plurality of compiled authored C-code snippets;

varying, randomly, one or more invocations of one or more compiled micro-functions at least partially as a function of the random number array;

generating, randomly, a second portion of compiled micro-functions that is different from the first portion of compiled micro-functions;

interleaving, for a first test program of the plurality of test programs, the first portion of compiled micro-functions with a selected compiled authored C-code snippet of the plurality of compiled authored C-code snippets; and

interleaving, for a second test program of the plurality of test programs, the second portion of compiled micro-functions with the selected compiled authored C-code snippet of the plurality of compiled authored C-code snippets.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2023
From: MENDELSON, HILLEL; HOROWITZ, IDAN; HOLTZ, KAREN; SZEBENYI, DANI; PLAT, IDO
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 063763/0617 →
Continuity (1)
Related Publication 20240393395A1 · Nov 28, 2024
References Cited (15)
US 10061685B1 · White · 2018 [cited by applicant]
US 11194705B2 · Mendelson · 2021 [cited by applicant]
US 11204859B2 · Kolan · 2021 [cited by applicant]
US 20050086565A1 · Thompson · 2005 [cited by applicant]
US 20090222694A1 · Adir · 2009 [cited by applicant]
US 20110087861A1 · Bertacco · 2011 [cited by applicant]
US 20130013246A1 · Adir · 2013 [cited by applicant]
US 20150186250A1 · Friedler · 2015 [cited by applicant]
US 20220381824A1 · Mendelson · 2022 [cited by applicant]
A. Adir et al., “Threadmill: A post-silicon exerciser for multi-threaded processors,” 2011 48th ACM/EDAC/IEEE Design Automation Conference (DAC), San Diego, CA, USA, 2011, pp. 860-865. https://ieeexplore.ieee.org/docume… [cited by applicant]
Anonymous (2013) Method and tool for measuring test-template variability. https://priorart.ip.com/IPCOM/000227917. [cited by applicant]
Kadry et al., “Improving Post-Silicon Validation Efficiency by Using Pre-Generated Data,” ResearchGate, Nov. 2013, 16 pages. <https://www.researchgate.net/publication/299681518_Improving_Post-silicon_Validation_Efficien… [cited by applicant]
Moharikar et al., “Automated test generation for post silicon microcontroller validation,” 2017 IEEE International High Level Design Validation and Test Workshop (HLDVT), Dec. 7, 2017, 8 pages. <https://ieeexplore.ieee.… [cited by applicant]
S. K. Sadasivam, S. Alapati and V. Mallikarjunan, “Test Generation Approach for Post-Silicon Validation of High End Microprocessor,” 2012 15th Euromicro Conference on Digital System Design, Cesme, Turkey, 2012, pp. 830-… [cited by applicant]
Storm, J. (2006) Random Test Generators for Microprocessor Design Validation. Sun Microsystems, Inc. https://www.oracle.com/technetwork/systems/opensparc/53-rand-test-gen-validation-1530392.pdf <Retrieved Mar. 30, 2023>. [cited by applicant]