Patent US5600658A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5600658A Expired / Lapsed US ⏱️ 0.0 years remaining

Built-in self tests for large multiplier, adder, or subtractor

Assignee: National Semiconductor Corp
•
Filing: 1995-10-19
•
Granted: 1997-02-04
•
Expires: 2015-10-19
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method of testing a two-input multiplier, adder, or subtractor implementation for stuck-at faults includes a multi-step procedure for iteratively exercising all input and output permutations, and pseudo-exhaustively exercising all internal nodes. The method of testing a multiplier, adder, or subtractor involves logically partitioning the multiplication, addition, or subtraction into several smaller but identical independent operations. This logical partitioning of operations ensures that the output result will consist of several smaller identical results if the unit under test is functioning properly. Because the several smaller results are identical, comparing the smaller results to each other detects any failures internal to the multiplier, adder, or subtractor under test. The logically partitioned operations are repeated for multiple input setting to ensure a high level of fault coverage. In the testing of a multiplier, a four step iterative method fully exercises the multiplier. Each step includes iteratively filling alternate digits of one input operand with a first test value and filling the remaining digits of that operand with zero. Each step further includes the filling of one digit of the other multiplier operand with a second test value, while all remaining digits of that operand are filled with zero. Four different fill patterns are used for all permutations of the two test digits to fully exercise the multiplier. In the testing of an adder or subtractor, a two step iterative method fully exercises the adder or subtractor.

Inventors

  • 👤 Fazal U. R. Qureshi

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-07 11:28
CPC Classifications
G; G01; G01R; G01R31/00; G01R31/28; G01R31/317; G01R31/3181; G01R31/3183; G01R31/318321

Claims Analysis

Total Claims: 67
Claim 1
Independent Claim 600 words
A method of testing a multiplier taking first and second N-bit input mantissa operands and producing a 2N-bit mantissa output, the method comprising the steps of: selecting a digit size d, such that d evenly divides into N; allocating each of the first and second N-bit input mantissa operands into N/d input digit fields, the input digit fields of the first operand being A(0) through A(N/d-1), the input digit fields of the second operand being B(0) through B(N/d-1); allocating the 2N-bit mantissa output into 2N/d output subchunks each having d bits, the output subchunks being S(0) through S(2N/d-1); for each of 2 2d permutations of integer i and integer j, wherein i and j are from the range from 0 to 2 d- 1, inclusive, loading all even digit fields A(0) through A(N/d-2) of the first operand with i; loading all odd digit fields A(1) through A(N/d-1) of the first operand with 0; loading the least significant digit field B(0) of the second operand with j; loading the more significant digit fields B(1) through B(N/d-1) of the second operand with 0; performing a multiplication; comparing N/2d even output subchunks S(0) through S(N/d-2) for equality; comparing N/2d odd output subchunks S(1) through S(N/d-1) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; for each of 2 2d permutations of integer i and integer j, wherein i and j are from the range from 0 to 2 d -1, inclusive, loading all even digit fields A(0) through A(N/d-2) of the first operand with 0; loading all odd digit fields A(1) through A(N/d-1) of the first operand with i; loading the most significant digit field B(N/d-1) of the second operand with j; loading the less significant digit fields B(0) through B(N/d-2) of the second operand with 0; performing a multiplication; comparing N/2d even output subchunks S(N/d) through S(2N/d-2) for equality; comparing N/2d odd output subchunks S(N/d+i) through S(2N/d-1) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; for each of 2 2d permutations of integer i and integer j, wherein i and j are from the range from 0 to 2 d- 1, inclusive, loading digit field A(1) of the first operand with j; loading digit fields A(0) and A(2) through A(N/d-1) of the first operand with 0; loading all even digit fields B(0) through B(N/d-2) of the second operand with 0; loading all odd digit fields B(1) through B(N/d-1) of the second operand with i; performing a multiplication; comparing N/2d even output subchunks S(2) through S(N/d) for equality; comparing N/2d odd output subchunks S(1) through S(N/d-1) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; for each of 2 2d permutations of integer i and integer j, wherein i and j each are from the range from 0 to 2 d- 1, inclusive, loading digit field A(N/d-2) of the first operand with j; loading digit fields A(0) through A(N/d-3) and A(N/d-1) of the first operand with 0; loading all even digit fields B(0) through B(N/d-2) of the second operand with 0; loading all odd digit fields B(1) through B(N/d-1) of the second operand with i; performing a multiplication; comparing N/2d even output subchunks S(N/d) through S(2N/d-2) for equality; comparing N/2d odd output subchunks S(N/d-1) through S(2N/d-3) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; and reporting test passing if none of the above comparing steps detect inequality.
Claim 2
Independent Claim 600 words
A method of testing a multiplier taking first and second N-bit input mantissa operands and producing a 2N-bit mantissa output, the method comprising the steps of: selecting a digit size d, such that d evenly divides into N; allocating each of the first and second N-bit input mantissa operands into N/d input digit fields, the input digit fields of the first operand being A(0) through A(N/d-1), the input digit fields of the second operand being B(0) through B(N/d-1); allocating the 2N-bit mantissa output into 2N/d output subchunks each having d bits, the output subchunks being S(0) through S(2N/d-1); for each of 2 2d permutations of integer i and integer j, wherein i and j are from the range from 0 to 2 d- 1, inclusive, loading all even digit fields A(0) through A(N/d-2) of the first operand with i; loading all odd digit fields A(1) through A(N/d-1) of the first operand with 0; loading the least significant digit field B(0) of the second operand with j; loading the more significant digit fields B(1) through B(N/d-1) of the second operand with 0; performing a multiplication; comparing N/2d even output subchunks S(0) through S(N/d-2) for equality; comparing N/2d odd output subchunks S(1) through S(N/d-1) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; for each of 2 2d permutations of integer i and integer j, wherein i and j are from the range from 0 to 2 d -1, inclusive, loading all even digit fields A(0) through A(N/d-2) of the first operand with 0; loading all odd digit fields A(1) through A(N/d-1) of the first operand with i; loading the most significant digit field B(N/d-1) of the second operand with j; loading the less significant digit fields B(0) through B(N/d-2) of the second operand with 0; performing a multiplication; comparing N/2d even output subchunks S(N/d) through S(2N/d-2) for equality; comparing N/2d odd output subchunks S(N/d+i) through S(2N/d-1) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; for each of 2 2d permutations of integer i and integer j, wherein i and j are from the range from 0 to 2 d- 1, inclusive, loading digit field A(1) of the first operand with j; loading digit fields A(0) and A(2) through A(N/d-1) of the first operand with 0; loading all even digit fields B(0) through B(N/d-2) of the second operand with 0; loading all odd digit fields B(1) through B(N/d-1) of the second operand with i; performing a multiplication; comparing N/2d even output subchunks S(2) through S(N/d) for equality; comparing N/2d odd output subchunks S(1) through S(N/d-1) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; for each of 2 2d permutations of integer i and integer j, wherein i and j each are from the range from 0 to 2 d- 1, inclusive, loading digit field A(N/d-2) of the first operand with j; loading digit fields A(0) through A(N/d-3) and A(N/d-1) of the first operand with 0; loading all even digit fields B(0) through B(N/d-2) of the second operand with 0; loading all odd digit fields B(1) through B(N/d-1) of the second operand with i; performing a multiplication; comparing N/2d even output subchunks S(N/d) through S(2N/d-2) for equality; comparing N/2d odd output subchunks S(N/d-1) through S(2N/d-3) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; and reporting test passing if none of the above comparing steps detect inequality.
Claim 3
Dependent Claim 34 words
A method of testing a multiplier as in claim 1, wherein all 2 2d permutations of integers i and j are sequentially generated by a 2d-bit test counter having a test counter carry output.
Claim 4
Dependent Claim 40 words
A method of testing a multiplier as in claim 2, wherein the integer i is the least significant d output bits of the test counter; and wherein the integer j is the most significant d bits of the test counter.
Claim 5
Dependent Claim 29 words
A method of testing a multiplier as in claim 3, wherein the 2d-bit test counter is a Johnson counter, which performs a single-bit counter output transition each increment cycle.
Claim 6
Dependent Claim 21 words
A method of testing a multiplier as in claim 3, wherein the test counter carry output enables a two-bit step counter.
Claim 7
Dependent Claim 46 words
A method of testing a multiplier as in claim 1, wherein the first and second N-bit input mantissa operands are writeable by external software, and the 2N-bit mantissa output is readable by external software, and wherein the loading and comparing steps are performed by external software.
Claim 8
Dependent Claim 55 words
A method of testing a multiplier as in claim 1, wherein the first and second N-bit input mantissa operands are not writeable by external software, and the 2N-bit mantissa output is readable by external software, and wherein the loading steps are performed by internal test hardware, and the comparing steps are performed by external software.
Claim 9
Dependent Claim 49 words
A method of testing a multiplier as in claim 1, wherein the first and second N-bit input mantissa operands are not writeable by external software, and the 2N-bit mantissa output is not readable by external software, and wherein the loading and comparing steps are performed by internal test hardware.
Claim 10
Dependent Claim 19 words
A method of testing a multiplier as in claim 1, wherein N is 256; and wherein d is 4.
Claim 11
Independent Claim 597 words
A method of testing a multiplier taking first and second N-bit input mantissa operands and producing a 2N-bit mantissa output, the method comprising the steps of: selecting a digit size d, such that d evenly divides into N; allocating each of the first and second N-bit input mantissa operands into N/d input digit fields, the input digit fields of the first operand being A(0) through A(N/d-1), the input digit fields of the second operand being B(0) through B(N/d-1); allocating the 2N-bit mantissa output into 2N/d output subchunks each having d bits, the output subchunks being S(0) through S(2N/d-1); for each of 2 d values of integer i, wherein i takes on values in the range of 0 to 2 d -1, inclusive, loading all even digit fields A(0) through A(N/d-2) of the first operand with i; loading all odd digit fields A(1) through A(N/d-1) of the first operand with 0; loading the least significant digit field B(0) of the second operand with the one's complement of i; loading the more significant digit fields B(1) through B(N/d-1) of the second operand with 0; performing a multiplication; comparing N/2d even output subchunks S(0) through S(N/d-2) for equality; comparing N/2d odd output subchunks S(1) through S(N/d-1) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; for each of 2 d values of integer i, wherein i is in the range from 0 to 2 d -1, inclusive, loading all even digit fields A(0) through A(N/d-2) of the first operand with 0; loading all odd digit fields A(1) through A(N/d-1) of the first operand with i; loading the most significant digit field B(N/d-1) of the second operand with the one's complement of i; loading the less significant digit fields B(0) through B(N/d-2) of the second operand with 0; performing a multiplication; comparing N/2d even output subchunks S(N/d) through S(2N/d-2) for equality; comparing N/2d odd output subchunks S(N/d+1) through S(2N/d-1) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; for each of 2 d values of integer i, wherein i is in the range from 0 to 2 d -1, inclusive, loading digit field A(1) of the first operand with the one's complement of i; loading digit fields A(0) and A(2) through A(N/d-1) of the first operand with 0; loading all even digit fields B(0) through B(N/d-2) of the second operand with 0; loading all odd digit fields B(1) through B(N/d-1) of the second operand with i; performing a multiplication; comparing N/2d even output subchunks S(2) through S(N/d) for equality; comparing N/2d odd output subchunks S(1) through S(N/d-1) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; for each of 2 d values of integer i, wherein i is in the range from 0 to 2 d -1, inclusive, loading digit field A(N/d-2) of the first operand with the one's complement of i; loading digit fields A(0) through A(N/d-3) and A(N/d-1) of the first operand with 0; loading all even digit fields B(0) through B(N/d-2) of the second operand with 0; loading all odd digit fields B(1) through B(N/d-1) of the second operand with i; performing a multiplication; comparing N/2d even output subchunks S(N/d) through S(2N/d-2) for equality; comparing N/2d odd output subchunks S(N/d-1) through S(2N/d-3) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; and reporting test passing if none of the above comparing steps detect inequality.
Claim 12
Independent Claim 597 words
A method of testing a multiplier taking first and second N-bit input mantissa operands and producing a 2N-bit mantissa output, the method comprising the steps of: selecting a digit size d, such that d evenly divides into N; allocating each of the first and second N-bit input mantissa operands into N/d input digit fields, the input digit fields of the first operand being A(0) through A(N/d-1), the input digit fields of the second operand being B(0) through B(N/d-1); allocating the 2N-bit mantissa output into 2N/d output subchunks each having d bits, the output subchunks being S(0) through S(2N/d-1); for each of 2 d values of integer i, wherein i takes on values in the range of 0 to 2 d -1, inclusive, loading all even digit fields A(0) through A(N/d-2) of the first operand with i; loading all odd digit fields A(1) through A(N/d-1) of the first operand with 0; loading the least significant digit field B(0) of the second operand with the one's complement of i; loading the more significant digit fields B(1) through B(N/d-1) of the second operand with 0; performing a multiplication; comparing N/2d even output subchunks S(0) through S(N/d-2) for equality; comparing N/2d odd output subchunks S(1) through S(N/d-1) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; for each of 2 d values of integer i, wherein i is in the range from 0 to 2 d -1, inclusive, loading all even digit fields A(0) through A(N/d-2) of the first operand with 0; loading all odd digit fields A(1) through A(N/d-1) of the first operand with i; loading the most significant digit field B(N/d-1) of the second operand with the one's complement of i; loading the less significant digit fields B(0) through B(N/d-2) of the second operand with 0; performing a multiplication; comparing N/2d even output subchunks S(N/d) through S(2N/d-2) for equality; comparing N/2d odd output subchunks S(N/d+1) through S(2N/d-1) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; for each of 2 d values of integer i, wherein i is in the range from 0 to 2 d -1, inclusive, loading digit field A(1) of the first operand with the one's complement of i; loading digit fields A(0) and A(2) through A(N/d-1) of the first operand with 0; loading all even digit fields B(0) through B(N/d-2) of the second operand with 0; loading all odd digit fields B(1) through B(N/d-1) of the second operand with i; performing a multiplication; comparing N/2d even output subchunks S(2) through S(N/d) for equality; comparing N/2d odd output subchunks S(1) through S(N/d-1) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; for each of 2 d values of integer i, wherein i is in the range from 0 to 2 d -1, inclusive, loading digit field A(N/d-2) of the first operand with the one's complement of i; loading digit fields A(0) through A(N/d-3) and A(N/d-1) of the first operand with 0; loading all even digit fields B(0) through B(N/d-2) of the second operand with 0; loading all odd digit fields B(1) through B(N/d-1) of the second operand with i; performing a multiplication; comparing N/2d even output subchunks S(N/d) through S(2N/d-2) for equality; comparing N/2d odd output subchunks S(N/d-1) through S(2N/d-3) for equality; continuing if the comparing steps detected equality; reporting test failure if either of the comparing steps detected inequality; and reporting test passing if none of the above comparing steps detect inequality.
Claim 13
Dependent Claim 37 words
A method of testing a multiplier as in claim 10, wherein 2 d permutations of integers i and the one's complement of i are sequentially generated by a d-bit test counter having a test counter carry output.
Claim 14
Dependent Claim 41 words
A method of testing a multiplier as in claim 11, wherein the integer i is the output bits of the test counter; and wherein the one's complement of i is the logical inverse of the output bits of the test counter.
Claim 15
Dependent Claim 29 words
A method of testing a multiplier as in claim 12, wherein the d-bit test counter is a Johnson counter, which performs a single-bit counter output transition each increment cycle.
Claim 16
Dependent Claim 21 words
A method of testing a multiplier as in claim 12, wherein the test counter carry output enables a two-bit step counter.
Claim 17
Dependent Claim 55 words
A method of testing a multiplier as in claim 10, wherein the first and second N-bit input mantissa operands are not writeable by external software, and the 2N-bit mantissa output is readable by external software, and wherein the loading steps are performed by internal test hardware, and the comparing steps are performed by external software.
Claim 18
Dependent Claim 49 words
A method of testing a multiplier as in claim 10, wherein the first and second N-bit input mantissa operands are not writeable by external software, and the 2N-bit mantissa output is not readable by external software, and wherein the loading and comparing steps are performed by internal test hardware.
Claim 19
Dependent Claim 19 words
A method of testing a multiplier as in claim 10, wherein N is 256; and wherein d is 4.
Claim 20
Independent Claim 503 words
A method of testing an adder taking first and second N-bit input operands and producing an N-bit output, the method comprising the steps of: selecting a digit size d, such that d evenly divides into N; allocating each of the first and second N-bit input operands into N/d input digit fields, the input digit fields of the first operand being A(0) through A(N/d-1), the input digit fields of the second operand being B(0) through B(N/d-1); allocating the N-bit output into N/d output chunks each having d bits, the output chunks being C(0) through C(N/d-1); for each of 2 2 (d-1) permutations of d-1-bit integer i and d-1-bit integer j, wherein i and j are from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields A(0) through A(N/d-1) of the first operand with i; loading the most significant bit of all digit fields A(0) through A(N/d-1) of the first operand with 0; loading the less significant d-1 bits of all digit fields B(0) through B(N/d-1) of the second operand with j; loading the most significant bit of all digit fields B(0) through B(N/d-1) of the second operand with 0; performing an addition; comparing the N/d output chunks C(0) through C(N/d-1) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; reserving r least significant bits in each of the first and second input operands and the N-bit output, r being in from the range from 1 to d-1, inclusive, the r least significant bits being set to zero, thereby defining first and second N-r bit shifted input operands and an N-r bit shifted output; allocating each of the first and second N-r bit shifted input operands into N/d-1 shifted input digit fields, the shifted input digit fields of the first shifted operand being AS(0) through AS(N/d-2), the shifted input digit fields of the second shifted operand being BS(0) through BS(N/d-2); allocating the N-r bit shifted output into N/d-1 shifted output chunks each having d-1 bits, the shifted output chunks being CS(0) through CS(N/d-2); for each of 2 2 (d-1) permutations of d-1-bit integer i and d-1-bit integer j, wherein i and j are from the integer range from 0 to 2 d-1 , inclusive, loading the less significant d-1 bits of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with i; loading the most significant bit of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with 0; loading the less significant d-1 bits of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with j; loading the most significant bit of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with 0; performing an addition; comparing the N/d-1 shifted output chunks CS(0) through CS(N/d-2) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; and reporting test passing if none of the above comparing steps detect inequality.
Claim 21
Independent Claim 503 words
A method of testing an adder taking first and second N-bit input operands and producing an N-bit output, the method comprising the steps of: selecting a digit size d, such that d evenly divides into N; allocating each of the first and second N-bit input operands into N/d input digit fields, the input digit fields of the first operand being A(0) through A(N/d-1), the input digit fields of the second operand being B(0) through B(N/d-1); allocating the N-bit output into N/d output chunks each having d bits, the output chunks being C(0) through C(N/d-1); for each of 2 2 (d-1) permutations of d-1-bit integer i and d-1-bit integer j, wherein i and j are from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields A(0) through A(N/d-1) of the first operand with i; loading the most significant bit of all digit fields A(0) through A(N/d-1) of the first operand with 0; loading the less significant d-1 bits of all digit fields B(0) through B(N/d-1) of the second operand with j; loading the most significant bit of all digit fields B(0) through B(N/d-1) of the second operand with 0; performing an addition; comparing the N/d output chunks C(0) through C(N/d-1) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; reserving r least significant bits in each of the first and second input operands and the N-bit output, r being in from the range from 1 to d-1, inclusive, the r least significant bits being set to zero, thereby defining first and second N-r bit shifted input operands and an N-r bit shifted output; allocating each of the first and second N-r bit shifted input operands into N/d-1 shifted input digit fields, the shifted input digit fields of the first shifted operand being AS(0) through AS(N/d-2), the shifted input digit fields of the second shifted operand being BS(0) through BS(N/d-2); allocating the N-r bit shifted output into N/d-1 shifted output chunks each having d-1 bits, the shifted output chunks being CS(0) through CS(N/d-2); for each of 2 2 (d-1) permutations of d-1-bit integer i and d-1-bit integer j, wherein i and j are from the integer range from 0 to 2 d-1 , inclusive, loading the less significant d-1 bits of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with i; loading the most significant bit of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with 0; loading the less significant d-1 bits of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with j; loading the most significant bit of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with 0; performing an addition; comparing the N/d-1 shifted output chunks CS(0) through CS(N/d-2) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; and reporting test passing if none of the above comparing steps detect inequality.
Claim 22
Dependent Claim 35 words
A method of testing an adder as in claim 18, wherein all2 2 (d-1) permutations of integers i and j are sequentially generated by a 2(d-1) bit test counter having a test counter carry output.
Claim 23
Dependent Claim 40 words
A method of testing an adder as in claim 19, wherein the integer i is the least significant d-1 output bits of the test counter; and wherein the integer j is the most significant d-1 bits of the test counter.
Claim 24
Dependent Claim 30 words
A method of testing an adder as in claim 20, wherein the 2(d-1) bit test counter is a Johnson counter, which performs a single-bit counter output transition each increment cycle.
Claim 25
Dependent Claim 21 words
A method of testing an adder as in claim 20, wherein the test counter carry output enables a one-bit step counter.
Claim 26
Dependent Claim 44 words
A method of testing an adder as in claim 18, wherein the first and second N-bit input operands are writeable by external software, and the N-bit output is readable by external software, and wherein the loading and comparing steps are performed by external software.
Claim 27
Dependent Claim 53 words
A method of testing an adder as in claim 18, wherein the first and second N-bit input operands are not writeable by external software, and the N-bit output is readable by external software, and wherein the loading steps are performed by internal test hardware, and the comparing steps are performed by external software.
Claim 28
Dependent Claim 47 words
A method of testing an adder as in claim 18, wherein the first and second N-bit input operands are not writeable by external software, and the N-bit output is not readable by external software, and wherein the loading and comparing steps are performed by internal test hardware.
Claim 29
Dependent Claim 19 words
A method of testing an adder as in claim 18, wherein N is 256; and wherein d is 4.
Claim 30
Dependent Claim 14 words
A method of testing an adder as in claim 18, wherein r is 1.
Claim 31
Dependent Claim 14 words
A method of testing an adder as in claim 18, wherein r is d-1.
Claim 32
Independent Claim 497 words
A method of testing an adder taking first and second N-bit input operands and producing an N-bit output, the method comprising the steps of: selecting a digit size d, such that d evenly divides into N; allocating each of the first and second N-bit input operands into N/d input digit fields, the input digit fields of the first operand being A(0) through A(N/d-1), the input digit fields of the second operand being B(0) through B(N/d-1); allocating the N-bit output into N/d output chunks each having d bits, the output chunks being C(0) through C(N/d-1); for each of 2 d-1 permutations of d-1-bit integer i, wherein i is from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields A(0) through A(N/d-1) of the first operand with i; loading the most significant bit of all digit fields A(0) through A(N/d-1) of the first operand with 0; loading the less significant d-1 bits of all digit fields B(0) through B(N/d-1) of the second operand with the one's complement of i; loading the most significant bit of all digit fields B(0) through B(N/d-1) of the second operand with 0; performing an addition; comparing the N/d output chunks C(0) through C(N/d-1) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; reserving r least significant bits in each of the first and second input operands and the N-bit output, r being in from the range from 1 to d-1, inclusive, the r least significant bits being set to zero, thereby defining first and second N-r bit shifted input operands and an N-r bit shifted output; allocating each of the first and second N-r bit shifted input operands into N/d-1 shifted input digit fields, the shifted input digit fields of the first shifted operand being AS(0) through AS(N/d-2), the shifted input digit fields of the second shifted operand being BS(0) through BS(N/d-2); allocating the N-r bit shifted output into N/d-1 shifted output chunks each having d-1 bits, the shifted output chunks being CS(0) through CS(N/d-2); for each of 2 d-1 permutations of d-1-bit integer i, wherein i is from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with i; loading the most significant bit of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with 0; loading the less significant d-1 bits of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with the one's complement of i; loading the most significant bit of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with 0; performing an addition; comparing the N/d-1 shifted output chunks CS(0) through CS(N/d-2) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; and reporting test passing if none of the above comparing steps detect inequality.
Claim 33
Independent Claim 497 words
A method of testing an adder taking first and second N-bit input operands and producing an N-bit output, the method comprising the steps of: selecting a digit size d, such that d evenly divides into N; allocating each of the first and second N-bit input operands into N/d input digit fields, the input digit fields of the first operand being A(0) through A(N/d-1), the input digit fields of the second operand being B(0) through B(N/d-1); allocating the N-bit output into N/d output chunks each having d bits, the output chunks being C(0) through C(N/d-1); for each of 2 d-1 permutations of d-1-bit integer i, wherein i is from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields A(0) through A(N/d-1) of the first operand with i; loading the most significant bit of all digit fields A(0) through A(N/d-1) of the first operand with 0; loading the less significant d-1 bits of all digit fields B(0) through B(N/d-1) of the second operand with the one's complement of i; loading the most significant bit of all digit fields B(0) through B(N/d-1) of the second operand with 0; performing an addition; comparing the N/d output chunks C(0) through C(N/d-1) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; reserving r least significant bits in each of the first and second input operands and the N-bit output, r being in from the range from 1 to d-1, inclusive, the r least significant bits being set to zero, thereby defining first and second N-r bit shifted input operands and an N-r bit shifted output; allocating each of the first and second N-r bit shifted input operands into N/d-1 shifted input digit fields, the shifted input digit fields of the first shifted operand being AS(0) through AS(N/d-2), the shifted input digit fields of the second shifted operand being BS(0) through BS(N/d-2); allocating the N-r bit shifted output into N/d-1 shifted output chunks each having d-1 bits, the shifted output chunks being CS(0) through CS(N/d-2); for each of 2 d-1 permutations of d-1-bit integer i, wherein i is from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with i; loading the most significant bit of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with 0; loading the less significant d-1 bits of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with the one's complement of i; loading the most significant bit of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with 0; performing an addition; comparing the N/d-1 shifted output chunks CS(0) through CS(N/d-2) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; and reporting test passing if none of the above comparing steps detect inequality.
Claim 34
Dependent Claim 37 words
A method of testing an adder as in claim 29, wherein 2 d-1 permutations of integer i and the one's complement of i are sequentially generated by a d-1-bit test counter having a test counter carry output.
Claim 35
Dependent Claim 41 words
A method of testing an adder as in claim 30, wherein the integer i is the output bits of the test counter; and wherein the one's complement of i is the logical inverse of the output bits of the test counter.
Claim 36
Dependent Claim 29 words
A method of testing an adder as in claim 31, wherein the d-1-bit test counter is a Johnson counter, which performs a single-bit counter output transition each increment cycle.
Claim 37
Dependent Claim 21 words
A method of testing an adder as in claim 31, wherein the test counter carry output enables a one-bit step counter.
Claim 38
Dependent Claim 44 words
A method of testing an adder as in claim 29, wherein the first and second N-bit input operands are writeable by external software, and the N-bit output is readable by external software, and wherein the loading and comparing steps are performed by external software.
Claim 39
Dependent Claim 53 words
A method of testing an adder as in claim 29, wherein the first and second N-bit input operands are not writeable by external software, and the N-bit output is readable by external software, and wherein the loading steps are performed by internal test hardware, and the comparing steps are performed by external software.
Claim 40
Dependent Claim 47 words
A method of testing an adder as in claim 29, wherein the first and second N-bit input operands are not writeable by external software, and the N-bit output is not readable by external software, and wherein the loading and comparing steps are performed by internal test hardware.
Claim 41
Dependent Claim 19 words
A method of testing an adder as in claim 29, wherein N is 256; and wherein d is 4.
Claim 42
Dependent Claim 14 words
A method of testing an adder as in claim 29, wherein r is 1.
Claim 43
Dependent Claim 14 words
A method of testing an adder as in claim 29, wherein r is d-1.
Claim 44
Independent Claim 503 words
A method of testing a subtractor taking first and second N-bit input operands and producing an N-bit output, the method comprising the steps of: selecting a digit size d, such that d evenly divides into N; allocating each of the first and second N-bit input operands into N/d input digit fields, the input digit fields of the first operand being A(0) through A(N/d-1), the input digit fields of the second operand being B(0) through B(N/d-1); allocating the N-bit output into N/d output chunks each having d bits, the output chunks being C(0) through C(N/d-1); for each of 2 2 (d-1) permutations of d-1-bit integer i and d-1-bit integer j, wherein i and j are from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields A(0) through A(N/d-1) of the first operand with i; loading the most significant bit of all digit fields A(0) through A(N/d-1) of the first operand with 1; loading the less significant d-1 bits of all digit fields B(0) through B(N/d-1) of the second operand with j; loading the most significant bit of all digit fields B(0) through B(N/d-1) of the second operand with 0; performing a subtraction; comparing the N/d output chunks C(0) through C(N/d-1) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; reserving r least significant bits in each of the first and second input operands and the N-bit output, r being in from the range from 1 to d-1, inclusive, the r least significant bits being set to zero, thereby defining first and second N-r bit shifted input operands and an N-r bit shifted output; allocating each of the first and second N-r bit shifted input operands into N/d-1 shifted input digit fields, the shifted input digit fields of the first shifted operand being AS(0) through AS(N/d-2), the shifted input digit fields of the second shifted operand being BS(0) through BS(N/d-2); allocating the N-r bit shifted output into N/d-1 shifted output chunks each having d-1 bits, the shifted output chunks being CS(0) through CS(N/d-2); for each of 2 2 (d-1) permutations of d-1-bit integer i and d-1-bit integer j, wherein i and j are from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with i; loading the most significant bit of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with 1; loading the less significant d-1 bits of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with j; loading the most significant bit of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with 0; performing a subtraction; comparing the N/d-1 shifted output chunks CS(0) through CS(N/d-2) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; and reporting test passing if none of the above comparing steps detect inequality.
Claim 45
Independent Claim 503 words
A method of testing a subtractor taking first and second N-bit input operands and producing an N-bit output, the method comprising the steps of: selecting a digit size d, such that d evenly divides into N; allocating each of the first and second N-bit input operands into N/d input digit fields, the input digit fields of the first operand being A(0) through A(N/d-1), the input digit fields of the second operand being B(0) through B(N/d-1); allocating the N-bit output into N/d output chunks each having d bits, the output chunks being C(0) through C(N/d-1); for each of 2 2 (d-1) permutations of d-1-bit integer i and d-1-bit integer j, wherein i and j are from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields A(0) through A(N/d-1) of the first operand with i; loading the most significant bit of all digit fields A(0) through A(N/d-1) of the first operand with 1; loading the less significant d-1 bits of all digit fields B(0) through B(N/d-1) of the second operand with j; loading the most significant bit of all digit fields B(0) through B(N/d-1) of the second operand with 0; performing a subtraction; comparing the N/d output chunks C(0) through C(N/d-1) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; reserving r least significant bits in each of the first and second input operands and the N-bit output, r being in from the range from 1 to d-1, inclusive, the r least significant bits being set to zero, thereby defining first and second N-r bit shifted input operands and an N-r bit shifted output; allocating each of the first and second N-r bit shifted input operands into N/d-1 shifted input digit fields, the shifted input digit fields of the first shifted operand being AS(0) through AS(N/d-2), the shifted input digit fields of the second shifted operand being BS(0) through BS(N/d-2); allocating the N-r bit shifted output into N/d-1 shifted output chunks each having d-1 bits, the shifted output chunks being CS(0) through CS(N/d-2); for each of 2 2 (d-1) permutations of d-1-bit integer i and d-1-bit integer j, wherein i and j are from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with i; loading the most significant bit of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with 1; loading the less significant d-1 bits of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with j; loading the most significant bit of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with 0; performing a subtraction; comparing the N/d-1 shifted output chunks CS(0) through CS(N/d-2) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; and reporting test passing if none of the above comparing steps detect inequality.
Claim 46
Dependent Claim 36 words
A method of testing a subtractor as in claim 40, wherein all 2 2 (d-1) permutations of integers i and j are sequentially generated by a 2(d-1) bit test counter having a test counter carry output.
Claim 47
Dependent Claim 39 words
A method of testing a subtractor as in claim 41, wherein the integer i is the least significant d-1 output bits of the test counter; and wherein the integer j is the most significant d-1bits of the test counter.
Claim 48
Dependent Claim 30 words
A method of testing a subtractor as in claim 42, wherein the 2(d-1) bit test counter is a Johnson counter, which performs a single-bit counter output transition each increment cycle.
Claim 49
Dependent Claim 21 words
A method of testing a subtractor as in claim 42, wherein the test counter carry output enables a one-bit step counter.
Claim 50
Dependent Claim 44 words
A method of testing a subtractor as in claim 40, wherein the first and second N-bit input operands are writeable by external software, and the N-bit output is readable by external software, and wherein the loading and comparing steps are performed by external software.
Claim 51
Dependent Claim 53 words
A method of testing a subtractor as in claim 40, wherein the first and second N-bit input operands are not writeable by external software, and the N-bit output is readable by external software, and wherein the loading steps are performed by internal test hardware, and the comparing steps are performed by external software.
Claim 52
Dependent Claim 47 words
A method of testing a subtractor as in claim 40, wherein the first and second N-bit input operands are not writeable by external software, and the N-bit output is not readable by external software, and wherein the loading and comparing steps are performed by internal test hardware.
Claim 53
Dependent Claim 19 words
A method of testing a subtractor as in claim 40, wherein N is 256; and wherein d is 4.
Claim 54
Dependent Claim 14 words
A method of testing a subtractor as in claim 40, wherein r is 1.
Claim 55
Dependent Claim 14 words
A method of testing a subtractor as in claim 40, wherein r is d-1.
Claim 56
Independent Claim 497 words
A method of testing a subtractor taking first and second N-bit input operands and producing an N-bit output, the method comprising the steps of: selecting a digit size d, such that d evenly divides into N; allocating each of the first and second N-bit input operands into N/d input digit fields, the input digit fields of the first operand being A(0) through A(N/d-1), the input digit fields of the second operand being B(0) through B(N/d-1); allocating the N-bit output into N/d output chunks each having d bits, the output chunks being C(0) through C(N/d-1); for each of 2 d-1 permutations of d-1-bit integer i, wherein i is from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields A(0) through A(N/d-1) of the first operand with i; loading the most significant bit of all digit fields A(0) through A(N/d-1) of the first operand with 1; loading the less significant d-1 bits of all digit fields B(0) through B(N/d-1) of the second operand with the one's complement of i; loading the most significant bit of all digit fields B(0) through B(N/d-1) of the second operand with 0; performing a subtraction; comparing the N/d output chunks C(0) through C(N/d-1) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; reserving r least significant bits in each of the first and second input operands and the N-bit output, r being in from the range from 1 to d-1, inclusive, the r least significant bits being set to zero, thereby defining first and second N-r bit shifted input operands and an N-r bit shifted output; allocating each of the first and second N-r bit shifted input operands into N/d-1 shifted input digit fields, the shifted input digit fields of the first shifted operand being AS(0) through AS(N/d-2), the shifted input digit fields of the second shifted operand being BS(0) through BS(N/d-2); allocating the N-r bit shifted output into N/d-1 shifted output chunks each having d-1 bits, the shifted output chunks being CS(0) through CS(N/d-2); for each of 2 d-1 permutations of d-1-bit integer i, wherein i is from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with i; loading the most significant bit of all digit fields AS(0) through AS(N/d-I) of the first shifted operand with 1; loading the less significant d-1 bits of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with the one's complement of i; loading the most significant bit of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with 0; performing a subtraction; comparing the N/d-1 shifted output chunks CS(0) through CS(N/d-2) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; and reporting test passing if none of the above comparing steps detect inequality.
Claim 57
Independent Claim 497 words
A method of testing a subtractor taking first and second N-bit input operands and producing an N-bit output, the method comprising the steps of: selecting a digit size d, such that d evenly divides into N; allocating each of the first and second N-bit input operands into N/d input digit fields, the input digit fields of the first operand being A(0) through A(N/d-1), the input digit fields of the second operand being B(0) through B(N/d-1); allocating the N-bit output into N/d output chunks each having d bits, the output chunks being C(0) through C(N/d-1); for each of 2 d-1 permutations of d-1-bit integer i, wherein i is from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields A(0) through A(N/d-1) of the first operand with i; loading the most significant bit of all digit fields A(0) through A(N/d-1) of the first operand with 1; loading the less significant d-1 bits of all digit fields B(0) through B(N/d-1) of the second operand with the one's complement of i; loading the most significant bit of all digit fields B(0) through B(N/d-1) of the second operand with 0; performing a subtraction; comparing the N/d output chunks C(0) through C(N/d-1) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; reserving r least significant bits in each of the first and second input operands and the N-bit output, r being in from the range from 1 to d-1, inclusive, the r least significant bits being set to zero, thereby defining first and second N-r bit shifted input operands and an N-r bit shifted output; allocating each of the first and second N-r bit shifted input operands into N/d-1 shifted input digit fields, the shifted input digit fields of the first shifted operand being AS(0) through AS(N/d-2), the shifted input digit fields of the second shifted operand being BS(0) through BS(N/d-2); allocating the N-r bit shifted output into N/d-1 shifted output chunks each having d-1 bits, the shifted output chunks being CS(0) through CS(N/d-2); for each of 2 d-1 permutations of d-1-bit integer i, wherein i is from the integer range from 0 to 2 d-1 -1, inclusive, loading the less significant d-1 bits of all digit fields AS(0) through AS(N/d-1) of the first shifted operand with i; loading the most significant bit of all digit fields AS(0) through AS(N/d-I) of the first shifted operand with 1; loading the less significant d-1 bits of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with the one's complement of i; loading the most significant bit of all digit fields BS(0) through BS(N/d-1) of the second shifted operand with 0; performing a subtraction; comparing the N/d-1 shifted output chunks CS(0) through CS(N/d-2) for equality; continuing if the comparing step detected equality; reporting test failure if the comparing step detected inequality; and reporting test passing if none of the above comparing steps detect inequality.
Claim 58
Dependent Claim 37 words
A method of testing a subtractor as in claim 51, wherein 2 d-1 permutations of integer i and the one's complement of i are sequentially generated by a d-1-bit test counter having a test counter carry output.
Claim 59
Dependent Claim 41 words
A method of testing a subtractor as in claim 52, wherein the integer i is the output bits of the test counter; and wherein the one's complement of i is the logical inverse of the output bits of the test counter.
Claim 60
Dependent Claim 29 words
A method of testing a subtractor as in claim 53, wherein the d-1-bit test counter is a Johnson counter, which performs a single-bit counter output transition each increment cycle.
Claim 61
Dependent Claim 21 words
A method of testing a subtractor as in claim 53, wherein the test counter carry output enables a one-bit step counter.
Claim 62
Dependent Claim 44 words
A method of testing a subtractor as in claim 51, wherein the first and second N-bit input operands are writeable by external software, and the N-bit output is readable by external software, and wherein the loading and comparing steps are performed by external software.
Claim 63
Dependent Claim 53 words
A method of testing a subtractor as in claim 51, wherein the first and second N-bit input operands are not writeable by external software, and the N-bit output is readable by external software, and wherein the loading steps are performed by internal test hardware, and the comparing steps are performed by external software.
Claim 64
Dependent Claim 47 words
A method of testing a subtractor as in claim 51, wherein the first and second N-bit input operands are not writeable by external software, and the N-bit output is not readable by external software, and wherein the loading and comparing steps are performed by internal test hardware.
Claim 65
Dependent Claim 19 words
A method of testing a subtractor as in claim 51, wherein N is 256; and wherein d is 4.
Claim 66
Dependent Claim 14 words
A method of testing a subtractor as in claim 51, wherein r is 1.
Claim 67
Dependent Claim 14 words
A method of testing a subtractor as in claim 51, wherein r is d-1.

References Cited (Backward Citations)

US4866715A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-02-04 2000-08-05 2001-02-04 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-02-04 2004-08-05 2005-02-04 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-02-04 2008-08-05 2009-02-04 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag