JP2990084B2 - Arithmetic device synthesis method - Google Patents

Arithmetic device synthesis method

Info

Publication number
JP2990084B2
JP2990084B2 JP9010821A JP1082197A JP2990084B2 JP 2990084 B2 JP2990084 B2 JP 2990084B2 JP 9010821 A JP9010821 A JP 9010821A JP 1082197 A JP1082197 A JP 1082197A JP 2990084 B2 JP2990084 B2 JP 2990084B2
Authority
JP
Japan
Prior art keywords
function
function call
generating
synthesizing
global variable
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.)
Expired - Fee Related
Application number
JP9010821A
Other languages
Japanese (ja)
Other versions
JPH10207929A (en
Inventor
宗 山内
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.)
GIJUTSU KENKYU KUMIAI SHINJOHO SHORI KAIHATSU KIKO
NEC Corp
Original Assignee
GIJUTSU KENKYU KUMIAI SHINJOHO SHORI KAIHATSU KIKO
Nippon Electric Co 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 GIJUTSU KENKYU KUMIAI SHINJOHO SHORI KAIHATSU KIKO, Nippon Electric Co Ltd filed Critical GIJUTSU KENKYU KUMIAI SHINJOHO SHORI KAIHATSU KIKO
Priority to JP9010821A priority Critical patent/JP2990084B2/en
Publication of JPH10207929A publication Critical patent/JPH10207929A/en
Application granted granted Critical
Publication of JP2990084B2 publication Critical patent/JP2990084B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

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

【0001】[0001]

【発明の属する技術分野】本発明は半導体集積回路に関
し、特に半導体集積回路へのマッピングに関する。
[0001] 1. Field of the Invention [0002] The present invention relates to a semiconductor integrated circuit, and more particularly to mapping to a semiconductor integrated circuit.

【0002】[0002]

【従来の技術】従来、高度な並列処理を目指すアーキテ
クチャとして、FPGA(FieldProgramm
able Gate Array)などのプログラマブ
ルな半導体集積回路上にデータ/制御流に従ってプログ
ラムを直接マップして実行するという方式がある。プロ
グラムを半導体集積回路にマップする際に、データフロ
ーの概念を取り入れると大規模な並列性を取り出すこと
が容易になる。
2. Description of the Related Art Conventionally, FPGA (Field Programm) has been used as an architecture aiming at advanced parallel processing.
There is a method of directly mapping and executing a program in accordance with a data / control flow on a programmable semiconductor integrated circuit such as an available gate array. When mapping a program to a semiconductor integrated circuit, it is easy to take out large-scale parallelism by incorporating the concept of data flow.

【0003】この方式において、プログラムを如何に半
導体集積回路にマップするかは重要な技術課題である。
単純にデータフロー型計算モデルの概念を取り入れると
大規模な並列性を取り出すことは容易になるが、プログ
ラミングモデルとしては使いにくいものとなる。データ
フロー型計算モデルの概念と相性のよいプログラミング
モデルに基づいたプログラム言語として良く知られてい
るのは、単一代入の関数型言語である。
In this method, how to map a program to a semiconductor integrated circuit is an important technical problem.
If the concept of a data flow type computation model is simply adopted, it is easy to extract large-scale parallelism, but it becomes difficult to use as a programming model. A well-known programming language based on a programming model compatible with the concept of a data flow type computation model is a single assignment functional language.

【0004】しかし、世間に広く受け入れられているC
言語やFORTRAN等の手続型言語と比べると、単一
代入の関数型言語は制約が厳しい言語で、あまり一般的
ではなく、使いやすいとは言いがたい。
[0004] However, C which is widely accepted in the world
Compared to a language or a procedural language such as FORTRAN, a single assignment functional language is a language with strict restrictions, is not very common, and cannot be said to be easy to use.

【0005】逆に、半導体集積回路上にデータ/制御流
に従ってプログラムを直接マップする際の記述言語とし
て従来のC言語やFORTRAN等の手続型言語を用い
ることにも問題が多い。局所変数に関してはスコープに
従ってデータ流を解析することによりマップすることが
可能であるが、手続型言語につきものの大域変数の存在
が厄介である。
Conversely, using a conventional procedural language such as C language or FORTRAN as a description language for directly mapping a program in accordance with a data / control flow on a semiconductor integrated circuit also has many problems. Although local variables can be mapped by analyzing the data stream according to the scope, the existence of global variables inherent in procedural languages is cumbersome.

【0006】大域変数はプログラムの全領域で参照/代
入されるので、データ流と制御流に複雑に影響され、ス
コープの解析は容易ではない。そして、関数を抜けたら
その存在を失う局所変数と異なり、大域変数は常に変数
の実体が存在し続けなければならないので、データフロ
ー型計算モデルのようにデータが常に一か所に止まらず
に流れ続けることを基本とした計算モデルとは相性が悪
い。
Since global variables are referred to / substituted in all areas of the program, they are complicatedly affected by the data flow and the control flow, and the scope analysis is not easy. And, unlike local variables, which lose their existence after exiting the function, global variables must always have the substance of the variables, so that data does not always stay in one place like a data flow type calculation model. It is incompatible with the calculation model based on continuing.

【0007】[0007]

【発明が解決しようとする課題】本発明が解決しようと
する課題は、半導体集積回路上にデータ/制御流に従っ
てプログラムを直接マップする際の記述言語として手続
型言語を用いつつ、大規模な並列性を取り出すことがで
きる演算装置合成方法を提供することである。
SUMMARY OF THE INVENTION The problem to be solved by the present invention is to use a procedural language as a description language for directly mapping a program on a semiconductor integrated circuit according to a data / control flow while using a large-scale parallel processing. It is an object of the present invention to provide a method for synthesizing an arithmetic unit capable of extracting the characteristics.

【0008】[0008]

【課題を解決するための手段】上記のような課題を解決
するため、本発明は、手続型言語における関数起動の呼
び出し条件として、データフローの概念に基づいた、○
引数の値が揃っていること、という条件の他に、その関
数が参照する大域変数に対して、○代入している演算が
終了していること、○副作用を与える関数が終了してい
ること、という条件を加えることにより、データフロー
の概念を拡張し、大域変数という概念を用いる手続型言
語でもデータフローの概念が有する高い並列性を取り出
すことが可能になるというものである。
In order to solve the above-mentioned problems, the present invention provides a method for calling a function in a procedural language, which is based on the concept of a data flow.
In addition to the condition that the values of the arguments are the same, the operation that is substituting for the global variable referenced by the function has been completed, and the function that has side effects has been completed. , It is possible to extend the concept of data flow and extract the high parallelism of the concept of data flow even in a procedural language using the concept of global variables.

【0009】本発明は、手続型言語により記述されたプ
ログラムを半導体集積回路にマップする演算装置合成方
法において、前記手続型言語により記述された関数、及
び参照及び代入のいずれか又は両方を行う大域変数の参
照代入関係を再帰的に解析する大域変数解析段階と、大
域変数に対してどの演算及び関数呼び出しが代入するか
についての情報を保持するスコープスタックを生成する
スコープスタック生成段階と、前記スコープスタックを
成長方向の逆方向に辿り、関数呼び出し甲が参照する大
域変数に対して代入する関数呼び出し乙及び演算を前記
参照代入関係に基づいて見つけるスコープ解析段階と、
前記関数呼び出し甲の引数が揃い、かつ、前記関数呼び
出し乙及び前記演算が終了したとき、関数呼び出し甲を
起動する回路を生成する回路生成段階とを含むことを特
徴とする演算装置合成方法を提供する。
The present invention relates to a method for synthesizing an arithmetic unit for mapping a program described in a procedural language onto a semiconductor integrated circuit, and a function described in the procedural language and globally performing one or both of reference and assignment. A global variable analyzing step of recursively analyzing a reference assignment relationship of a variable, a scope stack generating step of generating a scope stack holding information on which operation and function call assigns to the global variable, and the scope Tracing the stack in the direction opposite to the growth direction, a scope analysis step of finding, based on the reference substitution relationship, a function call B and an operation to substitute for a global variable referred to by the function call A,
A circuit generating step of generating a circuit for activating the function caller when the arguments of the function caller are complete and the function caller and the operation are completed. I do.

【0010】これにより、世間で広く用いられている手
続型言語をデータフロー的な概念に基づきマップするこ
とが可能になり、使いやすさと高性能を両立することが
可能になる。
[0010] This makes it possible to map a procedural language widely used in the world based on the concept of data flow, thereby achieving both ease of use and high performance.

【0011】[0011]

【発明の実施の形態】本発明の第1の実施の形態につい
て図面を参照して説明する。
DESCRIPTION OF THE PREFERRED EMBODIMENTS A first embodiment of the present invention will be described with reference to the drawings.

【0012】図1に入力プログラムの例を示す。このプ
ログラムを半導体集積回路に直接マップして実現するこ
とを考え、特に関数呼び出しh(x)103をどのタイ
ミングで起動するかについて着目する。大域変数a10
9が存在しなければ、関数呼び出しh()の引数x10
4の値がそろった時点で関数呼び出しh(x)103を
起動することが可能である。しかし、大域変数が存在す
る場合には、そのデータ依存関係も考慮する必要があ
る。
FIG. 1 shows an example of an input program. Considering that this program is directly mapped to a semiconductor integrated circuit and realized, attention is focused particularly on when the function call h (x) 103 is activated. Global variable a10
If 9 does not exist, the argument x10 of the function call h ()
It is possible to activate the function call h (x) 103 when the value of 4 is completed. However, if global variables exist, their data dependencies must also be considered.

【0013】そこで、まず、各関数呼び出しで呼び出さ
れるサブルーチンにおいて、どの大域変数が参照され、
どの大域変数には代入がなされるのかを解析する。解析
は図2に示すように、関数f()の大域変数参照表20
1及び大域変数代入表202、関数g()の大域変数参
照表203及び大域変数代入表204、並びに関数
h()の大域変数参照表205及び大域変数代入表20
6を生成して行う。
Therefore, first, in the subroutine called by each function call, which global variable is referred to,
Analyze which global variables are assigned. The analysis is performed as shown in FIG.
1 and global variable assignment table 202, global variable reference table 203 and global variable assignment table 204 for function g (), and global variable reference table 205 and global variable assignment table 20 for function h ()
6 is performed.

【0014】ここで注意しなければならないのは、関数
f()と大域変数のデータ依存関係は、一見すると大域
変数bへの代入106しか存在しないかのように見える
が、関数f()から呼ばれる関数g()及び関数h()
において大域変数aへの代入が行われていることであ
る。結果として、関数f()は大域変数bだけではな
く、大域変数aともデータ依存関係があることになる。
このように、ある関数自身の中で直接のデータ依存関係
はないが、その関数の中で呼び出される他の関数の中で
データ依存関係があるような大域変数については、関数
の中で呼ばれる関数がどの大域変数に対して代入するか
のリストアップを再帰的に実行することにより解析を行
う。
Here, it should be noted that the data dependency between the function f () and the global variable appears at first glance as if only the assignment 106 to the global variable b exists. Function g () and function h () called
Is that the assignment to the global variable a is performed. As a result, the function f () has a data dependency not only with the global variable b but also with the global variable a.
Thus, for a global variable that does not have a direct data dependency in a function itself but has a data dependency in another function called in that function, the function called in the function The analysis is performed by recursively listing which global variables are to be assigned to.

【0015】次に、どの大域変数に対してどこで代入が
行われているかを示すスコープスタックを生成する。図
3は図1の入力プログラム及び図2に示した表に従って
生成されたスコープスタック301を示した図である。
この場合は関数呼び出しf()におけるスコープスタッ
クであり、プログラムを記述の順番に解析するのに連れ
てスコープスタック301は図3の右方向に成長する。
そして、スコープスタック301の各項目には変数名、
局所変数及び大域変数の区別と、その場での代入なの
か、関数呼び出しによる大域変数への代入なのかの区別
とを記し、その場での代入ならば×印を、関数呼び出し
による大域変数への代入の場合にはその関数名を記す。
Next, a scope stack indicating which global variable is assigned and where is assigned is generated. FIG. 3 is a diagram showing the scope stack 301 generated according to the input program of FIG. 1 and the table shown in FIG.
In this case, the scope stack is the function call f (), and the scope stack 301 grows rightward in FIG. 3 as the program is analyzed in the order of description.
Each item of the scope stack 301 has a variable name,
Describe the distinction between local variables and global variables, and the distinction between assignment on the spot and assignment to a global variable by a function call. In the case of assignment, write the function name.

【0016】ここで言う関数呼び出しによる大域変数へ
の代入とは、その関数を呼び出すことにより、呼び出さ
れた関数の中で大域変数に対する代入が行われるという
ことであり、どの関数呼び出しでどのような代入が行わ
れるかは図2を参照すればわかる。
Here, the assignment to a global variable by a function call means that by calling the function, the assignment to the global variable is performed in the called function. Whether the substitution is performed can be understood by referring to FIG.

【0017】スコープスタック301を用いると、プロ
グラムのある時点で変数への参照が生じた場合に、参照
すべき値はどの代入の結果であるかを知ることができ
る。即ち、ある変数への参照が生じたら、その時点のス
コープスタック301を逆向きに辿り、最初に見つけた
その変数への代入が参照すべき値となるのである。
When the scope stack 301 is used, when a reference to a variable occurs at a certain point in the program, it is possible to know which assignment is the result of the value to be referenced. That is, when a reference to a certain variable occurs, the scope stack 301 at that time is traced in the reverse direction, and the assignment to the variable found first becomes the value to be referred.

【0018】そしていよいよ関数呼び出しh()103
をどのタイミングで起動するかを決定する。関数呼び出
しh()103を起動するのに必要なのは、引数xの値
が求められている事、及び関数呼び出しh()103が
参照する大域変数aの値が求められている事である。そ
こで、スコープスタック301を逆向きに辿って引数x
及び大域変数aがそれぞれどの時点で求められるのかを
判定する。すると、引数xについては引数xへの参照及
び代入105で代入されたときの値を待つ必要があり、
大域変数aについては関数呼び出しg()101で代入
されるので関数呼び出しg()101の終了を待つ必要
があることがわかる。
Finally, the function call h () 103
Is determined when to start. In order to activate the function call h () 103, it is necessary that the value of the argument x is obtained and that the value of the global variable a referred to by the function call h () 103 be obtained. Therefore, by tracing the scope stack 301 in the opposite direction, the argument x
And the time when the global variable a is obtained. Then, for the argument x, it is necessary to wait for a reference to the argument x and a value assigned at the assignment 105,
Since the global variable a is substituted by the function call g () 101, it is necessary to wait for the end of the function call g () 101.

【0019】従って、関数呼び出しh()103を起動
するには、引数xへの参照と代入105、及び関数呼び
出しg()101の双方の終了を待てばよい。図4は関
数呼び出しh()を起動する信号を生成する例を示す図
である。図4を参照すると、「x++;」の処理をする
ブロック401が処理を終了したことを示す終了信号4
04、及び関数g(x)を呼び出すブロック402が終
了したことを示す終了信号405の双方の信号が揃った
ことを各終了信号の同期をとる同期化ブロック406に
よって検出されると、同期化ブロック406は関数h
(x)の起動信号407を生成する。
Therefore, in order to activate the function call h () 103, it suffices to wait for the reference and the assignment 105 to the argument x and the termination of both the function call g () 101. FIG. 4 is a diagram showing an example of generating a signal for activating the function call h (). Referring to FIG. 4, an end signal 4 indicating that the process of “x ++;” is completed by the block 401.
When the synchronization block 406 that synchronizes the end signals detects that both the end signal 04 and the end signal 405 indicating that the block 402 that calls the function g (x) have ended, the synchronization block 406 is a function h
A start signal 407 of (x) is generated.

【0020】以上のようにすることにより、大域変数に
よる依存関係が生じる従来のC言語やFORTRANな
どの手続型言語をデータフロー的な概念に基づきマップ
することが可能になり、使いやすさと高度な並列性を両
立することが可能になる。
By doing as described above, it is possible to map a conventional procedural language such as C language or FORTRAN, in which a dependency is caused by global variables, based on a concept of a data flow, and it is easy to use and sophisticated. Parallelism can be compatible.

【0021】図5は本発明の第2の実施の形態による関
数h(x)503の起動を示した図である。図1のプロ
グラムを見ると、関数呼び出しh()103を起動する
には必ずしも関数呼び出しg()101の実行が終了す
るのを待つ必要がないことに気付く。関数呼び出し
h()103が必要としているのは大域変数aの値なの
で、関数呼び出しg()101の中の大域変数aへの参
照と代入107が終わった時点ですぐに関数呼び出しh
()103を起動しても構わないのである。この点を考
慮したのが第2の実施の形態である。
FIG. 5 is a diagram showing activation of the function h (x) 503 according to the second embodiment of the present invention. Looking at the program of FIG. 1, it is noted that it is not always necessary to wait for the execution of the function call g () 101 to end in order to activate the function call h () 103. Since the function call h () 103 needs the value of the global variable a, the function call h () 103 immediately after the reference to the global variable a in the function call g () 101 and the assignment 107 are finished.
() 103 may be activated. The second embodiment takes this point into consideration.

【0022】図4では、「x++;」の処理の終了信号
404及び関数g(x)の終了信号405の双方の信号
が揃ったことを各終了信号の同期化ブロック406によ
り検出していたが、図5では、「x++;」の処理の終
了信号504、及び大域変数aへの参照及び代入107
の直後に関数g(x)における大域変数aへの代入の終
了信号509の双方を各終了信号の同期化ブロック50
6によって検出し、双方が揃うと同期化ブロック506
は関数h(x)の起動信号507を生成する。これによ
り、関数呼び出しg()101の終了を待たずして関数
呼び出しh()103を起動することが可能となり、実
行時間の短縮を図ることができる。
In FIG. 4, it is detected by the synchronization block 406 of each end signal that both the end signal 404 of the process of "x ++;" and the end signal 405 of the function g (x) have become complete. In FIG. 5, the end signal 504 of the processing of “x ++;” and the reference and assignment 107 to the global variable a
Immediately after this, both of the end signals 509 of the assignment to the global variable a in the function g (x) are changed
6 and the synchronization block 506
Generates an activation signal 507 for the function h (x). As a result, the function call h () 103 can be activated without waiting for the termination of the function call g () 101, and the execution time can be reduced.

【0023】図6は本発明の第3の実施の形態の対象と
なるプログラムの例である。第1及び第2の実施の形態
では、大域変数aについてのみ待ち合わせをすればよか
った。これに対し、複数の大域変数について依存関係が
ある場合について図6を参照して説明する。
FIG. 6 shows an example of a program to which the third embodiment of the present invention is applied. In the first and second embodiments, it is only necessary to wait for the global variable a. On the other hand, a case where a plurality of global variables have a dependency will be described with reference to FIG.

【0024】関数呼び出しg()601において大域変
数a、b、cに代入がされ、関数呼び出しh()602
において大域変数a、b、cへの参照が生じる。関数呼
び出しg()601における大域変数a、b、cへの代
入603、604、605の順番の依存関係が明確であ
り、大域変数cへの代入605が最後に実行される。従
って、それらの複数の大域変数への代入のうち、最後の
代入終了信号、即ち大域変数cへの代入605の代入終
了信号を代表の代入終了信号として用いることが可能で
ある。
In the function call g () 601, the global variables a, b and c are substituted, and the function call h () 602
, References to global variables a, b, and c occur. The order dependency of the assignments 603, 604, and 605 to the global variables a, b, and c in the function call g () 601 is clear, and the assignment 605 to the global variable c is executed last. Accordingly, the last assignment end signal of the assignments to the plurality of global variables, that is, the assignment end signal of the assignment 605 to the global variable c can be used as a representative assignment end signal.

【0025】図7は本発明の第4の実施の形態の対象と
なるプログラムの例である。第4の実施の形態も第3の
実施の形態と同様に複数の大域変数を扱うが、第3の実
施の形態では大域変数どうしの順番の依存関係が明確な
プログラムを対象にしたのに対し、第4の実施の形態で
は順番が特定できないようなプログラムを対象とする。
FIG. 7 shows an example of a program to which the fourth embodiment of the present invention is applied. The fourth embodiment deals with a plurality of global variables in the same manner as the third embodiment. However, the third embodiment is directed to a program in which the dependency of the order of the global variables is clear. The fourth embodiment targets a program whose order cannot be specified.

【0026】大域変数a、b、cへの代入703、70
4、705はそれぞれ互いにデータの依存関係が無い関
数を呼び出した結果を代入しているので、同時に関数呼
び出しの実行が可能であり、それぞれの代入が終了する
時刻の前後関係が不明である。このため、最後に代入が
終了する大域変数が特定できず、第3の実施の形態のよ
うに代表の代入終了信号を決めることができない。これ
に対して、第4の実施の形態では大域変数aへの代入7
03の代入終了信号、大域変数bへの代入704の代入
終了信号、及び大域変数cへの代入705の代入終了信
号の3つの代入終了信号が全て揃ったことを検出する同
期化ブロックを追加し、その出力を関数呼び出しg()
701の代入終了信号として用いる。これにより、複数
の大域変数への代入の終了する順番を特定できないプロ
グラムに対しても対応することができる。
Assignments 703, 70 to global variables a, b, c
4 and 705 are relations each having no data dependency.
Since the result of calling the number is substituted,
Can be executed, and each assignment ends
The context of the time is unknown. For this reason, the global variable at which the assignment ends last cannot be specified, and a representative assignment end signal cannot be determined as in the third embodiment. On the other hand, in the fourth embodiment, the substitution 7
A synchronization block for detecting that all three substitution end signals of the substitution end signal of 03, the substitution end signal of the substitution 704 to the global variable b, and the substitution end signal of the substitution 705 to the global variable c are added. , And its output to the function call g ()
701 is used as the substitution end signal. As a result, it is possible to cope with a program in which the order of ending assignment to a plurality of global variables cannot be specified.

【0027】[0027]

【発明の効果】本発明によれば、手続型言語における関
数起動の呼び出し条件として、データフローの概念に基
づいた、○引数の値が揃っていること、という条件の他
に、その関数が参照する大域変数に対して、○代入して
いる演算が終了していること、○副作用を与える関数が
終了していること、という条件を加えることにより、デ
ータフローの概念を拡張し、大域変数という概念を用い
る手続型言語でもデータフローの概念が有する高い並列
性を取り出すことが可能になるというものである。
According to the present invention, as a calling condition for invoking a function in a procedural language, in addition to the condition that the values of the ○ arguments are uniform based on the concept of data flow, the function is referred to. The concept of data flow is extended by adding the condition that the operation that is substituting is completed and that the function that gives side effects is completed for the global variable Even in a procedural language that uses concepts, it is possible to extract the high parallelism of the concept of data flow.

【0028】本発明による演算装置合成方法は、各関数
が参照/代入する大域変数について再帰的に解析する段
階と、ある大域変数に対してどの演算や関数呼び出しが
代入しているかという情報を保持するスコープスタック
を生成する段階と、ある関数呼び出しを半導体集積回路
にマップする際に、その関数が参照している大域変数に
対して代入している演算や関数呼び出しを、スコープス
タックを逆に辿って見つけだす段階と、ある関数の呼び
出し条件として、○その関数の引数が揃っていること、
○スコープスタックに従い、その関数が参照している大
域変数へ代入している演算及び関数呼び出しが終了して
いること、の2条件を集め、それらの全ての条件が揃っ
た時点で関数呼び出しを起動する回路を生成する段階で
構成される。
The method for synthesizing an arithmetic unit according to the present invention recursively analyzes a global variable referred to / assigned by each function, and retains information on which operation or function call is assigned to a certain global variable. When a function stack is mapped to a semiconductor integrated circuit, the operation or function call assigned to the global variable referred to by the function is traced back through the scope stack. And the call condition of a certain function, ○ that the arguments of the function are complete,
○ According to the scope stack, collect the two conditions of the operation assigned to the global variable referenced by the function and the fact that the function call has been completed, and start the function call when all of these conditions are met. At the stage of generating a circuit to perform.

【0029】これにより、世間で広く用いられている手
続型言語をデータフロー的な概念に基づきマップするこ
とが可能になり、使いやすさと高性能を両立することが
可能になる。
This makes it possible to map a procedural language widely used in the world based on the concept of data flow, thereby achieving both ease of use and high performance.

【0030】以上、本発明を実施の形態に基づいて説明
したが、本発明はこれに限定されるものではなく、当業
者の通常の知識の範囲内でその変更や改良が可能である
ことは勿論である。
Although the present invention has been described based on the embodiments, the present invention is not limited to these embodiments, and it is understood that alterations and improvements are possible within the ordinary knowledge of those skilled in the art. Of course.

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

【図1】本発明の第1の実施の形態の対象となるプログ
ラムの例である。
FIG. 1 is an example of a program which is a target of a first embodiment of the present invention.

【図2】図1のプログラムの大域変数参照表及び大域変
数代入表である。
FIG. 2 is a global variable reference table and a global variable assignment table of the program of FIG. 1;

【図3】図1のプログラム及び図2に示した表に従って
生成されたスコープスタックを示した図である。
FIG. 3 is a diagram showing a scope stack generated according to the program shown in FIG. 1 and the table shown in FIG. 2;

【図4】関数呼び出しh()を起動する信号を生成する
例を示す図である。
FIG. 4 is a diagram illustrating an example of generating a signal for activating a function call h ().

【図5】本発明の第2の実施の形態による関数h(x)
の起動を示した図である。
FIG. 5 shows a function h (x) according to the second embodiment of the present invention.
FIG.

【図6】本発明の第3の実施の形態の対象となるプログ
ラムの例である。
FIG. 6 is an example of a program which is a target of the third embodiment of the present invention.

【図7】本発明の第4の実施の形態の対象となるプログ
ラムの例である。
FIG. 7 is an example of a program which is a target of the fourth embodiment of the present invention.

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

201、203、205 大域変数参照表 202、204、206 大域変数代入表 301 スコープスタック 201, 203, 205 Global variable reference table 202, 204, 206 Global variable assignment table 301 Scope stack

───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.6,DB名) G06F 17/50 G06F 9/06 G06F 9/44 - 9/455 ──────────────────────────────────────────────────続 き Continued on the front page (58) Field surveyed (Int.Cl. 6 , DB name) G06F 17/50 G06F 9/06 G06F 9/44-9/455

Claims (8)

(57)【特許請求の範囲】(57) [Claims] 【請求項1】 手続型言語により記述されたプログラム
を半導体集積回路にマップする演算装置合成方法におい
て、 前記手続型言語により記述された関数、及び参照及び代
入のいずれか又は両方を行う大域変数の参照代入関係を
再帰的に解析する大域変数解析段階と、 大域変数に対してどの演算及び関数呼び出しが代入する
かについての情報を保持するスコープスタックを生成す
るスコープスタック生成段階と、 前記スコープスタックを成長方向の逆方向に辿り、関数
呼び出し甲が参照する大域変数に対して代入する関数呼
び出し乙及び演算を前記参照代入関係に基づいて見つけ
るスコープ解析段階と、 前記関数呼び出し甲の引数が揃い、かつ、前記関数呼び
出し乙及び前記演算が終了したとき、関数呼び出し甲を
起動する回路を生成する回路生成段階とを含むことを特
徴とする演算装置合成方法。
1. A method for synthesizing an arithmetic unit that maps a program described in a procedural language onto a semiconductor integrated circuit, comprising: a function described in the procedural language; and a global variable performing one or both of reference and assignment. A global variable analyzing step of recursively analyzing the reference assignment relationship; a scope stack generating step of generating a scope stack that holds information about which operation and function call assigns to the global variable; and Tracing in the reverse direction of the growth direction, a scope analysis step of finding a function call B and an operation to be assigned to a global variable referred to by the function call A based on the reference assignment relationship, and the arguments of the function call A are aligned, and Generating a circuit for activating the function caller when the function caller and the operation are completed Arithmetic unit synthesizing method characterized by including the road generation stage.
【請求項2】 請求項1記載の演算装置合成方法におい
て、前記回路生成段階は、前記関数呼び出し甲の引数が
揃い、かつ、前記関数呼び出し乙における大域変数への
代入が終了したとき、関数呼び出し甲を起動する回路を
生成することを特徴とする演算装置合成方法。
2. The method according to claim 1, wherein the step of generating the circuit includes the steps of: calling the function when the arguments of the function call are the same and assigning to the global variable in the function call is completed. A method for synthesizing an arithmetic unit, comprising: generating a circuit for activating the instep.
【請求項3】 請求項1及び2のいずれかに記載の演算
装置合成方法において、前記関数呼び出し乙により代入
される複数の大域変数が存在する場合、前記回路生成段
階は、前記関数呼び出し甲の引数が揃い、かつ、前記関
数呼び出し乙における大域変数への代入のうち最も遅く
終了する代入が終了したとき、関数呼び出し甲を起動す
る回路を生成することを特徴とする演算装置合成方法。
3. The method according to claim 1, wherein when there are a plurality of global variables to be substituted by the function call, the circuit generation step includes the step of: A method for synthesizing an arithmetic unit, comprising: generating a circuit for activating a function caller when the arguments are complete and when the latest one of the assignments to the global variables in the function caller is completed.
【請求項4】 請求項1乃至3のいずれかに記載の演算
装置合成方法において、前記関数呼び出し乙により代入
される複数の大域変数が存在する場合、前記回路生成段
階は、前記関数呼び出し甲の引数が揃い、かつ、前記関
数呼び出し乙における大域変数への代入がすべて終了し
たとき、関数呼び出し甲を起動する回路を生成すること
を特徴とする演算装置合成方法。
4. The method according to claim 1, wherein when there are a plurality of global variables substituted by the function call, the circuit generating step includes the step of generating the function call. A method for synthesizing an arithmetic unit, comprising: generating a circuit for activating a function caller when all arguments are completed and when all of the substitutions to global variables in the function caller have been completed.
【請求項5】 請求項1乃至4のいずれかに記載の演算
装置合成方法において、前記半導体集積回路はPLD
(Programmable Logic Devic
e)であることを特徴とする演算装置合成方法。
5. The method according to claim 1, wherein the semiconductor integrated circuit is a PLD.
(Programmable Logic Device
e) A method for synthesizing an arithmetic device, the method comprising:
【請求項6】 請求項1乃至4のいずれかに記載の演算
装置合成方法において、前記半導体集積回路は再構成可
能であることを特徴とする演算装置合成方法。
6. A method according to claim 1, wherein said semiconductor integrated circuit is reconfigurable.
【請求項7】 請求項6に記載の演算装置合成方法にお
いて、前記再構成可能な半導体集積回路はFPGA(F
ield Programmable Gate Ar
ray)であることを特徴とする演算装置合成方法。
7. The arithmetic unit synthesizing method according to claim 6, wherein the reconfigurable semiconductor integrated circuit is an FPGA (F
field Programmable Gate Ar
(ray).
【請求項8】 請求項1乃至7のいずれかに記載の演算
装置合成方法において、前記手続型言語はFORTRA
N及びC言語のいずれかであることを特徴とする演算装
置合成方法。
8. The method according to claim 1, wherein the procedural language is FORTRA.
A method of synthesizing an arithmetic device, wherein the method is one of N and C languages.
JP9010821A 1997-01-24 1997-01-24 Arithmetic device synthesis method Expired - Fee Related JP2990084B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9010821A JP2990084B2 (en) 1997-01-24 1997-01-24 Arithmetic device synthesis method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9010821A JP2990084B2 (en) 1997-01-24 1997-01-24 Arithmetic device synthesis method

Publications (2)

Publication Number Publication Date
JPH10207929A JPH10207929A (en) 1998-08-07
JP2990084B2 true JP2990084B2 (en) 1999-12-13

Family

ID=11761031

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9010821A Expired - Fee Related JP2990084B2 (en) 1997-01-24 1997-01-24 Arithmetic device synthesis method

Country Status (1)

Country Link
JP (1) JP2990084B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5342508B2 (en) * 2010-06-07 2013-11-13 三菱電機株式会社 Information processing apparatus, information processing method, and program

Also Published As

Publication number Publication date
JPH10207929A (en) 1998-08-07

Similar Documents

Publication Publication Date Title
KR101126255B1 (en) Signal processing apparatus
JP3315857B2 (en) Compiler with general front end and dynamically loadable back end
US20050278318A1 (en) Iterative development with prioritized build
JPH0734178B2 (en) Effective error reporting for executing conversion code
Lauwereins et al. Geometric parallelism and cyclo-static data flow in GRAPE-II
US20040233237A1 (en) Development environment for DSP
JPH11250112A (en) Method and device for synthesizing hardware and recording medium recorded with hardware synthesizing program
JP2574985B2 (en) Digital data processing system and error handling method
JP2990084B2 (en) Arithmetic device synthesis method
US6198813B1 (en) System and method for providing call processing services using call independent building blocks
US20070006121A1 (en) Development activity recipe
Engels et al. Rapid prototyping for DSP systems with multiprocessors
US7565632B2 (en) Behavioral synthesizer system, operation synthesizing method and program
EP1027652A1 (en) Apparatus and method for logging information relating to function calls to a function library
CN111401020A (en) Interface loading method and system and computing equipment
Kartal et al. An evaluation of aspect oriented programming for embedded real-time systems
JP2001256075A (en) Developing system and developing method and recording medium
CN117632711A (en) Software debugging method and device based on trigger mechanism
JPH02220145A (en) Program tracing system
Lauwereins et al. GRAPE-II: Graphical RApid Prototyping Environment
Lauwereins et al. GRAPE-II.
JPH0695869A (en) Input and output interface information capturing system for dynamic link library program
JP3323147B2 (en) Compiling device, compiling method, and recording medium recording compiler program
US6625782B1 (en) Software structure methodology description of programmable phase-locked loop die and device presentation techniques
Kountouris et al. A real-time HW/SW co-design approach based on the SIGNAL language and its environment

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19990916

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081008

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091008

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091008

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101008

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111008

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121008

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131008

Year of fee payment: 14

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees