IP Library Granted Patent US 12,699,131
Granted Patent B2
US 12,699,131 · App. 18/906,206 · Granted Aug 4, 2026

Flexible test instruction set architecture

Inventors: Shivam Mehra (New Delhi, IN); Parag Bhatt (San Jose, CA); Michael Loe Fernandez (Quezon City, PH); Kishore Mishra (Santa Clara, CA); Purna Mohanty (Sunnyvale, CA)
Assignee: Signature IP Corporation
G01R31/31707G01R31/31712
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,699,131
App. No.
18/906,206
Filed
Oct 4, 2024
Granted
Aug 4, 2026
Kind
B2
Art Unit
2112
USPC
714/724
Abstract

Techniques for the testing of devices are disclosed. A testing environment is accessed. The testing environment includes an instruction RAM, an instruction fetch and decode unit (FAD), a code exerciser, a command interface, and a trace RAM. A device under test (DUT) is accessible by the command interface. The testing environment includes a test instruction set architecture (TISA). A test sequence is programmed by a user. The test sequence includes one or more instructions from within the TISA. The test sequence is stored in the instruction RAM. A first instruction is fetched by the FAD. The fetching includes decoding the first instruction. The first instruction is translated by the code exerciser. The translating produces a first packetized communication, which is sent to the DUT. A first packetized response is received by the command interface from the DUT and is reported to the user.

Claims (53)

1 . A processor-implemented method for testing comprising:

accessing a testing environment, wherein the testing environment includes an instruction RAM, an instruction fetch and decode unit (FAD), a code exerciser, a command interface, and a trace RAM, wherein a device under test (DUT) is accessible by the command interface, and wherein the testing environment includes a test instruction set architecture (TISA), wherein the TISA includes a plurality of opcodes, wherein the plurality of opcodes configure the testing environment;

programming a test sequence, by a user, wherein the test sequence includes one or more instructions from within the TISA;

storing, in the instruction RAM, the test sequence that was programmed;

fetching, by the FAD, a first instruction from the test sequence that was stored in the instruction RAM, wherein the fetching includes decoding the first instruction;

translating, by the code exerciser, the first instruction, wherein the translating produces a first packetized communication, wherein the DUT is responsive to the first packetized communication;

sending the first packetized communication, by the command interface, to the DUT;

receiving a first packetized response, by the command interface, from the DUT, wherein the first packetized response is stored in a trace RAM; and

reporting, to the user, the first packetized response that was stored in the trace RAM.

2 . The method of claim 1 further comprising initializing the testing environment, wherein the initializing includes control instructions in the TISA.

3 . The method of claim 1 wherein the TISA includes a first grouping of opcodes, wherein the first grouping of opcodes controls the testing environment.

4 . The method of claim 3 wherein the TISA includes a second grouping of opcodes, wherein the second grouping of opcodes exercises the DUT.

5 . The method of claim 1 further comprising adding, to the TISA, one or more new instructions, wherein the one or more new instructions exercise a second DUT.

6 . The method of claim 1 wherein the TISA comprises one or more data words.

7 . The method of claim 6 wherein a first data word within the one or more data words comprises 32 bits.

8 . The method of claim 7 wherein the first data word includes an opcode field, wherein the opcode field comprises 5 bits.

9 . The method of claim 8 wherein the first data word includes a first argument field, wherein the first argument field comprises 4 bits.

10 . The method of claim 9 wherein the first data word includes a second argument field, and wherein the second argument field comprises 10 bits.

11 . The method of claim 10 wherein the first data word includes a third argument field, and wherein the third argument field comprises 4 bits.

12 . The method of claim 11 wherein the first data word includes a fourth argument field, and wherein the third argument field comprises 9 bits.

13 . The method of claim 6 wherein a second data word comprises 32 bits, and wherein the second data word includes a first data pattern or a start address.

14 . The method of claim 6 wherein a third data word comprises 32 bits, and wherein the third data word includes a second data pattern.

15 . The method of claim 1 wherein the receiving includes a second packetized response.

16 . The method of claim 1 wherein the fetching and translating include a second instruction.

17 . The method of claim 16 wherein the sending includes a second packetized communication.

18 . The method of claim 1 wherein the DUT comprises a PCIExpress (PCIe) controller.

19 . The method of claim 18 wherein the sending comprises simulated traffic from a PCIe root complex.

20 . The method of claim 18 wherein the sending comprises simulated traffic from a PCIe endpoint.

21 . The method of claim 1 wherein the DUT comprises a compute express link (CXL) controller.

22 . The method of claim 1 wherein the DUT comprises an ethernet controller.

23 . The method of claim 1 wherein the TISA includes a plurality of opcodes.

24 . The method of claim 23 further comprising launching, by one or more opcodes within the plurality of opcodes, a compliance test on the DUT, by the testing environment.

25 . The method of claim 24 wherein the compliance test includes a PCIe compliance test suite (CTS).

26 . A computer program product embodied in a non-transitory computer readable medium for instruction execution, the computer program product comprising code which causes one or more processors to perform operations of:

accessing a testing environment, wherein the testing environment includes an instruction RAM, an instruction fetch and decode unit (FAD), a code exerciser, a command interface, and a trace RAM, wherein a device under test (DUT) is accessible by the command interface, and wherein the testing environment includes a test instruction set architecture (TISA), wherein the TISA includes a plurality of opcodes, wherein the plurality of opcodes configure the testing environment;

programming a test sequence, by a user, wherein the test sequence includes one or more instructions from within the TISA;

storing, in the instruction RAM, the test sequence that was programmed;

fetching, by the FAD, a first instruction from the test sequence that was stored in the instruction RAM, wherein the fetching includes decoding the first instruction;

translating, by the code exerciser, the first instruction, wherein the translating produces a first packetized communication, wherein the DUT is responsive to the first packetized communication;

sending the first packetized communication, by the command interface, to the DUT;

receiving a first packetized response, by the command interface, from the DUT, wherein the first packetized response is stored in a trace RAM; and

reporting, to the user, the first packetized response that was stored in the trace RAM.

27 . A computer system for instruction execution comprising:

a memory which stores instructions;

one or more processors coupled to the memory wherein the one or more processors, when executing the instructions which are stored, are configured to:

access a testing environment, wherein the testing environment includes an instruction RAM, an instruction fetch and decode unit (FAD), a code exerciser, a command interface, and a trace RAM, wherein a device under test (DUT) is accessible by the command interface, and wherein the testing environment includes a test instruction set architecture (TISA), wherein the TISA includes a plurality of opcodes, wherein the plurality of opcodes configure the testing environment;

program a test sequence, by a user, wherein the test sequence includes one or more instructions from within the TISA;

store, in the instruction RAM, the test sequence that was programmed;

fetch, by the FAD, a first instruction from the test sequence that was stored in the instruction RAM, wherein the fetching includes decoding the first instruction;

translate, by the code exerciser, the first instruction, wherein the translating produces a first packetized communication, wherein the DUT is responsive to the first packetized communication;

send the first packetized communication, by the command interface, to the DUT;

receive a first packetized response, by the command interface, from the DUT, wherein the first packetized response is stored in a trace RAM; and

report, to the user, the first packetized response that was stored in the trace RAM.

Continuity (9)
Provisional Application 63688925 · Aug 30, 2024
Provisional Application 63663205 · Jun 24, 2024
Provisional Application 63643941 · May 8, 2024
Provisional Application 63551091 · Feb 8, 2024
Provisional Application 63617823 · Jan 5, 2024
Provisional Application 63615862 · Dec 29, 2023
Provisional Application 63601497 · Nov 21, 2023
Provisional Application 63542800 · Oct 6, 2023
Related Publication 20250116701A1 · Apr 10, 2025
References Cited (30)
US 6892328B2 · Klein et al. · 2005 [cited by applicant]
US 8533545B2 · Goyal et al. · 2013 [cited by applicant]
US 8621301B2 · Goyal et al. · 2013 [cited by applicant]
US 9436491B1 · Chiou · 2016 [cited by applicant]
US 9836384B2 · Leinfellner et al. · 2017 [cited by applicant]
US 10078579B1 · Joshi · 2018 [cited by examiner]
US 10114658B2 · Huang et al. · 2018 [cited by applicant]
US 10133767B1 · Cole · 2018 [cited by examiner]
US 10198346B1 · Cole · 2019 [cited by examiner]
US 10250721B2 · Massa et al. · 2019 [cited by applicant]
US 10282315B2 · Siva et al. · 2019 [cited by applicant]
US 10331657B1 · Cole · 2019 [cited by examiner]
US 10348563B2 · Rao et al. · 2019 [cited by applicant]
US 10547514B2 · Rao et al. · 2020 [cited by applicant]
US 10740523B1 · Klein · 2020 [cited by applicant]
US 10911323B2 · Hiers et al. · 2021 [cited by applicant]
US 11010322B1 · Morshed · 2021 [cited by applicant]
US 11657203B2 · Cherif et al. · 2023 [cited by applicant]
US 20190087513A1 · Mukherjee · 2019 [cited by examiner]
US 20200210182A1 · Hughes · 2020 [cited by examiner]
US 20200356538A1 · Liu · 2020 [cited by examiner]
US 20210303449A1 · Hershkovitz · 2021 [cited by examiner]
US 20220018901A1 · Jones et al. · 2022 [cited by applicant]
US 20220210030A1 · Cherif et al. · 2022 [cited by applicant]
US 20230015543A1 · Chen et al. · 2023 [cited by applicant]
US 20230058989A1 · Hammarlund · 2023 [cited by examiner]
US 20230105677A1 · de Lescure et al. · 2023 [cited by applicant]
US 20230401130A1 · Mehta · 2023 [cited by examiner]
US 20230401132A1 · Patle · 2023 [cited by examiner]
US 20240143330A1 · Houston · 2024 [cited by examiner]