Program slicing for codesign of embedded systems
원문보기
IPC분류정보
국가/구분
United States(US) Patent
등록
국제특허분류(IPC7판)
G06F-009/44
G06F-009/45
출원번호
UP-0429370
(2003-05-05)
등록번호
US-7620946
(2009-11-27)
발명자
/ 주소
Russell, Jeffry Thomas
인용정보
피인용 횟수 :
11인용 특허 :
6
초록▼
The present invention is a machine implemented, design automation method that assists a designer in the understanding of a software and/or hardware source code specification by transforming the source code into a simplified specification called a program slice. The present invention extends graph-ba
The present invention is a machine implemented, design automation method that assists a designer in the understanding of a software and/or hardware source code specification by transforming the source code into a simplified specification called a program slice. The present invention extends graph-based program slicing to the hardware-software interface that is commonly found in embedded systems. In addition to the known benefits of program slicing applied to a pure software or pure hardware, the present invention aids a designer in understanding the complex interaction between software procedures and hardware processing elements in the context of a codesign methodology.
대표청구항▼
What I claim as my invention is: 1. A computer implemented method for constructing a system dependence graph for a unified specification, said unified specification comprising a description of behavior in terms of a multitude of operations, organized as one or more processes that represent concurre
What I claim as my invention is: 1. A computer implemented method for constructing a system dependence graph for a unified specification, said unified specification comprising a description of behavior in terms of a multitude of operations, organized as one or more processes that represent concurrent behavior, each of said processes specified as one or more procedures, each of said procedures specified as a sequential flow of control between operations and each of said procedures containing one entry operation, said entry operation being a control predicate operation that models procedure activation, comprising the steps of: (a) for each procedure in said unified specification, constructing a procedure dependence graph, where each node in said procedure dependence graph corresponds to an operation in said unified specification and each edge in said procedure dependence graph corresponds to a dependence relation between two operations in the same procedure; (b) connecting said procedure dependence graphs by introducing a plurality of interprocedural edges, said interprocedural edges representing interprocedural dependences, where each said interprocedural edge is labeled with a type comprising call, return, param-in, and param-out; (c) connecting said procedure dependence graphs by introducing a plurality of interprocess edges, said interprocess edges representing interprocess dependences, each of said interprocess edges connecting a source node and a target node that represent concurrent operations; (d) storing the system dependence graph to an output medium; whereby the multitude of dependence relationships between said operations in said unified specification are explicitly represented. 2. A computer implemented method for constructing a system dependence graph for a unified specification, said unified specification comprising a description of behavior in terms of a multitude of operations, organized as one or more processes that represent concurrent behavior, each of said processes specified as one or more procedures, each of said procedures specified as a sequential flow of control between operations and each of said procedures containing one entry operation, said entry operation being a control predicate operation that models procedure activation, comprising the steps of; (a) for each procedure in said unified specification, constructing a procedure dependence graph, where each node in said procedure dependence graph corresponds to an operation in said unified specification and each edge in said procedure dependence graph corresponds to a dependence relation between two operations in the same procedure; (b) connecting said procedure dependence graphs by introducing a plurality of interprocedural edges, said interprocedural edges representing interprocedural dependences, where each said interprocedural edge is labeled with a type comprising call, return, param-in, and param-out; (c) connecting said procedure dependence graphs by introducing a plurality of interprocess edges, said interprocess edges representing interprocess dependences, each of said interprocess edges connecting a source node and a target node that represent concurrent operations, wherein one type of said interprocess edge is an access edge, said access edge representing an access dependence between an operation represented by said source node and a procedure, said procedure entry operation represented by said target node; (d) storing the system dependence graph to an output medium; whereby the multitude of dependence relationships between said operations in said unified specification are explicitly represented. 3. The method as recited in claim 1, wherein said unified specification describes an embedded system. 4. A computer implemented method for constructing a system dependence graph for a unified specification that describes an embedded system, said unified specification comprising a description of behavior in terms of a multitude of operations, organized as one or more processes that represent concurrent behavior, each of said processes specified as one or more procedures, each of said procedures specified as a sequential flow of control between operations and each of said procedures containing one entry operation, said entry operation being a control predicate operation that models procedure activation, comprising the steps of: (a) for each procedure in said unified specification, constructing a procedure dependence graph, where each node in said procedure dependence graph corresponds to an operation in said unified specification and each edge in said procedure dependence graph corresponds to a dependence relation between two operations in the same procedure; (b) connecting said procedure dependence graphs by introducing a plurality of interprocedural edges, said interprocedural edges representing interprocedural dependences, where each said interprocedural edge is labeled with a type comprising call, return, param-in, and param-out; (c) connecting said procedure dependence graphs by introducing a plurality of interprocess edges, said interprocess edges representing interprocess dependences, each of said interprocess edges connecting a source node and a target node that represent concurrent operations, wherein one type of said interprocess edges is an access edge, said access edge representing an access dependence between an operation represented by said source node and a procedure, said procedure entry operation represented by said target node; (d) storing the system dependence graph to an output medium; whereby the multitude of dependence relationships between said operations in said unified specification are explicitly represented. 5. The method as recited in claim 4, wherein said operation of said access dependence is a software operation and said procedure of said access dependence is a hardware procedure. 6. The method as recited in claim 3, wherein one type of said interprocess edges is a signal edge, said signal edge representing a signal dependence between a software operation and a hardware procedure. 7. The method as recited in claim 3, wherein one type of said interprocess edges is a signal edge, said signal edge representing a signal dependence between a hardware operation and a software procedure. 8. The method as recited in claim 3, wherein one type of said interprocess edges is an interfer edge, said interfer edge representing an interference dependence between two operations, one of said two operations being a software operation and the other of said two operations being a hardware operation. 9. A computer implemented method for calculating a slice based on a system dependence graph, said system dependence graph representing a plurality of dependences between operations in a unified specification, said dependences represented by edges of said graph, said operations represented by nodes of said graph, types of said dependences comprising intraprocedural, interprocedural, and interprocess, said unified specification comprising a description of behavior in terms of a multitude of operations, organized as one or more processes that represent concurrent behavior, each of said processes specified as one or more procedures, each of said procedures specified as a sequential flow of control between operations comprising the steps of: (a) identifying a slicing criterion as initial elements of said slice; (b) adding a subset of said operations to said slice based on a plurality of intraprocedural dependences; (c) adding a subset of said operations to said slice based on a plurality of interprocedural dependences; (d) adding a subset of said operations to said slice based on a plurality of interprocess dependences, said interprocess dependence represented by said interprocess edge connecting a source node and a target node that represent concurrent operations; whereby a slice is output for the purpose of viewing by a user. 10. A computer implemented method for calculating a slice based on a system dependence graph, said system dependence graph representing a plurality of dependences between operations in a unified specification, said dependences represented by edges of said graph, said operations represented by nodes of said graph, types of said dependences comprising intraprocedural, interprocedural, and interprocess, said unified specification comprising a description of behavior in terms of a multitude of operations, organized as one or more processes that represent concurrent behavior, each of said processes specified as a one or more procedures, each of said procedures specified as a sequential flow of control between operations comprising the steps of: (a) identifying a slicing criterion as initial elements of said slice; (b) adding a subset of said operations to said slice based on a plurality of intraprocedural dependences; (c) adding a subset of said operations to said slice based on a plurality of interprocedural dependences; (d) adding a subset of said operations to said slice based on a plurality of interprocess dependences, said interprocess dependence represented by said interprocess edge connecting a source node and a target node that represent concurrent operations, wherein one type of said interprocess dependences is an access dependence, said access dependence between an operation represented by said source node and a procedure represented by said target node; whereby a slice is output for the purpose of viewing by a user. 11. The method as recited in claim 10, wherein said operation of said access dependence is a software operation and said procedure of said access dependence is a hardware procedure. 12. The method as recited in claim 9, wherein one type of said interprocess dependences is a signal dependence between a software operation and a hardware procedure. 13. The method as recited in claim 9, wherein one type of said interprocess dependences is a signal dependence between a hardware operation and a software procedure. 14. The method as recited in claim 9, wherein one type of said interprocess dependences is a interference dependence between two operations, one of said two operations being a software operation and the other of said two operations being a hardware operation. 15. The method as recited in claim 9, wherein slice calculation parameters specify which of said dependences to consider during computation of said slice. 16. A programmed computer machine for computing a slice of a unified specification, said unified specification comprising a description of behavior in terms of a multitude of operations, organized as one or more processes that describe concurrent behavior, each of said processes specified as a one or more procedures, each of said procedures specified as a sequential flow of control between operations, comprising: (a) providing a storage medium for representing a unified specification; (b) providing a processor which transform said unified specification into a system dependence graph, said system dependence graph representing a plurality of intraprocedural dependences, interprocedural dependences, and interprocess dependences; (c) providing a storage medium which is able to represent said system dependence graph; (d) providing a processor which compute a slice from said system dependence graph based on said plurality of intraprocedural dependences, interprocedural dependences, and interprocess dependences; (e) providing a storage medium which is able to represent said slice; (f) providing a display which is operationally connected to said storage medium for displaying said slice, whereby said display will output said slice. 17. A programmed computer machine for computing a slice of a unified specification, said unified specification comprising a description of behavior in terms of a multitude of operations, organized as one or more processes that describe concurrent behavior, each of said processes specified as a one or more procedures, each of said procedures specified as a sequential flow of control between operations, comprising: (a) providing a storage medium for representing a unified specification; (b) providing a processor which transform said unified specification into a system dependence graph, said system dependence graph representing a plurality of intraprocedural dependences, interprocedural dependences, and interprocess dependences; (c) providing a storage medium which is able to represent said system dependence graph; (d) providing a processor which compute a slice from said system dependence graph based on said plurality of intraprocedural dependences, interprocedural dependences, and interprocess dependences, wherein one type of said interprocess dependences is an access dependence, said access dependence existing between an operation and a procedure, said operation represented by a source node, said procedure represented by a procedure entry operation that is represented by a target node, said source node and said target node representing concurrent operations connected by an access edge representing said access dependence; (e) providing a storage medium which is able to represent said slice; (f) providing a display which is operationally connected to said storage medium for displaying said slice, whereby said display will output said slice. 18. The programmed computer of claim 17, wherein said operation of said access dependence is a software operation and said procedure of said access dependence is a hardware procedure. 19. The programmed computer of claim 16, further including storage to represent a set of dependences to exclude from said processor means which compute said slice. 20. The programmed computer of claim 17, further including a storage to represent a set of dependences to exclude from said processor which compute said slice.
연구과제 타임라인
LOADING...
LOADING...
LOADING...
LOADING...
LOADING...
이 특허에 인용된 특허 (6)
Reps Thomas (Madison WI) Horwitz Susan (Madison WI) Binkley David (Madison WI), Interprocedural slicing of computer programs using dependence graphs.
Odnert Daryl (Boulder Creek CA) Santhanam Vatsa (Sunnyvale CA), Method and apparatus for compiling computer programs with interprocedural register allocation.
Odnert Daryl (Boulder Creek CA) Santhanam Vatsa (Sunnyvale CA), Method and apparatus for compiling computer programs with interproceduural register allocation.
Burke Michael G. (Yonkers NY) Carini Paul R. (Sherman CT) Choi Jong-Deok (Mount Kisco NY), Using program call graphs to determine the maximum fixed point solution of interprocedural bidirectional data flow probl.
Dolby, Julian Timothy; Geay, Emmanuel; Pistoia, Marco; Ryder, Barbara G.; Tateishi, Takaaki, System, method, and apparatus for modular, string-sensitive, access rights analysis with demand-driven precision.
Dolby, Julian Timothy; Geay, Emmanuel; Pistoia, Marco; Ryder, Barbara G.; Tateishi, Takaaki, System, method, and apparatus for modular, string-sensitive, access rights analysis with demand-driven precision.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.