JP2002269162A - Action synthesizing method - Google Patents

Action synthesizing method

Info

Publication number
JP2002269162A
JP2002269162A JP2001064320A JP2001064320A JP2002269162A JP 2002269162 A JP2002269162 A JP 2002269162A JP 2001064320 A JP2001064320 A JP 2001064320A JP 2001064320 A JP2001064320 A JP 2001064320A JP 2002269162 A JP2002269162 A JP 2002269162A
Authority
JP
Japan
Prior art keywords
loop
description
array
loops
behavioral synthesis
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001064320A
Other languages
Japanese (ja)
Inventor
Daisuke Shimada
大祐 嶋田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Engineering Ltd
Original Assignee
NEC Engineering Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Engineering Ltd filed Critical NEC Engineering Ltd
Priority to JP2001064320A priority Critical patent/JP2002269162A/en
Publication of JP2002269162A publication Critical patent/JP2002269162A/en
Pending legal-status Critical Current

Links

Abstract

PROBLEM TO BE SOLVED: To provide an action synthesizing method for enabling optimal circuit design by canceling the defect of conventional technology that a satisfactory circuit can not be provided since synthesis makes redundant descriptions increase as it is because of a difference in the features of SAW and H/W in a conventional action synthesizing method. SOLUTION: A loop sentence (sentence starting with 'for' and sentence starting with 'while', for example,) having a description (data-a, data-b and buffer, for example,) on an array is automatically detected out of a source written with descriptions capable of action synthesis, and a circuit structure is divided and made parallel for the unit of group from a number of times of loop having a description on substitution and a number of times of loop having a description on reference. Thus, a register can be discarded and the reduction of a circuit area and acceleration can be attained.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は動作合成方法および
装置、特に動作合成時にCアルゴリズムを解析し、ソフ
トウェア(S/W)およびハードウェア(H/W)の特
性の違いから生じる冗長な配列や記述をなくすること
で、ツールが自動的に論理回路設計を最適化する方法お
よび装置に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a method and apparatus for behavioral synthesis, and more particularly, to analyzing a C algorithm at the time of behavioral synthesis to obtain a redundant array or the like resulting from a difference in software (S / W) and hardware (H / W) characteristics. The present invention relates to a method and an apparatus for automatically optimizing a logic circuit design by eliminating a description.

【0002】[0002]

【従来の技術】コンピュータ技術の進歩により、CAD
(Computer−Aided Design)システムを使用して論理回
路の設計、解析および評価等を行うのが一般的になって
いる。斯かる技術分野における従来技術は、例えば特開
平9−106407号公報の「設計支援装置」および特
開2000−172730号公報の「論理合成装置」等
に開示されている。
2. Description of the Related Art With the advance of computer technology, CAD
(Computer-Aided Design) It is common to design, analyze, and evaluate a logic circuit using a system. Conventional techniques in such a technical field are disclosed in, for example, "Design Supporting Apparatus" in JP-A-9-106407 and "Logic Synthesizing Apparatus" in JP-A-2000-172730.

【0003】動作合成ツールを使用して動作合成を行う
際に、入力ポートや変数のビット幅等のH/W化に必要
な情報を含んだ、動作レベルの記述言語で書かれた入力
記述を用意しなければならない。図10は、ソフトウエ
ア言語で書かれたソースの1例を示す。また、図11
は、元々図10の如きソフトウェア言語で書かれていた
ものを、動作合成可能な入力記述に書き換えたものであ
る。図11の2行目のinは入力ポートを、3行目のout
は出力ポートを表す関数で、ter(α to β)は、MSB
αおよびLSBβのterminal信号を宣言する関数とす
る。3行目のmem(α to β)は、MSBαおよびLSB
βのmemoryを宣言する関数とする。また、reg(α to
β)は、MSBαおよびLSBβのレジスタを宣言する
関数とする。
When performing behavioral synthesis using a behavioral synthesis tool, an input description written in a behavioral level description language including information necessary for H / W conversion such as an input port and a bit width of a variable is used. Must be prepared. FIG. 10 shows an example of a source written in a software language. FIG.
Is originally written in a software language as shown in FIG. 10 and rewritten into an input description capable of behavioral synthesis. In the second line in FIG.
Is a function representing the output port, and ter (α to β) is the MSB
It is a function that declares the terminal signals of α and LSBβ. The mem (α to β) in the third line is MSBα and LSB
Function to declare memory of β. Also, reg (α to
β) is a function that declares the registers of MSBα and LSBβ.

【0004】こうして、図11に示す如き動作合成可能
な入力記述が準備できたところで、従来の動作合成方法
の手順を示す図12のフローチャートに従って、動作合
成を行う。ここでは、図11の入力記述を例にして、図
12に沿って従来の動作合成方法を以下に説明する。
When an input description capable of behavioral synthesis as shown in FIG. 11 is prepared, behavioral synthesis is performed according to a flowchart of FIG. 12 showing a procedure of a conventional behavioral synthesis method. Here, a conventional behavioral synthesis method will be described below with reference to FIG. 12 using the input description of FIG. 11 as an example.

【0005】図12において、先ず、準備された動作合
成可能な入力記述の構文解析を行う(ステップA1)。
続いて、記述中(ソース)に配列があるか否かを判断す
る(ステップA2)。配列がある場合(ステップA2:
Yes)には、その配列の宣言より、メモリで実現する
か、レジスタで実現するかを判断する(ステップA
3)。図11の例では、配列tmpもout_memも、mem(0 t
o 7)out_mem[N]、mem(0to 7)tmp[M]と記述してい
るので、8ビットのメモリとして設計される。これをレ
ジスタにしたいときは、reg(0 to 7)out_mem[N]と記
述すればよい(ステップA5)。配列をメモリで実現した
後(ステップA4)に、コントロールデータフローグラ
フ(以下、CDFGという)を生成する(ステップA
6)。このCDFGは、リソースバインディングおよび
スケジューリング処理を行う際に使用される(ステップ
A7)。
In FIG. 12, first, a syntax analysis of the prepared input description capable of behavioral synthesis is performed (step A1).
Subsequently, it is determined whether or not there is an array in the description (source) (step A2). If there is an array (step A2:
In Yes, it is determined from the declaration of the array whether it is realized by a memory or a register (step A).
3). In the example of FIG. 11, both the array tmp and out_mem are mem (0 t
o 7) Since out_mem [N] and mem (0 to 7) tmp [M] are described, the memory is designed as an 8-bit memory. If this is desired to be used as a register, it can be described as reg (0 to 7) out_mem [N] (step A5). After the array is realized in the memory (step A4), a control data flow graph (hereinafter, referred to as CDFG) is generated (step A4).
6). This CDFG is used when performing resource binding and scheduling processing (step A7).

【0006】図13は、図11に示す例のCDFGを表
したものである。図13のブロックB_01は、図11
の8、9行目に相当し、ループ文によってM回繰り返さ
れる。また、ブロックB_02は、図11の10および
11行目に相当し、ループ文によってN回繰り返され
る。このように、図11のループ記述は、2つのブロッ
クB_01とB_02に分割される。
FIG. 13 shows the CDFG of the example shown in FIG. The block B_01 in FIG.
8 and 9 and is repeated M times by a loop statement. Block B_02 corresponds to the 10th and 11th lines in FIG. 11, and is repeated N times by a loop statement. Thus, the loop description of FIG. 11 is divided into two blocks B_01 and B_02.

【0007】次に、図13のCDFGに基づいてリソー
スバインディングおよびスケジューリングが行われる
(ステップA7)。ここで、合成制約である回路周波数
や演算器制約に基づいて、演算器、レジスタおよびマル
チプレクサ等のマッピングおよびシェアリングを行う。
図14は、このステップA7において得られた回路図を
示す。最後に、合成された回路構成を、論理合成ツール
に直接入力可能なレジスタ・トランスファ・レベル(R
TL)のH/W記述言語による記述を出力して、動作合
成を終了する(ステップA8)。
Next, resource binding and scheduling are performed based on the CDFG of FIG. 13 (step A7). Here, mapping and sharing of a computing unit, a register, a multiplexer, and the like are performed based on a circuit frequency and a computing unit constraint that are synthesis constraints.
FIG. 14 shows the circuit diagram obtained in step A7. Finally, the synthesized circuit configuration can be directly transferred to a register transfer level (R
The description in the H / W description language of (TL) is output, and the behavioral synthesis ends (step A8).

【0008】[0008]

【発明が解決しようとする課題】ソフトウェア(S/
W)とハードウェア(H/W)の大きな違いは、S/W
は、シーケンシャルにしか処理を行うことができないの
に対し、H/Wは並列に処理を行うことができる点であ
る。例えば、図10のS/W的な記述から、単に図11
に示すH/W的な記述に変更すると、「for文」をM回
行った後に、N回行う必要がある。仮に、「for文」の
中の処理が1クロックで終わるとしても、全体で(M+
N)クロック相当の時間がかかってしまう。しかし、H
/Wでは並列処理が行えるために、例えば2つの「for
文」をそれぞれ2分割して並列処理を行えば、全体で
(M+N)/2クロックとなり、それだけで2倍の処理速
度の回路が設計できる。
SUMMARY OF THE INVENTION Software (S /
The major difference between W) and hardware (H / W) is that S / W
Is that H / W can perform processing in parallel, while processing can be performed only sequentially. For example, from the S / W description in FIG.
When the description is changed to the H / W-like description shown in (1), it is necessary to execute the “for statement” M times and then N times. Even if the processing in the “for statement” is completed in one clock, (M +
N) It takes time corresponding to the clock. But H
/ W allows parallel processing, so for example, two “for
Sentence "is divided into two, and the parallel processing is performed.
(M + N) / 2 clocks, so that a circuit with twice the processing speed can be designed by itself.

【0009】また、従来の動作合成方法では、図11中
の配列tmpおよびout_memは、全てメモリにするか、全て
レジスタにするかの何れか一方しか選択ができない。従
って、配列の要素数が多い場合には、メモリにすると回
路の処理速度が、レジスタにすると回路面積が、それぞ
れ悪化してしまうという問題があった。このように、従
来の動作合成ツールでは、S/WとH/Wの特徴の違い
から、そのまま合成したのでは、冗長な記述が多くなり
優れた回路が得られないという問題がある。
Further, in the conventional behavioral synthesis method, the arrays tmp and out_mem in FIG. 11 can be selected from either all memories or all registers. Therefore, when the number of elements in the array is large, there is a problem that the processing speed of the circuit is deteriorated by using a memory, and the circuit area is deteriorated by using a register. As described above, in the conventional behavioral synthesis tool, there is a problem that if the synthesis is performed as it is, the redundant description increases and an excellent circuit cannot be obtained due to the difference between the S / W and H / W characteristics.

【0010】[0010]

【発明の目的】従って、本発明は、上述した従来技術の
課題を解決すべくなされたものであり、Cアルゴリズム
を最適化する機能を追加することにより一層最適な回路
設計が可能な動作合成方法を提供することを目的とす
る。
SUMMARY OF THE INVENTION Accordingly, the present invention has been made to solve the above-mentioned problems of the prior art, and a behavioral synthesis method capable of further optimal circuit design by adding a function of optimizing a C algorithm. The purpose is to provide.

【0011】[0011]

【課題を解決するための手段】本発明の動作合成方法
は、動作合成可能な記述で書かれたソースから、自動的
に配列に関する記述のあるループ文を検出し、この検出
された配列の代入に関する記述のあるループ文のループ
回数と、参照に関する記述のあるループ文のループ回数
から、グループ単位にループ記述に関する個所の回路構
造を分割し、並列化することにより冗長なレジスタを廃
して共有化を行う。
According to the behavioral synthesis method of the present invention, a loop statement having a description related to an array is automatically detected from a source described in a behaviorally synthesizable description, and the detected array is substituted. Based on the number of loops in a loop statement with a reference statement and the number of loop statements in a reference statement, the circuit structure related to the loop description is divided into groups and parallelized, eliminating redundant registers and sharing. I do.

【0012】また、本発明の動作合成方法の好適実施形
態によると、上述した分割は、ループ回数の多いループ
文をループ回数の少ないループ単位に合わせて分割す
る。また、分割に合わせて配列も分割する。分割された
ループ文を、ループ文の依存関係によりグループ単位に
まとめて冗長な配列をなくす。配列の代入と参照に関す
る記述がループ文の中にない場合には、配列をメモリ又
はレジスタで実現するか選択する。
According to a preferred embodiment of the behavioral synthesis method of the present invention, the above-described division is performed by dividing a loop sentence having a large number of loops in accordance with a loop unit having a small number of loops. Also, the array is divided according to the division. The divided loop statements are grouped into groups by the dependency of the loop statements to eliminate redundant arrays. If there is no description regarding the assignment and reference of the array in the loop statement, it is selected whether the array is realized by a memory or a register.

【0013】[0013]

【発明の実施の形態】以下、本発明による動作合成方法
の好適実施形態の構成および動作を、添付図面を参照し
て詳細に説明する。
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS The configuration and operation of a preferred embodiment of the behavioral synthesis method according to the present invention will be described below in detail with reference to the accompanying drawings.

【0014】先ず、図5に示す動作合成可能な記述で書
かれたソースを、従来の動作合成方法により行った場合
を説明する。図5を従来の動作合成方法により合成した
回路図は、図6に示す(尚、回路自体は、本発明の対照
でないので詳細説明を省略する。以下に説明する多の回
路についても同様である)。図6のB_02は、サブ関数
readの処理を行う部分であり、サブ関数内で64回ルー
プし、main関数からは30回呼ばれている。従って、B
_02のループ回数は、64×30=1920回であ
る。また、B_03は、サブ関数calの処理を行う部分で
あり、サブ関数内で32回ループし、main関数からは1
5回呼ばれているので、B_03のループ回数は、32
×15=480回である。そして、データ出力部のB_
01のループ回数が、480回であることから、全体の
ループ回数は、1920+480+480=2880回
となる。
First, a description will be given of a case where a source written with the behavioral synthesizable description shown in FIG. 5 is performed by a conventional behavioral synthesis method. FIG. 6 shows a circuit diagram obtained by synthesizing FIG. 5 by the conventional behavioral synthesis method. (Note that the circuit itself is not the subject of the present invention, and therefore detailed description is omitted. The same applies to many circuits described below. ). B_02 in FIG. 6 is a sub-function
This is a part that performs read processing, loops 64 times in the sub function, and is called 30 times from the main function. Therefore, B
The loop count of —02 is 64 × 30 = 1920. B_03 is a part that performs processing of the sub-function cal, loops 32 times in the sub-function, and 1
Since it is called five times, the loop count of B_03 is 32
× 15 = 480 times. And B_ of the data output unit
Since the number of loops of 01 is 480, the total number of loops is 1920 + 480 + 480 = 2880.

【0015】次に、図1は、本発明による動作合成方法
の好適実施形態の手順を示すフローチャートである。こ
のフローチャートに従って動作合成を行った場合を説明
する。先ず、動作合成可能な記述を入力して構文解析を
行う(ステップB1)。その後、ソースに配列があるか
否かを確認する(ステップB2)。図5では、3行目、
4行目に、配列data_a、data_bおよびbufferがある(ス
テップB2:Yes)ので、ステップB3へ進む。そし
て、配列の代入と参照に関する記述がループ文中にある
か否か確認する(ステップB3)。配列data_aおよびda
ta_bは、図5の25〜28行目のループ文で代入され、
35〜40行目のループ文で参照されている。一方、配
列bufferは、35〜40行目のループ文で代入され、1
6〜18行目のループ文で参照されている(ステップB
3:Yes)。従って、各配列について、ステップB5
およびB6が実行される。
FIG. 1 is a flowchart showing the procedure of a preferred embodiment of the behavioral synthesis method according to the present invention. A case in which behavioral synthesis is performed according to this flowchart will be described. First, a syntax that can be synthesized is input and syntax analysis is performed (step B1). Thereafter, it is confirmed whether or not the source has an array (step B2). In FIG. 5, the third line,
In the fourth row, there are arrays data_a, data_b, and buffer (step B2: Yes), so the process proceeds to step B3. Then, it is confirmed whether or not a description relating to array assignment and reference exists in the loop statement (step B3). Arrays data_a and da
ta_b is substituted in the loop statement on lines 25 to 28 in FIG.
It is referenced in the loop statement on lines 35-40. On the other hand, the array buffer is substituted by a loop statement on lines 35 to 40, and 1
It is referred to in the loop statement on lines 6 to 18 (step B
3: Yes). Therefore, for each array, step B5
And B6 are executed.

【0016】ステップB5では、依存関係にある配列da
ta_aおよびdata_bについて考える。ステップB4では、
依存関係にあるループ文が、式か式を満たしている
か否か確認する。ここで、代入側のループ回数をM、参
照側のループ回数をNとするとき、式および式は、
次のとおりである。N≧Mのとき N=αM(αは1以上の正の整数)…… M>Nのとき M=αN(αは2以上の正の整数)…… 25〜28行目のループ文は、ループ回数64回で、3
5〜40行目のループ文は、ループ回数32回であるの
で、式を満たす(ステップB4:Yes)。これによ
り、ループ回数の多い25〜28行目のループ文に関す
るブロックB_02は、2分割される。図7は、このと
きのアーキテクチャを示す。
In step B5, the dependent array da
Consider ta_a and data_b. In step B4,
Check whether the dependent loop statement satisfies the expression or the expression. Here, when the number of loops on the substitution side is M and the number of loops on the reference side is N, the equation and the equation are as follows:
It is as follows. When N ≧ M, N = αM (α is a positive integer of 1 or more)... When M> N, M = αN (α is a positive integer of 2 or more)... 3 times with 64 loops
The loop statement in the 5th to 40th lines satisfies the expression (step B4: Yes) because the number of loops is 32. As a result, the block B_02 relating to the loop statement on the 25th to 28th lines with the large number of loops is divided into two. FIG. 7 shows the architecture at this time.

【0017】更に、25〜28行目のループ文を含むre
ad関数は、10〜12行目のmain関数内のループ文で3
0回呼び出される。また、35〜40行目のループ文を
含むcal関数は、13〜15行目のmain関数内のループ
文で15回呼び出されている。この2つのループも式
を満たすことから、同様に少ない方のループ回数単位に
分割する。図8は、このときの回路図を示したものであ
る。これによって、サブ関数readとcal内のループ回数
と、main関数がreadとcalを呼び出すループ回数が同じ
になる。
Further, re including the loop statement on lines 25 to 28
The ad function is a loop statement in the main function on the 10th to 12th lines.
Called 0 times. Further, the cal function including the loop statement on the 35th to 40th lines is called 15 times by the loop statement in the main function on the 13th to 15th lines. Since these two loops also satisfy the formula, they are similarly divided into smaller loop number units. FIG. 8 shows a circuit diagram at this time. As a result, the number of loops in the sub function read and cal is equal to the number of loops in which the main function calls read and cal.

【0018】次に、グループ毎にループ文をまとめる
(ステップB6)。図8のアーキテクチャのB_02と
B_03部分をまとめることで、冗長な回路、配列を除
くと、図9に示す如く、配列data_aおよびdata_bは、8
つのレジスタを用いて共有化すればよいことになる。
Next, loop statements are put together for each group (step B6). By arranging the B_02 and B_03 parts of the architecture of FIG. 8 and excluding redundant circuits and arrays, as shown in FIG. 9, the arrays data_a and data_b
It is only necessary to use one register for sharing.

【0019】更に、配列bufferについて説明する。配列
buffferは、35〜40行目のループ文で代入され、1
6〜18行目のループ文で参照されている。この2つの
ループ文も式を満たしていることより、ループ回数の
多い16〜18行目のループ文が分割される。分割の数
は、480/32=15であるので、15分割である。
また、35〜40行目のループ文を含むcal関数は、1
3〜15行目のループ文で15回呼び出されている。こ
のループ回数と、先ほど分割したループ文が式を満た
すため、まとめる(ステップB6)。図9は、このとき
の回路図を示す。全ての配列に対して上述したステップ
B3〜B9の処理を行った後で、CDFGを生成する
(ステップB10)。その後に、リソースバインディン
グおよびスケジューリングを行う(ステップB11)。
最後に、図9に示すアーキテクチャを持つ、RTLのH
/W記述言語による記述を出力(ステップB12)し
て、動作合成を終了する。
Further, the array buffer will be described. Array
bufffer is substituted in the loop statement on lines 35 to 40, and 1
It is referenced in the loop statement on lines 6-18. Since these two loop statements also satisfy the expression, the loop statements on the 16th to 18th lines where the number of loops is large are divided. Since the number of divisions is 480/32 = 15, there are 15 divisions.
The cal function including the loop statement on lines 35 to 40 is 1
It is called 15 times in the loop statement of the 3rd to 15th lines. Since the number of loops and the loop statement divided earlier satisfy the expression, they are put together (step B6). FIG. 9 shows a circuit diagram at this time. After performing the above-described processing of steps B3 to B9 on all the arrays, a CDFG is generated (step B10). Thereafter, resource binding and scheduling are performed (step B11).
Finally, RTL H having the architecture shown in FIG.
The description in the / W description language is output (step B12), and the behavioral synthesis ends.

【0020】本発明による動作合成方法により、図9の
回路を得ることができる。B_01のループ回数は、4
80回(=32×15)であり、従来の動作合成方法で
得られた図6の回路に比較して6分の1のループ回数と
なり、回路の高速化が図れていることが判る。また、配
列data_a[30][64]、data_b[30][64]、buffer
[480]は、9つのレジスタにして共有化することがで
きたので、面積も縮小されている。
The circuit shown in FIG. 9 can be obtained by the behavioral synthesis method according to the present invention. The loop count of B_01 is 4
The number of loops is 80 (= 32 × 15), which is 1/6 the number of loops as compared with the circuit of FIG. 6 obtained by the conventional behavioral synthesis method, and it can be seen that the circuit can be speeded up. In addition, arrays data_a [30] [64], data_b [30] [64], buffer
[480] can be shared with nine registers, so that the area is also reduced.

【0021】ここで、上述した本発明の動作合成方法
を、以下に要約する。動作合成ツールが配列に関する記
述を見て、合成回路の最適化を行うものである。図1に
示す動作合成フローチャートにおいて、図11に示す代
入側のループ回数M=120、参照側のループ回数N=
60とした図2に基づく場合には、ステップB1で、準
備された動作合成可能な入力記述の構文解析を行う。ス
テップB2で、ソース中に配列が使用されているか否か
確認する。配列が使用されていると、ステップB3で、
使用されている配列の代入と参照に関する記述が、「fo
r文」および「while文」等のループ文で囲まれているか
否か確認する。ループ文で囲まれている場合には、ステ
ップB4で、代入側と、参照側のループ文の回数M、N
をチェックする。上述した式又は式が成立する場合
には、アルゴリズムが変わってしまわないように、ルー
プ文を分割して並列化することで回路の最適化を行う。
Here, the behavioral synthesis method of the present invention described above is summarized below. The behavioral synthesis tool optimizes the synthesis circuit by looking at the description about the array. In the behavioral synthesis flowchart shown in FIG. 1, the number of loops M on the substitution side shown in FIG.
In the case of FIG. 2 where the input description is 60, the syntax analysis of the prepared behavioral input description is performed in step B1. In step B2, it is checked whether or not an array is used in the source. If an array is used, in step B3,
The description about the assignment and reference of the array used is "fo
Check whether it is surrounded by loop statements such as "r statement" and "while statement". If it is enclosed by loop statements, in step B4, the number of loop statements M and N
Check. If the above-described expression or the expression is satisfied, the circuit is optimized by dividing and parallelizing the loop statement so that the algorithm does not change.

【0022】上述した式か式が成立するとき、ステ
ップB5でループ文の分割を検する。図2の例では、M
(=120)がN(=60)の2倍であり、式を満足
するので、代入側のループ文を2分割する。ループ文の
分割に伴って、配列の分割を行う。この場合には、ルー
プ文が2分割されるので、配列tmp[120]を、tmp_1
[60]とtmp_2[60]に2分割する(図3参照)。図3の
回路は、図14の回路に比較してB_01部が2個並列
になっているので、その分だけ処理速度が高速になる。
次に、ステップB6で、代入側と参照側のループ文を、
グループ毎にまとめる。図2の例では、代入側のB_0
1と参照側のB_02は、2:1の関係になっているの
で、B_01が2並列で、B_02はそのままの回路が1
つのグループとしてみなせる。これにより、図3のB_
01とB_02は、同じ60回のループとなり、1つの
グループとしてまとめることが可能となる。そして、1
つのグループにまとめることで、配列tmp_1とtmp_2は
必要なくなり、2つのレジスタにして共有化すれば良い
ことになる。これにより得られる回路を図4に示す如
く、陽素数が160もあった配列tmpがなくなり、2つ
のレジスタのみで回路が実現でき、面積の縮小が行われ
る。また、ループを1つにまとめることで、全体のルー
プ回数は60回となり、図14に示すアーキテクチャの
場合のループ回数180の1/3となり、回路の高速化
も実現できる。
When the above-mentioned expression is satisfied, the division of the loop statement is detected in step B5. In the example of FIG.
Since (= 120) is twice N (= 60), which satisfies the expression, the loop statement on the assignment side is divided into two. The array is divided according to the division of the loop statement. In this case, since the loop statement is divided into two, the array tmp [120] is stored in tmp_1
[60] and tmp_2 [60] are divided into two (see FIG. 3). The circuit of FIG. 3 has two B_01 units in parallel as compared with the circuit of FIG. 14, so that the processing speed is correspondingly increased.
Next, in step B6, the loop statements on the assignment side and the reference side are
Group by group. In the example of FIG. 2, B_0 on the substitution side
Since 1 and B_02 on the reference side are in a 2: 1 relationship, B_01 is two-parallel, and B_02 is the same circuit as 1
Can be considered as two groups. Thereby, B_ of FIG.
01 and B_02 become the same 60 loops, and can be grouped as one group. And 1
By grouping them into one group, the arrays tmp_1 and tmp_2 are not required, and the two registers can be shared. As shown in FIG. 4, the resulting circuit does not have an array tmp having as many as 160 positive numbers, and the circuit can be realized with only two registers, and the area can be reduced. In addition, by combining the loops into one, the total number of loops becomes 60, which is 1/3 of the number of loops 180 in the case of the architecture shown in FIG. 14, so that a high-speed circuit can be realized.

【0023】以上、本発明による動作合成方法の好適実
施形態の構成および動作を詳述した。しかし、斯かる実
施形態は、本発明の単なる例示に過ぎず、何ら本発明を
限定するものではない。本発明の要旨を逸脱することに
より、特定用途に応じて種々の変形変更が可能であるこ
と、当業者には容易に理解できよう。
The configuration and operation of the preferred embodiment of the behavioral synthesis method according to the present invention have been described above in detail. However, such an embodiment is merely an example of the present invention and does not limit the present invention in any way. It will be readily apparent to those skilled in the art that various modifications and changes can be made in accordance with the particular application by departing from the spirit of the invention.

【0024】[0024]

【発明の効果】以上の説明から理解される如く、本発明
の動作合成方法によると、次の如き実用上の顕著な効果
が得られる。即ち、動作合成可能な記述で書かれたソー
スから、自動的に配列に関する記述のあるループ分を検
出し、そのうち代入に関するループ回数と、参照に関す
る記述のあるループ回数からグループ単位に回路構造を
分割する。更に、これを並列化することによりレジスタ
を廃し、従来技術に比較して回路縮小および高速化が可
能になる。
As will be understood from the above description, the behavioral synthesis method according to the present invention has the following remarkable practical effects. That is, from the source written in the description that can be synthesized, the loops with the description about the array are automatically detected, and the circuit structure is divided into groups based on the number of loops with the assignment and the number of loops with the reference. I do. Further, by parallelizing this, the register is abolished, and the circuit can be reduced in size and the speed can be increased as compared with the prior art.

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明による動作合成方法の好適実施形態を説
明するフローチャートである。
FIG. 1 is a flowchart illustrating a preferred embodiment of a behavioral synthesis method according to the present invention.

【図2】動作合成可能な記述で書かれたソースの具体例
を示す。
FIG. 2 shows a specific example of a source written in a behavior synthesizable description.

【図3】図1中のステップB5で得られる回路図であ
る。
FIG. 3 is a circuit diagram obtained in step B5 in FIG.

【図4】図1中のステップB6で得られる回路図であ
る。
FIG. 4 is a circuit diagram obtained in step B6 in FIG.

【図5】本発明の説明で使用する動作合成可能な記述で
書かれたソースの具体例である。
FIG. 5 is a specific example of a source written in a behaviorally synthesizable description used in the description of the present invention.

【図6】図5に示すソースを従来技術の動作合成により
合成したときの回路図である。
FIG. 6 is a circuit diagram when the sources shown in FIG. 5 are synthesized by a conventional behavioral synthesis;

【図7】図1中のステップB5で、配列data_aおよびd
ata_bに対して処理を行った結果選られた回路図であ
る。
7 shows arrays data_a and d at step B5 in FIG.
FIG. 14 is a circuit diagram selected as a result of performing a process on ata_b.

【図8】図1中のステップB6で、配列data_aおよびd
ata_bに対するループ部分をまとめた結果得られた回路
図である。
FIG. 8 is a diagram showing an example in which arrays data_a and d
FIG. 14 is a circuit diagram obtained as a result of summarizing loop portions for ata_b.

【図9】図1中のステップB6で、配列bufferに対する
ループ部分をまとめた結果得られた回路図である。
FIG. 9 is a circuit diagram obtained as a result of summarizing loop portions for an array buffer in step B6 in FIG. 1;

【図10】ソフトウェア言語で書かれたソースの例であ
る。
FIG. 10 is an example of a source written in a software language.

【図11】動作合成可能な記述で書かれたソースの例で
ある。
FIG. 11 is an example of a source written in a behavior synthesizable description.

【図12】従来の動作合成のフローチャートである。FIG. 12 is a flowchart of a conventional behavioral synthesis.

【図13】図12中のステップA6で得られるCDFG
である。
FIG. 13 shows the CDFG obtained in step A6 in FIG.
It is.

【図14】図11に示す従来の動作合成方法で合成した
ときに得られる回路図である。
FIG. 14 is a circuit diagram obtained when the signals are synthesized by the conventional behavioral synthesis method shown in FIG.

Claims (5)

【特許請求の範囲】[Claims] 【請求項1】動作合成可能な記述で書かれたソースか
ら、自動的に配列に関する記述のあるループ文を検出
し、該検出された配列の代入に関する記述のあるループ
文のループ回数と、参照に関する記述のあるループ文の
ループ回数から、グループ単位にループ記述に関する個
所の回路構造を分割し、並列化することにより冗長なレ
ジスタを廃して共有化を行うことを特徴とする動作合成
方法。
1. A method for automatically detecting a loop statement with a description related to an array from a source written in a behavior-synthesizable description, referring to the number of loops of a loop statement with a description related to the assignment of the detected array, and A behavioral synthesis method characterized in that a circuit structure of a portion related to a loop description is divided into groups based on the number of loops of a loop statement having a description of the same, and a redundant register is abolished and shared by performing parallelization.
【請求項2】前記分割は、ループ回数の多いループ文を
ループ回数の少ないループ単位に合わせて分割すること
を特徴とする請求項1に記載の動作合成方法。
2. The behavior synthesizing method according to claim 1, wherein said dividing is performed by dividing a loop statement having a large number of loops in accordance with a loop unit having a small number of loops.
【請求項3】前記分割に合わせて配列も分割することを
特徴とする請求項2に記載の動作合成方法。
3. The behavioral synthesis method according to claim 2, wherein the array is also divided according to the division.
【請求項4】前記分割後のループ文を、ループ文の依存
関係によりグループ単位にまとめて冗長な配列をなくす
ことを特徴とする請求項1、2又は3に記載の動作合成
方法。
4. The behavioral synthesis method according to claim 1, wherein the loop statements after the division are grouped into groups according to loop statement dependencies to eliminate redundant arrays.
【請求項5】配列の代入と参照に関する記述がループ文
の中にない場合には、配列をメモリ又はレジスタで実現
するか選択することを特徴とする請求項1、2、3又は
4に記載の動作合成方法。
5. The method according to claim 1, wherein if the description relating to the assignment and reference of the array is not included in the loop statement, the array is realized or selected by a memory or a register. Behavioral synthesis method.
JP2001064320A 2001-03-08 2001-03-08 Action synthesizing method Pending JP2002269162A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001064320A JP2002269162A (en) 2001-03-08 2001-03-08 Action synthesizing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001064320A JP2002269162A (en) 2001-03-08 2001-03-08 Action synthesizing method

Publications (1)

Publication Number Publication Date
JP2002269162A true JP2002269162A (en) 2002-09-20

Family

ID=18923152

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001064320A Pending JP2002269162A (en) 2001-03-08 2001-03-08 Action synthesizing method

Country Status (1)

Country Link
JP (1) JP2002269162A (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467361B2 (en) 2006-03-31 2008-12-16 Kabushiki Kaisha Toshiba Pipeline high-level synthesis system and method
JP2010238054A (en) * 2009-03-31 2010-10-21 Mitsubishi Electric Corp Apparatus for supporting semiconductor design, high-order synthesis method and program for supporting semiconductor design
CN104057452A (en) * 2014-06-30 2014-09-24 西北工业大学 Universal action debugging method for human-like robot
JP2014225201A (en) * 2013-05-17 2014-12-04 株式会社半導体理工学研究センター Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program
JP2014225200A (en) * 2013-05-17 2014-12-04 株式会社半導体理工学研究センター Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program
US8990741B2 (en) 2012-05-10 2015-03-24 Mitsubishi Electric Corporation Circuit design support device, circuit design support method and program
JP2019215697A (en) * 2018-06-13 2019-12-19 日本電信電話株式会社 Parameter optimization apparatus, method and program
JP2020135743A (en) * 2019-02-25 2020-08-31 株式会社日立製作所 Circuit design support device, circuit design support method, and information processing device

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467361B2 (en) 2006-03-31 2008-12-16 Kabushiki Kaisha Toshiba Pipeline high-level synthesis system and method
JP2010238054A (en) * 2009-03-31 2010-10-21 Mitsubishi Electric Corp Apparatus for supporting semiconductor design, high-order synthesis method and program for supporting semiconductor design
US8990741B2 (en) 2012-05-10 2015-03-24 Mitsubishi Electric Corporation Circuit design support device, circuit design support method and program
JP2014225201A (en) * 2013-05-17 2014-12-04 株式会社半導体理工学研究センター Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program
JP2014225200A (en) * 2013-05-17 2014-12-04 株式会社半導体理工学研究センター Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program
CN104057452A (en) * 2014-06-30 2014-09-24 西北工业大学 Universal action debugging method for human-like robot
JP2019215697A (en) * 2018-06-13 2019-12-19 日本電信電話株式会社 Parameter optimization apparatus, method and program
WO2019239820A1 (en) * 2018-06-13 2019-12-19 日本電信電話株式会社 Parameter optimization device, method and program
JP6996431B2 (en) 2018-06-13 2022-01-17 日本電信電話株式会社 Parameter optimizer, method, and program
JP2020135743A (en) * 2019-02-25 2020-08-31 株式会社日立製作所 Circuit design support device, circuit design support method, and information processing device
JP7100597B2 (en) 2019-02-25 2022-07-13 株式会社日立製作所 Circuit design support device, circuit design support method, and information processing device

Similar Documents

Publication Publication Date Title
US6496972B1 (en) Method and system for circuit design top level and block optimization
JP4833303B2 (en) Sequence conversion in behavioral synthesis tools
US7840931B2 (en) Loop manipulation if a behavioral synthesis tool
US8533642B1 (en) Hardware definition language generation for frame-based processing
US7146300B2 (en) Method of co-simulating a digital circuit
US6505339B1 (en) Behavioral synthesis links to logic synthesis
US6678644B1 (en) Integrated circuit models having associated timing exception information therewith for use with electronic design automation
US6438731B1 (en) Integrated circuit models having associated timing exception information therewith for use in circuit design optimizations
JP2002123563A (en) Compiling method, composing device, and recording medium
US6226777B1 (en) Method and system for improving the performance of a circuit design verification tool
US8302041B1 (en) Implementation flow for electronic circuit designs using choice networks
KR20030057397A (en) Method for designing a system lsi
JP2002269162A (en) Action synthesizing method
JPH05101141A (en) High-level composition device
JP3613314B2 (en) Information processing system
US20120226890A1 (en) Accelerator and data processing method
JP4531715B2 (en) System LSI design method and recording medium storing the same
JP5545054B2 (en) Debug circuit and debug system
JPH11213024A (en) Circuit composing method, its device and record medium
JP2018206195A (en) Calculation system, and control method and program of calculation system
US20030140054A1 (en) Processor composing apparatus, system LSI composing apparatus, processor composing method, system LSI composing method, and program therefor
JP3664954B2 (en) Delay library creation system and recording medium
JP2006065787A (en) Data flow graph processing method and reconfigurable circuit
JP5626724B2 (en) Accelerator and data processing method
JPH10326297A (en) High order synthesizer and recording medium for the same