IP Library Granted Patent US 10,108,768
Granted Patent B2
US 10,108,768 · App. 15/340,816 · Granted Oct 23, 2018

Identifying bugs in a counter using formal

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 10,108,768
App. No.
15/340,816
Granted
Oct 23, 2018
Kind
B2
Abstract

A method of detecting a bug in a counter of a hardware design that includes formally verifying, using a formal verification tool, an inductive assertion from a non-reset state of an instantiation of the hardware design. The inductive assertion establishes a relationship between the counter and a test bench counter at two or more points in time. If the formal verification tool identifies at least one valid state of an instantiation of the counter in which the inductive assertion is not true, information is output indicating a location of a bug in the hardware design or the test bench counter.

Claims (53)

1. A method of correcting a bug in a counter of a hardware design, the method comprising:

(a) receiving, at one or more processors, the hardware design, a test bench counter designed to simulate the counter, and an inductive assertion establishing a relationship between the counter and the test bench counter at two or more points in time;

(b) formally verifying at the one or more processors, using a formal verification tool, the inductive assertion for the counter starting from a non-reset state of an instantiation of the counter; and

(c) in response to the formal verification tool identifying at least one valid state of the instantiation of the counter in which the inductive assertion is not true, outputting from the one or more processors information indicating a location of a bug in the hardware design or the test bench counter;

(d) using the output information to determine whether there is a bug in the hardware design;

(e) in response to determining that there is a bug in the hardware design, modifying the hardware design to correct the bug; and

(f) formally verifying, at the one or more processors, the modified hardware design for implementation in hardware.

2. The method of claim 1 , wherein the inductive assertion asserts that if a value of an instantiation of the counter is equal to a value of the test bench counter at a first point in time that the value of the instantiation of the counter is equal to the value of the test bench counter at a second point in time.

3. The method of claim 2 , wherein the inductive assertion asserts that if the value of the instantiation of the counter is equal to the value of the test bench counter in a particular clock cycle that the value of the instantiation of counter is equal to the value of the test bench counter in a next clock cycle following the particular clock cycle.

4. A method of exhaustively verifying a counter of a hardware design, the method comprising:

performing the method as set forth in claim 1 , wherein said formally verifying the modified hardware design comprises;

repeating (b) using the modified hardware design; and

in response to the formal verification tool determining the inductive assertion is true for all valid states of the instantiation of the counter, exhaustively verifying the counter by formally verifying, using the formal verification tool, a non-inductive assertion for the counter starting from a reset state of the instantiation of the counter, the non-inductive assertion establishing equivalence of the counter and the test bench counter.

5. The method of claim 4 , wherein the non-inductive assertion asserts that the value of the instantiation of the counter is equal to the value of the test bench counter.

6. The method of claim 4 , wherein the non-inductive assertion is formally verified under an assumption that the inductive assertion is valid.

7. A method of generating an integrated circuit, the method comprising:

performing the method as set forth in claim 4 ; and

in response to the formal verification tool determining the non-inductive assertion is true for all valid states of the instantiation of the counter, manufacturing an integrated circuit implementing the counter based on the hardware design.

8. The method of claim 1 , wherein the hardware design, when processed in an integrated circuit manufacturing system, configures the integrated circuit manufacturing system to manufacture an integrated circuit implementing the counter.

9. A system for correcting a bug in a counter of a hardware design, the system comprising:

a memory configured to store:

a test bench counter designed to simulate the counter;

an inductive assertion establishing a relationship between the counter and the test bench counter at two or more points in time;

the hardware design; and

a formal verification tool; and

one or more processors configured to:

formally verify, using the formal verification tool, the inductive assertion for the counter starting from a non-reset state of an instantiation of the counter;

in response to the formal verification tool identifying at least one valid state of the instantiation of the counter in which the inductive assertion is not true, output information indicating a location of a bug in the hardware design or the test bench counter; and

if the output information indicates a location of a bug in the hardware design, receive a modified hardware design and formally verify the modified hardware design for implementation in hardware, wherein the modified hardware design is a version of the hardware design modified to correct the bug in accordance with the output information.

10. The system of claim 9 , wherein the inductive assertion asserts that if a value of the instantiation of the counter is equal to a value of the test bench counter at a first point in time that the value of the instantiation of the counter is equal to the value of the test bench counter at a second point in time.

11. The system of claim 10 , wherein the inductive assertion asserts that if the value of the instantiation of the counter is equal to the value of the test bench counter in a particular clock cycle that the value of the instantiation of the counter is equal to the value of the test bench counter in a next clock cycle following the particular clock cycle.

12. The system of claim 9 , wherein the one or more processors is configured to formally verify the modified hardware design by:

formally verifying, using the formal verification tool, the inductive assertion using the modified hardware design; and

in response to the formal verification tool determining the inductive assertion is true for all valid states of the instantiation of the counter, exhaustively verifying the counter by formally verifying, using the formal verification tool, a non-inductive assertion for the counter starting from a reset state of the instantiation of the counter, the non-inductive assertion establishing equivalence of the counter and the test bench counter.

13. The system of claim 12 , wherein the non-inductive assertion asserts that the value of the instantiation of the counter is equal to the value of the test bench counter.

14. The system of claim 12 , wherein the one or more processors is configured to formally verify the non-inductive assertion under an assumption that the inductive assertion is valid.

15. The system of claim 9 , wherein the one or more processors is further configured to, in response to the formal verification tool determining the non-inductive assertion is true for all valid states of the instantiation of the counter, provide the hardware design to an integrated circuit manufacturing system, which configures the integrated circuit manufacturing system to manufacture an integrated circuit implementing the counter.

16. A non-transitory computer readable storage medium having stored thereon computer readable code that when executed on a computer causes a method of correcting a bug in a counter of a hardware design to be performed, wherein the method comprises:

(a) receiving the hardware design, a test bench counter designed to simulate the counter, and an inductive assertion establishing a relationship between the counter and the test bench counter at two or more points in time;

(b) formally verifying, using a formal verification tool, the inductive assertion for the counter starting from a non-reset state of an instantiation of the counter;

(c) in response to the formal verification tool identifying at least one valid state of the instantiation of the counter in which the inductive assertion is not true, outputting information indicating a location of a bug in the hardware design or the test bench counter;

(d) if the output information indicates a location of a bug in the hardware design, receiving a modified hardware design, wherein the modified hardware design is a version of the hardware design modified to correct the bug in accordance with the output information; and

(e) formally verifying the modified hardware design for implementation in hardware.

17. A system for correcting a bug in a component of a hardware design, the system comprising:

a memory configured to store:

a test bench component designed to simulate the component of the hardware design;

an inductive assertion establishing a relationship between the component of the hardware design and the test bench component at two or more points in time;

the hardware design; and

a formal verification tool; and

one or more processors configured to:

formally verify, using the formal verification tool, the inductive assertion for the component;

in response to the formal verification tool identifying at least one valid state of an instantiation of the component in which the inductive assertion is not true, output information indicating a location of a bug in the hardware design or the test bench component; and

if the output information indicates a location of a bug in the hardware design, receive a modified hardware design and formally verify the modified hardware design for implementation in hardware, wherein the modified hardware design is a version of the hardware design modified to correct the bug in accordance with the output information.

Assignments (2)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 1, 2016
From: DARBARI, ASHISH
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 040190/0634 →