Computer-aided design and analysis of circuits and semiconductor – Nanotechnology related integrated circuit design
Reexamination Certificate
2000-12-21
2003-08-05
Smith, Matthew (Department: 2825)
Computer-aided design and analysis of circuits and semiconductor
Nanotechnology related integrated circuit design
C716S030000
Reexamination Certificate
active
06604232
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to a high-level synthesis method for automatically synthesizing a digital circuit based on an operating description of an LSI, and a storage medium storing the method.
2. Description of the Related Art
Conventionally, high-level synthesis methods are known as techniques which are particularly effective in designing application-specific integrated circuits (ASIC) and the like where a short period of time is required for designing.
The high-level synthesis is a technique for automatically synthesizing a circuit based only on an operating description of a processing algorithm without information on hardware structure. The high-level synthesis technique is described in detail in “High-level Synthesis” (Kluwer Academic Publishers).
Hereinafter, for example, a method for high-level synthesizing a circuit automatically based on an operating description represented by the following expression (1), will be described:
x
=(
a+b
)*(
b+c
)  (1)
A typical high-level synthesis method is performed in accordance with a flowchart shown in FIG. 
1
. In the high-level synthesis method, control and data flow in executing an operating description are initially analyzed and converted to a model called a control data flow graph (CDFG) (see step S
1
 in FIG. 
1
). A CDFG is a graph similar to a flowchart. A CDFG is comprised of nodes and input/output (I/O) branches. The I/O branches indicate the flow of data or control signals. Nodes indicate operations. Inputs and outputs of the operations correspond to I/O branches of the nodes.
For example, an operating description shown in 
FIG. 1
 is represented by a CDFG shown in FIG. 
2
. The CDFG of 
FIG. 2
 includes first and second addition nodes 
11
 and 
12
 each representing an addition operation and a multiplication node 
13
 representing a multiplication operation. In the CDFG of 
FIG. 2
, an input “a” and an input “b” are added together, an input “b” and an input “c” are added together, and the results of both addition operations are multiplied together, the result of the multiplication operation being represented by an output “x”.
After the operating description represented by expression (1) has been converted to the CDFG shown in 
FIG. 2
, scheduling is performed (see step S
2
 in FIG. 
1
). Scheduling determines the timings of executing operations corresponding to the nodes of a CDFG, i.e., to determine in which clock step each operation corresponding to a node of a CDFG is executed. In this case, operations at all of the nodes need to be completed in a clock period, taking into account the operating time of each operation.
FIG. 3
 shows an example of scheduling the CDFG of FIG. 
2
. In 
FIG. 3
, two addition operations and one multiplication operation are scheduled to be executed within a clock step (step 
1
). In this case, the scheduling is performed in such a manner that the total of the operating times of such arithmetic executions does not exceed the period of one clock step. For example, when the operating times of an adder and a multiplier are 5 nsec and 60 nsec, respectively, and the clock period is 65 nsec or more, all of the operations can be scheduled within one clock step (step 
1
) as shown in FIG. 
3
.
Identical operations which are scheduled in different clock steps can be executed in a single operator. For this reason, as shown in 
FIG. 5
, a first addition node 
11
 representing a first addition and a second addition node 
12
 representing a second addition are scheduled to be performed in different steps 
1
 and 
2
, respectively, so that both the operations can be executed in a single adder. In this case, if the clock period is 65 nsec or more, the second addition whose operating time is 5 nsec and a multiplication whose operating time is 60 nsec can be scheduled to be performed in a second clock (clock step 
2
).
After an operating description has been scheduled, allocation is performed (see step 
3
 in FIG. 
1
). Allocation generates operators, registers and the like required for executing a scheduled CDFG. For example, in an allocation, operators are allocated as operations of a CDFG, and registers, selectors and the like are allocated as I/O branches across borders between adjacent clock steps. By allocation, a circuit for executing the operating description represented by expression (1) is generated (see step 
4
 in FIG. 
1
).
FIG. 4
 shows the result of the scheduling in FIG. 
3
. In 
FIG. 4
, first and second adders 
14
 and 
15
 corresponding to the first and second addition operations, respectively, are generated and allocated as the first and second addition nodes 
11
 and 
12
, and a multiplier 
16
 corresponding to the multiplication operation is generated and allocated as the multiplication node 
13
. In this case, no register or selector is generated since there is no branch across a border between adjacent clock steps.
FIG. 6
 shows the result of the scheduling in FIG. 
5
. In 
FIG. 6
, the first and second addition nodes 
11
 and 
12
 corresponding to the first and second addition operations are scheduled to be performed in different steps 
1
 and 
2
. Therefore, only one adder 
14
 is generated for the addition nodes 
11
 and 
12
. There are I/O branches 
21
 and 
22
 (
FIG. 5
) across a border between clock steps 
1
 and 
2
. Therefore, a selector 
23
 (indicated by “sel” in 
FIG. 6
) and a register 
24
 (indicated by “reg” in 
FIG. 6
) are generated for the I/O branches 
21
 and 
22
, respectively.
In the circuit shown in 
FIG. 6
, inputs “a” and “c” are supplied to the selector 
23
, and the output of the selector 
23
 is input to the adder 
14
. Input “b” is also supplied to the adder 
14
. The output of the adder 
14
 is input to the register 
24
 and the multiplier 
16
. In this case, a controller 
25
 (indicated by “Controller” in 
FIG. 6
) which produces control signals for each of the generated selector 
23
 and register 
24
 is generated. The controller 
25
 outputs a select signal k
1
 to the selector 
23
. The selector 
23
 outputs input “a” when the select signal k
1
 is “1”, or outputs input “c” when the select signal k
1
 is “0”. The controller 
25
 also outputs an enable signal k
2
 to the register 
24
. The register 
24
 stores an input value at the rising of a clock signal when the enable signal k
2
 is “1”, or maintains a stored value and outputs the stored value when the enable signal k
2
 is “0”.
The operation of the circuit shown in 
FIG. 6
 will be described. In clock step 
1
, the select signal k
1
 and the enable signal k
2
 are both “1”, and the selector 
23
 selects input “a” and outputs it to the adder 
14
. Then, the adder 
14
 outputs a value “a+b”, resulting from an addition of “a” and “b”, to the register 
24
. The register 
24
 stores “a+b” output from the adder 
14
 since the enable signal k
2
 is “1”.
In clock step 
2
, the select signal k
1
 and the enable signal k
2
 are both “0”, and the selector 
23
 selects the input value “c” and outputs it to the adder 
14
. Then, the adder 
14
 outputs a value “c+b”, resulting from an addition of “c” and “b”, to the multiplier 
16
. The stored value “a+b” is output to the multiplier 
16
 since the enable signal k
2
 is “0”. The multiplier 
16
 multiplies the input value “c+b” by the input value “a+b”, and outputs the resultant product as “x”.
In the circuit shown in 
FIG. 4
, the operating description is completed in one clock step (for example, within 100 nsec), but two adders 
14
 and 
15
 are required. In contrast, in the circuit shown in 
FIG. 6
, two clock steps (for example, 200 nsec) are required, but only one adder 
14
 is used. In such a high-level synthesis method, the circuit of 
FIG. 4
 is generated when a high-speed circuit is required, while the circuit of 
FIG. 6
 is generated when a circuit having a small area is required.
As is understood from the scheduling result shown in 
FIG. 5
, two addition operations can be performed using a single adder. However, when the number of operatio
Nishida Koichi
Okada Kazuhisa
Birch & Stewart Kolasch & Birch, LLP
Dimyan Magid
Sharp Kabushiki Kaisha
Smith Matthew
LandOfFree
High-level synthesis method and storage medium storing the same does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with High-level synthesis method and storage medium storing the same, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and High-level synthesis method and storage medium storing the same will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-3127899