JP2021521521A - プロセッサをデバッグする方法 - Google Patents
プロセッサをデバッグする方法 Download PDFInfo
- Publication number
- JP2021521521A JP2021521521A JP2020555391A JP2020555391A JP2021521521A JP 2021521521 A JP2021521521 A JP 2021521521A JP 2020555391 A JP2020555391 A JP 2020555391A JP 2020555391 A JP2020555391 A JP 2020555391A JP 2021521521 A JP2021521521 A JP 2021521521A
- Authority
- JP
- Japan
- Prior art keywords
- test
- randomized
- subtests
- processor
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012360 testing method Methods 0.000 claims abstract description 112
- 238000000034 method Methods 0.000 claims description 57
- 125000004122 cyclic group Chemical group 0.000 claims description 5
- 238000013461 design Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 abstract description 9
- 238000004519 manufacturing process Methods 0.000 abstract description 5
- 238000004364 calculation method Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 27
- 230000006870 function Effects 0.000 description 8
- 229910052710 silicon Inorganic materials 0.000 description 8
- 239000010703 silicon Substances 0.000 description 8
- 230000006399 behavior Effects 0.000 description 7
- 238000010200 validation analysis Methods 0.000 description 6
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000000523 sample Substances 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000011835 investigation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012942 design verification Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000011435 rock Substances 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3323—Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2252—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using fault dictionaries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/10—Processors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
Description
本願は、2018年4月10日に出願された米国特許出願第15/950,147号の利点を主張するものであり、当該出願の内容は、参照により本明細書に援用される。
control data structure declaration
struct test_list{
int array_size;
int timeout;
int data_parms;
int test_sampling;
int data_malloc_size;
void(*meminit)(unsigned int*,int);
funcptr*test_arr;
funcptr*test_end_arr;
int code_parms;
int exec_flags;
};
//Example of the structure definition for test type 20.(semaphore ping−pong test)
{NUM_TYPE20_TESTS,
40,
SHARED+RESTORE+DATA_ALIAS,
SAMPL_FEW,
0x20000,
&meminitRand96k,
predetermined_test_type20,
predetermined_test_type20_end,
ALT+ALIAS+RELOAD+SHIFT,
MUTE},
Claims (20)
- プロセッサをデバッグする方法であって、
複数のテストタイプ毎にテンプレートファイルの入力を受信することと、
前記複数のテストタイプからの特定のテストタイプ毎に、
前記特定のテストタイプの各々のテンプレートファイルに従って、第1の所定数のランダム化されたサブテストを生成することと、
前記第1の所定数のランダム化されたサブテストを前記特定のテストタイプのテストバイナリにコンパイルすることと、
複数のテストタイプの各々の前記テストバイナリをリンクして、テストライブラリを形成することと、
前記テストライブラリからテストバイナリのサブセットをランダムに選択することと、
各テストバイナリの制御データ構造に従って、前記プロセッサのいくつかの物理スレッド上でテストバイナリの選択されたサブセットの各々を実行することであって、テストバイナリのサブセットの各テストバイナリから特定のランダム化されたサブテストをランダムに選択することと、選択された特定のランダム化されたサブテストの各々を実行することと、を含む、ことと、
実行中に1つ以上のエラーを検出することと、
検出された1つ以上のエラーに基づいて前記プロセッサを再設計することと、を含む、
方法。 - 前記特定のランダム化されたサブテストをランダムに選択することは、置換ポリシーを有するサンプルを使用して実行される、
請求項1の方法。 - 前記特定のランダム化されたサブテストをランダムに選択することは、置換ポリシーを有していないサンプルを使用して実行される、
請求項1の方法。 - 前記特定のランダム化されたサブテストをランダムに選択することは、任意に選択されたサブテストの一時的なプールを生成し、前記一時的なプールからランダムにピッキングすることによって実行される、
請求項1の方法。 - 前記制御データ構造は、前記選択された特定のランダム化されたサブテストを実行するためのページングモードをさらに指定し、
前記実行することは、前記ページングモードに従って実行される、
請求項1の方法。 - 前記ページングモードは、各テストバイナリ全体で使用されるデフォルトのページングモードである、
請求項5の方法。 - 前記ページングモードは、前記特定のランダム化されたサブテストの各々が実行された後にランダムに切り替えられる、
請求項5の方法。 - 前記実行することは、前記特定のランダム化されたサブテストの各々が行われた後に、前記特定のランダム化されたサブテストの物理コードを可変数のバイトだけランダムにシフトすることをさらに含む、
請求項1の方法。 - 前記制御データ構造は、前記実行することのタイムアウトを指定し、
前記方法は、
前記タイムアウトが満了した後に、前記テストライブラリからテストバイナリの新たなサブセットをランダムに選択することをさらに含む、
請求項1の方法。 - 前記特定のテストタイプの各々のテンプレートファイルは、前記テンプレート内の演算の相対頻度を指定する重み付けファイルを含み、
前記第1の所定数のランダム化されたサブテストは、前記相対頻度に基づいて生成される、
請求項1の方法。 - 前記特定のテストタイプの各々のテンプレートファイルは、前記テンプレート内のループのサイズ及び反復範囲を指定する重み付けファイルを含み、
前記第1の所定数のランダム化されたサブテストは、前記ループのサイズ及び反復範囲に基づいて生成される、
請求項1の方法。 - 前記特定のテストタイプの各々のテンプレートファイルは、前記テンプレート内の巡回符号ブロックを指定する重み付けファイルを含み、
前記第1の所定数のランダム化されたサブテストは、前記巡回符号ブロックに基づいて生成される、
請求項1の方法。 - 前記特定のテストタイプの各々のテンプレートファイルは、前記テンプレート内のレジスタ使用を指定する重み付けファイルを含み、
前記第1の所定数のランダム化されたサブテストは、前記レジスタ使用に基づいて生成される、
請求項1の方法。 - 前記特定のテストタイプの各々のテンプレートファイルは、前記テンプレート内の分岐予測動作を指定する重み付けファイルを含み、
前記第1の所定数のランダム化されたサブテストは、前記分岐予測動作に基づいて生成される、
請求項1の方法。 - 前記プロセッサのデータ空間は、前記実行する前にランダム化される、
請求項1の方法。 - 前記制御データ構造は、選択された特定のランダム化されたサブテストの各々を実行するために、前記データ空間のデータアドレス空間をさらに指定し、
選択された特定のランダム化されたサブテストの各々を実行することは、前記データアドレス空間内で実行される、
請求項15の方法。 - 前記データアドレス空間は、前記データ空間の仮想エイリアスである、
請求項16の方法。 - 前記実行することは、前記特定のランダム化されたサブテストの各々が実行された後に、前記データ空間を元の内容に復元することをさらに含む、
請求項15の方法。 - 前記実行することは、前記特定のランダム化されたサブテストの各々が実行された後に、前記データ空間を再ランダム化することをさらに含む、
請求項15の方法。 - 前記実行中に1つ以上のエラーを検出することは、前記データ空間において巡回冗長検査を実行することを含む、
請求項15の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/950,147 US10534881B2 (en) | 2018-04-10 | 2018-04-10 | Method of debugging a processor |
US15/950,147 | 2018-04-10 | ||
PCT/US2019/018490 WO2019199378A1 (en) | 2018-04-10 | 2019-02-19 | Method of debugging a processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021521521A true JP2021521521A (ja) | 2021-08-26 |
JP7209736B2 JP7209736B2 (ja) | 2023-01-20 |
Family
ID=68097260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020555391A Active JP7209736B2 (ja) | 2018-04-10 | 2019-02-19 | プロセッサをデバッグする方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10534881B2 (ja) |
EP (1) | EP3776213B1 (ja) |
JP (1) | JP7209736B2 (ja) |
KR (1) | KR102230173B1 (ja) |
CN (1) | CN112136116B (ja) |
WO (1) | WO2019199378A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10534881B2 (en) * | 2018-04-10 | 2020-01-14 | Advanced Micro Devices, Inc. | Method of debugging a processor |
US11204859B2 (en) * | 2019-07-09 | 2021-12-21 | International Business Machines Corporation | Partial-results post-silicon hardware exerciser |
US11194705B2 (en) | 2020-05-11 | 2021-12-07 | International Business Machines Corporation | Automatically introducing register dependencies to tests |
US11361136B2 (en) | 2020-07-17 | 2022-06-14 | International Business Machines Corporation | Creating multiple use test case |
US11226370B1 (en) | 2020-09-10 | 2022-01-18 | International Business Machines Corporation | Recoverable exceptions generation and handling for post-silicon validation |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050125754A1 (en) * | 1999-11-30 | 2005-06-09 | Schubert Nils E. | Hardware debugging in a hardware description language |
US20070011522A1 (en) * | 2005-06-06 | 2007-01-11 | Denniston William B | System and methods for functional testing of embedded processor-based systems |
JP2012141707A (ja) * | 2010-12-28 | 2012-07-26 | Fujitsu Semiconductor Ltd | プロセッサ検証プログラム |
JP2013077173A (ja) * | 2011-09-30 | 2013-04-25 | Toshiba Corp | テストケース生成プログラム及びテストケース生成装置 |
US20130132932A1 (en) * | 2009-10-27 | 2013-05-23 | Echostar Global B.V. | Embedding dynamic information in electronic devices |
US20160246599A1 (en) * | 2015-02-25 | 2016-08-25 | Mireplica Technology, Llc | Hardware Instruction Generation Unit for Specialized Processors |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030033594A1 (en) * | 2001-01-29 | 2003-02-13 | Matt Bowen | System, method and article of manufacture for parameterized expression libraries |
US20030037321A1 (en) * | 2001-01-29 | 2003-02-20 | Matt Bowen | System, method and article of manufacture for extensions in a programming lanauage capable of programming hardware architectures |
KR20030058130A (ko) | 2001-12-29 | 2003-07-07 | 엘지전자 주식회사 | 프로세서의 실시간 디버깅 장치 |
US7209851B2 (en) * | 2003-02-14 | 2007-04-24 | Advantest America R&D Center, Inc. | Method and structure to develop a test program for semiconductor integrated circuits |
US8352713B2 (en) * | 2006-08-09 | 2013-01-08 | Qualcomm Incorporated | Debug circuit comparing processor instruction set operating mode |
US8321489B2 (en) * | 2006-09-15 | 2012-11-27 | National Semiconductor Corporation | Software reconfigurable digital phase lock loop architecture |
US8892386B2 (en) * | 2011-07-10 | 2014-11-18 | International Business Machines Corporation | Method and apparatus for post-silicon testing |
DE112013007751B3 (de) * | 2012-10-22 | 2023-01-12 | Intel Corporation | Hochleistungs-Zusammenschaltungs-Bitübertragungsschicht |
US9886277B2 (en) * | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
US9798575B2 (en) * | 2013-05-06 | 2017-10-24 | Sas Institute Inc. | Techniques to manage virtual classes for statistical tests |
US9766888B2 (en) * | 2014-03-28 | 2017-09-19 | Intel Corporation | Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements |
US9424039B2 (en) * | 2014-07-09 | 2016-08-23 | Intel Corporation | Instruction for implementing vector loops of iterations having an iteration dependent condition |
US20170075789A1 (en) * | 2015-09-10 | 2017-03-16 | Google Inc. | Method and apparatus for generating, capturing, storing, and loading debug information for failed tests scripts |
US10534881B2 (en) * | 2018-04-10 | 2020-01-14 | Advanced Micro Devices, Inc. | Method of debugging a processor |
-
2018
- 2018-04-10 US US15/950,147 patent/US10534881B2/en active Active
-
2019
- 2019-02-19 CN CN201980033448.4A patent/CN112136116B/zh active Active
- 2019-02-19 EP EP19785418.5A patent/EP3776213B1/en active Active
- 2019-02-19 JP JP2020555391A patent/JP7209736B2/ja active Active
- 2019-02-19 WO PCT/US2019/018490 patent/WO2019199378A1/en unknown
- 2019-02-19 KR KR1020207032318A patent/KR102230173B1/ko active IP Right Grant
- 2019-12-20 US US16/723,614 patent/US11093676B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050125754A1 (en) * | 1999-11-30 | 2005-06-09 | Schubert Nils E. | Hardware debugging in a hardware description language |
US20070011522A1 (en) * | 2005-06-06 | 2007-01-11 | Denniston William B | System and methods for functional testing of embedded processor-based systems |
US20130132932A1 (en) * | 2009-10-27 | 2013-05-23 | Echostar Global B.V. | Embedding dynamic information in electronic devices |
JP2012141707A (ja) * | 2010-12-28 | 2012-07-26 | Fujitsu Semiconductor Ltd | プロセッサ検証プログラム |
JP2013077173A (ja) * | 2011-09-30 | 2013-04-25 | Toshiba Corp | テストケース生成プログラム及びテストケース生成装置 |
US20160246599A1 (en) * | 2015-02-25 | 2016-08-25 | Mireplica Technology, Llc | Hardware Instruction Generation Unit for Specialized Processors |
Also Published As
Publication number | Publication date |
---|---|
JP7209736B2 (ja) | 2023-01-20 |
CN112136116A (zh) | 2020-12-25 |
US10534881B2 (en) | 2020-01-14 |
US11093676B2 (en) | 2021-08-17 |
EP3776213A4 (en) | 2022-01-05 |
EP3776213A1 (en) | 2021-02-17 |
KR102230173B1 (ko) | 2021-03-19 |
EP3776213B1 (en) | 2023-04-05 |
KR20200130752A (ko) | 2020-11-19 |
WO2019199378A1 (en) | 2019-10-17 |
US20200134248A1 (en) | 2020-04-30 |
US20190311072A1 (en) | 2019-10-10 |
CN112136116B (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7209736B2 (ja) | プロセッサをデバッグする方法 | |
Wang et al. | Revery: From proof-of-concept to exploitable | |
Eceiza et al. | Fuzzing the internet of things: A review on the techniques and challenges for efficient vulnerability discovery in embedded systems | |
US6658471B1 (en) | Method and system for zero overhead software performance measurement instrumentation | |
US11204859B2 (en) | Partial-results post-silicon hardware exerciser | |
US20120084759A1 (en) | System and method for in-vivo multi-path analysis of binary software | |
Moudgill et al. | Validation of Turandot, a fast processor model for microarchitecture exploration | |
Lin et al. | GREBE: Unveiling exploitation potential for Linux kernel bugs | |
Campbell et al. | Randomised testing of a microprocessor model using SMT-solver state generation | |
US8990622B2 (en) | Post-silicon validation using a partial reference model | |
Cao et al. | Symcrash: Selective recording for reproducing crashes | |
Donaldson et al. | Counterexample-guided abstraction refinement for symmetric concurrent programs | |
Hsiao et al. | Synthesizing formal models of hardware from RTL for efficient verification of memory model implementations | |
Hao et al. | Syzdescribe: Principled, automated, static generation of syscall descriptions for kernel drivers | |
US20050251791A1 (en) | Systems and methods for branch profiling loops of an executable program | |
Ding et al. | Hardware support to improve fuzzing performance and precision | |
Das et al. | A flexible framework for expediting bug finding by leveraging past (mis-) behavior to discover new bugs | |
US20050251790A1 (en) | Systems and methods for instrumenting loops of an executable program | |
Hóu et al. | An isabelle/hol formalisation of the SPARC instruction set architecture and the TSO memory model | |
Mohr et al. | Synthesizing hardware-software leakage contracts for RISC-V open-source processors | |
Dang et al. | Generating test programs to cover pipeline interactions | |
Joannou et al. | Randomized testing of RISC-V CPUs using direct instruction injection | |
Vartanov | Dynamic symbolic execution of Java programs using JNI | |
CN117313595B (zh) | 用于功能验证的随机指令生成方法、设备及系统 | |
Wang et al. | ProbeBuilder: Uncovering opaque kernel data structures for automatic probe construction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220218 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20220218 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220607 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220906 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20221206 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20221223 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230110 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7209736 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |