IP Library Granted Patent US 10,515,168
Granted Patent B1
US 10,515,168 · App. 15/809,892 · Granted Dec 24, 2019

Formal verification using microtransactions

Inventors: Pankaj P. Chauhan (San Ramon, CA); Sameer Kapoor (Milpitas, CA); Saurabh Jain (Noida, IN); Kunal Bindal (Munich, DE); Bryan D. Bowyer (Wilsonville, OR); Andres R. Takach (Wilsonville, OR); Peter P. Gutberlet (Wilsonville, OR); Gagandeep Singh (Noida, IN); Maheshinder Goyal (Noida, IN)
Assignee: Mentor Graphics Corporation
G06F17/504G06F17/5045
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,515,168
App. No.
15/809,892
Granted
Dec 24, 2019
Kind
B1
Abstract

Disclosed herein are representative embodiments of methods, apparatus, and systems for performing formal verification of circuit descriptions. In certain example embodiments, the disclosed technology involves the formal verification of a register-transfer-level (“RTL”) circuit description produced from a high level synthesis tool (e.g., a C++ or SystemC synthesis tool) relative to the original high level code from which the RTL description was synthesized (e.g., the original C++ or SystemC description) using sub-functional-call-level transactions.

Claims (35)

1. A method, comprising:

by one or more specialized electronic design automation (EDA) tools that are adapted to perform or support high-level-synthesis formal verification as part of a circuit design process and that are implemented by one or more computing devices:

receiving a high-level description of a circuit design;

receiving a register-transfer-level (RTL) description of the circuit design, the RTL description having been synthesized from the high-level description;

performing a loop flattening operation to the high-level description in which one or more statements that create transactional boundaries are inserted into the high-level description at one or more locations within a function call; and

verifying whether the high-level description is logically equivalent to the RTL description by discretely verifying transactions from the high-level description that are defined by the transactional boundaries relative to corresponding RTL transactions specified in the RTL description.

2. The method of claim 1 , wherein the performing the loop flattening operation further comprises inserting the one or more statements that create transactional boundaries at an end of an iteration in a loop defined by the high-level description.

3. The method of claim 2 , wherein the one or more statements that create transactional boundaries are wait statements.

4. The method of claim 1 , further comprising inserting probes into the high-level description in order to capture values of variables in the high-level description at points in the high-level description that correspond to the transactional boundaries.

5. The method of claim 4 , further comprising generating one or more probe maps mapping the probes in the high-level description to corresponding portions of the RTL description.

6. The method of claim 5 , wherein the verifying is performed using the probe maps.

7. The method of claim 5 , wherein the method further comprises receiving one or more optimization hints provided by an HLS tool that synthesized the high-level description, the optimization hints describing one or more optimizations performed by the HLS tool; and wherein the verifying comprises formally verifying the optimizations performed by the HLS tool using the optimization hints.

8. The method of claim 1 , wherein the high-level description is a C++ or SystemC description of the circuit design.

9. A computer device implementing one or more electronic design automation (EDA) tools configured to perform a method, comprising:

by one or more specialized electronic design automation (EDA) tools that are adapted to perform or support high-level-synthesis formal verification as part of a circuit design process and that are implemented by one or more computing devices:

receiving a high-level description of a circuit design;

receiving a register-transfer-level (RTL) description of the circuit design, the RTL description having been synthesized from the high-level description;

performing a loop flattening operation to the high-level description in which one or more statements that create transactional boundaries are inserted into the high-level description at one or more locations within a function call; and

verifying whether the high-level description is logically equivalent to the RTL description by discretely verifying transactions from the high-level description that are defined by the transactional boundaries relative to corresponding RTL transactions specified in the RTL description.

10. The computer device of claim 9 , wherein the performing the loop flattening operation further comprises inserting the one or more statements that create transactional boundaries at an end of an iteration in a loop defined by the high-level description.

11. The computer device of claim 10 , wherein the one or more statements that create transactional boundaries are wait statements.

12. The computer device of claim 9 , wherein the RTL description includes one or more pipelined loops that remain pipelined and are not unrolled during the verifying.

13. The computer device of claim 12 , wherein each iteration of the one or more pipelined loops is treated as a separate transaction during the verifying.

14. One or more non-transitory computer-readable media storing computer-executable instructions when executed by a computer cause the computer to perform a method, comprising:

by one or more specialized electronic design automation (EDA) tools that are adapted to perform or support high-level-synthesis formal verification as part of a circuit design process and that are implemented by one or more computing devices:

receiving a high-level description of a circuit design;

receiving a register-transfer-level (RTL) description of the circuit design, the RTL description having been synthesized from the high-level description;

performing a loop flattening operation to the high-level description in which one or more statements that create transactional boundaries are inserted into the high-level description at one or more locations within a function call; and

verifying whether the high-level description is logically equivalent to the RTL description by discretely verifying transactions from the high-level description that are defined by the transactional boundaries relative to corresponding RTL transactions specified in the RTL description.

15. The one or more non-transitory computer-readable media of claim 14 , wherein the performing the loop flattening operation further comprises inserting the one or more statements that create transactional boundaries at an end of an iteration in a loop defined by the high-level description.

16. The one or more non-transitory computer-readable media of claim 15 , wherein the one or more statements that create transactional boundaries are wait statements.

17. The one or more non-transitory computer-readable media of claim 14 , wherein the high-level description is a C++ or SystemC description of the circuit design.

18. The one or more non-transitory computer-readable media of claim 14 , wherein the verifying is performed by a logic equivalence checking tool.

19. The one or more non-transitory computer-readable media of claim 14 , wherein the method further comprising selectively inserting one or more statements that create delay into the high-level description.

20. The one or more non-transitory computer-readable media of claim 19 , wherein the selectively inserting the one or more statements that create delay is performed so that the verifying of the multiple high-level transactions specified within the single function call with the multiple corresponding RTL transactions specified in the RTL description is completed before high-level transactions and RTL transactions from a different function call are verified.

Assignments (3)
MERGER AND CHANGE OF NAME Recorded Jun 29, 2021
From: MENTOR GRAPHICS CORPORATION; SIEMENS INDUSTRY SOFTWARE INC.
To: SIEMENS INDUSTRY SOFTWARE INC.
Reel/Frame 056702/0712 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2019
From: CHAUHAN, PANKAJ P.; KAPOOR, SAMEER; JAIN, SAURABH; BINDAL, KUNAL; BOWYER, BRYAN D.; TAKACH, ANDRES R.; GUTBERLET, PETER P.; SINGH, GAGANDEEP; GOYAL, MAHESHINDER
To: CALYPTO DESIGN SYSTEMS, INC.
Reel/Frame 048166/0692 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2018
From: CALYPTO DESIGN SYSTEMS, INC.
To: MENTOR GRAPHICS CORPORATION
Reel/Frame 047766/0077 →
Continuity (3)
Division 14664763 · Mar 20, 2015
Provisional Application 62007852 · Jun 4, 2014
Provisional Application 62042207 · Aug 26, 2014