Race logic synthesis for large-scale integrated circuit designs
First Claim
1. A computer implemented method of performing race logic synthesis on an integrated circuit (IC) design, comprising:
- (a) Compiling by computer, an IC design source files, coded in any one or a combination of HDL (hardware description language) and/or ESL (electronic system level) design languages, into a design data base;
(b) Performing static and/or dynamic race logic analysis of the IC design, either by a host application, or by an external race logic audit tool, or the combination of both;
(c) Determining the execution order of process blocks of the IC design in the design database, either using the default process block execution order by the host application or obtaining that order from user;
(d) Executing the race logic synthesis functions to get rid of all race logic, as detected in (b), in the compiled IC design database;
(e) As a user-specified option or a default action of the host application, generating updated HDL/ESL source files for the IC design, where race logic has been remedied by the race logic synthesis functions in (d),wherein step d comprises;
(f) analyzing all circuit signals and registers in the IC design that have been determined to be involved in concurrent assignment race logic, and re-synthesizing the driving process blocks of these signals and registers, to eliminate the race logic while retaining the original logic functions of the IC design;
(g) analyzing all circuit signals and registers in the IC design that have been determined to be involved in concurrent assignment and reference race logic, and re-synthesizing the driving and driven process blocks of these signals and registers, to eliminate the race logic while retaining the original logic functions of the IC design;
(h) analyzing all process blocks in the IC design that have been determined to be involved in concurrent invocation race via user- and/or system-defined functions/tasks, and re-synthesizing them to eliminate the concurrent invocation race logic while retaining the original logic functions of the IC design.
0 Assignments
0 Petitions
Accused Products
Abstract
Techniques for performing race logic synthesis on an integrated circuit (IC) are described herein. According to one aspect of the invention, HDL (hardware description language) and/or ESL (electronic system level) design source files of an IC design are compiled into a common design database. Race logic analysis is performed on the IC design, either by a third-party tool or by the same EDA (electronic design automation) tool that also performing race logic synthesis, if the latter has built-in race logic audit functions. Based on the race logic audit results, race logic synthesis is performed on the common design database, and getting rid of all identified race logic in the IC design. This renders the EDA tool can perform concurrent analysis of the IC design, via the race-free common design database, using multi-CPU/core computers and the results will be the same as if the EDA tool had performed serial analysis of the IC design using a single-CPU/core computer. Another aspect of the invention is outputting the re-synthesized logic in the common design database to new HDL/ESL source files. User may use these revised source files to analyze the IC design using other third-party EDA design/verification tools.
7 Citations
29 Claims
-
1. A computer implemented method of performing race logic synthesis on an integrated circuit (IC) design, comprising:
-
(a) Compiling by computer, an IC design source files, coded in any one or a combination of HDL (hardware description language) and/or ESL (electronic system level) design languages, into a design data base; (b) Performing static and/or dynamic race logic analysis of the IC design, either by a host application, or by an external race logic audit tool, or the combination of both; (c) Determining the execution order of process blocks of the IC design in the design database, either using the default process block execution order by the host application or obtaining that order from user; (d) Executing the race logic synthesis functions to get rid of all race logic, as detected in (b), in the compiled IC design database; (e) As a user-specified option or a default action of the host application, generating updated HDL/ESL source files for the IC design, where race logic has been remedied by the race logic synthesis functions in (d), wherein step d comprises; (f) analyzing all circuit signals and registers in the IC design that have been determined to be involved in concurrent assignment race logic, and re-synthesizing the driving process blocks of these signals and registers, to eliminate the race logic while retaining the original logic functions of the IC design; (g) analyzing all circuit signals and registers in the IC design that have been determined to be involved in concurrent assignment and reference race logic, and re-synthesizing the driving and driven process blocks of these signals and registers, to eliminate the race logic while retaining the original logic functions of the IC design; (h) analyzing all process blocks in the IC design that have been determined to be involved in concurrent invocation race via user- and/or system-defined functions/tasks, and re-synthesizing them to eliminate the concurrent invocation race logic while retaining the original logic functions of the IC design.
-
-
2. A computer implemented method of performing race logic synthesis on an integrated circuit (IC) design, comprising:
-
(a) compiling by computer, an IC design source files, coded in any one or a combination of HDL (hardware description language) and/or ESL (electronic system level) design languages, into a design data base; (b) performing static and/or dynamic race logic analysis of the IC design, either by a host application, or by an external race logic audit tool, or the combination of both; (c) determining the execution order of process blocks of the IC design in the design database, either using the default process block execution order by the host application or obtaining that order from user; (d) executing the race logic synthesis functions to get rid of all race logic, as detected in (b), in the compiled IC design database; (e) as a user-specified option or a default action of the host application, generating updated HDL/ESL source files for the IC design, where race logic has been remedied by the race logic synthesis functions in (d); (f) For each signal or register object that has been identified as having concurrent assignment race issue, as in step (b), if there are only two driving process blocks for the register or signal object, and they all use blocking (non-blocking) assignment to drive the signal or register object, and at least one of them does not reference the signal or register object'"'"'s value, then replacing all the assignments in that process block for the signal or register object to be non-blocking (blocking), which imposes a deterministic assignment order by the two process blocks for the signal or register object, and hence resolving the concurrent assignment race logic; (g) If step (f) is not applicable for a signal or register object that is identified as having concurrent assignment race issue, collecting the driving factors for each driving process block of the signal or register object; (h) Collecting all driving process blocks of the signal or register object that have one or more driving factors that are compatible; (i) Replacing all driving process blocks that have compatible driving factors by one single driving process block to impose a deterministic assignment order to the signal or register object in the merged driving process block; (j) As an alternative to (i), if every driving process block of a register or signal object always assigns to the object and then reads values from that object, and the register or signal object is not being referenced in other part of the IC design, then the register or signal object can be duplicated in each of its driving process blocks, with no change to the driving process blocks'"'"' logic, to eliminate concurrent assignment race logic to the register or signal object; and (k) As another alternative to (i), if a signal or register is driven by multiple drivers, via process blocks and/or concurrent assignment statements, that drive non-overlapping bits of the signal or register, then replace all those drivers into a single driving concurrent assignment statement or a process block, where the signal or register is driven by the concatenation of all the driving expressions of those former drivers, in the order corresponding to the bit order of the signal or register that those former drivers drive. - View Dependent Claims (3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A computer implemented method of performing race logic synthesis on an integrated circuit (IC) design, comprising:
-
(a) compiling by computer, an IC design source files, coded in any one or a combination of HDL (hardware description language) and/or ESL (electronic system level) design languages, into a design data base; (b) performing static and/or dynamic race logic analysis of the IC design, either by a host application, or by an external race logic audit tool, or the combination of both; (c) determining the execution order of process blocks of the IC design in the design database, either using the default process block execution order by the host application or obtaining that order from user; (d) executing the race logic synthesis functions to get rid of all race logic, as detected in (b), in the compiled IC design database; (e) as a user-specified option or a default action of the host application, generating updated HDL/ESL source files for the IC design, where race logic has been remedied by the race logic synthesis functions in (d); (f) For each signal or register object that is identified as involved in concurrent assignment and reference race logic, according to step (b), changing all assignments in all the driving process blocks for the target signal or register object to be non-blocking assignments, if all the driving process blocks are coded in design languages that support non-blocking assignments, and all the driving process blocks do not reference the signal or register object'"'"'s values; (g) If the conditions set forth in (f) cannot be applied, examining the signal or register object that is identified as having concurrent assignment and reference race issue, and collecting the driving factors for each driving (source) process block and for each driven (sink) process block of the signal or register object; (h) Collecting all driving and driven process blocks of the signal or register object that have one or more driving factors that are compatible; and (i) Replacing all driving and driven process blocks that have compatible driving factors by one process block, so as to impose a deterministic assignment and reference order of the signal or register object in the merged process block. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
-
19. A computer implemented method of performing race logic synthesis on an integrated circuit (IC) design, comprising:
-
(a) compiling by computer, an IC design source files, coded in any one or a combination of HDL (hardware description language) and/or ESL (electronic system level) design languages, into a design data base; (b) performing static and/or dynamic race logic analysis of the IC design, either by a host application, or by an external race logic audit tool, or the combination of both; (c) determining the execution order of process blocks of the IC design in the design database, either using the default process block execution order by the host application or obtaining that order from user; (d) executing the race logic synthesis functions to get rid of all race logic, as detected in (b), in the compiled IC design database; (e) as a user-specified option or a default action of the host application, generating updated HDL/ESL source files for the IC design, where race logic has been remedied by the race logic synthesis functions in (d); (f) Examining each user- or system-defined function or task that is identified, as according to step (b), as having concurrent invocation race issue, and collecting the driving factors for each process block that invoke the function or task; (g) Collecting all process blocks for the function or task that have one or more driving factors that are compatible; and (h) Replacing all those process blocks that have compatible driving factors by one process block, so as to impose a deterministic invocation order of the function or task in the merged process block. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26)
-
-
27. A computer implemented method of performing race logic synthesis on an integrated circuit (IC) design, comprising:
-
(a) compiling by computer, an IC design source files, coded in any one or a combination of HDL (hardware description language) and/or ESL (electronic system level) design languages, into a design data base; (b) performing static and/or dynamic race logic analysis of the IC design, either by a host application, or by an external race logic audit tool, or the combination of both; (c) determining the execution order of process blocks of the IC design in the design database, either using the default process block execution order by the host application or obtaining that order from user; (d) executing the race logic synthesis functions to get rid of all race logic, as detected in (b), in the compiled IC design database; (e) as a user-specified option or a default action of the host application, generating updated HDL/ESL source files for the IC design, where race logic has been remedied by the race logic synthesis functions in (d); wherein step (e) further comprises writing out race logic synthesized IC design logic to new HDL/ESL source files by; (f) Obtaining user input to select the generation of update HDL/ESL files for the re-synthesized logic and if the user input is negative, no updated HDL/ESL source files is generated; (g) For each event block in an IC design database, recording the block'"'"'s source file path name, the start and end line numbers of that event block in the source file, and the input and output signals and registers that are connected to the event block; (h) Creating new HDL/ESL source files that contain the merged process blocks that eliminate the concurrent assignment race of signals and registers, concurrent assignment and reference race of signals and registers, and concurrent invocation race of user- and system-defined functions/tasks; (i) Naming all the updated HDL/ESL source files with the same names as their original file names, but with a new file name extension or alternatively renaming all original HDL/ESL source files that contains the replaced process blocks with different names, and naming all updated HDL/ESL files as generated in (f) with corresponding original file names. - View Dependent Claims (28, 29)
-
Specification