IP Library Granted Patent US 12,353,307
Granted Patent B2
US 12,353,307 · App. 17/722,430 · Granted Jul 8, 2025

Random instruction-side stressing in post-silicon validation

Inventors: Hillel Mendelson (Melbourne, AU); Tom Kolan (Haifa, IL)
Assignee: Synopsys, Inc.
G06F11/27H01L22/34
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,353,307
App. No.
17/722,430
Granted
Jul 8, 2025
Kind
B2
Abstract

A computer-implemented method including: providing a test template for a hardware system-under-test comprising one or more execution threads, wherein the test template comprises a branching instruction to a predetermined shared memory address accessible by at least some of the one or more execution threads; generating and storing, at the predetermined shared memory address, a sequence of instructions which conform to the test template; building, based, at least in part, on the test template, an executable image of a hardware exerciser, wherein the hardware exerciser is adapted to control a test cycle of the hardware system-under-test, and wherein the test cycle comprises at least generation and execution of a test; and executing the executable image of the hardware exerciser by at least a first execution thread of the one or more execution threads of the hardware system-under-test.

Claims (34)

1. A system comprising:

at least one hardware processor; and

a non-transitory computer-readable storage medium having stored thereon program instructions, the program instructions executable by the at least one hardware processor to:

provide a test template for a multi-threaded hardware system-under-test comprising two execution threads, wherein the test template comprises a branching instruction to a predetermined shared memory address accessible by the two execution threads,

generate and store, at said predetermined shared memory address, shared code comprising a sequence of instructions which conform to said test template,

build, based, at least in part, on said test template, an executable image of a hardware exerciser, wherein the hardware exerciser is adapted to control a test cycle of the hardware system-under-test, and wherein the test cycle comprises generating and executing a test of common use of the shared code by the two execution threads, and

executing said executable image of the hardware exerciser, including the common use of the shared code by the two execution threads.

2. The system of claim 1 , wherein the program instructions are further executable to store, in said non-transitory computer readable medium or in a different non-transitory computer readable medium, before said executing, a state of said hardware system-under-test.

3. The system of claim 2 , wherein the program instructions are further executable to restore said hardware system-under-test to said state after said executing.

4. The system of claim 1 , wherein said building comprises embedding in said executable image data corresponding to architectural knowledge of said hardware system-under-test and testing knowledge of said hardware system-under-test.

5. The system of claim 1 , wherein said test includes directives to control one or more parameters of a randomly generated test of said hardware system-under-test selected from the group consisting of: a desired test structure, one or more resources of the hardware system-under-test to be included in said test, one or more values to be assigned to said resources, occurrence of one or more architectural or micro-architectural events during said test, and activation of testing knowledge relating to the system-under-test.

6. The system of claim 5 , wherein said architectural knowledge is obtained from an architectural model including a formal description of the specification for said hardware system-under-test, and wherein said testing knowledge is obtained from a testing knowledgebase including heuristics for testing desired aspects of said hardware system-under-test.

7. The system of claim 1 , wherein the executable image comprises a code operative to provide light operating system (OS) services for the executable image.

8. A computer-implemented method comprising:

providing a test template for a multi-threaded hardware system-under-test comprising two execution threads, wherein the test template comprises a branching instruction to a predetermined shared memory address accessible by the two execution threads;

generating and storing, at said predetermined shared memory address, shared code comprising a sequence of instructions which conform to said test template;

building, based, at least in part, on said test template, an executable image of a hardware exerciser, wherein the hardware exerciser is adapted to control a test cycle of the hardware system-under-test, and wherein the test cycle comprises generating and executing a test of common use of the shared code by the two execution threads; and

executing said executable image of the hardware exerciser, including the common use of the shared code by the two execution threads.

9. The computer-implemented method of claim 8 , further comprising storing, in a non-transitory computer readable medium, before said executing, a state of said hardware system-under-test.

10. The computer-implemented method of claim 9 , further comprising restoring said hardware system-under-test to said state after said executing.

11. The computer-implemented method of claim 8 , wherein said building comprises embedding in said executable image data corresponding to architectural knowledge of said hardware system-under-test and testing knowledge of said hardware system-under-test.

12. The computer-implemented method of claim 8 , wherein said test includes directives to control one or more parameters of a randomly generated test of said hardware system-under-test selected from the group consisting of: a desired test structure, one or more resources of the hardware system-under-test to be included in said test, one or more values to be assigned to said resources, occurrence of one or more architectural or micro-architectural events during said test, and activation of testing knowledge relating to the system-under-test.

13. The computer-implemented method of claim 12 , wherein said architectural knowledge is obtained from an architectural model including a formal description of the specification for said hardware system-under-test, and wherein said testing knowledge is obtained from a testing knowledgebase including heuristics for testing desired aspects of said hardware system-under-test.

14. The computer-implemented method of claim 8 , wherein the executable image comprises a code operative to provide light operating system (OS) services for the executable image.

15. The computer-implemented method of claim 8 , executed by a processor of a computing device.

16. A computer program product comprising a non-transitory computer-readable storage medium having program instructions embodied therewith, the program instructions executable by at least one hardware processor to:

provide a test template for a multi-threaded hardware system-under-test comprising two execution threads, wherein the test template comprises a branching instruction to a predetermined shared memory address accessible by the two execution threads;

generate and store, at said predetermined shared memory address, shared code comprising a sequence of instructions which conform to said test template;

build, based, at least in part, on said test template, an executable image of a hardware exerciser, wherein the hardware exerciser is adapted to control a test cycle of the hardware system-under-test, and wherein the test cycle comprises generating and executing a test of common use of the shared code by the two execution threads; and

executing said executable image of the hardware exerciser, including the common use of the shared code by the two execution threads .

17. The computer program product of claim 16 , wherein the program instructions are further executable to store, in said non-transitory computer readable medium or in a different non-transitory computer readable medium, before said executing, a state of said hardware system-under-test.

18. The computer program product of claim 17 , wherein the program instructions are further executable to restore said hardware system-under-test to said state after said executing.

19. The computer program product of claim 16 , wherein said building comprises embedding in said executable image data corresponding to architectural knowledge of said hardware system-under-test and testing knowledge of said hardware system-under-test.

20. The computer program product of claim 16 , wherein said test includes directives to control one or more parameters of a randomly generated test of said hardware system-under-test selected from the group consisting of: a desired test structure, one or more resources of the hardware system-under-test to be included in said test, one or more values to be assigned to said resources, occurrence of one or more architectural or micro-architectural events during said test, and activation of testing knowledge relating to the system-under-test.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2026
From: SYNOPSYS, INC.
To: MIPS HOLDING, INC.
Reel/Frame 075040/0078 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 22, 2023
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: SYNOPSYS, INC.
Reel/Frame 064663/0509 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2022
From: MENDELSON, HILLEL; KOLAN, TOM
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 059618/0622 →
Continuity (1)
Related Publication 20230333950A1 · Oct 19, 2023
References Cited (17)
US 7945888B2 · Adir · 2011 [cited by applicant]
US 20090222694A1 · Adir · 2009 [cited by examiner]
US 20110106482A1 · Adir · 2011 [cited by examiner]
US 20140032966A1 · Dusanapudi · 2014 [cited by examiner]
US 20140032969A1 · Landa · 2014 [cited by examiner]
US 20150127984A1 · Alapati · 2015 [cited by applicant]
US 20160350163A1 · Nahir · 2016 [cited by examiner]
US 20170140839A1 · Doron · 2017 [cited by examiner]
US 20200134248A1 · Schieve · 2020 [cited by applicant]
US 20200218624A1 · Kolan · 2020 [cited by examiner]
US 20210011838A1 · Kolan · 2021 [cited by examiner]
“Method to generate test programs with directed and finely controlled randomisation”; Online at: https://priorart.ip.com/IPCOM/000197254, Jun. 30, 2010. [cited by applicant]
A. Adir et al, “Threadmill: a post-silicon exerciser for multi-threaded processors”; DAC '11: Proceedings of the 48th Design Automation Conference; pp. 860-865, Jun. 5-10, 2011. [cited by applicant]
A.V. Smirnov et al., “Ristretto: Random Test Generator for Multicore Microprocessor Cache Coherence Verification”; Scientific Research Institute of System Analysis (SRISA RAS), Selected Articles of MES conference, issue… [cited by applicant]
Adir A. et al., “Concurrent Generation of Concurrent Programs for Post-Silicon Validation”; IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol. 31, No. 8, pp. 1297-1302, Aug. 2012. [cited by applicant]
Joel Storm, “Random Test Generators for Microprocessor Design Validation”; 8th EMICRO Porto Alegre, RS, Brazil; Online at: https://www.oracle.com/technetwork/systems/opensparc/53-rand-test-gen-validation-1530392.pdf, Ma… [cited by applicant]
Wisam Kadry et al., “Improving Post-Silicon Validation Efficiency by Using Pre-Generated Data”; Haifa Verification Conference; Nov. 2013. [cited by applicant]
Cited By (1)
US 12,632,354