JPH05101141A - High-level composition device - Google Patents

High-level composition device

Info

Publication number
JPH05101141A
JPH05101141A JP4071694A JP7169492A JPH05101141A JP H05101141 A JPH05101141 A JP H05101141A JP 4071694 A JP4071694 A JP 4071694A JP 7169492 A JP7169492 A JP 7169492A JP H05101141 A JPH05101141 A JP H05101141A
Authority
JP
Japan
Prior art keywords
subroutine
variable
state
register
description
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
JP4071694A
Other languages
Japanese (ja)
Inventor
Hiroshi Imai
浩史 今井
Seiichi Nishio
誠一 西尾
Tokuji Masuda
篤司 増田
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP4071694A priority Critical patent/JPH05101141A/en
Publication of JPH05101141A publication Critical patent/JPH05101141A/en
Pending legal-status Critical Current

Links

Abstract

PURPOSE:To omit an extra control circuit of the input terminals of the computing element and registers of a logic circuit after composition. CONSTITUTION:This high-level composition device is equipped with a state division part 2 which divides operation, expressed by an operation function description inputted from an operation function description input part 1, by states, a variable analysis part 3 which finds a register needed in the respective states, a register list storage part 4 stored with the found registers, a merging rule library 6 which has the merging rule of the registers, a merging execution part 6 which merges the registers, and a composition part 7 which composes the logic circuit according to the merging result. Memory constitution is altered without rewriting a behavior arithmetic execution time or the overlap of a subroutine arithmetic execution time is checked to allocate hardware blocks required for a subroutine call.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は、動作機能記述あるいは
ビヘイビア記述によって動作が表わされた論理回路を合
成する高位合成装置に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a high-level synthesis apparatus for synthesizing a logic circuit whose behavior is represented by a behavioral function description or a behavioral description.

【0002】[0002]

【従来の技術】近年、LSIの大規模化が進み、それに
伴ってLSI設計の期間短縮のため、論理回路を自動的
に合成する論理合成システムが用いられてきている。論
理合成システムを用いて論理回路を設計する際には、機
能記述言語により設計対象の動作を記述する必要があ
る。
2. Description of the Related Art In recent years, the scale of LSI has been increased, and accordingly, a logic synthesis system for automatically synthesizing logic circuits has been used in order to shorten the period of LSI design. When designing a logic circuit using a logic synthesis system, it is necessary to describe the behavior of the design target in a functional description language.

【0003】従来、機能記述言語はレジスタ転送レベル
の言語であった。レジスタ転送レベルの言語では、設計
対象のレジスタ、演算器などのハードウェア構成及び各
動作周期(以下、クロック・サイクルという)毎のレジ
スタ間のデータの流れと処理を記述する。この言語を用
いて論理回路を設計するには、レジスタ、演算器等のハ
ードウェアに関する専門知識が必要とされる。
Conventionally, the function description language has been a register transfer level language. The register transfer level language describes the hardware configuration of registers to be designed, arithmetic units, etc., and the data flow and processing between the registers for each operation cycle (hereinafter referred to as clock cycle). To design a logic circuit using this language, specialized knowledge about hardware such as registers and arithmetic units is required.

【0004】このため、最近ではハードウェアの専門知
識を必要としない設計対象の動作のみを記述する動作機
能記述(ビヘイビア記述ともいう)から論理回路を合成
する高位合成システムによる高位合成装置の開発が行わ
れてきている。動作機能記述ではハードウェアの構成を
意識せずに設計対象の動作仕様をプログラムと同様にア
ルゴリズミックに記述できる。
Therefore, recently, development of a high-level synthesis apparatus by a high-level synthesis system for synthesizing a logic circuit from a behavioral function description (also referred to as a behavioral description) that describes only a behavior of a design object that does not require hardware expertise Has been done. In the behavioral function description, the behavioral specifications of the design target can be described algorithmically like a program without considering the hardware configuration.

【0005】アルゴリズミックに記述された動作を論理
回路で実行可能にするためには、前記のように記述され
た動作を各クロック・サイクル毎に実行される動作に分
割する処理、すなわちステート分割の処理が必要とな
る。1ステートにおける動作は1クロック・サイクルで
実行され、異なるステート間における演算データの受け
渡しにはレジスタが用いられる。
In order to enable an algorithmically described operation to be executed by a logic circuit, a process of dividing the operation described above into an operation to be executed every clock cycle, that is, a state division Processing is required. The operation in one state is executed in one clock cycle, and a register is used to transfer operation data between different states.

【0006】この高位合成システムでは、動作機能記述
で表わされた設計対象の動作のステート分割の処理を行
い、ステート間で演算データの受け渡しがある場合、そ
の演算データに対応した動作機能記述中の演算対象とな
る変数をレジスタに割付ける。
In this high-level synthesis system, the process of dividing the operation of the design target represented by the behavioral function description is performed, and when the operation data is transferred between the states, the operation function description corresponding to the operation data is being performed. Allocate the variable to be operated on in the register.

【0007】従来の高位合成装置では、変数をレジスタ
に割付ける手法として、動作機能記述中の変数が複数の
ステートに渡っているかを示す変数のライフ・タイムを
調べ、ライフ・タイムが重ならない変数同士をエッジで
結び、クリーク分割アルゴリズムを適用する事によりレ
ジスタ割付けを行うグラフ理論を用いた手法がある。あ
るいは、変数をライフ・タイムの昇順にソートし、ソー
トされた順にライフ・タイムが重ならない変数を次々と
同一のレジスタに割付けていくレフト・エッジ・アルゴ
リズムを用いた手法がある。
In the conventional high-level synthesis apparatus, as a method of allocating variables to registers, the life times of the variables indicating whether the variables in the behavioral function description span a plurality of states are checked, and the variables whose life times do not overlap each other are examined. There is a method using graph theory in which registers are allocated by connecting each other with an edge and applying a clique division algorithm. Alternatively, there is a method using a left edge algorithm in which variables are sorted in ascending order of lifetime and variables whose lifetimes do not overlap in the sorted order are assigned to the same register one after another.

【0008】前者の手法としては、例えば、C.J. Tseng
and D.P. Siewiorek,"Automated Synthesis of Data P
aths in Digital Systems,"IEEE Transactions on Comp
uter-Aided Design, vol. CAD-5, pp. 379-395,July 19
86.に挙げられる手法があり、後者の手法としては、例
えば、F.J. Kurdahi and A.C. Parker,"REAL: A Progra
m for Register Allocation,"in Proceeding of the 24
th ACM/IEEE Design Automation Conference,pp. 210-2
15, ACM/IEEE,June 1987.に挙げられる手法がある。
The former method is, for example, CJ Tseng.
and DP Siewiorek, "Automated Synthesis of Data P
aths in Digital Systems, "IEEE Transactions on Comp
uter-Aided Design, vol. CAD-5, pp. 379-395, July 19
There is a method listed in 86. The latter method is, for example, FJ Kurdahi and AC Parker, "REAL: A Progra.
m for Register Allocation, "in Proceeding of the 24
th ACM / IEEE Design Automation Conference, pp. 210-2
15, ACM / IEEE, June 1987.

【0009】これらのような手法を用いて変数が割付け
られたレジスタを基にして、高位合成システムは論理回
路を合成する。その技法としては、例えば、P.G. Pauli
n, J.P. Knight, and E.F. Girczyc,"HAL: A Multi-Par
adigm Approach to Automatic Data Path Synthesis,"i
n Proceeding of the 23rd ACM/IEEE design Automatio
n Conference,pp. 263-270, ACM/IEEE, July 1986.に挙
げられる技法がある。
The high-level synthesis system synthesizes a logic circuit on the basis of a register to which a variable is assigned by using such a technique. The technique is, for example, PG Pauli
n, JP Knight, and EF Girczyc, "HAL: A Multi-Par
adigm Approach to Automatic Data Path Synthesis, "i
n Proceeding of the 23rd ACM / IEEE design Automatio
n Conference, pp. 263-270, ACM / IEEE, July 1986.

【0010】しかしながら、前述した手法では、各変数
の属する演算を考慮せずにその変数をレジスタに割付け
るため、演算器及びレジスタの入力端子に余分なマルチ
プレクサが必要になる等、冗長な論理回路が合成され
る。
However, in the above-mentioned method, since the variable is assigned to the register without considering the operation to which each variable belongs, an extra multiplexer is required for the input terminal of the arithmetic unit and the register, and the redundant logic circuit is required. Is synthesized.

【0011】例えば、図19のようなステート分割後の
データフローから論理回路を合成する場合を考える。図
19は、動作機能記述によって表わされた動作をステー
ト分割した後のデータの流れを表しており、この例では
ステート1〜3に分割されている。このデータフローか
らレフト・エッジ・アルゴリズムを用いてレジスタ割付
けを行うと図20のようになる。
For example, consider a case where a logic circuit is synthesized from a data flow after state division as shown in FIG. FIG. 19 shows a data flow after the operation represented by the operation function description is divided into states, and in this example, the operation is divided into states 1 to 3. FIG. 20 shows register allocation from this data flow using the left edge algorithm.

【0012】この図から、合成される論理回路には4つ
のレジスタが必要であり、例えばステート1のレジスタ
X1とステート3のレジスタZ1が共用されていること
が分かる。このレジスタ割付けを基にして合成された論
理回路のブロック図を図21に示す。図21の論理回路
では、レジスタ11や演算機12の入力にマルチプレク
サ13が多数必要とされており、複雑な回路構成となっ
ている。
From this figure, it can be seen that the logic circuit to be synthesized requires four registers, for example, the register X1 in state 1 and the register Z1 in state 3 are shared. FIG. 21 shows a block diagram of a logic circuit synthesized based on this register allocation. In the logic circuit of FIG. 21, a large number of multiplexers 13 are required for the inputs of the register 11 and the arithmetic unit 12, and have a complicated circuit configuration.

【0013】一方、従来の高位合成装置においては、ビ
ヘイビア記述中の各配列変数に対し、1対1に対応した
メモリを割当てて合成していた。例えば、図8のビヘイ
ビア記述中の各配列変数aa[128],bb[12
8]に対し、共にデータサイズ128のメモリaaとメ
モリbbを割当てていた。
On the other hand, in the conventional high-level synthesis apparatus, a memory corresponding to one-to-one is assigned to each array variable in the behavioral description and synthesis is performed. For example, each array variable aa [128], bb [12 in the behavior description of FIG.
8], a memory aa and a memory bb each having a data size of 128 are allocated.

【0014】これらの配列変数aa,bbに対し、1つ
のメモリを割当てるためには、aabb[256]など
と記述しなければならない。このように、並列動作は意
識しないレベルのビヘイビア記述で予め最適なメモリ構
成を考慮して、配列変数を用いた記述を行うことは非常
に困難である。
In order to allocate one memory to these array variables aa and bb, it must be described as aabb [256]. As described above, it is very difficult to perform description using array variables in consideration of an optimal memory configuration in advance in behavioral description that does not consider parallel operation.

【0015】このため、種々のメモリ構成に応じた配列
変数を記述するには、その都度設計者がビヘイビア記述
中の配列変数に関する部分を書き直して、高位合成を実
行し、試行錯誤的に最良のものを選択しなければならな
い。
Therefore, in order to describe the array variable according to various memory configurations, the designer rewrites the part relating to the array variable in the behavior description each time, executes high-level synthesis, and performs the best trial and error. You have to choose one.

【0016】しかしながら、従来の方法では、ビヘイビ
ア記述を書き換えるための手間が大きいこと、ビヘイビ
ア記述自体を書き換えるためにビヘイビア記述中に誤り
が生じ易く、このためにビヘイビア記述のシミュレーシ
ョンによる検証を再度行う必要が生じる恐れがある。
However, in the conventional method, it takes a lot of time and effort to rewrite the behavior description, and an error is apt to occur in the behavior description because the behavior description itself is rewritten. For this reason, it is necessary to perform verification of the behavior description again by simulation. May occur.

【0017】また一方、ビヘイビア記述中には、複数の
サブルーチンコールやサブルーチンが含まれており、こ
れらにハードウェアブロックを割り当てる方法として、
同じサブルーチンコールに対してそれぞれ別のハードウ
ェアブロックを割り当てる方法がある。
On the other hand, the behavioral description includes a plurality of subroutine calls and subroutines, and a method of assigning a hardware block to these is as follows.
There is a method of assigning different hardware blocks to the same subroutine call.

【0018】しかしながら、この方法では、論理回路の
設計を行うと回路規模が大きくなってしまう。これは、
階層的に書かれた記述を平坦な構造にしてしまう為に生
じるもので、全ての同じサブルーチンコールでもそれぞ
れ別の物として取り扱っているからである。
However, in this method, the circuit scale becomes large when the logic circuit is designed. this is,
This occurs because the description written hierarchically is made into a flat structure, and all the same subroutine calls are treated as different things.

【0019】例えば、実際は時間的に全く重複のない時
刻に演算している2つの同じサブルーチンに対しても、
それぞれ2つの同じハードウェアブロックを与えてい
る。このような性質を持つ複数のサブルーチンコールに
対しては、一つのハードウェアブロックだけを対応させ
るのが理想的である。
For example, for two identical subroutines that are actually operating at times that do not overlap at all in terms of time,
Each gives two identical hardware blocks. Ideally, only one hardware block should be associated with a plurality of subroutine calls having such properties.

【0020】このため、同じサブルーチンコールに対し
て一つのハードウェアブロックを対応させるという方法
が考えられる。しかしながら、この方法では、演算時間
が重複した場合、並列動作が余り行えない回路構成とな
り、回路規模は小さくてすむのだが処理時間を満足させ
ることができない。
Therefore, a method of corresponding one hardware block to the same subroutine call can be considered. However, in this method, when the calculation times are overlapped, the parallel operation cannot be performed so much, and the circuit scale can be small, but the processing time cannot be satisfied.

【0021】そこで、これらのサブルーチンコールとハ
ードウェアの対応を設計者が行うという方法が考えられ
る。すなわち、演算時間が重複しない同じサブルーチン
コールに対しては一つのハードウェアブロックを割り当
て、重複する同じサブルーチンコールに対してはそれぞ
れ別のハードウェアブロックを割り当てることを設計者
が行うものである。
Therefore, a method is conceivable in which the designer makes correspondence between these subroutine calls and the hardware. That is, the designer assigns one hardware block to the same subroutine call whose operation times do not overlap, and assigns different hardware blocks to the same subroutine call that overlaps.

【0022】しかしながら、サブルーチンを実行するハ
ードウェアブロックの演算時間は必ずしも一定でなく、
与えられたデータにより様々に変化することから調査を
行うだけでも大変な作業である。さらに、それらを制御
する回路部分の変更も必要となるので設計者の抱える負
担が膨大なものになってしまう。
However, the calculation time of the hardware block that executes the subroutine is not always constant,
It is a difficult task just to carry out a survey because it varies depending on the given data. Further, it is necessary to change the circuit part for controlling them, which results in a huge burden on the designer.

【0023】[0023]

【発明が解決しようとする課題】このように、従来の高
位合成装置においては、レジスタに割付ける各変数の属
する演算を考慮していないために、演算器及びレジスタ
の入力端子に余分なマルチプレクサなどの制御回路が必
要になり、冗長な論理回路が合成されるという問題があ
った。
As described above, in the conventional high-level synthesis apparatus, since the arithmetic operation to which each variable assigned to the register belongs is not taken into consideration, an extra multiplexer or the like is added to the input terminals of the arithmetic unit and the register. However, there is a problem in that redundant logic circuits are synthesized.

【0024】また、ビヘイビア記述中の配列変数に対し
て種々のメモリを割当てるには、ビヘイビア記述を書き
換えなければならず、手間や誤りが生ずるという問題が
あった。
Further, in order to allocate various memories to the array variables in the behavioral description, the behavioral description must be rewritten, which causes a trouble and an error.

【0025】さらに、従来の高位合成装置では、複数の
同じサブルーチンコールに対してそれぞれ別のハードウ
ェアブロックを割り当てる方法や、同じサブルーチンコ
ールに対しては1つのハードウェアブロックを割り当て
る方法、または設計者の介入により上記2つの方法を組
み合わせてハードウェアブロックを割り当てる方法があ
った。
Further, in the conventional high-level synthesizer, a method of assigning different hardware blocks to a plurality of the same subroutine calls, a method of assigning one hardware block to the same subroutine calls, or a designer There was a method of allocating a hardware block by combining the above two methods by the intervention of.

【0026】しかしながら、これらの方法では、回路規
模が膨大な物になったり、処理時間を満足させることが
できなかったり、設計者の負担が大きくなるという問題
があった。
However, these methods have the problems that the circuit scale becomes enormous, the processing time cannot be satisfied, and the burden on the designer increases.

【0027】本発明は上記のような従来技術の欠点を除
去するもので、第1の発明の目的とするところは、合成
後に余分な制御回路が不要となり、構成が簡単な論理回
路を合成することができる高位合成装置を提供すること
にある。
The present invention eliminates the above-mentioned drawbacks of the prior art. The object of the first invention is to synthesize a logic circuit having a simple structure by eliminating the need for an extra control circuit after synthesis. It is to provide a high-level synthesizer capable of performing.

【0028】また、第2の発明の目的とするところは、
記述を書き直さなくても、メモリ構成を変更した種々の
高位合成を容易に誤りなく行うことができ、高品質の高
位合成結果を得ることを可能とした高位合成装置を提供
することにある。
The object of the second invention is as follows.
It is an object of the present invention to provide a high-level synthesis apparatus capable of easily performing various high-level synthesis with a changed memory configuration without rewriting and without fail to obtain a high-quality high-level synthesis result.

【0029】さらに、第3の発明の目的とするところ
は、サブルーチンが実行する演算時間の重複状態を調
べ、各サブルーチンコールに必要となるハードウェアブ
ロックを割り当てることにより、並列動作が可能で、小
規模な論理回路を合成することができる高位合成装置を
提供することにある。
Further, the object of the third invention is to examine the overlapping state of the operation time executed by the subroutines and allocate the necessary hardware blocks to each subroutine call, thereby enabling parallel operation and small operation. It is to provide a high-level synthesis device capable of synthesizing a large scale logic circuit.

【0030】[0030]

【課題を解決するための手段】上記目的を達成するた
め、第1の発明の高位合成装置は、動作機能記述によっ
て表わされた論理回路の動作を、動作周期毎にステート
分割するステート分割手段と、このステート分割手段に
よってステート分割された前記動作機能記述中の演算対
象となる変数を解析し、各ステート毎に前記変数に対応
するレジスタを求める変数解析手段と、この変数解析手
段によって求められた各ステート毎のレジスタを、異な
るステート間で共用するようにレジスタ割付けを行うマ
ージ実行手段とから構成されている。
To achieve the above object, the high-level synthesis apparatus of the first invention is a state dividing means for dividing the operation of the logic circuit represented by the operation function description into states for each operation cycle. And a variable analysis means for analyzing a variable to be operated in the operation function description which is state-divided by the state division means and obtaining a register corresponding to the variable for each state, and the variable analysis means. And a merge execution means for allocating the register for each state so that the register is shared between different states.

【0031】また、第2の発明の高位合成装置は、ビヘ
イビア記述中の配列変数に対するメモリの割当て方を示
すコマンドを入力するコマンド入力手段と、入力された
コマンドの割当て方を解析するメモリ割当てコマンド解
析手段と、解析された割当て方に応じて配列変数に対す
るメモリを割り当てるメモリ割当てコマンド処理手段
と、ビヘイビア記述からRTL(レジスタ転送レベル)
情報を生成するRTL情報生成手段とから構成されてい
る。
The high-level synthesis apparatus according to the second aspect of the present invention is a command input means for inputting a command indicating how to allocate memory to the array variable in the behavior description, and a memory allocation command for analyzing how to allocate the input command. Analysis means, memory allocation command processing means for allocating memory for array variables according to the analyzed allocation method, and behavior description to RTL (register transfer level)
It is composed of RTL information generating means for generating information.

【0032】さらに、第3の発明の高位合成装置は、ビ
ヘイビア記述を構文解析し、記述中の複数のサブルーチ
ンコールの実行順序関係を求める構文解析手段と、求め
られた実行順序関係から、前記複数のサブルーチンコー
ルによるツリー状の階層構造を作成する呼び出しツリー
作成手段と、前記実行順序関係と階層構造に基づいて各
サブルーチンコールに対応するサブルーチンの演算時間
を計算する演算時間解析手段と、計算された各サブルー
チンの演算時間の重複状態を解析するライフタイム解析
手段と、解析された演算時間の重複状態から、サブルー
チンを実行するハードウェアブロックの必要な個数を導
き出し、各サブルーチンコールに対してハードウェアブ
ロックの割り当てを行うハードウェアブロック割り当て
手段とから構成されている。
Further, the high-level synthesis apparatus of the third invention parses the behavioral description and parses a plurality of subroutine calls in the description to obtain an execution order relation, and a plurality of execution order relations from the obtained execution order relation. Call tree creating means for creating a tree-like hierarchical structure by the subroutine call, and operation time analyzing means for calculating the operation time of the subroutine corresponding to each subroutine call based on the execution order relationship and the hierarchical structure. A lifetime analysis means for analyzing the overlapping state of the calculation time of each subroutine, and the necessary number of hardware blocks for executing the subroutine are derived from the analyzed overlapping state of the calculation time, and the hardware block for each subroutine call. Hardware block allocation means for allocating To have.

【0033】[0033]

【作用】上記のような構成により、第1の発明は、ステ
ート分割手段によってステート分割された動作機能記述
を基にし、変数解析手段において各ステート毎に必要な
レジスタを求める。各変数の属する演算を考慮したマー
ジ規則を参照し、マージ実行手段においてレジスタの共
用化を実行する。そして、共用化されたレジスタを基に
し、論理回路を合成している。
According to the first aspect of the present invention having the above-described structure, the register required for each state is obtained in the variable analyzing means based on the operation function description divided by the state dividing means. With reference to the merge rule considering the operation to which each variable belongs, the merge execution means executes register sharing. Then, the logic circuit is synthesized based on the shared register.

【0034】また、第2の発明は、ビヘイビア記述中の
配列変数に対する合成回路のメモリ構成の割当て方を示
すコマンドを入力すると、メモリ割当てコマンド解析手
段がこれを解析する。メモリ割当てコマンド処理手段が
入力されたコマンドに応じて、配列変数に対するメモリ
を割り当て、RTL情報を生成して論理回路を合成して
いる。
According to the second aspect of the invention, when a command indicating how to allocate the memory configuration of the synthesis circuit to the array variable in the behavior description is input, the memory allocation command analysis means analyzes it. The memory allocation command processing means allocates the memory for the array variable according to the input command, generates the RTL information, and synthesizes the logic circuit.

【0035】さらに、第3の発明は、入力されたビヘイ
ビア記述からデータと制御の流れを解析しサブルーチン
の呼び出しツリーを作成する。また、各サブルーチンに
対してサブルーチン全体の演算時間を解析する。これは
前述の呼び出しツリーを利用してボトムアップ方式に行
われる。
Furthermore, the third aspect of the invention analyzes the data and control flow from the input behavior description and creates a call tree for the subroutine. Also, the calculation time of the entire subroutine is analyzed for each subroutine. This is done bottom up using the call tree described above.

【0036】得られたサブルーチンの演算時間解析結果
とその他の演算の演算時間解析結果よりサブルーチンの
ライフタイム(サブルーチンの実行開始時間と終了時
間)を解析する。この段階でライフタイムの重複状態を
判断し、どのサブルーチンを同じハードウェアブロック
とするかを決定する。
The lifetime of the subroutine (subroutine execution start time and end time) is analyzed from the obtained calculation time analysis result of the subroutine and the calculation time analysis result of other calculations. At this stage, the overlapping state of lifetimes is determined, and which subroutine is to be the same hardware block is determined.

【0037】ビヘイビア記述中に条件ループなどが含ま
れている場合などはライフタイム解析の結果が不定の場
合が生じるが、この場合はライフタイムを変数として取
扱い、同じハードウェアブロックを利用する場合は、条
件ループによる処理が終了するまでサブルーチンの実行
を待つようにハードウェアを自動的に設計する。
When the behavior description includes a conditional loop or the like, the result of the lifetime analysis may be undefined. In this case, if the lifetime is treated as a variable and the same hardware block is used, , The hardware is automatically designed to wait for the execution of the subroutine until the processing by the conditional loop is completed.

【0038】[0038]

【実施例】以下、本発明の実施例を図面を参照して説明
する。
Embodiments of the present invention will be described below with reference to the drawings.

【0039】第1の発明 図1に、第1の発明の高位合成装置の一実施例の構成図
を示す。
First Invention FIG. 1 shows a block diagram of an embodiment of the high-level synthesis apparatus of the first invention.

【0040】動作機能記述入力部1は、動作機能記述を
ステート分割部2に入力する。
The operation function description input unit 1 inputs the operation function description into the state dividing unit 2.

【0041】ステート分割部2は、動作機能記述入力部
1より入力された記述によって表わされる動作を、各ク
ロック・サイクル毎に実行される動作にステート分割す
る。変数解析部3は、ステート分割部2においてステー
ト分割された動作機能記述に基づき、ステート間で受け
渡しの必要な演算対象となる変数を解析し、各ステート
で必要とされるレジスタを求める。
The state division unit 2 divides the operation represented by the description input from the operation function description input unit 1 into the operations executed for each clock cycle. The variable analysis unit 3 analyzes a variable that is an operation target that needs to be passed between the states based on the operation function description that is divided by the state division unit 2, and obtains a register required in each state.

【0042】レジスタ・リスト記憶部4は、変数解析部
3で求めたレジスタを記憶する。
The register list storage unit 4 stores the registers obtained by the variable analysis unit 3.

【0043】マージ実行部5は、変数解析部3で求めた
レジスタに対し、マージ規則ライブラリ6に登録されて
いるマージ規則に基づいてマージを行う。
The merge execution unit 5 merges the registers obtained by the variable analysis unit 3 based on the merge rule registered in the merge rule library 6.

【0044】合成部7は、マージされたレジスタ割付け
の結果を用いて論理回路を合成する。
The synthesizing unit 7 synthesizes a logic circuit using the merged result of register allocation.

【0045】次に、図1で示した変数解析部3におけ
る、ステート分割後の各ステートで必要とされるレジス
タの求め方を説明する。
Next, how to obtain the registers required in each state after the state division in the variable analysis unit 3 shown in FIG. 1 will be described.

【0046】図2は、この変数解析部3による処理手順
を示すフローチャートである。
FIG. 2 is a flow chart showing a processing procedure by the variable analysis unit 3.

【0047】まず、最初のステート中の変数の解析を実
行する(ステップ101)。その結果、次のステートに
受け渡される変数を、変数名とステートの番号と変数の
属する演算の組としてレジスタ・リスト記憶部4に登録
する(ステップ102)。この操作を各ステートに渡り
繰り返す(ステップ102〜104)。
First, analysis of variables in the first state is executed (step 101). As a result, the variable passed to the next state is registered in the register list storage unit 4 as a set of the variable name, the state number, and the operation to which the variable belongs (step 102). This operation is repeated for each state (steps 102 to 104).

【0048】この処理を、図19で示したステート分割
後のデータフローを用いて説明する。
This processing will be described using the data flow after state division shown in FIG.

【0049】例えば、加算演算が行われるステート1に
おいて変数を解析することにより、変数x1,x4,y
1に対応するエッジがステート1とステート2の境界を
越えている。従って、これらの変数は次のステート2に
受け渡される必要があることがわかる。同様な解析を各
ステートに渡って実行する。
For example, by analyzing the variables in the state 1 in which the addition operation is performed, the variables x1, x4, y
The edge corresponding to 1 crosses the boundary between state 1 and state 2. Therefore, it can be seen that these variables need to be passed to the next state 2. Perform similar analysis across states.

【0050】この結果得られた、各ステート毎に必要と
されるレジスタを図3に示す。同図は、例えば、ステー
ト1には変数x1,x2,x3,x4に対応するレジス
タ(図中、太線)が必要であることを示している。
The registers required for each state obtained as a result are shown in FIG. The figure shows that, for example, state 1 requires registers (thick lines in the figure) corresponding to variables x1, x2, x3, and x4.

【0051】次に、図1で示したマージ実行部5におけ
る、レジスタのマージ方法を説明する。マージのフロー
チャートを図4に示す。
Next, a method of merging registers in the merge execution unit 5 shown in FIG. 1 will be described. A flow chart of merging is shown in FIG.

【0052】マージの際には、マージ規則ライブラリ6
に登録さされたマージ規則を参照してマージが実行され
る。マージ規則を、規則適用の優先順に下記に示す。
When merging, the merge rule library 6
The merge is executed by referring to the merge rule registered in. The merge rules are shown below in order of priority for rule application.

【0053】マージ規則1.同種の演算の入力変数に対
応したレジスタをマージする。
Merge Rule 1. The registers corresponding to the input variables of the same kind of operation are merged.

【0054】マージ規則2.同種の演算の出力変数に対
応したレジスタをマージする。
Merge Rule 2. The registers corresponding to the output variables of the same type of operation are merged.

【0055】マージ規則3.異種の演算の入力変数に対
応したレジスタをマージする。
Merge Rule 3. Merge registers corresponding to input variables of different operations.

【0056】マージ規則4.異種の演算の出力変数に対
応したレジスタをマージする。
Merge Rule 4. Merge the registers corresponding to the output variables of different operations.

【0057】マージ規則5.同種の演算の入力変数及び
出力変数に対応したレジスタをマージする。
Merge Rule 5. The registers corresponding to the input variables and output variables of the same kind of operation are merged.

【0058】マージ規則6.同一変数に対応したレジス
タをマージする。
Merge Rule 6. Merge the registers corresponding to the same variable.

【0059】以下、図19で示したデータフローのマー
ジ方法を、図4及びマージ規則を用いて説明する。
The data flow merging method shown in FIG. 19 will be described below with reference to FIG. 4 and the merging rule.

【0060】まず、マージ規則1を適用する事により、
1つの加算器で実行したい演算の入力変数x2に対応し
たレジスタx2はステート1に、x1はステート2に属
しているので、これら2つのレジスタx1,x2はマー
ジ可能である(ステップ201〜203)。この結果、
レジスタx1とx2がマージされる(ステップ20
4)。
First, by applying the merge rule 1,
Since the register x2 corresponding to the input variable x2 of the operation to be executed by one adder belongs to the state 1 and x1 belongs to the state 2, these two registers x1 and x2 can be merged (steps 201 to 203). .. As a result,
Registers x1 and x2 are merged (step 20)
4).

【0061】同様にステート1に属するレジスタx3と
ステート2に属するレジスタy1がマージ規則1により
マージ可能であるため、マージされる(ステップ201
〜204)。
Similarly, since the register x3 belonging to the state 1 and the register y1 belonging to the state 2 can be merged by the merge rule 1, they are merged (step 201).
~ 204).

【0062】次に、マージ規則2を適用する前に、ステ
ート2に同一の変数y1が現われているので、レジスタ
x3とy1とのマージ操作に関与しない、乗算への入力
変数y1をレジスタ・リスト記憶部4から削除する。そ
して、出力変数y1とz1とに対応したレジスタをマー
ジする(ステップ205,206)。
Next, before applying the merge rule 2, since the same variable y1 appears in the state 2, the input variable y1 to the multiplication not involved in the merge operation of the registers x3 and y1 is registered in the register list. It is deleted from the storage unit 4. Then, the registers corresponding to the output variables y1 and z1 are merged (steps 205 and 206).

【0063】さらに、マージ規則5,6を適用すること
により、図5に示すレジスタ割付けの結果が得られる。
図5から分かるように、ステート1で用いられるレジス
タx2とステート2で用いられるレジスタx1とが共用
化されている。他のレジスタも同様に共用化されてい
る。
Further, by applying the merge rules 5 and 6, the result of register allocation shown in FIG. 5 can be obtained.
As can be seen from FIG. 5, the register x2 used in the state 1 and the register x1 used in the state 2 are shared. Other registers are similarly shared.

【0064】このマージ結果を基にして論理回路を合成
部7で合成すると、図6のようになる。図21の従来の
論理回路と比べると、ファンアウト数が1、ファンイン
数が1、マルチプレクサ13の数が1減少している。
When the synthesizing unit 7 synthesizes the logic circuit based on the merged result, the result is as shown in FIG. Compared to the conventional logic circuit of FIG. 21, the number of fan-outs is 1, the number of fan-ins is 1, and the number of multiplexers 13 is decreased by 1.

【0065】第2の発明 図7に、第2の発明による高位合成装置の構成を示す。
以下では、簡単のため、メモリはすべて単一ポート(異
なる番地のデータを同時には読み書きできない)とす
る。
Second Invention FIG. 7 shows the configuration of a high-level synthesis apparatus according to the second invention.
In the following, for simplification, all the memories have a single port (data of different addresses cannot be read / written at the same time).

【0066】入出力装置21から、ビヘイビア記述、メ
モリ割当てコマンドが入力されると、ビヘイビア記述解
析部22はビヘイビア記述を解析し、データフロー表現
に変換して設計情報記憶部28に格納する。
When the behavior description and the memory allocation command are input from the input / output device 21, the behavior description analysis unit 22 analyzes the behavior description, converts it into a data flow expression, and stores it in the design information storage unit 28.

【0067】図8にビヘイビア記述の記述の一例を示
し、図9に図8のビヘイビア記述に対応したデータフロ
ー表現の例を示す。これらの図においては、データサイ
ズ128の配列変数をaa,bbとし、aaのi番目に
3を、bbのi番目に5を入力することを表わしてい
る。
FIG. 8 shows an example of description of the behavior description, and FIG. 9 shows an example of data flow expression corresponding to the behavior description of FIG. In these figures, the array variables of the data size 128 are aa and bb, and 3 is input to the i-th of aa and 5 is input to the i-th of bb.

【0068】次に、メモリ割当てコマンド解析部23
は、メモリ割当てコマンドを解析し、メモリ割当てコマ
ンド処理部24を起動する。メモリ割当てコマンド処理
部24は、メモリ割当てコマンド解析結果に従って設計
情報記憶部28に格納されたデータフロー表現を修正す
る。
Next, the memory allocation command analysis unit 23
Analyzes the memory allocation command and activates the memory allocation command processing unit 24. The memory allocation command processing unit 24 corrects the data flow expression stored in the design information storage unit 28 according to the memory allocation command analysis result.

【0069】図10に、メモリ割当てコマンド処理部2
4の処理フローを示す。
FIG. 10 shows the memory allocation command processing unit 2
4 shows a processing flow of No. 4.

【0070】図8に示したビヘイビア記述に対し、例え
ば図11(a)に示すようなメモリ割当てコマンドが設
計者によって入力されると、メモリ割当てコマンド解析
部23は、コマンドの種類としてacat,変更前名1
としてaa,変更前名2としてbb,変更後名としてa
abb,変更後サイズとして256を解析し、メモリ割
当てコマンド処理部24を起動する。
When the designer inputs a memory allocation command as shown in FIG. 11A to the behavior description shown in FIG. 8, the memory allocation command analysis unit 23 changes the command type to acat or change. First name 1
As a, name as before 2 as bb, name after as a
256 is analyzed as the abb and the changed size, and the memory allocation command processing unit 24 is activated.

【0071】メモリ割当てコマンド処理部24は、図1
0に示した処理フローに従い処理を進める。まず、変更
前名1 aa,変更前名2 bb,変更後名 aab
b,変更後サイズ 256を得る(ステップ301)。
コマンドの種類はacatであるから(ステップ30
2)、データフロー表現中のaaをaabbに置き換え
(ステップ303)、bbをアドレスに256/2=1
28を加算してaabbに置き換える(ステップ30
4)。この結果、図11(b)に示すデータフロー表現
に修正される。すなわち、前半にはaaのデータが、後
半にはbbのデータが設定される。
The memory allocation command processing unit 24 is shown in FIG.
The process proceeds according to the process flow shown in 0. First, the name before change 1 aa, the name before change 2 bb, the name after change aab
b, the changed size 256 is obtained (step 301).
The command type is acat (step 30
2), aa in the data flow expression is replaced with aabb (step 303), and bb is 256/2 = 1 as an address
Add 28 and replace with aabb (step 30
4). As a result, the data flow expression shown in FIG. 11B is corrected. That is, aa data is set in the first half, and bb data is set in the second half.

【0072】また、図12(a)に示すようなメモリ割
当てコマンドが入力された場合は、メモリ割当てコマン
ド解析部23は、コマンドの種類としてamerge,
変更前名1としてaa,変更前名2としてbb、変更後
名としてaabb,変更後サイズとして256を解析
し、メモリ割当てコマンド処理部24を起動する。
When a memory allocation command as shown in FIG. 12 (a) is input, the memory allocation command analysis unit 23 determines that the command type is "age,"
The name before change 1 is analyzed as aa, the name before change 2 is bb, the name after change is aabb, and the size after change is 256, and the memory allocation command processing unit 24 is activated.

【0073】メモリ割当てコマンド処理部24は、変更
前名1 aa,変更前名2 bb,変更後名 aab
b,変更後サイズ 256を得てる(ステップ30
1)。コマンドの種類はamergeであるから(ステ
ップ302)、データフロー表現中のaaのアドレスを
1ビット左シフトした後、aabbに置き換える(ステ
ップ305)。さらに、bbのアドレスを1ビット左シ
フトした後に1を加算し、aabbに置き換える(ステ
ップ306)。これにより、図12(b)に示すデータ
フロー表現に修正される。この処理により、aa,bb
のデータが1つずつ交互に設定される。
The memory allocation command processing unit 24 uses the name before change 1 aa, the name before change 2 bb, and the name after change aab.
b, size 256 is obtained after the change (step 30
1). Since the type of command is "age" (step 302), the address of aa in the data flow expression is left-shifted by 1 bit and then replaced with aabb (step 305). Further, after shifting the address of bb left by 1 bit, 1 is added and replaced with aabb (step 306). As a result, the data flow expression shown in FIG. 12B is corrected. By this processing, aa, bb
The data of 1 are alternately set.

【0074】なお、この第2の発明は、これら2つのコ
マンドに限らず、他のどのようなコマンドについても処
理可能なものである。
The second invention can process not only these two commands but also any other commands.

【0075】このように、メモリが割当てられた後、ス
ケジューリング処理部25は、設計情報記憶部28に格
納されたデータフロー表現を各状態(クロックサイク
ル)毎の動作に、「同一メモリの異なる番地のデータを
同時には読み書きできない。」という制約下で分割す
る。
In this way, after the memory is allocated, the scheduling processing unit 25 applies the data flow expression stored in the design information storage unit 28 to the operation of each state (clock cycle) as "different addresses of the same memory. Data cannot be read or written at the same time. "

【0076】アロケーション処理部26は、設計情報記
憶部28に格納されたデータフロー表現において、状態
をわたって保持する必要のある変数に対してなるべく少
ない数となるようにレジスタを割当て、演算オペレータ
に対してなるべく簡単なデータ転送路となるように演算
器を割当てる。
In the data flow expression stored in the design information storage unit 28, the allocation processing unit 26 allocates registers to variables that need to be held across states so that the number is as small as possible, and the arithmetic operator is assigned. On the other hand, arithmetic units are assigned so that the data transfer path is as simple as possible.

【0077】さらに、RTL情報生成部27が、この結
果をレジスタ転送レベルの言語に変換して、設計情報記
憶部28に格納するとともに、入出力装置21に出力す
る。以上のようにして、メモリ割当てコマンドに従って
配列変数に対するメモリ割当てが実現される。
Further, the RTL information generator 27 converts this result into a register transfer level language, stores it in the design information memory 28, and outputs it to the input / output device 21. As described above, the memory allocation for the array variable is realized according to the memory allocation command.

【0078】なお、今回の実施例では、2つの配列変数
に対して1つのメモリを割当てる場合を示したが、この
発明はこれに限定されるものではない。例えば、データ
サイズの大きな1つの配列変数として定義されていたも
のを、複数の小さなデータサイズのメモリに分割して割
当てることもできる。
In this embodiment, one memory is allocated to two array variables, but the present invention is not limited to this. For example, what is defined as one array variable having a large data size can be divided and allocated to a plurality of memories having a small data size.

【0079】また、複数の配列変数がある場合、1部の
配列についてのみこの第2の発明を適応し、残りの配列
に関しては従来方法による種々のメモリ割当ての組み合
わせを繰り返し実行し、最良の結果となったものを自動
的に選択するようにしても良い。
Further, when there are a plurality of array variables, the second invention is applied only to a part of the array, and for the remaining arrays, various combinations of memory allocation by the conventional method are repeatedly executed, and the best result is obtained. It is also possible to automatically select the one that has become.

【0080】第3の発明 図13は、第3の発明の高位合成装置の一実施例の構成
を示すブロック図である。
Third Invention FIG. 13 is a block diagram showing the configuration of an embodiment of the high-level synthesis apparatus of the third invention.

【0081】入力されたビヘイビア記述31は、構文解
析部32で解析された後にサブルーチンコールの実行順
序関係を表わす、接続データ33に変換される。この接
続データ33から呼び出しツリー作成部34がサブルー
チンの呼び出しツリーの作成を行う。
The input behavior description 31 is analyzed by the syntax analysis unit 32 and then converted into connection data 33 representing the relationship of execution order of subroutine calls. The call tree creation unit 34 creates a call tree for the subroutine from this connection data 33.

【0082】演算時間解析部35ではこの呼び出しツリ
ーを参考にボトムアップ式にサブルーチンの演算時間の
解析を行う。この際にサブルーチンの演算時間が不定の
場合が生じるがその場合は変数を割り当てて実行を続け
る。
The calculation time analysis section 35 analyzes the calculation time of the subroutine in a bottom-up manner with reference to this call tree. At this time, there is a case where the calculation time of the subroutine is indefinite. In that case, a variable is assigned and execution is continued.

【0083】次に、算出した演算時間を参照してサブル
ーチンライフタイム解析部36がサブルーチン毎のライ
フタイムの解析を行う。このライフタイムの解析結果を
基にハードウェアブロック割り当て部37が必要なハー
ドウェアブロックの個数、及びそれらハードウェアブロ
ックに割り当てられたサブルーチンコールの対応表、す
なわちハードウェア構成38を作成する。
Next, the subroutine lifetime analysis unit 36 analyzes the lifetime of each subroutine with reference to the calculated operation time. Based on the analysis result of the lifetime, the hardware block allocation unit 37 creates the required number of hardware blocks and the correspondence table of the subroutine calls allocated to these hardware blocks, that is, the hardware configuration 38.

【0084】図14は、入力となるビヘイビア記述の一
例である。このビヘイビア記述31を入力した構文解析
部32は接続データ33の作成を行う。作成された接続
データ33の例を図15に示した。
FIG. 14 is an example of a behavioral description which is an input. The syntax analysis unit 32, which has received the behavior description 31, creates connection data 33. An example of the created connection data 33 is shown in FIG.

【0085】mainという関数の接続データ33を表した
ものが図15(a)である。この図ではmainという関数
の中で sub1, sub3というサブルーチンがそれぞれ呼
ばれていて、かつ両者の実行順序に制限が無いことを表
している。
FIG. 15A shows the connection data 33 of the function called main. In this figure, the subroutines sub1 and sub3 are called in the function called main, and there is no restriction on the execution order of both.

【0086】一方、 sub1というサブルーチンの接続デ
ータ33を表したものが図15(b)である。これは s
ub1というサブルーチンの中で sub2, sub3というサ
ブルーチンがそれぞれ呼ばれていて、かつ両者の実行順
序は sub2の実行が最初に終了しなければいけないこと
を表している。
On the other hand, FIG. 15B shows the connection data 33 of the sub1 subroutine. This is s
Sub routines sub2 and sub3 are called in the sub routine ub1, and the execution order of both indicates that the execution of sub2 must be completed first.

【0087】この接続データ33は呼び出しツリー作成
部34に入力され、呼び出しツリーの作成が行われる。
この例が図16である。呼び出しツリーには実行の順序
関係は表されておらず、サブルーチンの階層構造のみが
表されている。本例ではmainという関数の中で sub1,
sub3のサブルーチンが呼ばれ sub1のサブルーチンの
中で sub2, sub3のサブルーチンが呼ばれていること
を表している。
This connection data 33 is input to the call tree creating section 34, and a call tree is created.
This example is shown in FIG. The call tree does not represent the order of execution, only the hierarchical structure of the subroutines. In this example, sub1, in the function called main
The sub3 subroutine is called, and the sub2 and sub3 subroutines are called in the sub1 subroutine.

【0088】これらの呼び出しツリーと接続データ33
を入力として演算時間解析部35が動作し、各サブルー
チンの演算時間が計算される。この計算は呼び出しツリ
ーをボトムアップ式にたどり実行される。例によると、
まず sub2の演算時間が計算される。 sub2ではサブル
ーチンの呼び出しを行っていないので接続データ33よ
り演算時間が計算できる。
These call tree and connection data 33
The calculation time analysis unit 35 operates by inputting, and the calculation time of each subroutine is calculated. This computation is performed bottom-up through the call tree. According to the example,
First, the calculation time of sub2 is calculated. Since the subroutine is not called in sub2, the operation time can be calculated from the connection data 33.

【0089】同様にして sub3の演算時間が計算され
る。ここで sub1の中で使われているサブルーチンの演
算時間が解ったことになるので、 sub1の演算時間が計
算できるようになる。
Similarly, the calculation time of sub3 is calculated. Since the calculation time of the subroutine used in sub1 is now known, the calculation time of sub1 can be calculated.

【0090】このようにして計算した結果を用いてサブ
ルーチンライフタイ解析部36がそれぞれのライフタイ
ムの解析を行う。行った結果が図17である。参考のた
めに上部に呼び出しツリーを書き入れてある。例えばこ
こで sub1のライフタイムはt2からt8ということに
なる。
The subroutine life tie analysis unit 36 analyzes each lifetime by using the result calculated in this way. The result obtained is FIG. The call tree is entered at the top for reference. For example, the lifetime of sub1 is t2 to t8.

【0091】最後にこの結果からハードウェアブロック
割り当て部37がそれぞれのサブルーチンに対して必要
なハードウェアブロックの個数を導き出して割り当て
る。本例では2つの sub3のサブルーチンコールが使わ
れているが両者のライフタイムの重複が無いことが解
る。そこでこの2つのサブルーチンコールは同じハード
ウェアブロックで実行可能と言う結論を出して図18の
様なハードウェア構成を取るように論理回路を構成す
る。
Finally, from this result, the hardware block allocation unit 37 derives and allocates the required number of hardware blocks to each subroutine. In this example, two subroutine calls of sub3 are used, but it can be seen that there is no overlap in the lifetime of both. Therefore, it is concluded that these two subroutine calls can be executed by the same hardware block, and the logic circuit is configured to have the hardware configuration as shown in FIG.

【0092】仮に、図17において、2つの sub3の演
算時間が重複していれば、 sub3に対するハードウェア
ブロックを2つ割り当てることになる。
If, in FIG. 17, the calculation times of two sub3s overlap, two hardware blocks will be allocated to sub3s.

【0093】なお、本例ではサブルーチンのライフタイ
ムは決定できかつ重複の無い場合であったが、記述によ
っては演算時間の解析が不可能な物もある。例えば条件
ループなどが例として挙げられる。これは条件が満たさ
れるまで何回ループするかを調べることが静的には困難
なためである。
In this example, the lifetimes of the subroutines can be determined and there is no overlap, but there are some descriptions in which the calculation of the calculation time is impossible. For example, a conditional loop is given as an example. This is because it is statically difficult to find out how many times to loop until the condition is met.

【0094】このような場合には、ライフタイムとして
変数を割り当てておく。ハードウェアブロック割り当て
部37ではこの変数時間を考慮して重複の起こりにくい
サブルーチンを対象としてハードウェアブロックを割り
当てていく。しかし、完全に重複しないという保証がな
いため、条件ループによる処理が終了したか否かをチェ
ックするコントロール回路を新たに付加してこれを回避
する。
In such a case, a variable is assigned as the lifetime. In consideration of this variable time, the hardware block allocating unit 37 allocates hardware blocks to subroutines in which duplication is unlikely to occur. However, since there is no guarantee that they will not completely overlap, a control circuit for checking whether or not the processing by the conditional loop is completed is newly added to avoid this.

【0095】つまり、後から実行されるサブルーチンに
割り当てられるハードウェアブロックに、前で実行され
ている条件ループによる処理が終わるまで待機させるコ
ントロール回路を付加する。これによって、同時に同じ
ハードウェアブロックの使用を回避する様に回路を構成
することができる。
That is, to the hardware block assigned to the subroutine to be executed later, a control circuit for waiting until the processing by the conditional loop executed before is completed is added. This allows the circuit to be configured to avoid the use of the same hardware block at the same time.

【0096】[0096]

【発明の効果】以上説明したように、第1の発明の高位
合成装置によれば、ステート分割された動作機能記述に
おいて各ステートで必要とされるレジスタを求め、変数
の属する演算を考慮したマージ規則に基づいてレジスタ
のマージを行い、論理回路を合成している。これによ
り、演算器及びレジスタの入力端子に余分なマルチプレ
クサがなくなり、構成が簡単な論理回路を得ることがで
きる。
As described above, according to the high-level synthesis apparatus of the first aspect of the invention, the registers required for each state in the state-divided behavioral function description are obtained, and merged in consideration of the operation to which the variable belongs. Registers are merged according to the rules to synthesize logic circuits. As a result, there is no extra multiplexer at the input terminals of the arithmetic unit and the register, and a logic circuit having a simple structure can be obtained.

【0097】また、第2の発明の高位合成装置によれ
ば、ビヘイビア記述を書き換えることなく、メモリ構成
を変更した種々の高位合成を容易に行うことができ、こ
の中から最も良いものを選択することにより、高品質の
高位合成結果を得ることができる。
Further, according to the high-level synthesis apparatus of the second invention, various high-level synthesis in which the memory configuration is changed can be easily performed without rewriting the behavior description, and the best one is selected from these. This makes it possible to obtain high-quality high-level synthesis results.

【0098】さらに、第3の発明の高位合成装置によれ
ば、サブルーチンの演算時間の重複を解析し、ハードウ
ェアブロックを割り当てているので、並列動作が可能
で、規模が小さい論理回路を合成でき、かつ設計者の負
担を軽減することができる。
Furthermore, according to the high-level synthesis apparatus of the third aspect of the present invention, the overlap of the calculation times of the subroutines is analyzed and the hardware blocks are allocated, so that parallel operation is possible and a small-scale logic circuit can be synthesized. Moreover, the burden on the designer can be reduced.

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

【図1】第1の発明による高位合成装置の一実施例の構
成図である。
FIG. 1 is a configuration diagram of an embodiment of a high-level synthesis apparatus according to the first invention.

【図2】図1で示した変数解析部による処理手順を示す
フローチャートである。
FIG. 2 is a flowchart showing a processing procedure by a variable analysis unit shown in FIG.

【図3】変数解析部によって求められたレジスタとステ
ートとの関係を示す図である。
FIG. 3 is a diagram showing a relationship between registers and states obtained by a variable analysis unit.

【図4】図1で示したマージ実行部によるマージの処理
手順を示すフローチャートである。
FIG. 4 is a flowchart showing a merging processing procedure by a merge execution unit shown in FIG. 1.

【図5】マージ実行部によって最終的に得られたレジス
タ割付けの結果を示す図である。
FIG. 5 is a diagram showing a result of register allocation finally obtained by a merge execution unit.

【図6】第1の発明によって合成された論理回路のブロ
ック図である。
FIG. 6 is a block diagram of a logic circuit synthesized according to the first invention.

【図7】第2の発明による高位合成装置の一実施例の構
成を示すブロック図である。
FIG. 7 is a block diagram showing a configuration of an embodiment of a high-level synthesis apparatus according to the second invention.

【図8】第2の発明の実施例で用いたビヘイビア記述の
一例を示す記述図である。
FIG. 8 is a descriptive diagram showing an example of a behavior description used in an example of the second invention.

【図9】図8で示したビヘイビア記述に対応したデータ
フロー表現である。
9 is a data flow expression corresponding to the behavior description shown in FIG.

【図10】図7で示したメモリ割当てコマンド処理部の
処理を示すフローチャートである。
10 is a flowchart showing processing of a memory allocation command processing unit shown in FIG.

【図11】第2の発明の実施例で用いたメモリ割当てコ
マンドとメモリ割当て処理結果を示す図である。
FIG. 11 is a diagram showing a memory allocation command and a memory allocation processing result used in the embodiment of the second invention.

【図12】図11と異なるメモリ割当てコマンドとメモ
リ割当て処理結果を示す図である。
FIG. 12 is a diagram showing a memory allocation command different from FIG. 11 and a memory allocation processing result.

【図13】第3の発明による高位合成装置の一実施例の
構成を示すブロック図である。
FIG. 13 is a block diagram showing the configuration of an embodiment of a high-level synthesis apparatus according to the third invention.

【図14】第3の発明の実施例で用いたビヘイビア記述
の一例である。
FIG. 14 is an example of a behavior description used in the embodiment of the third invention.

【図15】図14のビヘイビア記述から作成された接続
データである。
15 is connection data created from the behavior description in FIG.

【図16】図14のビヘイビア記述から作成された呼び
出しツリーである。
16 is a call tree created from the behavior description in FIG.

【図17】図15の接続データと図16の呼び出しツリ
ーから解析されたサブルーチンライフタイムである。
17 is a subroutine lifetime analyzed from the connection data of FIG. 15 and the call tree of FIG.

【図18】図17のサブルーチンライフタイムから割り
当てられたハードウェア構成図である。
FIG. 18 is a hardware configuration diagram assigned from the subroutine lifetime of FIG. 17;

【図19】第1の発明で用いた、ステート分割後のデー
タフローの一例を示すデータフロー図である。
FIG. 19 is a data flow diagram showing an example of a data flow after state division used in the first invention.

【図20】第1の発明に対する、従来のレジスタ割付け
方法による割付け結果を示す図である。
FIG. 20 is a diagram showing an allocation result by a conventional register allocation method for the first invention.

【図21】第1の発明に対する、従来の高位合成装置に
よって合成された論理回路のブロック図である。
FIG. 21 is a block diagram of a logic circuit synthesized by a conventional high-level synthesis device for the first invention.

【符号の説明】[Explanation of symbols]

1 動作機能記述入力部 2 ステート分割部 3 変数解析部 4 レジスタ・リスト記憶部 5 マージ実行部 6 マージ規則ライブリ 7 合成部 21 入出力装置 22 ビヘイビア記述解析部 23 メモリ割当てコマンド解析部 24 メモリ割当てコマンド処理部 25 スケジューリング処理部 26 アロケーション処理部 27 RTL情報生成部 28 設計情報記憶部 31 ビヘイビア記述 32 構文解析部 33 接続データ 34 呼び出しツリー作成部 35 演算時間解析部 36 サブルーチンライフタイム解析部 37 ハードウェアブロック割り当て部 38 ハードウェア構成 1 operation function description input unit 2 state division unit 3 variable analysis unit 4 register list storage unit 5 merge execution unit 6 merge rule library 7 synthesis unit 21 input / output device 22 behavior description analysis unit 23 memory allocation command analysis unit 24 memory allocation command Processing unit 25 Scheduling processing unit 26 Allocation processing unit 27 RTL information generation unit 28 Design information storage unit 31 Behavior description 32 Syntax analysis unit 33 Connection data 34 Call tree creation unit 35 Arithmetic time analysis unit 36 Subroutine lifetime analysis unit 37 Hardware block Assignment unit 38 Hardware configuration

Claims (3)

【特許請求の範囲】[Claims] 【請求項1】 動作機能記述によって表わされた論理回
路の動作を、動作周期毎にステート分割するステート分
割手段と、 このステート分割手段によってステート分割された前記
動作機能記述中の演算対象となる変数を解析し、各ステ
ート毎に前記変数に対応するレジスタを求める変数解析
手段と、 この変数解析手段によって求められた各ステート毎のレ
ジスタを、異なるステート間で共用するようにレジスタ
割付けを行うマージ実行手段とを有することを特徴とす
る高位合成装置。
1. A state dividing means for dividing an operation of a logic circuit represented by an operation function description into states for each operation cycle, and an operation target in the operation function description divided by the state dividing means. A variable analysis means for analyzing a variable and obtaining a register corresponding to the variable for each state, and a merge for allocating the register for each state obtained by the variable analysis means so as to be shared between different states A high-level synthesis apparatus having an executing means.
【請求項2】 ビヘイビア記述中の配列変数に対するメ
モリの割当て方を示すコマンドを入力するコマンド入力
手段と、 入力されたコマンドの割当て方を解析するメモリ割当て
コマンド解析手段と、 解析された割当て方に応じて配列変数に対するメモリを
割り当てるメモリ割当てコマンド処理手段と、 ビヘイビア記述からレジスタ転送レベル情報を生成する
レジスタ転送レベル情報生成手段とを有することを特徴
とする高位合成装置。
2. A command input means for inputting a command indicating a memory allocation method for an array variable in a behavior description, a memory allocation command analysis means for analyzing an allocation method of an input command, and an analyzed allocation method. A high-level synthesis apparatus comprising: a memory allocation command processing means for allocating a memory to an array variable in accordance therewith; and a register transfer level information generating means for generating register transfer level information from a behavior description.
【請求項3】 ビヘイビア記述を構文解析し、記述中の
複数のサブルーチンコールの実行順序関係を求める構文
解析手段と、 求められた実行順序関係から、前記複数のサブルーチン
コールによるツリー状の階層構造を作成する呼び出しツ
リー作成手段と、 前記実行順序関係と階層構造に基づいて各サブルーチン
コールに対応するサブルーチンの演算時間を計算する演
算時間解析手段と、 計算された各サブルーチンの演算時間の重複状態を解析
するライフタイム解析手段と、 解析された演算時間の重複状態から、サブルーチンを実
行するハードウェアブロックの必要な個数を導き出し、
各サブルーチンコールに対してハードウェアブロックの
割り当てを行うハードウェアブロック割り当て手段とを
有することを特徴とする高位合成装置。
3. A syntax-analyzing unit that parses a behavioral description and obtains an execution order relationship of a plurality of subroutine calls in the description, and a tree-like hierarchical structure of the plurality of subroutine calls from the obtained execution order relationship. A call tree creating means for creating, an operation time analyzing means for calculating an operation time of a subroutine corresponding to each subroutine call based on the execution order relation and the hierarchical structure, and an overlap state of the operation times of the calculated subroutines is analyzed. Deriving the required number of hardware blocks that execute the subroutine from the lifetime analysis means and the overlapped state of the analyzed operation time,
A high-level synthesis apparatus having a hardware block allocating means for allocating a hardware block to each subroutine call.
JP4071694A 1991-08-13 1992-03-27 High-level composition device Pending JPH05101141A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4071694A JPH05101141A (en) 1991-08-13 1992-03-27 High-level composition device

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP3-202829 1991-08-13
JP20282991 1991-08-13
JP4071694A JPH05101141A (en) 1991-08-13 1992-03-27 High-level composition device

Publications (1)

Publication Number Publication Date
JPH05101141A true JPH05101141A (en) 1993-04-23

Family

ID=26412808

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4071694A Pending JPH05101141A (en) 1991-08-13 1992-03-27 High-level composition device

Country Status (1)

Country Link
JP (1) JPH05101141A (en)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6505340B2 (en) 2000-01-28 2003-01-07 Sharp Kabushiki Kaisha Circuit synthesis method
US6532584B1 (en) 2000-01-28 2003-03-11 Sharp Kabushiki Kaisha Circuit synthesis method
US6704914B2 (en) 2001-07-16 2004-03-09 Sharp Kabushiki Kaisha High level synthesis method, thread generated using the same, and method for generating circuit including such threads
US7181714B2 (en) 2003-12-24 2007-02-20 Kabushiki Kaisha Toshiba Scheduler, method and program for scheduling, and apparatus for high-level synthesis
US7194724B2 (en) 2003-12-05 2007-03-20 Matsushita Electric Industrial Co., Ltd. High level synthesis method and high level synthesis apparatus
JP2009093682A (en) * 2002-03-08 2009-04-30 Mentor Graphics Corp Array transformation in behavioral synthesis tool
JP2009239344A (en) * 2008-03-25 2009-10-15 Nec Corp Description processing apparatus, description processing method and program
US7735050B2 (en) 2006-02-09 2010-06-08 Henry Yu Managing and controlling the use of hardware resources on integrated circuits
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
US7831938B2 (en) 2000-12-21 2010-11-09 Mentor Graphics Corporation Interactive interface resource allocation in a behavioral synthesis tool
US7992112B2 (en) 2006-11-07 2011-08-02 Sharp Kabushiki Kaisha Hardware verification programming description generation apparatus, high-level synthesis apparatus, hardware verification programming description generation method, hardware verification program generation method, control program and computer-readable recording medium

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6532584B1 (en) 2000-01-28 2003-03-11 Sharp Kabushiki Kaisha Circuit synthesis method
US6505340B2 (en) 2000-01-28 2003-01-07 Sharp Kabushiki Kaisha Circuit synthesis method
US7831938B2 (en) 2000-12-21 2010-11-09 Mentor Graphics Corporation Interactive interface resource allocation in a behavioral synthesis tool
US6704914B2 (en) 2001-07-16 2004-03-09 Sharp Kabushiki Kaisha High level synthesis method, thread generated using the same, and method for generating circuit including such threads
JP2009093682A (en) * 2002-03-08 2009-04-30 Mentor Graphics Corp Array transformation in behavioral synthesis tool
JP2010118081A (en) * 2002-03-08 2010-05-27 Mentor Graphics Corp Array transformation in behavioral synthesis tool
US7194724B2 (en) 2003-12-05 2007-03-20 Matsushita Electric Industrial Co., Ltd. High level synthesis method and high level synthesis apparatus
US7181714B2 (en) 2003-12-24 2007-02-20 Kabushiki Kaisha Toshiba Scheduler, method and program for scheduling, and apparatus for high-level synthesis
US8726204B2 (en) 2006-02-09 2014-05-13 Mentor Graphics Corporation Managing and controlling the use of hardware resources on integrated circuits
US7735050B2 (en) 2006-02-09 2010-06-08 Henry Yu Managing and controlling the use of hardware resources on integrated circuits
US9747398B2 (en) 2006-02-09 2017-08-29 Mentor Graphics Corporation Managing and controlling the use of hardware resources on integrated circuits
US7992112B2 (en) 2006-11-07 2011-08-02 Sharp Kabushiki Kaisha Hardware verification programming description generation apparatus, high-level synthesis apparatus, hardware verification programming description generation method, hardware verification program generation method, control program and computer-readable recording medium
JP2009239344A (en) * 2008-03-25 2009-10-15 Nec Corp Description processing apparatus, description processing method and program
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

Similar Documents

Publication Publication Date Title
US8533642B1 (en) Hardware definition language generation for frame-based processing
US7143388B1 (en) Method of transforming software language constructs to functional hardware equivalents
JP4629768B2 (en) Parallelization processing method, system, and program
US7318213B2 (en) Apparatus, method and program for behavioral synthesis including loop processing
IL106139A (en) Using finite state automata to verify systems subject to delay constraints
US9268536B2 (en) Behavior invariant optimization of maximum execution times for model simulation
US5912819A (en) Method for designing an architectural system
JPH11513512A (en) Method of manufacturing digital signal processor
JP2001109788A (en) Simulation model, its generating method, simulation method and its recording medium
JP2011096107A (en) Parallelizing method, system, and program
JPH05101141A (en) High-level composition device
US20230120227A1 (en) Method and apparatus having a scalable architecture for neural networks
Adé et al. Hardware-software codesign with GRAPE
US20230004365A1 (en) Multistage compiler architecture
JP2011170732A (en) Parallelization method, system, and program
JP2004348606A (en) Higher-order synthesizer, model creation method for hardware verification, and hardware verification method
Amellal et al. Scheduling of a control data flow graph
JP6004818B2 (en) Parallelization method, system, and program
JPH06124202A (en) Digital signal processor for executing program
Herbordt et al. A system for evaluating performance and cost of SIMD array designs
US20120226890A1 (en) Accelerator and data processing method
US10241764B2 (en) Automatically transform pass-by-value semantics into pass-by-reference implementation
JPH06231203A (en) Compilation mechanism for simulation model
JP2003067438A (en) Method for generating simulation model, method of simulation and its recording medium
JP7385536B2 (en) Software development support device and software development support method