Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP5312151B2 - Semiconductor design support apparatus, high-level synthesis method, and semiconductor design support program - Google Patents
[go: Go Back, main page]

JP5312151B2 - Semiconductor design support apparatus, high-level synthesis method, and semiconductor design support program - Google Patents

Semiconductor design support apparatus, high-level synthesis method, and semiconductor design support program Download PDF

Info

Publication number
JP5312151B2
JP5312151B2 JP2009086499A JP2009086499A JP5312151B2 JP 5312151 B2 JP5312151 B2 JP 5312151B2 JP 2009086499 A JP2009086499 A JP 2009086499A JP 2009086499 A JP2009086499 A JP 2009086499A JP 5312151 B2 JP5312151 B2 JP 5312151B2
Authority
JP
Japan
Prior art keywords
array
variable
description
level synthesis
array 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
JP2009086499A
Other languages
Japanese (ja)
Other versions
JP2010238054A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2009086499A priority Critical patent/JP5312151B2/en
Publication of JP2010238054A publication Critical patent/JP2010238054A/en
Application granted granted Critical
Publication of JP5312151B2 publication Critical patent/JP5312151B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

この発明は、動作記述からレジスタ転送レベルを自動生成する高位合成を利用した半導体設計を支援する半導体設計支援装置、この装置を用いた高位合成方法及びこの装置としてコンピュータを機能させるための半導体設計支援プログラムに関するものである。   The present invention relates to a semiconductor design support apparatus for supporting semiconductor design using high-level synthesis that automatically generates a register transfer level from an operation description, a high-level synthesis method using this apparatus, and semiconductor design support for causing a computer to function as this apparatus. It is about the program.

従来の半導体集積回路設計では、Verilog−HDLやVHDL等のハードウェア記述言語で回路に含まれる全てのレジスタを記述し、レジスタとレジスタとの間における組み合わせ回路の動作を記述したレジスタ転送レベル(RTL)を作成する。このRTLを論理合成ツールに入力することにより、レジスタ間の機能を全てのゲートに割り当てたゲートレベルを出力させ、これを配置配線する、という工程で半導体集積回路を設計していた。   In conventional semiconductor integrated circuit design, all registers included in a circuit are described in a hardware description language such as Verilog-HDL or VHDL, and a register transfer level (RTL) that describes the operation of a combinational circuit between the registers. ). By inputting this RTL to a logic synthesis tool, a semiconductor integrated circuit is designed in a process of outputting a gate level in which functions between registers are assigned to all the gates and arranging and routing them.

しかしながら、近年の半導体集積回路の集積度の向上によって半導体チップに集積される回路規模が増大しており、RTLを手書き設計するには、非常に多くの設計期間が必要となる。これに対して、近年では、RTLよりも抽象度の高い動作記述からRTLを自動的に生成する高位合成(あるいは、動作合成とも呼ばれる)技術が提唱されており、これを実現する高位合成ツールも市販されている。   However, the circuit scale integrated on the semiconductor chip is increasing due to the recent improvement in the degree of integration of the semiconductor integrated circuit, and a very long design period is required to design the RTL by handwriting. On the other hand, in recent years, a high-level synthesis (or also called behavioral synthesis) technology that automatically generates RTL from a behavioral description with a higher abstraction level than RTL has been proposed, and a high-level synthesis tool that realizes this has also been proposed. It is commercially available.

上述の動作記述用の言語には、コンピュータプログラム用の言語として一般的に普及しているCやC++等の言語が用いられることが多い。動作記述では、ハードウェアで実現すべき動作のみを記述することは可能であるが、クロックやリセット、レジスタ等の半導体集積回路のハードウェアの概念は記述できない。このため、同じ機能を持つ半導体集積回路用の動作記述とRTL記述とを比較した場合、動作記述は、RTL記述よりも記述量が少なく、この結果として手書き設計に要する設計期間が短くて済む。   As the language for describing the behavior, a language such as C or C ++, which is generally popular as a computer program language, is often used. In the operation description, it is possible to describe only the operation to be realized by hardware, but it is not possible to describe the concept of hardware of the semiconductor integrated circuit such as a clock, a reset, and a register. For this reason, when the behavioral description for the semiconductor integrated circuit having the same function is compared with the RTL description, the behavioral description has a smaller amount of description than the RTL description, and as a result, the design period required for the handwritten design can be shortened.

動作記述は、動作のみの仕様を記述するもので、実装についての仕様は記述しないが、高位合成における一般的な制約から、動作記述の記述方法によっては結果として得られる実装が影響を受ける場合がある。また、動作記述の中で配列の構文は、まとまった記憶領域をプログラムから効率的に使用するために用いられる。動作記述の中で使用された配列は、記述したアルゴリズムにおいて必要な記憶素子を表すことになる。高位合成においても、配列は、一般的にメモリやレジスタ等の記憶素子へ割り当てられる。さらに、配列は大きなサイズで記述されることが多く、この場合、高位合成においても、そのまま大きなサイズの記憶素子へ割り当てられる。   The behavioral description describes the specification of behavior only, and does not describe the specification about the implementation. However, due to general restrictions in high-level synthesis, the resulting implementation may be affected depending on the description method of the behavioral description. is there. In the behavioral description, the syntax of the array is used in order to efficiently use a collective storage area from the program. The array used in the behavioral description represents the storage elements required in the described algorithm. Even in high-level synthesis, arrays are generally assigned to storage elements such as memories and registers. Furthermore, the array is often described in a large size, and in this case, even in high-level synthesis, the array is directly assigned to a storage element of a large size.

半導体集積回路で割り当てられる記憶素子としては、先ず、レジスタが挙げられるが、レジスタは、大きな記憶領域を確保するには回路面積が効率的でない。また、SRAM等のメモリ素子は、面積効率が高い反面、記憶領域の個々の要素の読み出しや書き込みを行うアドレスデコーダの並列化数が制限されるため、処理の並列化を抑制する要因となり、性能の高い半導体集積回路が得られない。   As a memory element allocated in a semiconductor integrated circuit, a register is first given, but the circuit area of the register is not efficient for securing a large memory area. Memory elements such as SRAM have high area efficiency, but the number of parallel address decoders that read and write individual elements in the storage area is limited. High semiconductor integrated circuit cannot be obtained.

一方、コンピュータに搭載された豊富なメモリ資源を前提に記述されたコンピュータプログラムでは、上述したような配列の制約を考慮する必要はない。しかしながら、このようなコンピュータプログラムを基に高位合成用の動作記述をした場合、高位合成における配列のハードウェアへの割り当てが面積あるいは性能の制約となり、所望の回路サイズや性能が得られない可能性がある。   On the other hand, in the computer program described on the premise of the abundant memory resources mounted on the computer, it is not necessary to consider the arrangement restrictions as described above. However, if the behavioral description for high-level synthesis is based on such a computer program, the allocation of the array to the hardware in high-level synthesis may be limited in area or performance, and the desired circuit size or performance may not be obtained. There is.

上記不具合を解決する従来の技術として、高位合成段階で動作記述から得られるコントロールデータフローフラグを解析し、複数の配列変数を統合して面積を小さく、かつ高速動作が可能な回路を生成する方法が提案されている(例えば、特許文献1参照)。   As a conventional technique for solving the above problem, a method of analyzing a control data flow flag obtained from a behavioral description in a high-level synthesis stage, and integrating a plurality of array variables to generate a circuit that can reduce the area and operate at high speed Has been proposed (see, for example, Patent Document 1).

また、動作記述では、必ずしも実装について考慮して記述する必要がないため、動作記述に不可欠ではない配列変数を記述することも可能である。例えば、デバッグ時の観測性等を向上させるため、上述のような配列変数が記述される場合がある。   In the behavioral description, it is not always necessary to describe the implementation in consideration, so it is possible to describe an array variable that is not essential for the behavioral description. For example, the array variables as described above may be described in order to improve the observability during debugging.

特開2005−346290号公報JP 2005-346290 A

特許文献1に開示される従来の方法では、動作記述中に含まれる複数の配列変数の処理依存性が、高位合成処理に用いるコントロールデータフローグラフから解析される。この場合、動作記述に不可欠でない配列変数についても他の動作記述に不可欠な配列変数と統合され、ある程度面積効率が上がり、かつ処理性能の低下も防ぐことができる可能性がある。   In the conventional method disclosed in Patent Document 1, processing dependency of a plurality of array variables included in the behavioral description is analyzed from a control data flow graph used for high-level synthesis processing. In this case, array variables that are not essential for the behavioral description are also integrated with other array variables that are essential for the behavioral description, so that there is a possibility that the area efficiency is increased to some extent and the processing performance is prevented from being lowered.

しかしながら、入力記述の中に配列を記述すると必ず記憶素子への割り当てが発生するため、動作記述に不可欠でない配列が記憶素子として実装される。このような不要な配列変数に起因する記憶素子の生成を防ぐには、動作記述で一般的に数多く使用される配列変数の中から、不要な配列変数に該当するものを見つけ出し、さらに、当該配列変数を使用せず、かつ動作仕様が維持されるように、人手で動作記述を修正する必要があった。   However, if an array is described in the input description, an assignment to a storage element always occurs. Therefore, an array that is not indispensable for the behavioral description is mounted as a storage element. In order to prevent the generation of a storage element due to such an unnecessary array variable, from the array variables that are generally used in the behavioral description, find the one corresponding to the unnecessary array variable, and further, the array It was necessary to manually correct the behavior description so that the variables were not used and the behavior specifications were maintained.

人手による動作記述の修正は非常に困難で時間のかかる作業であり、特に大規模な半導体集積回路では事実上不可能である。このため、大規模な半導体集積回路において、不要な配列変数に起因する記憶素子の生成を妨げることができず、回路面積の増大や処理性能の低下を招いていた。   It is very difficult and time-consuming to manually correct the behavioral description, and it is practically impossible particularly in a large-scale semiconductor integrated circuit. For this reason, in a large-scale semiconductor integrated circuit, generation of a memory element due to an unnecessary array variable cannot be prevented, resulting in an increase in circuit area and a decrease in processing performance.

また、特許文献1に開示される方法は、高位合成処理中の解析結果に対して実施されるものであるため、市販の高位合成ツールを使用する場合に、当該高位合成ツールの1つの機能として実施したい手法が内蔵されていなければ容易に実施することができないという課題があった。   In addition, since the method disclosed in Patent Document 1 is performed on the analysis result during the high-level synthesis process, when using a commercially available high-level synthesis tool, as one function of the high-level synthesis tool There was a problem that it could not be easily implemented unless the technique to be implemented was built in.

この発明は、上記のような課題を解決するためになされたもので、高位合成ツールを利用した半導体設計にあたり、当該高位合成ツールが市販ツールか内製ツールかにかかわらず、高位合成によって所望の回路サイズや性能を有する半導体集積回路を設計することができる半導体設計支援装置、この装置を用いた高位合成方法及びこの装置としてコンピュータを機能させるための半導体設計支援プログラムを得ることを目的とする。   The present invention has been made to solve the above-described problems. When designing a semiconductor using a high-level synthesis tool, the high-level synthesis tool provides a desired level of high-level synthesis regardless of whether the high-level synthesis tool is a commercially available tool or an in-house tool. An object is to obtain a semiconductor design support apparatus capable of designing a semiconductor integrated circuit having a circuit size and performance, a high-level synthesis method using this apparatus, and a semiconductor design support program for causing a computer to function as this apparatus.

この発明に係る半導体設計支援装置は、高位合成の対象となる設計回路の動作を記述した動作記述を入力し、入力した動作記述に含まれる全ての配列変数を抽出し、前記配列変数から前記動作記述において、書き込み箇所が1箇所であること、書き込み配列変数名が存在すること、及び、書き込み演算式に出現する変数が配列の添え字変数のみであること、の3つの条件が全て成立する配列変数を削減対象の配列変数として検出し、前記動作記述を前記削減対象の配列変数に対応する配列を使用しない動作記述に変換する処理部を備えるものである。 The semiconductor design support apparatus according to the present invention inputs an operation description describing the operation of a design circuit to be subjected to high-level synthesis, extracts all array variables included in the input operation description , and extracts the operation from the array variable. An array in which all three conditions are satisfied in the description: there is only one write location, there is a write array variable name, and the variable that appears in the write operation expression is only the subscript variable of the array. A processing unit that detects a variable as an array variable to be reduced and converts the behavior description into an operation description that does not use an array corresponding to the array variable to be reduced is provided.

この発明によれば、高位合成の対象となる設計回路の動作を記述した動作記述を入力し、入力した動作記述に含まれる全ての配列変数を抽出し、配列変数から動作記述において、書き込み箇所が1箇所であること、書き込み配列変数名が存在すること、及び、書き込み演算式に出現する変数が配列の添え字変数のみであること、の3つの条件が全て成立する配列変数を削減対象の配列変数として検出し、動作記述を前記削減対象の配列変数に対応する配列を使用しない動作記述に変換する。
このように構成することにより、削減可能な配列のない動作記述が得られるため、当該動作記述で高位合成を実施することにより、変換前の動作記述による高位合成結果に比べ、不要な配列変数に起因した面積やタイミング上の制約が緩和され、結果として面積の小さい回路あるいは処理性能の高い回路が得られるという効果がある。また、高位合成の前処理として上述の動作記述の変換を実行するため、市販されている高位合成ツールを含む、あらゆる高位合成ツールとともに使用して容易に上記効果が得られる。

According to the present invention, an operation description that describes the operation of a design circuit that is a target of high-level synthesis is input, all array variables included in the input operation description are extracted, The array variable to be reduced is an array variable for which all three conditions are satisfied, that is, that there is one place, the write array variable name exists, and that the variable that appears in the write operation expression is only the subscript variable of the array This is detected as a variable, and the behavioral description is converted into a behavioral description that does not use the array corresponding to the array variable to be reduced.
With this configuration, a behavioral description without a reducible sequence can be obtained. Therefore, by performing high-level synthesis using the behavioral description, unnecessary array variables can be created compared to the result of high-level synthesis based on the behavioral description before conversion. The resulting area and timing restrictions are relaxed, and as a result, a circuit with a small area or a circuit with high processing performance can be obtained. In addition, since the above-described behavioral description conversion is executed as preprocessing for high-level synthesis, the above-described effects can be easily obtained when used with any high-level synthesis tool including commercially available high-level synthesis tools.

この発明の実施の形態1による半導体設計支援装置を用いた高位合成システムの構成を示すブロック図である。It is a block diagram which shows the structure of the high-level synthesis system using the semiconductor design support apparatus by Embodiment 1 of this invention. 図1中の記憶部に格納される配列変数テーブルの一例を示す図である。It is a figure which shows an example of the array variable table stored in the memory | storage part in FIG. 図1中のファイル記録部に保持される動作記述の一例を示す図である。It is a figure which shows an example of the action description hold | maintained at the file recording part in FIG. 図1中の高位合成システムの動作の流れを示すフローチャートである。It is a flowchart which shows the flow of operation | movement of the high-level synthesis system in FIG. 配列のリスト化処理を施した配列変数テーブルを示す図である。It is a figure which shows the arrangement | sequence variable table which performed the arrangement | sequence list processing. 動作記述に配列アクセスのリスト化処理を施した際の配列変数テーブルを示す図である。It is a figure which shows the array variable table at the time of performing the list | wrist of array access to operation | movement description. 記述変換後の動作記述を示す図である。It is a figure which shows the operation | movement description after description conversion.

実施の形態1.
図1は、この発明の実施の形態1による半導体設計支援装置を用いた高位合成システムの構成を示すブロック図であり、この発明による半導体設計支援装置を用いた高位合成システムを示している。図1において、高位合成システム1は、半導体設計支援装置2及び高位合成装置3を備え、高位合成装置3が、半導体設計支援装置2で処理された動作記述を用いて高位合成処理を実行する。高位合成装置3は、例えば、市販もしくは内製の高位合成ツールをコンピュータに実行させることで、当該コンピュータで実現することができる。
Embodiment 1 FIG.
FIG. 1 is a block diagram showing a configuration of a high-level synthesis system using a semiconductor design support apparatus according to Embodiment 1 of the present invention, and shows a high-level synthesis system using a semiconductor design support apparatus according to the present invention. In FIG. 1, the high-level synthesis system 1 includes a semiconductor design support apparatus 2 and a high-level synthesis apparatus 3, and the high-level synthesis apparatus 3 executes a high-level synthesis process using the operation description processed by the semiconductor design support apparatus 2. The high-level synthesis apparatus 3 can be realized by a computer by causing a computer to execute a commercially available or in-house high-level synthesis tool, for example.

半導体設計支援装置2は、処理部4、記憶部5及びファイル記録部6を備える。処理部4は、高位合成の対象となる動作記述の中から配列変数としてデータ保持しなくても、当該動作記述で示される動作に変化がない配列変数を検出し、当該配列変数を使用しない動作記述に変換する手段である。記憶部5は、動作記述に含まれる配列変数に関するデータが登録された配列変数テーブルを、その汎用記憶領域内に格納する記憶部である。ファイル記録部6は、高位合成の対象となる動作記述をファイルとして保持する記憶部であり、高位合成装置3によって動作記述が読み出されて高位合成が実行される。   The semiconductor design support apparatus 2 includes a processing unit 4, a storage unit 5, and a file recording unit 6. The processing unit 4 detects an array variable in which the behavior indicated in the behavior description does not change without holding data as an array variable from the behavior description to be subjected to high-level synthesis, and does not use the array variable. A means to convert to a description. The storage unit 5 is a storage unit that stores an array variable table in which data related to array variables included in the behavior description is registered in the general-purpose storage area. The file recording unit 6 is a storage unit that holds a behavioral description to be subjected to high-level synthesis as a file. The high-level synthesis apparatus 3 reads out the behavioral description and executes high-level synthesis.

なお、処理部4は、この発明の趣旨に従う処理内容を記述したプログラムをコンピュータに読み込ませ、そのCPU(中央演算装置)に実行させることにより、ハードウェアとソフトウェアが協働した具体的な手段として当該コンピュータで実現することができる。また、記憶部5及びファイル記録部6は、上記コンピュータが備える記憶装置(例えば、ハードディスク装置や外部記憶メディア等)の記憶領域上に構築することができる。   The processing unit 4 is a specific means in which hardware and software cooperate by causing a computer to read a program describing processing contents according to the spirit of the present invention and causing the computer to execute the program. It can be realized by the computer. The storage unit 5 and the file recording unit 6 can be constructed on a storage area of a storage device (for example, a hard disk device or an external storage medium) provided in the computer.

図2は、図1中の記憶部に格納される配列変数テーブルの一例を示す図である。配列変数テーブルは、記憶部5の一定の記憶領域に保持され、図4を用いて後述する処理部4による処理で使用される。図2に示すように、配列変数テーブルには、動作記述に含まれる各配列に対して1行毎のエントリが割り当てられる。当該配列変数テーブルの1行には、例えば、配列変数名、該当する配列へ書き込み処理が記述されるプログラム位置(行数)の全て、別の配列から書き込みが行われる場合の配列変数名、書き込み処理における演算式、該当する配列の読み出し箇所を示すデータが格納される。   FIG. 2 is a diagram showing an example of an array variable table stored in the storage unit in FIG. The array variable table is held in a fixed storage area of the storage unit 5 and used in processing by the processing unit 4 described later with reference to FIG. As shown in FIG. 2, in the array variable table, an entry for each line is assigned to each array included in the behavioral description. In one row of the array variable table, for example, the array variable name, all the program positions (number of rows) in which writing processing is described in the corresponding array, the array variable name when writing is performed from another array, and writing An arithmetic expression in the processing and data indicating a reading position of the corresponding array are stored.

図3は、図1中のファイル記録部に保持される動作記述の一例を示す図であり、C言語の配列変数構文に該当するA,B,Cという3つの配列変数名が含まれた動作記述を示している。すなわち、当該動作記述には、配列変数名A,B,Cに対応する配列が記述されており、これら配列に記憶素子が割り当てられる。なお、図3に示す動作記述は、C言語で記述されたプログラムを説明するために必要な一部の記述のみを抜き出したもので、動作記述としては不完全なプログラムである。   FIG. 3 is a diagram showing an example of the behavior description held in the file recording unit in FIG. 1, and an operation including three array variable names A, B, and C corresponding to the C language array variable syntax. A description is shown. That is, in the operation description, arrays corresponding to the array variable names A, B, and C are described, and storage elements are assigned to these arrays. Note that the behavioral description shown in FIG. 3 is an incomplete program as the behavioral description because only a part of the description necessary for explaining the program written in the C language is extracted.

次に動作について説明する。
図4は、図1中の高位合成システムの動作の流れを示すフローチャートであり、この図に沿って説明する。
先ず、半導体設計支援装置2で処理を開始すると、処理部4が、ファイル記録部6から高位合成の対象となる動作記述のファイルを読み出して、動作記述に含まれる全ての配列変数名を記憶部5の配列変数テーブルに書き込む(ステップST1;配列のリスト化)。図3に示す動作記述では配列変数名A,B,Cが抽出され、図5に示すように、配列変数テーブルの各行毎に書き込まれる。
Next, the operation will be described.
FIG. 4 is a flowchart showing the flow of the operation of the high-level synthesis system in FIG. 1, and will be described with reference to this figure.
First, when processing is started in the semiconductor design support apparatus 2, the processing unit 4 reads out a behavior description file to be subjected to high-level synthesis from the file recording unit 6, and stores all array variable names included in the behavior description. 5 is written into the array variable table 5 (step ST1; array listing). In the behavioral description shown in FIG. 3, array variable names A, B, and C are extracted and written for each row of the array variable table as shown in FIG.

処理部4は、配列のリスト化が完了すると、配列変数テーブルの各行の配列に対して、動作記述の中から、該当する配列へ書き込み処理が記述されるプログラム位置(行数)の全て、別の配列から書き込みされる場合の当該配列の配列変数名、書き込み処理における演算式、該当する配列の読み出し箇所をそれぞれ検索して抽出し、当該配列変数テーブルに書き込む(ステップST2;配列アクセスのリスト化)。   When the array listing is completed, the processing unit 4 separates all the program positions (number of rows) in which the writing process is described from the operation description into the corresponding array for each array of the array variable table. When an array is written from, the array variable name of the array, the arithmetic expression in the writing process, and the read position of the corresponding array are searched and extracted, and written to the array variable table (step ST2; array access list) ).

図3に示す動作記述のうち、配列変数名Bの配列へ書き込みが行われる箇所は、代入演算子(=)の左辺に配列変数名Bの配列が現れる5行目の記述である。そこで、図5に示す配列変数テーブルの2行目に対応する配列変数名Bの「書き込み箇所」に上述の5行目を示す「5」が書き込まれる。図3において、配列変数名Bの配列の書き込み演算式には配列変数名Aの別の配列が含まれるので、図5に示す配列変数テーブルの配列変数名Bの「書き込み配列変数名」には、「A」が書き込まれる。   In the behavioral description shown in FIG. 3, the place where the array variable name B is written is the description on the fifth line where the array variable name B array appears on the left side of the assignment operator (=). Therefore, “5” indicating the fifth line is written in “write location” of the array variable name B corresponding to the second line of the array variable table shown in FIG. In FIG. 3, the write operation expression for the array of array variable name B includes another array of array variable name A. Therefore, “write array variable name” of array variable name B of the array variable table shown in FIG. , “A” is written.

また、図3に示すように、配列変数名Bの配列の書き込み演算式はB[j]=funcb(A[j])であることから、図5に示す配列変数テーブルの配列変数名Bの「書き込み演算式」には、当該演算式が書き込まれる。さらに、図3に示す動作記述のうち、配列変数名Bの配列が読み出しされる箇所は、演算式C[k]=funcc(B[k])が記述された9行目である。このため、図5に示す配列変数テーブルの配列変数名Bの「読み出し箇所」には、「8」が書き込まれる。   Also, as shown in FIG. 3, since the write operation expression for the array of array variable name B is B [j] = funcb (A [j]), the array variable name B of the array variable table shown in FIG. In the “write operation expression”, the operation expression is written. Further, in the behavioral description shown in FIG. 3, the portion where the array of the array variable name B is read is the ninth line in which the arithmetic expression C [k] = funcc (B [k]) is described. For this reason, “8” is written in the “read location” of the array variable name B in the array variable table shown in FIG.

図5に示す配列変数テーブルにおける他の行に登録された配列変数A,Cについても、同じ処理を実施して配列アクセスのリスト化処理を完了することにより、図6に示す状態の配列変数テーブルが得られる。ここまでの処理は、処理部4によって自動的に実施される。   For the array variables A and C registered in other rows in the array variable table shown in FIG. 5, the same processing is performed to complete the array access listing process, so that the array variable table in the state shown in FIG. Is obtained. The processing so far is automatically performed by the processing unit 4.

処理部4は、配列アクセスのリスト化処理を施した配列変数テーブルの各行に対して、所定の判定条件に基づく評価を行うことにより、配列変数としてデータ保持しなくても、当該動作記述で示される動作に変化がない配列変数を検出し、配列削減可能と判定する(ステップST3;配列削減判定)。判定条件としては、書き込み箇所が1箇所であること、書き込み配列変数名が存在すること、及び、書き込み演算式に出現する変数が配列の添え字変数のみであること、の3つの条件があり、これらの全てが成立する配列変数を配列削減可能とする。   The processing unit 4 performs the evaluation based on a predetermined determination condition for each row of the array variable table subjected to the array access list processing, thereby indicating the operation description without storing the data as an array variable. An array variable whose operation is not changed is detected, and it is determined that the array can be reduced (step ST3; array reduction determination). There are three conditions for the judgment condition: there are one write location, the existence of a write array variable name, and the only variable that appears in the write arithmetic expression is an array subscript variable. An array variable for which all of these are satisfied can be reduced.

図6に示す配列変数テーブルにおいて、配列変数名Aは「書き込み配列変数名」が「該当無し」であるため、上記判定条件に当てはまらず、配列削減対象とはならない。また、配列変数名Cについては「読み出し箇所」が「該当無し」であるため、配列削減対象とはならない。一方、配列変数名Bは、「書き込み箇所」が「5」の1箇所であり、「書き込み配列変数名」が存在(A)し、かつ、「書き込み演算式」に出現する変数が、配列の添え字変数であるjのみであり、全ての判定条件に一致することから、配列削減可能と判定される。   In the array variable table shown in FIG. 6, since the “write array variable name” is “not applicable” for the array variable name A, the above determination condition is not met and the array variable name A is not a target for array reduction. Also, for the array variable name C, the “reading location” is “not applicable”, and therefore is not a target for array reduction. On the other hand, the array variable name B is one place where the “write location” is “5”, the “write array variable name” exists (A), and the variable appearing in the “write operation expression” is Only j, which is a subscript variable, matches all the determination conditions, so it is determined that the arrangement can be reduced.

配列削減判定が完了すると、処理部4は、動作記述について、その演算内容を維持しながら配列削減可能と判定された配列変数を使用しないように、所定の変換規則に従い記述を変換する(ステップST4;記述変換)。変換規則としては、先ず配列変換テーブルにおける配列削減可能とされた配列変数名に対応する「書き込み箇所」の記述を削除する。「書き込み演算式」に記述された配列における配列参照用の添え字が唯一の変数である演算式については、配列の添え字をそのまま引数に置き換えた関数の定義に変換して動作記述に挿入する。さらに、「読み出し箇所」では、動作記述で該当する配列の読み出しを、上述した新たに挿入した関数(配列の添え字をそのまま引数に置き換えた関数)の関数呼び出しに記述を変換する。   When the array reduction determination is completed, the processing unit 4 converts the description according to a predetermined conversion rule so that the operation description does not use the array variable determined to be capable of array reduction while maintaining the operation content (step ST4). ; Description conversion). As a conversion rule, first, the description of “write location” corresponding to the array variable name that can be reduced in the array conversion table is deleted. For an arithmetic expression in which the array reference subscript in the array described in “Write arithmetic expression” is the only variable, convert it to a function definition in which the array subscript is replaced with an argument as it is and insert it into the behavior description. . Further, in the “read location”, the reading of the array corresponding to the operation description is converted into the function call of the newly inserted function (the function in which the array subscript is replaced with the argument as it is).

図3に示す動作記述から配列削減可能と判定された配列変数名Bの「書き込み箇所」には、図6に示すように「5」と記録されているため、処理部4は、図3に示す動作記述の5行目の式を削除する。この動作記述では、5行目の式を削除すると、4行目から始まるforループの実行文がなくなり、ループの記述を残す必要がないため、4行目から6行目までのforループごと削除される。なお、ループ中に「書き込み箇所」以外の実行文を含む場合は、ループごと削除することはできない。   Since “5” as shown in FIG. 6 is recorded in the “write location” of the array variable name B determined that the array can be reduced from the behavioral description shown in FIG. Delete the expression in the fifth line of the behavior description shown In this behavioral description, if the expression on the 5th line is deleted, there is no executable statement for the for loop starting from the 4th line, and there is no need to leave a description of the loop, so the for loop from the 4th line to the 6th line is deleted. Is done. Note that if an executable statement other than “write location” is included in the loop, the entire loop cannot be deleted.

次に、処理部4は、配列の添え字変数jのみが変数である書き込み演算式(代入文)を実行した結果を返す、jを引数にとる新しい関数を定義する。ここでは、新しい関数名はfuncBと名付けることにする。さらに、「読み出し箇所」に該当する9行目に存在する配列変数名Bの配列の読み出し記述を、新たに定義した関数funcBの関数呼び出しへ変換する。このようにして、図3に示す動作記述を変換した結果が図7に示す動作記述である。図7において、文の削除は行わず、コメントアウトによる無効化をしている。   Next, the processing unit 4 defines a new function that takes j as an argument and returns a result of executing a write operation expression (assignment statement) in which only the subscript variable j of the array is a variable. Here, the new function name is named funcB. Furthermore, the reading description of the array with the array variable name B existing in the ninth line corresponding to the “reading location” is converted into a function call of the newly defined function funcB. The result of converting the behavioral description shown in FIG. 3 is the behavioral description shown in FIG. In FIG. 7, the sentence is not deleted and invalidated by commenting out.

高位合成装置3は、ステップST1からステップST4までの処理が施された動作記述をファイル記録部6から読み出して高位合成処理を実行する(ステップST5;高位合成)。なお、高位合成の対象となる動作記述において配列削減可能と判定された配列が存在する場合であっても、上記ステップST4による記述変換後の動作記述は、元の動作記述と同一の演算内容を維持しつつ、配列数が削減されている。   The high-level synthesis apparatus 3 reads out the behavioral description subjected to the processing from step ST1 to step ST4 from the file recording unit 6 and executes the high-level synthesis processing (step ST5; high-level synthesis). Even in the case where there is an array that is determined to be able to reduce the sequence in the behavioral description subject to high-level synthesis, the behavioral description after the description conversion in step ST4 has the same operation content as the original behavioral description. The number of sequences is reduced while maintaining.

高位合成では、動作記述に含まれる配列が記憶素子へ割り当てられるため、記憶素子の面積、あるいはメモリやレジスタファイル等の記憶素子へのアクセスサイクル数が高位合成の結果として実現される回路の大きな制約となる。これに対し、この実施の形態1では、上述のように配列数を減少させることにより、高位合成における面積あるいはサイクル数の制約を減少することが可能となる。このため、面積のより小さい回路、あるいは実行サイクル数のより小さい半導体集積回路を生成することが可能となる。   In high-level synthesis, the array included in the behavioral description is assigned to the storage element, so the area of the storage element or the number of access cycles to the storage element such as a memory or a register file is a major limitation of the circuit realized as a result of the high-level synthesis. It becomes. On the other hand, in the first embodiment, it is possible to reduce the restriction on the area or the number of cycles in high-level synthesis by reducing the number of arrays as described above. Therefore, it is possible to generate a circuit having a smaller area or a semiconductor integrated circuit having a smaller number of execution cycles.

以上のように、この実施の形態1によれば、動作記述に記述された配列変数の中から動作的に削減可能な配列変数を抽出し、動作記述の演算内容が変化しないように当該配列変数を削減する記述変換を施すことにより、削減可能な配列のない動作記述を得ることができる。また、この変換後の動作記述を高位合成の入力として高位合成を実施することにより、変換前の動作記述を入力とした高位合成結果に比べて、不要な配列変数に起因した面積やタイミング上の制約が緩和され、結果として面積の小さい回路、あるいは処理性能の高い回路を得ることが可能となる。   As described above, according to the first embodiment, an array variable that can be reduced in terms of operation is extracted from the array variables described in the behavior description, and the array variable is changed so that the operation content of the behavior description does not change. It is possible to obtain a behavioral description without a reducible sequence by performing description conversion for reducing the above. Also, by performing high-level synthesis using the converted behavioral description as an input for high-level synthesis, compared to the result of high-level synthesis using the behavioral description before conversion as input, the area and timing caused by unnecessary array variables The restriction is relaxed, and as a result, a circuit with a small area or a circuit with high processing performance can be obtained.

また、上述した配列変数の削減の高位合成(動作合成)への効果は、一般的な高位合成技術に対して適用可能である。さらに、処理部4が実施する動作記述の変換にかかる処理(ステップST1〜4)は、高位合成装置3による高位合成処理(ステップST5)より前に実行されるため、市販されている高位合成ツールを含む、あらゆる高位合成ツールとともに使用して容易に上記効果が得られる。   In addition, the effect of the above-described reduction of array variables on high-level synthesis (behavioral synthesis) can be applied to a general high-level synthesis technique. Furthermore, since the process (steps ST1 to ST4) relating to the behavioral description conversion performed by the processing unit 4 is executed before the high-level synthesis process (step ST5) by the high-level synthesis device 3, a commercially available high-level synthesis tool is used. The above effects can be easily obtained by using with any high-level synthesis tool including

なお、上記実施の形態1では、便宜的に動作記述をC言語で記述した場合を示したが、この発明の要旨は、特定のプログラム言語に限定されない。従って、C++、SystemC、SystemVerilog等の高位合成に入力する動作記述として用いられる言語に対し同じように適用することができる。   In the first embodiment, the case where the behavioral description is written in C language is shown for convenience, but the gist of the present invention is not limited to a specific programming language. Therefore, the present invention can be similarly applied to a language used as an operation description input to high-level synthesis such as C ++, SystemC, and SystemVerilog.

また、上記実施の形態1では、図2に示すような配列変数テーブルを記憶部5の汎用記憶領域内に格納する場合を示したが、より高速に処理を実行するため、配列変数テーブルを半導体設計支援装置2内の専用記憶領域となるSRAM等に格納してもよい。   In the first embodiment, the case where the array variable table as shown in FIG. 2 is stored in the general-purpose storage area of the storage unit 5 has been described. However, in order to execute processing at higher speed, the array variable table is stored in the semiconductor. You may store in SRAM etc. which become an exclusive storage area in the design support apparatus 2. FIG.

さらに、上記実施の形態1では、図2に示す配列変数テーブルを作成するにあたり、図4に示すように、ステップST1の配列のリスト化と、ステップST2の配列アクセスのリスト化との2つの処理に分けているが、必ずしも2処理に分割する必要はなく、処理の実装の都合等に合わせてステップのマージあるいは分割を行って構わない。   Furthermore, in the first embodiment, when the array variable table shown in FIG. 2 is created, as shown in FIG. 4, two processes, namely, the array listing in step ST1 and the array access listing in step ST2 are performed. However, it is not always necessary to divide into two processes, and step merging or division may be performed according to the convenience of the process implementation.

さらに、上記実施の形態1では、図4に示す動作を記述したプログラムをコンピュータに実行させることにより、半導体設計支援装置2を実現する場合を示したが、これらの記載は、本発明の実装方法を限定するものではなく、本発明の内容及びその特徴はプログラムが実行されるコンピュータアーキテクチャ等に依存するものではない。   Furthermore, in the first embodiment, the case where the semiconductor design support apparatus 2 is realized by causing the computer to execute the program describing the operation shown in FIG. 4 has been described. The contents and characteristics of the present invention are not dependent on the computer architecture or the like on which the program is executed.

1 高位合成システム、2 半導体設計支援装置、3 高位合成装置、4 処理部、5 記憶部、6 ファイル記録部。   1 High-level synthesis system 2 Semiconductor design support device 3 High-level synthesis device 4 Processing unit 5 Storage unit 6 File recording unit

Claims (6)

高位合成の対象となる設計回路の動作を記述した動作記述を入力し、入力した動作記述に含まれる全ての配列変数を抽出し、前記配列変数から前記動作記述において、書き込み箇所が1箇所であること、書き込み配列変数名が存在すること、及び、書き込み演算式に出現する変数が配列の添え字変数のみであること、の3つの条件が全て成立する配列変数を削減対象の配列変数として検出し、前記動作記述を前記削減対象の配列変数に対応する配列を使用しない動作記述に変換する処理部を備えた半導体設計支援装置。 An operation description that describes the operation of the design circuit that is the target of high-level synthesis is input, all array variables included in the input operation description are extracted, and there is one write location in the operation description from the array variable. The array variable for which all three conditions are satisfied is detected as the array variable to be reduced, that the write array variable name exists, and that the variable that appears in the write operation expression is only the subscript variable of the array. , semiconductor design support apparatus comprising a processing unit for converting the operation described in the non behavioral description using the sequence corresponding to the array variables of the reduction target. 処理部は、動作記述上の削減対象の配列変数の記述において、配列参照用の添え字変数のみを変数とする書き込みデータの演算式を、当該添え字変数を引数に置き換えた関数定義へ変換することを特徴とする請求項記載の半導体設計支援装置。 In the description of the array variable to be reduced in the operation description, the processing unit converts the write data arithmetic expression that uses only the array reference subscript variable as a function definition that replaces the subscript variable with an argument. The semiconductor design support apparatus according to claim 1 . 処理部は、動作記述上の削減対象の配列変数の記述において、当該削減対象の配列変数の読み出しデータの演算式を、配列参照用の添え字変数を引数に置き換えた関数の関数呼び出しへ変換することを特徴とする請求項記載の半導体設計支援装置。 In the description of the array variable to be reduced in the behavioral description, the processing unit converts the arithmetic expression of the read data of the array variable to be reduced into a function call of a function in which the array reference subscript variable is replaced with an argument. The semiconductor design support apparatus according to claim 2 . 処理部は、動作記述に含まれる配列変数及び当該配列変数の前記動作記述上での記述内容を一覧とした配列変数テーブルを生成し、当該配列変数テーブルを参照して削減対象の配列変数を検出することを特徴とする請求項1から請求項のうちのいずれか1項記載の半導体設計支援装置。 The processing unit generates an array variable table that lists the array variables included in the operation description and the description contents of the array variable in the operation description, and detects the array variable to be reduced with reference to the array variable table semiconductor design supporting apparatus according to any one of claims 1 to 3, characterized in that. 請求項1から請求項のうちのいずれか1項記載の半導体設計支援装置を用いた高位合成方法において、
処理部が、入力した動作記述に含まれる全ての配列変数を抽出し、前記配列変数から前記動作記述において、書き込み箇所が1箇所であること、書き込み配列変数名が存在すること、及び、書き込み演算式に出現する変数が配列の添え字変数のみであること、の3つの条件が全て成立する配列変数を削減対象の配列変数として検出し、前記動作記述を前記削減対象の配列変数に対応する配列を使用しない動作記述に変換するステップと、
高位合成装置が、前記ステップで変換された動作記述を入力して高位合成を実行するステップとを備えたことを特徴とする高位合成方法。
In the high-level synthesis method using the semiconductor design support device according to any one of claims 1 to 4 ,
The processing unit extracts all array variables included in the input behavior description, and from the array variable, in the behavior description, there is one write location, the presence of a write array variable name, and a write operation. An array variable that satisfies all the three conditions that the variable that appears in the expression is only an array subscript variable is detected as an array variable to be reduced, and the operation description is an array corresponding to the array variable to be reduced Converting to a behavioral description that does not use
A high-level synthesis method comprising: a high-level synthesis apparatus including the step of inputting the behavioral description converted in the step and executing high-level synthesis.
請求項1から請求項のうちのいずれか1項記載の半導体設計支援装置としてコンピュータを機能させるための半導体設計支援プログラム。 Semiconductor design support program for causing a computer to function claims 1 as semiconductor design supporting apparatus according to any one of claims 4.
JP2009086499A 2009-03-31 2009-03-31 Semiconductor design support apparatus, high-level synthesis method, and semiconductor design support program Expired - Fee Related JP5312151B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009086499A JP5312151B2 (en) 2009-03-31 2009-03-31 Semiconductor design support apparatus, high-level synthesis method, and semiconductor design support program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009086499A JP5312151B2 (en) 2009-03-31 2009-03-31 Semiconductor design support apparatus, high-level synthesis method, and semiconductor design support program

Publications (2)

Publication Number Publication Date
JP2010238054A JP2010238054A (en) 2010-10-21
JP5312151B2 true JP5312151B2 (en) 2013-10-09

Family

ID=43092299

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009086499A Expired - Fee Related JP5312151B2 (en) 2009-03-31 2009-03-31 Semiconductor design support apparatus, high-level synthesis method, and semiconductor design support program

Country Status (1)

Country Link
JP (1) JP5312151B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303832B2 (en) 2015-09-18 2019-05-28 Mitsubishi Electric Corporation Architecture generating device

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5979966B2 (en) 2012-05-10 2016-08-31 三菱電機株式会社 Circuit design support apparatus, circuit design support method, and program
JP2014225200A (en) * 2013-05-17 2014-12-04 株式会社半導体理工学研究センター Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program
JP2014225201A (en) * 2013-05-17 2014-12-04 株式会社半導体理工学研究センター Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program
JP5762482B2 (en) * 2013-07-25 2015-08-12 ヤンマー株式会社 Work vehicle
US11232245B2 (en) 2018-03-05 2022-01-25 Hitachi, Ltd. Circuit generation device and software generation device
JP7026563B2 (en) * 2018-04-23 2022-02-28 株式会社日立製作所 High-level synthesis method, high-level synthesis program, high-level synthesis device
JP7407192B2 (en) * 2018-08-09 2023-12-28 イーエニエーエスセー テック インスティチュート デ エンゲンハリア デ システマス エ コンピュータドレス テクノロジア エ シエンシア Method and apparatus for optimizing code for field programmable gate arrays
JP7100597B2 (en) * 2019-02-25 2022-07-13 株式会社日立製作所 Circuit design support device, circuit design support method, and information processing device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05101141A (en) * 1991-08-13 1993-04-23 Toshiba Corp High-level composition device
JP2002269162A (en) * 2001-03-08 2002-09-20 Nec Eng Ltd Action synthesizing method
JP4083491B2 (en) * 2002-07-19 2008-04-30 富士通株式会社 Module-to-module interface automatic synthesis apparatus, synthesis method, program, and portable storage medium
JP2005173648A (en) * 2003-12-05 2005-06-30 Matsushita Electric Ind Co Ltd High level synthesis method and high level synthesis apparatus

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303832B2 (en) 2015-09-18 2019-05-28 Mitsubishi Electric Corporation Architecture generating device

Also Published As

Publication number Publication date
JP2010238054A (en) 2010-10-21

Similar Documents

Publication Publication Date Title
JP5312151B2 (en) Semiconductor design support apparatus, high-level synthesis method, and semiconductor design support program
US8473880B1 (en) Synchronization of parallel memory accesses in a dataflow circuit
US7743352B2 (en) Computer implemented method of high-level synthesis for the efficient verification of computer software
US10691856B1 (en) System design flow with runtime customizable circuits
US8386973B2 (en) Behavioral synthesis apparatus, method, and program having test bench generation function
US10289093B1 (en) Runtime adaptive generator circuit
Tan et al. Multithreaded pipeline synthesis for data-parallel kernels
JP2006285865A (en) Correspondence relation specification method, device and program between register transfer level description and operation description
US10303833B1 (en) Parallelizing timing-based operations for circuit designs
Tatsuoka et al. Physically aware high level synthesis design flow
US7913204B2 (en) High-level synthesis apparatus, high-level synthesis system and high-level synthesis method
JP4492803B2 (en) Behavioral synthesis apparatus and program
JP5979965B2 (en) Circuit design support apparatus, circuit design support method, and program
US11983478B2 (en) Selection of full or incremental implementation flows in processing circuit designs
JP6091140B2 (en) Information processing apparatus, information processing method, and program
US9733941B2 (en) Technique for translating dependent instructions
JP5262678B2 (en) Behavioral synthesis system, behavioral synthesis method, and behavioral synthesis program
US10430540B1 (en) Processing a block diagram circuit design into an efficient high-level language representation
JP5541011B2 (en) Optimized netlist creation program, optimized netlist creation device, and optimized netlist creation method
JP2008204341A (en) Interface composite device
He et al. Efficient communication support in predictable heterogeneous mpsoc designs for streaming applications
US9652305B2 (en) Tracking source availability for instructions in a scheduler instruction queue
WO2018168211A1 (en) Information processing device, information processing method, and program
JP7026563B2 (en) High-level synthesis method, high-level synthesis program, high-level synthesis device
Tabkhi et al. Conceptual Abstraction Levels (CALs) for managing design complexity of market-oriented MPSoCs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130604

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130702

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5312151

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees