US7246331B2

Method for optimizing integrated circuit device design and service

Summary by NHIP

IC Design Hint Generation

The method partitions an original program into subprograms representing valid computational paths and refines their order when cyclic dependencies exist between variables. It merges paths with contained reachable states and generates analysis hints from conjoined decision conditions among the merged subprograms.

Claim Score by NHIP

Read claim 8, the broadest

Abstract

Improved analysis and refinement of integrated circuit device design and other programs is facilitated by methods in which an original program is partitioned into subprograms representing valid computational paths; each subprogram is refined when cyclic dependencies are found to exist between the variables; computational paths whose over-approximated reachable states are found to be contained in another computational path are merged; and finally, the remaining subprograms conjoined decision conditions become candidates for hints for program refinement.

US7246331B2, drawing sheet 1
Sheet 1 of 15

Term

Term ended

Expired 14 July 2025, 1.2 years ago.

  1. Priority and filed
  2. Granted
  3. Expired
  4. Today

21 claims: 4 independent, 17 dependent

  1. 1
    A method for generating hints for use in analyzing an original program, the method comprising:partitioning the original program into subprograms each defining a valid computational path;determining whether cyclic dependencies exist between variables of the subprograms;refining an order of the subprograms if cyclic dependencies are found to exist;determining reachable states for each subprogram;merging subprograms whose computational paths have reachable states found to be contained in another computational path;determining conjoined decision conditions among the merged subprograms;and generating hints for analyzing the original program using the conjoined decision conditions.
  2. 8
    Broadest claimClaim Score 71, broad(NHIP)A method for generating hints for use in analyzing an original program, the method comprising:extracting a control flow graph from the original program;extracting a program dependence graph from the control flow graph;compiling a list of subprograms contained within the original program which are candidates for hints for analysis of the original program;determining whether cyclic dependencies exist between variables of the subprograms;sorting the compiled list using the program dependence graph according to the cyclic dependencies of the original program;and generating hints using the sorted compiled list, wherein the hints are used for analyzing the original program.
  3. 16
    A method for generating hints for use in analyzing an original program, the method comprising:parsing the original program into subprograms;creating a control flow graph of the original program;performing control and data dependency analysis on the control flow graph;generating a program dependence graph of the original program from the control flow graph;determining reachability of each of the subprograms;compiling a list of subprograms contained in the original program which are candidates for hints for analysis of the original program;determining whether cyclic dependencies exist between variables of the subprograms;sorting the compiled list using the program dependence graph according to the cyclic dependencies of the original program;and generating hints using the sorted compiled list, wherein the hints are used for analyzing the original program.
  4. 21
    A method for generating hints for use in analyzing an original program, the method comprising:parsing the original program into subprograms;creating a control flow graph of the original program;performing control and data dependency analysis on the control flow graph;generating a program dependence graph of the original program from the control flow graph;running model checking of each data dependency arc of the program dependence graph for an allotted time to determine reachability of each data dependency arc;performing abstract interpretation of a data dependency arc for the allotted time in the event that the model checking of the data dependency arc is not completed within the allotted time;removing the data dependency arc from the program dependence graph if the abstract interpretation determines that the data dependency arc is infeasible;retaining the data dependency arc if the abstract interpretation is not completed within the allotted time;compiling a list of subprograms contained in the original program which are candidates for hints for analysis of the original program;extracting data dependency strongly connected components from the program dependence graph;determining an initial order of the candidate subprograms from strongly connected components of each subprogram;determining whether cyclic dependencies exist between variables of the subprograms;sorting the compiled list using the program dependence graph according to the cyclic dependencies of the original program;performing abstract interpretation on the strongly connected components to determine whether the strongly connected components are dependent on input data;performing abstract interpretation on subprograms consisting of only variables contained in a strongly connected component;eliminating strongly connected components whose abstract interpretation results are contained in an input data dependent abstract interpretation strongly connected component decision set;performing a partial ordering of remaining subprogram strongly connected components;and generating hints from the remaining strongly connected components using the decision set of each strongly connected component.