[go: up one dir, main page]

JP2014225200A - Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program - Google Patents

Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program Download PDF

Info

Publication number
JP2014225200A
JP2014225200A JP2013105140A JP2013105140A JP2014225200A JP 2014225200 A JP2014225200 A JP 2014225200A JP 2013105140 A JP2013105140 A JP 2013105140A JP 2013105140 A JP2013105140 A JP 2013105140A JP 2014225200 A JP2014225200 A JP 2014225200A
Authority
JP
Japan
Prior art keywords
reuse
description
access
array
difference
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.)
Ceased
Application number
JP2013105140A
Other languages
Japanese (ja)
Inventor
瀬戸 謙修
Kanenaga Seto
謙修 瀬戸
宏晃 竹鼻
Hiroaki Takehana
宏晃 竹鼻
貴之 大川
Takayuki Okawa
貴之 大川
秀則 松崎
Hidenori Matsuzaki
秀則 松崎
風間 英樹
Hideki Kazama
英樹 風間
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.)
Semiconductor Technology Academic Research Center
Original Assignee
Semiconductor Technology Academic Research Center
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 Semiconductor Technology Academic Research Center filed Critical Semiconductor Technology Academic Research Center
Priority to JP2013105140A priority Critical patent/JP2014225200A/en
Publication of JP2014225200A publication Critical patent/JP2014225200A/en
Ceased legal-status Critical Current

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide a semiconductor device design apparatus, a semiconductor device design method, and a semiconductor device design program capable of preventing a redundant array access from being added during a behavioral description, preventing an increase in an area of generated hardware, and achieving high speed operation.SOLUTION: An analysis unit analyzes a reuse relation between array accesses from a behavioral description stored in a storage unit on the basis of a subscript and conditions of a conditional statement, and calculates a data reuse distance between the array accesses, a difference in the reuse distance between the array accesses, and conditions of occurrence of the reuse of the array accesses. A first processing unit adds a circulation buffer description or a shift register description on the basis of the difference in reuse distance and a specified value. A second processing unit replaces the array access with a temporary variable access representing input/output terminals of the shift register or the circulation buffer, adds a conditional statement, and generates an optimized behavioral description.

Description

本発明は、デジタル回路の動作が記述された動作レベル記述(以下、単に動作記述と称す)を最適化する半導体装置の設計装置、設計方法、設計プログラムに関する。   The present invention relates to a semiconductor device design apparatus, a design method, and a design program for optimizing a behavior level description (hereinafter simply referred to as a behavior description) in which an operation of a digital circuit is described.

高位合成技術(非特許文献1)は、C言語等のプログラムにより構成された動作記述(以下、C記述とも言う)からRTL(Register Transfer Level)記述を自動生成できるため、VLSI(Very Large Scale Integration)の設計効率を大きく向上できる。しかし、高性能なRTL記述を生成するには、通常、C記述上でメモリアクセスの最適化が必要となる。現在、高位合成ツールによるメモリアクセスの最適化は、高位合成ツールの利用者が、人手でC記述を最適化する必要があり、設計時間の増大を招いている。   The high-level synthesis technology (Non-patent Document 1) can automatically generate an RTL (Register Transfer Level) description from an operation description (hereinafter also referred to as C description) configured by a program such as C language. ) Design efficiency can be greatly improved. However, in order to generate a high-performance RTL description, it is usually necessary to optimize memory access on the C description. Currently, optimization of memory access by a high-level synthesis tool requires the user of the high-level synthesis tool to manually optimize the C description, which increases design time.

メモリアクセスの最適化技術の1つとしてスカラリプレイスと呼ばれる技術がある(非特許文献2、3、4)。C記述での配列と一時変数は、ハードウェア上において、メモリとレジスタとなる。スカラリプレイスは、C記述中の複数の配列へのアクセスを一時変数へのアクセス、すなわち、メモリへのアクセスをレジスタへのアクセスに置き換える技術である。スカラリプレイスを高位合成前のC記述に適用することにより、自動生成されるハードウェアのメモリアクセスを削減でき、性能の向上が期待できる。   One technique for optimizing memory access is a technique called scalar replacement (Non-Patent Documents 2, 3, and 4). The array and temporary variable in the C description are a memory and a register on the hardware. The scalar replacement is a technique that replaces access to a plurality of arrays in a C description with access to a temporary variable, that is, access to a memory with access to a register. By applying the scalar replace to the C description before the high-level synthesis, it is possible to reduce the memory access of the automatically generated hardware and to improve the performance.

しかし、既存のスカラリプレイスのうち最も汎用性の高い技術である(非特許文献3)は、配列アクセスの実行条件を厳密に解析しないため、メモリアクセスをレジスタアクセスに置き換えられない場合が発生する。この結果、生成されるハードウェアの面積が増加し、動作速度が低下する場合がある。   However, the most versatile technique among the existing scalar replaces (Non-Patent Document 3) does not strictly analyze the execution conditions of array access, and therefore, there are cases where memory access cannot be replaced with register access. As a result, the area of the generated hardware increases, and the operation speed may decrease.

特開2012−118835号公報JP 2012-118835 A

Daniel D. Gajski, “High Level Synthesis: An Introduction to Chip and System Design,” Kluwer Academic Publishers, 1992.Daniel D. Gajski, “High Level Synthesis: An Introduction to Chip and System Design,” Kluwer Academic Publishers, 1992. Steve Carr, Ken Kennedy, “Scalar Replacement in the Presence of Conditional Control Flow,” Software-Practice and Experience, Vol. 24, Issue 1, pp. 51-77, 1994.Steve Carr, Ken Kennedy, “Scalar Replacement in the Presence of Conditional Control Flow,” Software-Practice and Experience, Vol. 24, Issue 1, pp. 51-77, 1994. Byoungro So, “An Efficient, Design Space Exploration For Balance Between Computation And Memory”, Ph.D. dissertation, University of Southern California, 2003.Byoungro So, “An Efficient, Design Space Exploration For Balance Between Computation And Memory”, Ph.D.dissertation, University of Southern California, 2003. Nastaran Baradaran, Pedro C. Diniz, and Joonseok Park, “Extending the Applicability of Scalar Replacement to Multiple Induction Variables,” pp. 455-469, Languages and Compilers for High Performance Computing, 2004Nastaran Baradaran, Pedro C. Diniz, and Joonseok Park, “Extending the Applicability of Scalar Replacement to Multiple Induction Variables,” pp. 455-469, Languages and Compilers for High Performance Computing, 2004

本発明は、冗長なメモリアクセスが動作記述中に残ることを防止し、生成されるハードウェアの面積の増加を防止して高速動作を可能とする半導体装置の設計装置、設計方法、設計プログラムを提供するものである。   The present invention provides a semiconductor device design apparatus, design method, and design program that prevent a redundant memory access from remaining in an operation description and prevent an increase in the area of generated hardware to enable high-speed operation. It is to provide.

本発明の半導体装置の設計装置の態様は、複数の配列アクセス及び条件文を含むデジタル回路の動作が記述された動作記述が記憶された記憶部と、前記記憶部に記憶された前記動作記述より、前記配列アクセス間の再利用関係を前記条件文に基づき解析し、前記配列アクセス間のデータの再利用距離、前記配列アクセス間の前記再利用距離の差、及び前記配列アクセスの再利用が発生する条件を算出する解析部と、前記解析部により算出された前記再利用距離が長い方から順に、前記再利用距離の差と規定値とを比較し、前記再利用距離の差が前記規定値以上である場合、前記動作記述に循環バッファの記述を追加し、前記再利用距離の差が前記規定値未満である場合、前記動作記述にシフトレジスタの記述を追加する第1の処理部と、前記動作記述の配列アクセスを、前記循環バッファの入出力端に対応する一時変数へのアクセス、又はシフトレジスタの入出力端に対応する一時変数へのアクセスに置き換え、前記一時変数へのアクセスの記述に条件文を追加して、動作記述を生成する第2の処理部とを具備することを特徴とする。   According to an aspect of the semiconductor device design apparatus of the present invention, a storage unit storing an operation description in which a digital circuit operation including a plurality of array accesses and conditional statements is stored, and the operation description stored in the storage unit. The reuse relationship between the array accesses is analyzed based on the conditional statement, and the data reuse distance between the array accesses, the difference in the reuse distance between the array accesses, and the reuse of the array access occurs. The difference between the reuse distances and the specified value are compared in order from the longest reuse distance calculated by the analysis unit, and the analysis unit that calculates the condition to perform the difference. If the above, a description of a circular buffer is added to the behavioral description, and if the difference in reuse distance is less than the specified value, a first processing unit that adds a description of a shift register to the behavioral description; Above The array access in the operation description is replaced with the access to the temporary variable corresponding to the input / output end of the circular buffer or the access to the temporary variable corresponding to the input / output end of the shift register. And a second processing unit for generating a behavioral description by adding a conditional statement.

動作記述の一例を示す図。The figure which shows an example of operation | movement description. 図1に示す動作記述に対応する再利用グラフの例を示す図。The figure which shows the example of the reuse graph corresponding to the action description shown in FIG. 既存手法による最適化された動作記述の一例を示す図。The figure which shows an example of the operation | movement description optimized by the existing method. 本実施形態が適用される動作記述の最適化装置の一例を示す構成図。The block diagram which shows an example of the optimization apparatus of the behavioral description to which this embodiment is applied. 図4に示す制御部と記憶装置の機能を示す構成図。The block diagram which shows the function of the control part and memory | storage device which are shown in FIG. 本実施形態の動作を示すフローチャート。The flowchart which shows operation | movement of this embodiment. 本実施形態の動作記述に対応する再利用グラフの例を示す図。The figure which shows the example of the reuse graph corresponding to the action description of this embodiment. 本実施形態の再利用条件を含む解析結果を示す図。The figure which shows the analysis result containing the reuse conditions of this embodiment. 本実施形態に係る再利用の発生状態を示す図。The figure which shows the generation | occurrence | production state of the reuse which concerns on this embodiment. 本実施形態による処理途中の動作記述の一例を示す図。The figure which shows an example of the operation | movement description in the middle of the process by this embodiment. 本実施形態による最適化された動作記述の一例を示す図。The figure which shows an example of the optimized operation | movement description by this embodiment. 既存手法により生成された回路の一例を示す図。The figure which shows an example of the circuit produced | generated by the existing method. 本実施形態により生成された回路の一例を示す図。The figure which shows an example of the circuit produced | generated by this embodiment. 本実施形態に係り、ループ回数がパラメータである場合の動作記述の一例を示す図。The figure which shows an example of the operation | movement description in connection with this embodiment when the number of loops is a parameter. 図14に示す例の場合における再利用条件を含む解析結果を示す図。The figure which shows the analysis result containing the reuse condition in the case of the example shown in FIG. 図14に示す例の場合における再利用の発生状態を示す図。The figure which shows the generation | occurrence | production state of the reuse in the case of the example shown in FIG. 図14に示す例の場合における最適化された動作記述の一例を示す図。The figure which shows an example of the optimized behavioral description in the case of the example shown in FIG. 最適化された動作記述に基づき生成された回路の一例を示す図。The figure which shows an example of the circuit produced | generated based on the optimized behavioral description.

前述したように、高位合成を使用して動作記述からハードウェアを自動生成する場合において、配列アクセスは、メモリアクセスに対応する。メモリアクセスは、長時間を要するため、配列アクセスを削除することが有効である。また、前述したスカラリプレイスは、メモリへのアクセスをレジスタのアクセスに置換することにより、メモリアクセス数を削減する方法である。すなわち、スカラリプレイスは、メモリから読み出されたデータをシフトレジスタに保持し、このシフトレジスタに保持されたデータを再利用することにより、同じメモリからの同時アクセスを削減するものである。   As described above, when the hardware is automatically generated from the behavioral description using high-level synthesis, the array access corresponds to the memory access. Since memory access takes a long time, it is effective to delete array access. The above-described scalar replace is a method of reducing the number of memory accesses by replacing the access to the memory with the access of the register. That is, the scalar replace is to reduce the simultaneous access from the same memory by holding the data read from the memory in the shift register and reusing the data held in the shift register.

スカラリプレイスを行うため、メモリからアクセスしたデータをシフトレジスタに保存し、配列アクセス間の依存関係に基づき、シフトレジスタに保存されたデータが再利用される機会を解析する必要がある。   In order to perform the scalar replacement, it is necessary to store the data accessed from the memory in the shift register and analyze the opportunity to reuse the data stored in the shift register based on the dependency between the array accesses.

配列アクセス間の依存関係とは、同じメモリ領域に複数回アクセスがあった場合、配列アクセス間に依存があると見做される。依存としては、次の4種類がある。読み出し後の読み出し(read after read : RAR)、書き込み後の読み出し(read after write : RAW)、読み出し後の書き込み(write after read : WAR)、及び書き込み後の書き込み(write after write : WAW)。このうち、再利用を行うことが可能な依存は、RAR、RAW、WAWの3つである。   The dependency between array accesses is considered to be dependent between array accesses when the same memory area is accessed multiple times. There are the following four types of dependence. Reading after reading (read after read: RAR), reading after writing (read after write: RAW), writing after reading (write after read: WAR), and writing after writing (write after write: WAW). Among these, there are three dependencies that can be reused: RAR, RAW, and WAW.

例えば図1に示すC言語により記載された動作記述が入力された場合、配列アクセスA[y][x]、A[y][x−2]、A[0][x]、A[y−3][x]は、配列アクセスA[y][x]のデータがA[y][x−2]、A[0][x]、A[y−3][x]に再利用されるため、依存関係にある。   For example, when an operation description written in the C language shown in FIG. 1 is input, array access A [y] [x], A [y] [x-2], A [0] [x], A [y -3] [x], the data of array access A [y] [x] is reused for A [y] [x-2], A [0] [x], A [y-3] [x] Are in a dependency relationship.

この動作記述に対して、配列アクセス間の再利用の関係が解析され、再利用距離が計算される。この解析結果を利用して、動作記述中にシフトレジスタが挿入され、配列アクセスが一時変数アクセス、すなわち、シフトレジスタへのアクセスに置換される。   For this behavioral description, the reuse relationship between array accesses is analyzed and the reuse distance is calculated. Using this analysis result, a shift register is inserted into the behavioral description, and array access is replaced with temporary variable access, that is, access to the shift register.

ここで、本実施形態に適用される用語を次のように定義する。   Here, terms applied to the present embodiment are defined as follows.

図2(a)(b)は、図1に示す動作記述に対応する再利用グラフを示している。再利用グラフとは、各配列アクセスから再利用データの供給源(以下、再利用元、ジェネレータとも言う)のノード、又は、供給先(以下、再利用先とも言う)のノードを作成し、供給源のノードと供給先のノードをエッジと称する矢印で接続したものである。このエッジには、再利用ベクトルが書き添えられる。   2A and 2B show reuse graphs corresponding to the behavioral description shown in FIG. A reuse graph is created by supplying a node of a reuse data source (hereinafter also referred to as a reuse source or a generator) or a node of a supply destination (hereinafter also referred to as a reuse destination) from each array access. A source node and a supply destination node are connected by an arrow called an edge. This edge is accompanied by a reuse vector.

図2(a)(b)に示す再利用グラフにおいて、それぞれ4つの丸印は、配列アクセスA[y][x]、A[y][x−2]、A[0][x]、A[y−3][x]を表し、エッジにより再利用関係が表されている。エッジの付け根が再利用元としてのジェネレータであり、エッジの先が再利用先である。   In the reuse graph shown in FIGS. 2A and 2B, each of the four circles indicates array access A [y] [x], A [y] [x-2], A [0] [x], A [y-3] [x] is represented, and the reuse relationship is represented by an edge. The root of the edge is a generator as a reuse source, and the tip of the edge is the reuse destination.

図2(a)(b)において、配列アクセスA[y][x]は、配列アクセスA[y][x]から外側に向いたエッジのみが接続され、配列アクセスA[y][x]に向いたエッジが接続されていない。このため、配列アクセスA[y][x]は、ジェネレータである。   In FIGS. 2A and 2B, the array access A [y] [x] is connected only to the edge directed outward from the array access A [y] [x], and the array access A [y] [x]. The edge facing is not connected. For this reason, array access A [y] [x] is a generator.

エッジには、再利用ベクトル<dy、dx>が付加されている。再利用ベクトル<dy、dx>は、エッジで接続された配列アクセスの添え字同士の差により構成されている。例えば、配列アクセスA[y][x]とA[y][x−2]との再利用ベクトルは、<0、2>として求められ、配列アクセスA[y][x]とA[y−3][x]との再利用ベクトルは、<3、0>として求められる。   The reuse vector <dy, dx> is added to the edge. The reuse vector <dy, dx> is configured by a difference between array access subscripts connected by edges. For example, the reuse vector of array access A [y] [x] and A [y] [x-2] is obtained as <0, 2>, and array access A [y] [x] and A [y] −3] The reuse vector with [x] is obtained as <3, 0>.

図2(a)に示す再利用ベクトル<dy、dx>は、各配列アクセスがジェネレータに対して何回ループが回った後に再利用されるかを表している。例えば再利用ベクトル<dy、dx>(2重ループの時)の場合、外側ループがdy回、内側ループがdx回回ったら、再利用元から再利用先に再利用が発生することを示す。   The reuse vector <dy, dx> shown in FIG. 2A indicates how many times each array access is reused after the loop has been made to the generator. For example, in the case of the reuse vector <dy, dx> (in the case of a double loop), if the outer loop turns dy times and the inner loop turns dx times, it indicates that reuse occurs from the reuse source to the reuse destination.

図2(b)に示す再利用距離dは、各配列アクセスがジェネレータに対して何回ループが回った後に再利用されるかを、最も内側のループ回数に換算して、表している。再利用距離dは、図2(a)に示す再利用ベクトルに基づき計算される。すなわち、再利用距離dは、再利用ベクトル<dy,dx>、内側のループ回数をjとした場合、“d=dy×j+dx”で表される。図2(a)に示す再利用ベクトル<3,0>の場合、内側のループ回数は図1より10回である。これに基づき、再利用距離dを計算すると、3×10+0=30となる。また、再利用ベクトル<0、2>の場合、0×10+2=2となる。3重以上のループの場合も同様の方法で再利用距離dを計算でき、例えば非特許文献3に計算方法が掲載されている。   The reuse distance d shown in FIG. 2B represents how many times each array access is looped with respect to the generator and then reused in terms of the innermost loop count. The reuse distance d is calculated based on the reuse vector shown in FIG. That is, the reuse distance d is represented by “d = dy × j + dx”, where j is the reuse vector <dy, dx> and the number of inner loops. In the case of the reuse vector <3, 0> shown in FIG. 2A, the number of inner loops is 10 from FIG. Based on this, the reuse distance d is calculated to be 3 × 10 + 0 = 30. In the case of the reuse vector <0, 2>, 0 × 10 + 2 = 2. Even in the case of three or more loops, the reuse distance d can be calculated by the same method. For example, Non-Patent Document 3 discloses a calculation method.

また、内側のループが30回回った後、配列アクセスA[y][x]にてストアされたデータが配列アクセスA[y−3][x]にてロードされる。したがって、30個のレジスタにより構成されるシフトレジスタを用意し、配列アクセスA[y][x]でライトアクセスするデータをシフトレジスタの先頭のレジスタに格納し、内側ループが回転する毎にシフトレジスタのデータをシフトし、配列アクセスA[y−3][x]のリードアクセスをシフトレジスタの最後のレジスタアクセスに置き換えることにより、配列アクセスA[y−3][x]をシフトレジスタへのアクセスに置き換えることができる。   In addition, after the inner loop has been rotated 30 times, the data stored by the array access A [y] [x] is loaded by the array access A [y-3] [x]. Therefore, a shift register composed of 30 registers is prepared, data to be write-accessed by array access A [y] [x] is stored in the first register of the shift register, and each time the inner loop rotates, the shift register And the array access A [y-3] [x] is accessed to the shift register by replacing the read access of the array access A [y-3] [x] with the last register access of the shift register. Can be replaced.

図3は、既存の手法により配列アクセスがシフトレジスタへのアクセスに置換された様子を示している。図3に示すように、図1に示す配列アクセスA[y][x−2]、A[y−3][x]が一時変数アクセスs2、s30(第5行、第8行)に置換され、さらに、第10行乃至第39行に示すように、A[y][x]からA[y−3][x]の再利用、及びA[y][x]からからA[y][x−2]への再利用のために、シフトレジスタs1〜s30が追加される(第10行乃至第39行)。すなわち、合計30個のレジスタが追加される。   FIG. 3 shows a state in which array access is replaced with access to a shift register by an existing method. As shown in FIG. 3, the array accesses A [y] [x-2] and A [y-3] [x] shown in FIG. 1 are replaced with temporary variable accesses s2 and s30 (5th and 8th rows). Furthermore, as shown in lines 10 to 39, reuse of A [y] [x] to A [y-3] [x] and A [y] [x] to A [y ] Shift registers s1 to s30 are added for reuse in [x-2] (line 10 to line 39). That is, a total of 30 registers are added.

上記既存手法の場合、シフトレジスタをフリップフロップ回路により実現する記述(s30=s29、s29=s28、…)を必要とするため、大規模な面積のシフトレジスタが導入される。   In the case of the above existing method, since a description (s30 = s29, s29 = s28,...) For realizing the shift register by a flip-flop circuit is required, a shift register having a large area is introduced.

さらに、図2(a)に破線の矢印で示すように、再利用ベクトルの形式に制限があり、例えば画像処理において頻出する添え字に定数が含まれる配列アクセスA[0][x](図3、第7行)を削除することが不可能である。この結果、メモリアクセスの削減が不十分となり、性能向上が不十分である。   Further, as shown by the dashed arrows in FIG. 2A, there is a limitation on the format of the reuse vector, for example, array access A [0] [x] in which a constant is included in a subscript that frequently appears in image processing (FIG. 3, line 7) cannot be deleted. As a result, memory access reduction is insufficient and performance improvement is insufficient.

さらに、削除できない配列アクセスA[0][x]があるため、配列A[y][x]も削除することができず、配列Aを格納するメモリを残す必要がある。したがって、回路面積が増大し、動作周波数が低下するという問題がある。   Furthermore, since there is array access A [0] [x] that cannot be deleted, the array A [y] [x] cannot be deleted, and it is necessary to leave a memory for storing the array A. Therefore, there is a problem that the circuit area increases and the operating frequency decreases.

そこで、本実施形態は、動作記述に対する配列アクセス間の再利用関係を、再利用の発生条件も考慮して解析する。さらに、再利用距離、具体的には距離の差に基づき、配列アクセスをシフトレジスタへのアクセス、又は循環バッファへのアクセスで記述する。これにより、さらなる配列アクセスの削減を可能とし、回路面積を削減でき、動作周波数の低下を防止可能とする。   Therefore, in the present embodiment, the reuse relationship between the array accesses for the behavioral description is analyzed in consideration of the reuse occurrence condition. Further, based on the reuse distance, specifically, the difference in distance, array access is described as access to a shift register or access to a circular buffer. This makes it possible to further reduce array access, reduce the circuit area, and prevent a decrease in operating frequency.

(実施形態)
以下、実施形態について、具体的に説明する。
(Embodiment)
Hereinafter, embodiments will be specifically described.

本実施形態は、例えば動作記述の最適化による集積回路設計の最適化について説明する。動作記述の最適化は、高位合成の下位概念であり、動作記述の最適化も高位合成と同様に、C言語などのプログラミング言語により構成された動作記述からRTL記述を生成する際に使用され、例えば画像処理やオーディオ信号処理回路の設計に広く適用されている。しかし、本実施形態は、動作記述の最適化に限定されるものではなく、高位合成に適用することも可能である。   In the present embodiment, optimization of integrated circuit design by optimizing behavioral descriptions will be described. The optimization of the behavioral description is a subordinate concept of the high-level synthesis, and the optimization of the behavioral description is used when generating the RTL description from the behavioral description configured by a programming language such as C language, as in the high-level synthesis. For example, it is widely applied to the design of image processing and audio signal processing circuits. However, this embodiment is not limited to optimizing behavioral descriptions, and can also be applied to high-level synthesis.

(装置構成)
図4は、本実施形態が適用される動作記述の最適化装置の一例を示している。動作記述の最適化装置10は、例えばコンピュータにより構成され、このコンピュータは、例えば制御部11に接続された入力装置12、出力装置13、記憶装置14、メモリ15により構成されている。
(Device configuration)
FIG. 4 shows an example of an operation description optimizing device to which the present embodiment is applied. The behavioral description optimizing device 10 is constituted by, for example, a computer, and this computer is constituted by, for example, an input device 12, an output device 13, a storage device 14, and a memory 15 connected to the control unit 11.

制御部11は、例えばCPU(Central Processing Unit)であり、メモリ15に記憶されたプログラムに従って所定の動作を実行する。   The control unit 11 is a CPU (Central Processing Unit), for example, and executes a predetermined operation according to a program stored in the memory 15.

入力装置12は、半導体集積回路の動作を示す動作記述や、半導体集積回路の制約等の動作記述の最適化処理に必要な情報を入力するための例えばキーボードである。   The input device 12 is, for example, a keyboard for inputting information necessary for optimizing the operation description indicating the operation of the semiconductor integrated circuit and the operation description such as restrictions on the semiconductor integrated circuit.

出力装置13は、生成された動作記述等を出力するものであり、例えばプリンタにより構成されている。   The output device 13 outputs the generated operation description and the like, and is configured by a printer, for example.

記憶装置14は、例えばハードディスク装置やフラッシュメモリなどのコンピュータにより読み取り可能な記憶媒体である。この記憶装置14には、例えば制御部11の動作に必要なプログラムや、動作記述の最適化の処理に必要なプログラム、或いは例えばC言語による動作記述などが記憶される。   The storage device 14 is a computer-readable storage medium such as a hard disk device or a flash memory. The storage device 14 stores, for example, a program necessary for the operation of the control unit 11, a program necessary for optimizing the operation description, or an operation description in C language, for example.

メモリ15は、例えばRAM(Random Access Memory)であり、記憶装置14から読み出された制御部11の動作に必要なプログラムなどがロードされる。   The memory 15 is, for example, a RAM (Random Access Memory), and is loaded with a program and the like necessary for the operation of the control unit 11 read from the storage device 14.

尚、記憶装置14は、制御部11に直接接続されている必要はなく、ネットワークを介して接続されていてもよい。   The storage device 14 need not be directly connected to the control unit 11 and may be connected via a network.

図5は、図4に示す制御部11と記憶装置14により実現される機能を示している。   FIG. 5 shows functions realized by the control unit 11 and the storage device 14 shown in FIG.

制御部11は、解析処理部11a、第1の処理部11b、及び第2の処理部11cを有している。   The control unit 11 includes an analysis processing unit 11a, a first processing unit 11b, and a second processing unit 11c.

また、記憶装置14には、動作記述14aと、制御部11の動作の過程において生成された例えば配列アクセス間の再利用情報14b、及び最適化された動作記述14cが格納される。   Further, the storage device 14 stores an operation description 14a, reuse information 14b between array accesses generated in the course of the operation of the control unit 11, and an optimized operation description 14c.

(動作)
図6は、制御部11の動作を示すものであり、図6を参照して図5に示す各機能について説明する。
(Operation)
FIG. 6 shows the operation of the control unit 11, and each function shown in FIG. 5 will be described with reference to FIG.

先ず、制御部11の解析処理部11aは、記憶装置14から動作記述14aを読み出し、動作記述14a中の“if条件文”及び配列アクセスの添え字を考慮して配列アクセス間の再利用関係を解析する(S11)。この解析により、図7(a)(b)に示す再利用グラフを生成するため、再利用ベクトルが生成される。   First, the analysis processing unit 11a of the control unit 11 reads out the operation description 14a from the storage device 14, and considers the reuse relationship between the array accesses in consideration of the “if conditional statement” and the array access subscript in the operation description 14a. Analyze (S11). By this analysis, a reuse vector is generated in order to generate the reuse graph shown in FIGS.

例えば図1に示す動作記述の場合、配列アクセスは、前述したように、第3行のA[y][x]、第4行のA[y][x−2]、第6行のA[0][x]、第7行のA[y−3][x]であり、ジェネレータとしての配列アクセスA[y][x]と、再利用先としての配列アクセスA[y−3][x]、A[y][x−2]、A[0][x]との間の再利用ベクトルが生成される。このとき、動作記述中の“if条件文”及び配列アクセスの添え字を考慮して配列アクセス間の再利用関係が調べられる。   For example, in the case of the behavioral description shown in FIG. 1, as described above, array access includes A [y] [x] in the third row, A [y] [x-2] in the fourth row, and A in the sixth row. [0] [x], A [y-3] [x] in the seventh row, array access A [y] [x] as a generator, and array access A [y-3] as a reuse destination A reuse vector between [x], A [y] [x-2], and A [0] [x] is generated. At this time, the reuse relationship between the array accesses is examined in consideration of the “if conditional statement” in the behavioral description and the array access subscript.

すなわち、配列アクセスA[0][x]は、図1に示す第5行、第6行の記述より、ループ変数yが、y=1又はy=2の時、A[0][x]がA[y][x]でアクセスされた値を再利用することが分かる。このため、図7(a)に示すように、配列アクセスA[y][x]と配列アクセスA[0][x]の間には、y=1のときの再利用ベクトル<1、0>と、y=2のときの再利用ベクトル<2、0>が生成される。   That is, the array access A [0] [x] indicates that A [0] [x] when the loop variable y is y = 1 or y = 2 from the description of the fifth and sixth lines shown in FIG. It can be seen that the value accessed by A [y] [x] is reused. Therefore, as shown in FIG. 7A, between the array access A [y] [x] and the array access A [0] [x], the reuse vector when y = 1 <1, 0. > And a reuse vector <2, 0> when y = 2 is generated.

また、配列アクセスA[y][x]と配列アクセスA[y−3][x]との間の再利用ベクトル<3、0>、及び配列アクセスA[y][x]と配列アクセスA[y][x−2]との間の再利用ベクトル<0、2>も同様にして生成される。   Further, the reuse vector <3, 0> between the array access A [y] [x] and the array access A [y-3] [x], and the array access A [y] [x] and the array access A The reuse vector <0, 2> between [y] and [x-2] is generated in the same manner.

次いで、図7(b)に示す配列アクセス間の再利用距離、及び再利用距離の差が算出される(S12)。再利用距離の差については、後述する。   Next, the reuse distance between the array accesses shown in FIG. 7B and the difference in the reuse distance are calculated (S12). The difference in reuse distance will be described later.

この後、動作記述に基づき、再利用グラフ中の矢印に付加する再利用発生条件、すなわち、y=1、y=2などが算出される(S13)。   Thereafter, based on the behavioral description, the reuse occurrence conditions to be added to the arrows in the reuse graph, that is, y = 1, y = 2, etc. are calculated (S13).

ここで、再利用発生条件とは、再利用先の配列アクセスにて再利用が発生するときに、成り立つ条件を言う。例えば本実施形態において、ループ変数y=1又はy=2の時、A[0][x]がA[y][x]でアクセスされた値を再利用する。再利用条件は、動作記述に含まれる配列アクセスの添え字、及び“if条件文”を解析することにより導出される。   Here, the reuse occurrence condition refers to a condition that holds when reuse occurs in array access at the reuse destination. For example, in this embodiment, when the loop variable y = 1 or y = 2, A [0] [x] reuses the value accessed by A [y] [x]. The reuse condition is derived by analyzing the array access subscript included in the behavioral description and the “if conditional statement”.

次に、上記解析結果に基づき、再利用発生条件を含んだ表が生成される(S14)。この再利用発生条件を含んだ表は、例えば配列アクセス間の再利用情報14bとして、記憶装置14内に保存される。   Next, a table including a reuse occurrence condition is generated based on the analysis result (S14). The table including the reuse occurrence condition is stored in the storage device 14 as, for example, reuse information 14b between array accesses.

図8は、上記解析結果に基づき、生成された再利用発生条件を含んだ表を示し、図9は、再利用発生条件を含んだ表に基づき生成された再利用発生グラフの一例を示している。   FIG. 8 shows a table including the reuse occurrence condition generated based on the analysis result, and FIG. 9 shows an example of the reuse occurrence graph generated based on the table including the reuse occurrence condition. Yes.

この表、及びグラフは、注目する配列(配列A)の再利用グラフの各矢印を、再利用距離の小さい順に上から並べたものであり、アクセス種類、配列アクセス、再利用距離dn(nは、自然数)、配列アクセスの置き換え後の変数名、再利用距離の差、再利用発生条件を含んでいる。   In this table and graph, the arrows of the reuse graph of the array of interest (array A) are arranged from the top in ascending order of reuse distance, and access type, array access, reuse distance dn (n is , Natural number), variable name after array access replacement, reuse distance difference, and reuse occurrence condition.

図8、図9において、アクセス種類の先頭の要素は、ジェネレータであり、以下、各再利用先が記載されている。   8 and 9, the first element of the access type is a generator, and each reuse destination is described below.

配列アクセス、及び再利用距離は、再利用グラフの各配列アクセス、及び再利用距離に対応されている。   The array access and the reuse distance correspond to each array access and the reuse distance of the reuse graph.

置き換え後の変数名は、再利用先としての配列アクセスを一時変数に置き換える際の変数名であり、この変数名は、例えば「s + 再利用距離」に設定されている。   The variable name after replacement is a variable name when array access as a reuse destination is replaced with a temporary variable, and this variable name is set to “s + reuse distance”, for example.

再利用距離の差は、注目する再利用先の再利用距離と、注目する再利用先の一つ前の再利用先の再利用距離との差である。換言すると、再利用距離の小さい順に並べられた複数の再利用距離において、隣接する2つの再利用距離の差である。この再利用距離の差が、必要なシフトレジスタ、又は、循環バッファのサイズとなる。すなわち、再利用距離の差は、シフトレジスタを構成するレジスタの数、又は、循環バッファを構成するメモリの要素数を示している。   The difference in reuse distance is the difference between the reuse distance of the target reuse destination and the reuse distance of the reuse destination immediately before the target reuse destination. In other words, it is the difference between two adjacent reuse distances in a plurality of reuse distances arranged in ascending order of reuse distance. The difference in the reuse distance is the size of the necessary shift register or circular buffer. That is, the reuse distance difference indicates the number of registers constituting the shift register or the number of elements of the memory constituting the circular buffer.

再利用発生条件としては、再利用グラフを用いて解析された配列アクセスA[0][x]に関するy=1、y=2が設定されている。   As the reuse occurrence condition, y = 1 and y = 2 are set for the array access A [0] [x] analyzed using the reuse graph.

次に、図5に示す第1の処理部11bにおいて、記憶装置14に記憶された再利用発生条件を含んだ表、再利用発生グラフ、及び動作記述に基づき、シフトレジスタ又は循環バッファの記述が、最も内側のループの最後部に追加される(S15)。   Next, in the first processing unit 11b shown in FIG. 5, the shift register or the circular buffer is described based on the table including the reuse occurrence condition, the reuse occurrence graph, and the operation description stored in the storage device. Are added to the last part of the innermost loop (S15).

具体的には、図9に示す再利用発生グラフを参照し、ジェネレータから最も離れたエッジから順に、シフトレジスタ、又は循環バッファの記述が追加される。換言すると、再利用距離が最も長い配列アクセスから順に、置き換え後にアクセスするシフトレジスタ、または循環バッファの記述が追加される。この時、例えば再利用距離の差に規定値を設定し、この規定値に基づき、シフトレジスタ、又は循環バッファの記述が追加される。   Specifically, referring to the reuse occurrence graph shown in FIG. 9, descriptions of shift registers or circular buffers are added in order from the edge farthest from the generator. In other words, descriptions of shift registers or circular buffers to be accessed after replacement are added in order from the array access with the longest reuse distance. At this time, for example, a prescribed value is set for the difference in the reuse distance, and a description of the shift register or the circular buffer is added based on this prescribed value.

前述したように、再利用距離の差は、シフトレジスタを構成するレジスタの数、又は、循環バッファを構成するメモリの要素数を示している。再利用距離の差が大きい場合において、シフトレジスタを適用した場合、回路規模が増大する。このため、再利用距離の差に規定値を設定し、回路規模の増大を防止して、配列アクセスをシフトレジスタ、又は循環バッファに置き換えるようにしている。   As described above, the difference in reuse distance indicates the number of registers constituting the shift register or the number of elements of the memory constituting the circular buffer. When the difference in reuse distance is large, the circuit scale increases when the shift register is applied. Therefore, a prescribed value is set for the difference in reuse distance to prevent an increase in circuit scale, and array access is replaced with a shift register or a circular buffer.

本実施形態において、規定値は例えば“8”に設定される。再利用距離の差が“8”以上である場合、シフトレジスタにより構成した場合、大規模な回路となるため、循環バッファの記述が追加される。また、“8”未満である場合、シフトレジスタにより構成しても回路規模はそれ程増加しないため、シフトレジスタの記述が追加される。   In the present embodiment, the specified value is set to “8”, for example. When the difference in the reuse distance is “8” or more, a configuration of a shift register results in a large-scale circuit, so that a circular buffer description is added. If it is less than “8”, the circuit scale does not increase so much even if it is constituted by a shift register, so a description of the shift register is added.

図8に示す例の場合、A[y][x]→A[y][x−2]の再利用距離の差は“2”であるため、シフトレジスタの記述が追加される。シフトレジスタを構成するレジスタの数は、再利用距離の差、この場合、“2”に設定される。   In the case of the example illustrated in FIG. 8, the difference in the reuse distance of A [y] [x] → A [y] [x−2] is “2”, so that a shift register description is added. The number of registers constituting the shift register is set to a difference in reuse distance, in this case, “2”.

また、A[y][x−2]→A[0][x](y=1のとき)の再利用距離の差、A[0][x](y=1のとき)→A[0][x](y=2のとき)の再利用距離の差、A[0][x](y=2のとき)→A[y−3][x]の再利用距離の差は、いずれも“8”以上である。このため、3つの循環バッファが追加される。循環バッファを構成するメモリの要素数は、再利用距離の差“8”“10”“10”にそれぞれ設定される。   Further, the reuse distance difference of A [y] [x−2] → A [0] [x] (when y = 1), A [0] [x] (when y = 1) → A [ The difference in reuse distance of 0] [x] (when y = 2), the difference in reuse distance of A [0] [x] (when y = 2) → A [y−3] [x] is , Both are “8” or more. For this reason, three circular buffers are added. The number of elements of the memory constituting the circular buffer is set to the reuse distance difference “8” “10” “10”, respectively.

シフトレジスタや循環バッファの入出力端の変数名は、再利用発生条件を含んだ表に基づき、それぞれ再利用グラフの矢印の再利用元、再利用先に対して置き換える一時変数名とされる。   The variable names at the input and output ends of the shift register and the circular buffer are temporary variable names that are replaced with the reuse source and reuse destination of the arrows in the reuse graph based on the table including the reuse occurrence condition.

尚、図10は、第1の処理部11bの段階において、シフトレジスタ、及び循環バッファの記述を追加したのみで、配列アクセスは削除されていない記述である。   Note that FIG. 10 is a description in which the description of the shift access and the circular buffer is only added at the stage of the first processing unit 11b, and the array access is not deleted.

次に、図5に示す第2の処理部11cにおいて、配列アクセスが、追加されたシフトレジスタ、及び循環バッファの入出力端に対応する一時変数アクセスに置き換えられ、さらに、条件文が挿入されて、最適化された動作記述が生成される(S16)。   Next, in the second processing unit 11c shown in FIG. 5, the array access is replaced with a temporary variable access corresponding to the added shift register and the input / output end of the circular buffer, and a conditional statement is inserted. Then, an optimized behavior description is generated (S16).

すなわち、配列アクセスは、一時変数に置き換えられる。具体的には、再利用発生条件によって、複数の一時変数を参照する配列アクセス、例えばA[0][x]に対応して複数の一時変数を接続した一時変数が用意され、その変数に、再利用発生条件によって対応する一時変数が代入される。このようにして、動作記述が置き換えられ、最適化された動作記述が生成される。   That is, array access is replaced with a temporary variable. Specifically, an array access that refers to a plurality of temporary variables, for example, a temporary variable connected to a plurality of temporary variables corresponding to A [0] [x] is prepared according to the reuse occurrence condition. The corresponding temporary variable is substituted according to the reuse occurrence condition. In this way, the behavioral description is replaced, and an optimized behavioral description is generated.

図11は、図1に示す動作記述に対して、シフトレジスタ、及び循環バッファの記述を追加し、配列アクセスを一時変数アクセスに置き換え、さらに、条件文を挿入した状態を示している。   FIG. 11 shows a state in which a description of a shift register and a circular buffer is added to the behavioral description shown in FIG. 1, array access is replaced with temporary variable access, and a conditional statement is inserted.

図11において、図1に示す第3行、第4行、第6行、第7行の配列アクセスが、第3行乃至第11行において、一時変数アクセスに置き換えられている。特に、第7行、第8行の“if条件文”において代入されている変数は、再利用発生条件により新たに追加された一時変数を示している。   In FIG. 11, the array access in the third, fourth, sixth and seventh rows shown in FIG. 1 is replaced with temporary variable access in the third to eleventh rows. In particular, the variable assigned in the “if conditional statement” in the seventh and eighth lines indicates a temporary variable newly added due to the reuse occurrence condition.

さらに、第13行乃至第24行に3つの循環バッファが記述され、第25行、第26行にシフトレジスタが記述されている。これら循環バッファ、及びシフトレジスタの記述は、ジェネレータからの再利用距離が長い順に挿入されている。   Further, three circular buffers are described in the 13th to 24th lines, and shift registers are described in the 25th and 26th lines. Descriptions of these circular buffers and shift registers are inserted in order of increasing reuse distance from the generator.

3つの循環バッファbuf2、buf1、buf0の記述において、第15行、第16行、第19行、第20行、第23行、第24行に、バッファを構成するメモリのアクセス位置を指示するポインタp2、p1、p0の記述が付加されている。   In the description of the three circular buffers buf2, buf1, and buf0, the 15th, 16th, 19th, 20th, 23rd, and 24th lines are pointers that indicate the access positions of the memory that constitutes the buffer. Descriptions of p2, p1, and p0 are added.

図12は、既存のスカラリプレイスにより、図1に示す動作記述の配列アクセスを一時変数アクセスに変換した場合におけるシフトレジスタの構成を示している。既存のスカラリプレイスの場合、前述したように、配列アクセスがシフトレジスタへのアクセスに置換される。このため、図12に示すように、シフトレジスタを構成する30個のレジスタs1〜s30が追加される。各レジスタs1〜s30は、フリップフロップ回路により構成されるため、回路面積が増大する。   FIG. 12 shows the structure of the shift register when the array access of the behavioral description shown in FIG. 1 is converted into temporary variable access by the existing scalar replace. In the case of an existing scalar replace, as described above, array access is replaced with access to a shift register. For this reason, as shown in FIG. 12, 30 registers s1 to s30 constituting the shift register are added. Since each of the registers s1 to s30 is composed of a flip-flop circuit, the circuit area increases.

一方、図13は、本実施形態により、図1に示す動作記述の配列アクセスを一時変数アクセスに変換した場合の構成を示している。本実施形態の場合、3つの循環バッファbuf0、buf1、buf2と、5個のレジスタs1、s2、s10、s20、s30により構成されている。このうち、レジスタs1、s2はシフトレジスタを構成している。循環バッファbuf0、buf1、buf2は、それぞれ例えばデュアルポートメモリにより構成されている。循環バッファbuf0は、7個のメモリ要素により構成され、循環バッファbuf1及びbuf2は、9個のメモリ要素により構成されている。   On the other hand, FIG. 13 shows a configuration when the array access of the behavioral description shown in FIG. 1 is converted into temporary variable access according to the present embodiment. In the case of this embodiment, it is composed of three circular buffers buf0, buf1, and buf2 and five registers s1, s2, s10, s20, and s30. Of these, the registers s1 and s2 constitute a shift register. Each of the circular buffers buf0, buf1, and buf2 is configured by, for example, a dual port memory. The circular buffer buf0 is composed of seven memory elements, and the circular buffers buf1 and buf2 are composed of nine memory elements.

上記循環バッファbuf0〜buf3において、用意するメモリ要素の数、メモリのアクセス位置を指示するポインタを復帰させるif文の条件式における値は、“対応するエッジの再利用距離−1”となる。   In the circular buffers buf <b> 0 to buf <b> 3, the value in the conditional expression of the if statement for restoring the number of memory elements to be prepared and the pointer indicating the memory access position is “reuse distance of corresponding edge−1”.

具体的には、バッファbuf0の場合、入出力端に接続される配列アクセスであるA[y][x−2]とA[0][x]の間の再利用距離が“8”であるため、バッファbuf0のメモリ要素の数は、“8−1=7”となり、バッファbuf1、2の場合、隣接するバッファまでの再利用距離が“10”であるため、バッファbuf1、2のメモリ要素の数は、“10−1=9”となる。   Specifically, in the case of the buffer buf0, the reuse distance between A [y] [x-2] and A [0] [x], which are array accesses connected to the input / output ends, is “8”. Therefore, the number of memory elements in the buffer buf0 is “8-1 = 7”, and in the case of the buffers buf1 and 2, the reuse distance to the adjacent buffer is “10”. The number of “10-1 = 9”.

これら循環バッファbuf0、buf1、buf2は、それぞれポインタp0、p1、p2によりメモリのアクセス位置が指示される。このポインタp0、p1、p2は、配列アクセスの添え字に対応している。このポインタp0、p1、p2により指示されたメモリ要素とレジスタs2、s10、s20、s30との間でデータがリード又はライトされる。すなわち、例えばバッファbuf0において、ポインタp0により指示されたメモリのデータはレジスタs10に読み出され、この後、ポインタp0により指示されたメモリにレジスタs2のデータが書き込まれる。次いで、ポインタp0は次のメモリ要素を指示するようにインクリメントされる。次のループでも同様の動作が実行され、ポインタp0がインクリメントされる。ポインタp0は最後のメモリ要素まで指示すると、最初のループで指示した先頭のメモリ要素に復帰される。この後、次のループで、最初のループで指示した、先頭のメモリ要素に保持されているデータがレジスタs10に読み出される。レジスタs10に保持されているデータは、最初のループでs2から書き込まれたデータとなる。つまり、最初のループで最初のメモリ要素に保持されたデータが、設定されたループ回数の間、循環バッファbuf0に保持された後、レジスタs10に読み出されたこととなり、シフトレジスタと同様の機能を得ることができる。   In these circular buffers buf0, buf1, and buf2, the memory access positions are indicated by pointers p0, p1, and p2, respectively. The pointers p0, p1, and p2 correspond to array access subscripts. Data is read or written between the memory element designated by the pointers p0, p1, and p2 and the registers s2, s10, s20, and s30. That is, for example, in the buffer buf0, the data in the memory pointed to by the pointer p0 is read into the register s10, and then the data in the register s2 is written into the memory pointed to by the pointer p0. The pointer p0 is then incremented to point to the next memory element. The same operation is executed in the next loop, and the pointer p0 is incremented. When the pointer p0 indicates up to the last memory element, the pointer p0 returns to the top memory element specified in the first loop. Thereafter, in the next loop, the data held in the first memory element designated by the first loop is read to the register s10. The data held in the register s10 is data written from s2 in the first loop. That is, the data held in the first memory element in the first loop is held in the circular buffer buf0 for the set number of loops and then read out to the register s10. Can be obtained.

メモリにより構成された循環バッファは、フリップフロップ回路により構成されたシフトレジスタに比べて回路面積を格段に削減することが可能である。   A circular buffer constituted by a memory can significantly reduce a circuit area as compared with a shift register constituted by a flip-flop circuit.

上記のようにして、最適化された動作記述は、制御部11を構成する第2の処理部11cから出力され、記憶装置14に、例えば最適化済み動作記述14cとして格納される。   The operation description optimized as described above is output from the second processing unit 11c constituting the control unit 11, and stored in the storage device 14 as, for example, the optimized operation description 14c.

尚、上記の例は、循環バッファを実現するメモリが非同期メモリの場合である。循環バッファを同期メモリで実現する場合、シフトレジスタと同様、“再利用距離”が、循環バッファの要素数と等しくなる。その場合、出力コードを若干修正する必要がある。   The above example is a case where the memory realizing the circular buffer is an asynchronous memory. When the circular buffer is realized by a synchronous memory, the “reuse distance” is equal to the number of elements of the circular buffer, similarly to the shift register. In that case, it is necessary to slightly modify the output code.

(実施形態の効果)
上記実施形態によれば、動作記述に含まれる“if条件文”に記述された再利用発生条件を考慮して配列アクセス間の再利用関係を解析し、各配列アクセス間の再利用距離が小さい順に並べた状態において、隣接する2つの再利用距離の差を算出するとともに、各配列アクセスを一時変数アクセスに置き換えた後の変数名、及び再利用の発生条件を設定した表、及びグラフを作成している。このため、配列アクセスの再利用関係を厳密に解析することが可能である。
(Effect of embodiment)
According to the above embodiment, the reuse relationship between array accesses is analyzed in consideration of the reuse occurrence condition described in the “if conditional statement” included in the behavior description, and the reuse distance between each array access is small. Calculates the difference between two adjacent reuse distances in order, and creates a table and graph that sets the variable name after each array access is replaced with temporary variable access, and the conditions for occurrence of reuse. doing. Therefore, it is possible to strictly analyze the array access reuse relationship.

さらに、再利用距離の差に規定値を設定し、上記グラフに基づき、ジェネレータから再利用距離が最も離れた配列アクセスから順に、再利用距離の差と規定値とを比較し、再利用距離の差が規定値以上である場合、配列アクセスをメモリにより構成された循環バッファに置き換え、再利用距離の差が規定値未満である場合、シフトレジスタに置き換えることにより、動作記述を最適化している。メモリにより構成された循環バッファは、シフトレジスタに比べて回路規模が小さいため、生成されるハードウェアの面積の増加を防止することが可能である。   Furthermore, a prescribed value is set for the difference in reuse distance, and based on the above graph, the reuse distance difference is compared with the prescribed value in order from the array access where the reuse distance is farthest from the generator. When the difference is greater than or equal to the specified value, the array description is replaced with a circular buffer constituted by a memory. When the difference in reuse distance is less than the specified value, the operation description is optimized by replacing with a shift register. Since the circular buffer configured by the memory has a smaller circuit scale than the shift register, it is possible to prevent an increase in the area of the generated hardware.

しかも、配列アクセスの再利用関係を厳密に解析しているため、冗長な配列アクセスをさらに削除することが可能であり、高速動作が可能となる。   In addition, since the reuse relationship of array access is strictly analyzed, redundant array access can be further deleted, and high-speed operation is possible.

特に、画像処理の技術においては、添え字に定数を含んだ配列アクセス、例えばA[0][x]のような記述が多用される。この記述は、例えば画像処理における画像の端の部分の処理などに対応する。   In particular, in the image processing technology, array access including a constant in a subscript, for example, description such as A [0] [x] is frequently used. This description corresponds to, for example, processing of the edge portion of the image in image processing.

このような配列アクセスを含む動作記述に対して既知のスカラリプレイスを実行した場合、配列アクセスを十分削除できず、性能向上が不十分となり、配列Aを格納するメモリを残す必要があるため、面積が大規模になる。   When a known scalar replace is executed for such a behavioral description including array access, the array access cannot be sufficiently deleted, the performance improvement becomes insufficient, and it is necessary to leave a memory for storing the array A. Becomes large.

これに対して、本実施形態の場合、添え字に定数が含まれる配列アクセスを削除することが可能である。このため、配列を格納するメモリを削減でき、格段の性能向上を図ることが可能である。   On the other hand, in the case of this embodiment, it is possible to delete an array access whose subscript includes a constant. For this reason, it is possible to reduce the memory for storing the array, and to achieve a marked improvement in performance.

尚、循環バッファが同期式メモリで実現される場合、「循環バッファの入出力端に対応する一時変数へのアクセス」の代わりに「循環バッファに対応する配列(buf2、buf1等)へのアクセス」にすることも可能である。この場合、循環バッファの要素数は1個増加するが、レジスタ(s30、s20等)をそれぞれ1つ削減することが可能である。   When the circular buffer is realized by a synchronous memory, instead of “access to a temporary variable corresponding to the input / output end of the circular buffer”, “access to an array (buf2, buf1, etc.) corresponding to the circular buffer” It is also possible to make it. In this case, the number of elements in the circular buffer increases by one, but it is possible to reduce one each of registers (s30, s20, etc.).

また、第1の処理部は、再利用距離の差と規定値とを比較し、この比較結果に基づき、動作記述に循環バッファ又はシフトレジスタの記述を追加したが、これに限定されるものではなく、例えば予め再利用距離の差と循環バッファ及びシフトレジスタの対応関係を規定した表を設け、再利用距離の差に基づいて表を引くことによって循環バッファ又はシフトレジスタ決めることも可能である。   In addition, the first processing unit compares the difference in reuse distance with the specified value, and based on the comparison result, the description of the circular buffer or shift register is added to the operation description. However, the present invention is not limited to this. For example, it is also possible to determine a circular buffer or a shift register by providing a table that preliminarily defines the correspondence between the reuse distance difference and the circular buffer and the shift register, and subtracting the table based on the reuse distance difference.

(ループ回数が定数ではなくパラメータである場合)
さらに、本実施形態の場合、動作記述中のループ回数が定数ではなく、例えばN、Mなどのパラメータである場合においても、配列アクセスの削減を簡単、且つ効率良く実現することが可能である。但し、N、Mの最大値は決まっているものとする。
(When the number of loops is not a constant but a parameter)
Furthermore, in the case of this embodiment, even when the number of loops in the behavioral description is not a constant, but is a parameter such as N or M, it is possible to easily and efficiently reduce array access. However, the maximum values of N and M are determined.

例えば図14に示す動作記述において、第1行、第2行にループ回数がパラメータ“N”として記述されている。この動作記述に対して、既存のスカラリプレイス技術を適用した場合、パラメータNに対応する入力数の大きなマルチプレクサが実装されることとなる。すなわち、この場合、想定されたループ回数の最大値に一致した数のレジスタにより構成されたシフトレジスタが設けられる。このシフトレジスタの任意のレジスタからループ回数に応じデータを読み出すため、多くの入力端を有する大きなサイズのマルチプレクサが配置され、このマルチプレクサの多くの入力端がシフトレジスタの任意のレジスタに接続される。このため、回路規模が増大することとなる。   For example, in the behavioral description shown in FIG. 14, the number of loops is described as the parameter “N” in the first and second lines. When the existing scalar replacement technique is applied to this behavioral description, a multiplexer having a large number of inputs corresponding to the parameter N is mounted. In other words, in this case, there is provided a shift register including a number of registers corresponding to the assumed maximum number of loops. In order to read data from an arbitrary register of this shift register according to the number of loops, a large-sized multiplexer having a large number of input terminals is arranged, and many input terminals of this multiplexer are connected to any register of the shift register. For this reason, the circuit scale increases.

これに対して、本実施形態の場合、図6に示すステップS11乃至S14において、図14に示す動作記述の“if条件文”を考慮して配列アクセス間の再利用距離、再利用距離の差、及び再利用発生条件が算出され、図15に示す再利用条件を含んだ表が作成される。   On the other hand, in this embodiment, in steps S11 to S14 shown in FIG. 6, the reuse distance between array accesses and the difference in reuse distance are considered in consideration of the “if conditional statement” in the behavioral description shown in FIG. And the reuse occurrence condition are calculated, and a table including the reuse condition shown in FIG. 15 is created.

すなわち、図15に示すように、配列アクセスA[0][x]の再利用条件“y=1”に対応する再利用距離d3が“N”、配列アクセスA[0][x]の再利用条件“y=2”に対応する再利用距離d4が“2N”、配列アクセスA[y−3][x]に対応する再利用距離d5が“3N”と算出され、これら再利用距離から再利用距離の差が“d2−d1=2”、“d3−d2=N−2”、“d4−d3=N”、“d5−d4=N”と算出される。 That is, as shown in FIG. 15, the reuse distance d3 corresponding to the reuse condition “y = 1” of the array access A [0] [x] is “N” and the array access A [0] [x] is reused. The reuse distance d4 corresponding to the use condition “y = 2” is calculated as “2 * N”, and the reuse distance d5 corresponding to the array access A [y−3] [x] is calculated as “3 * N”. The difference between the reuse distance and the reuse distance is calculated as “d2−d1 = 2”, “d3−d2 = N−2”, “d4−d3 = N”, and “d5−d4 = N”.

また、置き換え後の変数名は、配列アクセスA[y][x]、配列アクセスA[y][x−2]、配列アクセスA[0][x]、配列アクセスA[0][x]、配列アクセスA[y−3][x]のそれぞれに対応して、“s0”“s2”“s_N”“s_2N”“s_3N”に設定される。   The variable names after replacement are array access A [y] [x], array access A [y] [x-2], array access A [0] [x], array access A [0] [x]. Corresponding to each of the array accesses A [y-3] [x], “s0”, “s2”, “s_N”, “s_2N”, and “s_3N” are set.

次いで、上記作成された表に基づき、図16に示す再利用発生グラフが生成される。このグラフに記載された各矢印に基づいて、ジェネレータから最も遠い矢印から順に、シフトレジスタ、又は循環バッファが追加される(S15)。   Next, a reuse occurrence graph shown in FIG. 16 is generated based on the created table. Based on each arrow described in this graph, a shift register or a circular buffer is added in order from the arrow farthest from the generator (S15).

具体的には、再利用距離の差と規定値に基づき、シフトレジスタ又は循環バッファの記述が追加される。   Specifically, a description of a shift register or a circular buffer is added based on the difference in reuse distance and a specified value.

例えば規定値として“8”が設定された場合、再利用距離の差が“8”以上である場合、循環バッファの記述が追加され、再利用距離の差が“8”未満である場合、シフトレジスタの記述が追加される。ただし、シフトレジスタ、及び循環バッファを追加するときは、再利用距離の差に出現する“N”には、Nの最大値を代入して、規定値と比較する。   For example, when “8” is set as the specified value, when the difference in reuse distance is “8” or more, a description of a circular buffer is added, and when the difference in reuse distance is less than “8”, shift A register description is added. However, when a shift register and a circular buffer are added, the maximum value of N is substituted for “N” appearing in the difference in reuse distance and compared with the specified value.

この後、シフトレジスタ及び循環バッファへのアクセスが一時変数アクセスに置き換えられ、さらに、条件文が挿入され、最適化された動作記述が生成される(S16)。   Thereafter, access to the shift register and the circular buffer is replaced with temporary variable access, and a conditional statement is inserted to generate an optimized behavior description (S16).

図17は、図14に示す動作記述に対して、シフトレジスタ、及び循環バッファへのアクセスを一時変数アクセスに置き換え、さらに、条件文を挿入した状態を示している。   FIG. 17 shows a state in which access to the shift register and the circular buffer is replaced with temporary variable access and a conditional statement is inserted in the behavioral description shown in FIG.

図17において、図14の第3行、第4行、第6行、第7行の配列アクセスが、第3行乃至第11行の一時変数アクセスに置き換えられ、さらに、第13行乃至第24行に3つの循環バッファが記述され、第25行、第26行にシフトレジスタが記述されている。   In FIG. 17, the array access in the third row, the fourth row, the sixth row, and the seventh row in FIG. 14 is replaced with the temporary variable access in the third row to the eleventh row. Three circular buffers are described in the lines, and shift registers are described in the 25th and 26th lines.

図18は、本実施形態のスカラリプレイスにより、図14に示す動作記述の配列アクセスを一時変数アクセスに変換した場合におけるシフトレジスタの構成を示している。本実施形態の場合、3つの循環バッファbuf0、buf1、buf2と、5個のレジスタs1、s2、s_N、s_2N、s_3Nにより構成されている。このうち、レジスタs1、s2はシフトレジスタを構成している。循環バッファbuf0、buf1、buf2は、例えばデュアルポートメモリにより構成されている。   FIG. 18 shows the configuration of the shift register when the array access of the behavioral description shown in FIG. 14 is converted into the temporary variable access by the scalar replace of this embodiment. In the case of this embodiment, it is composed of three circular buffers buf0, buf1, and buf2 and five registers s1, s2, s_N, s_2N, and s_3N. Of these, the registers s1 and s2 constitute a shift register. The circular buffers buf0, buf1, buf2 are configured by, for example, a dual port memory.

循環バッファbuf0、buf1、buf2を構成するメモリ要素の数は、上述したように、「対応するエッジの再利用距離−1」である。例えばNの最大値が10のとき、循環バッファbuf0は、N−3=7個のメモリ要素により構成され、循環バッファbuf1及びbuf2は、N−1=9個のメモリ要素により構成されている。これら循環バッファbuf0、buf1、buf2は、それぞれポインタp0、p1、p2により記憶アドレスが指示される。このポインタは、配列アクセスの添え字に対応している。   As described above, the number of memory elements constituting the circular buffers buf0, buf1, and buf2 is “reuse distance of corresponding edge−1”. For example, when the maximum value of N is 10, the circular buffer buf0 is composed of N-3 = 7 memory elements, and the circular buffers buf1 and buf2 are composed of N-1 = 9 memory elements. The storage addresses of the circular buffers buf0, buf1, and buf2 are designated by pointers p0, p1, and p2, respectively. This pointer corresponds to a subscript for array access.

上記のように、本実施形態によれば、動作記述中のループ回数が定数ではなく、例えばN、Mなどのパラメータである場合においても、配列アクセスの削減を簡単、且つ効率良く実現することが可能である。したがって、回路規模の増大を防止することができ、高速動作が可能な回路を実現することが可能である。   As described above, according to this embodiment, even when the number of loops in the behavioral description is not a constant, but is a parameter such as N or M, array access can be reduced easily and efficiently. Is possible. Therefore, an increase in circuit scale can be prevented, and a circuit capable of high-speed operation can be realized.

尚、図7(a)(b)に示す再利用グラフ、図8に示す再利用発生条件を含んだ表、再利用発生グラフの作成は、任意であり、算出された再利用距離、再利用距離の差、及び規定値に基づき、配列アクセスをシフトレジスタや循環バッファへのアクセスに置き換えることも可能である。   The reuse graph shown in FIGS. 7A and 7B, the table including the reuse occurrence condition shown in FIG. 8, and the creation of the reuse occurrence graph are arbitrary, and the calculated reuse distance and reuse are calculated. It is also possible to replace the array access with access to a shift register or a circular buffer based on the difference in distance and the specified value.

その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。   In addition, the present invention is not limited to the above-described embodiments as they are, and can be embodied by modifying the constituent elements without departing from the scope of the invention in the implementation stage. Moreover, various inventions can be formed by appropriately combining a plurality of constituent elements disclosed in the above embodiments. For example, some components may be deleted from all the components shown in the embodiment. Furthermore, constituent elements over different embodiments may be appropriately combined.

10…動作記述の最適化装置、11…制御部、14…記憶装置、11a…解析処理部、11b…第1の処理部、11c…第2の処理部、14a…動作記述、14b…配列アクセス間の再利用情報、14c…最適化済み動作記述。   DESCRIPTION OF SYMBOLS 10 ... Operation description optimization apparatus, 11 ... Control part, 14 ... Memory | storage device, 11a ... Analysis process part, 11b ... 1st process part, 11c ... 2nd process part, 14a ... Action description, 14b ... Array access Reuse information between, 14c... Optimized operation description.

Claims (5)

複数の配列アクセス及び条件文を含むデジタル回路の動作が記述された動作記述が記憶された記憶部と、
前記記憶部に記憶された前記動作記述より、前記配列アクセス間の再利用関係を前記条件文に基づき解析し、前記配列アクセス間のデータの再利用距離、前記配列アクセス間の前記再利用距離の差、及び前記配列アクセスの再利用が発生する条件を算出する解析部と、
前記解析部により算出された前記再利用距離が長い方から順に、前記再利用距離の差と規定値とを比較し、前記再利用距離の差が前記規定値以上である場合、前記動作記述に循環バッファの記述を追加し、前記再利用距離の差が前記規定値未満である場合、前記動作記述にシフトレジスタの記述を追加する第1の処理部と、
前記動作記述の前記配列アクセスを、前記循環バッファの入出力端に対応する一時変数へのアクセス、又はシフトレジスタの入出力端に対応する一時変数へのアクセスに置き換え、前記一時変数へのアクセスの記述に条件文を追加して、動作記述を生成する第2の処理部と
を具備することを特徴とする半導体装置の設計装置。
A storage unit storing an operation description in which operations of a digital circuit including a plurality of array accesses and conditional statements are described;
From the behavioral description stored in the storage unit, the reuse relationship between the array accesses is analyzed based on the conditional statement, the data reuse distance between the array accesses, the reuse distance between the array accesses An analysis unit that calculates a difference and a condition under which the reuse of the array access occurs;
In order from the longest reuse distance calculated by the analysis unit, the difference in reuse distance is compared with a specified value, and if the difference in reuse distance is greater than or equal to the specified value, A first processing unit for adding a description of a circular buffer and adding a description of a shift register to the operation description when the difference in the reuse distance is less than the specified value;
The array access in the behavioral description is replaced with access to a temporary variable corresponding to the input / output end of the circular buffer or access to a temporary variable corresponding to the input / output end of the shift register. And a second processing unit for generating a behavioral description by adding a conditional statement to the description.
前記再利用距離の差は、前記シフトレジスタを構成するレジスタの数、又は前記循環バッファを構成するメモリの要素数を示すことを特徴とする請求項1記載の半導体装置の設計装置。   2. The design apparatus for a semiconductor device according to claim 1, wherein the difference in the reuse distance indicates the number of registers constituting the shift register or the number of elements of the memory constituting the circular buffer. 前記循環バッファは、複数のデュアルポートメモリにより構成され、複数の前記デュアルポートメモリのそれぞれは、ポインタにより指定されることを特徴とする請求項1記載の半導体装置の設計装置。   2. The semiconductor device design apparatus according to claim 1, wherein the circular buffer includes a plurality of dual port memories, and each of the plurality of dual port memories is designated by a pointer. 記憶部に記憶された複数の配列アクセス及び条件文を含むデジタル回路の動作が記述された動作記述より、前記配列アクセス間の再利用関係を前記条件文に基づき解析し、前記配列アクセス間の再利用距離、前記配列アクセス間の前記再利用距離の差、及び前記配列アクセスの再利用が発生する条件を算出し、
前記再利用距離が長い方から順に、前記再利用距離の差と規定値とを比較し、前記再利用距離の差が前記規定値以上である場合、前記動作記述に循環バッファの記述を追加し、前記再利用距離の差が前記規定値未満である場合、前記動作記述にシフトレジスタの記述を追加し、
前記動作記述の前記配列アクセスを、前記循環バッファの入出力端に対応する一時変数へのアクセス、又はシフトレジスタの入出力端に対応する一時変数へのアクセスに置き換え、前記一時変数へのアクセスの記述に条件文を追加して、動作記述を生成する
ことを特徴とする半導体装置の設計方法。
Based on the operation description describing the operation of the digital circuit including a plurality of array accesses and conditional statements stored in the storage unit, the reuse relationship between the array accesses is analyzed based on the conditional statements, and the re-use between the array accesses is analyzed. Calculating a use distance, a difference in the reuse distance between the array accesses, and a condition under which the reuse of the array access occurs;
In order from the longest reuse distance, the difference in reuse distance is compared with a specified value. If the difference in reuse distance is greater than or equal to the specified value, a description of a circular buffer is added to the behavioral description. If the difference in reuse distance is less than the specified value, add a shift register description to the operation description;
The array access in the behavioral description is replaced with access to a temporary variable corresponding to the input / output end of the circular buffer or access to a temporary variable corresponding to the input / output end of the shift register. A method for designing a semiconductor device, characterized by generating a behavioral description by adding a conditional statement to the description.
記憶部に記憶された複数の配列アクセス及び条件文を含むデジタル回路の動作が記述された動作記述より、前記配列アクセス間の再利用関係を前記条件文に基づき解析し、前記配列アクセス間の再利用距離、前記配列アクセス間の前記再利用距離の差、及び前記配列アクセスの再利用が発生する条件を算出し、
前記再利用距離が長い方から順に、前記再利用距離の差と規定値とを比較し、前記再利用距離の差が前記規定値以上である場合、前記動作記述に循環バッファの記述を追加し、前記再利用距離の差が前記規定値未満である場合、前記動作記述にシフトレジスタの記述を追加し、
前記動作記述の前記配列アクセスを、前記循環バッファの入出力端に対応する一時変数へのアクセス、又はシフトレジスタの入出力端に対応する一時変数へのアクセスに置き換え、前記一時変数へのアクセスの記述に条件文を追加して、動作記述を生成する処理をコンピュータに実行させることを特徴とする半導体装置の設計プログラム。
Based on the operation description describing the operation of the digital circuit including a plurality of array accesses and conditional statements stored in the storage unit, the reuse relationship between the array accesses is analyzed based on the conditional statements, and the re-use between the array accesses is analyzed. Calculating a use distance, a difference in the reuse distance between the array accesses, and a condition under which the reuse of the array access occurs;
In order from the longest reuse distance, the difference in reuse distance is compared with a specified value. If the difference in reuse distance is greater than or equal to the specified value, a description of a circular buffer is added to the behavioral description. If the difference in reuse distance is less than the specified value, add a shift register description to the operation description;
The array access in the behavioral description is replaced with access to a temporary variable corresponding to the input / output end of the circular buffer or access to a temporary variable corresponding to the input / output end of the shift register. A design program for a semiconductor device, characterized by adding a conditional statement to a description and causing a computer to execute a process of generating an operation description.
JP2013105140A 2013-05-17 2013-05-17 Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program Ceased JP2014225200A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013105140A JP2014225200A (en) 2013-05-17 2013-05-17 Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013105140A JP2014225200A (en) 2013-05-17 2013-05-17 Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program

Publications (1)

Publication Number Publication Date
JP2014225200A true JP2014225200A (en) 2014-12-04

Family

ID=52123819

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013105140A Ceased JP2014225200A (en) 2013-05-17 2013-05-17 Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program

Country Status (1)

Country Link
JP (1) JP2014225200A (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11184895A (en) * 1997-12-19 1999-07-09 Nec Corp Circuit designing method and device and information storage medium
JP2002269162A (en) * 2001-03-08 2002-09-20 Nec Eng Ltd Action synthesizing method
US20070169059A1 (en) * 2005-12-13 2007-07-19 Poseidon Design Systems Inc. Compiler method for extracting and accelerator template program
JP2010238054A (en) * 2009-03-31 2010-10-21 Mitsubishi Electric Corp Semiconductor design support apparatus, high-level synthesis method, and semiconductor design support program

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11184895A (en) * 1997-12-19 1999-07-09 Nec Corp Circuit designing method and device and information storage medium
JP2002269162A (en) * 2001-03-08 2002-09-20 Nec Eng Ltd Action synthesizing method
US20070169059A1 (en) * 2005-12-13 2007-07-19 Poseidon Design Systems Inc. Compiler method for extracting and accelerator template program
JP2010238054A (en) * 2009-03-31 2010-10-21 Mitsubishi Electric Corp Semiconductor design support apparatus, high-level synthesis method, and semiconductor design support program

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6015019738; 大川貴之外1名: 'WAR依存を持つ配列アクセスの削減方法' 電子情報通信学会技術研究報告 Vol.112,No.248, 20121011, pp.89-94, 一般社団法人電子情報通信学会 *

Similar Documents

Publication Publication Date Title
US12174784B2 (en) Method, apparatus, and computer-readable medium for parallelization of a computer program on a plurality of computing cores
KR102376117B1 (en) Parallel decision tree processor architecture
US20200225921A1 (en) Lookup table optimization for programming languages that target synchronous digital circuits
CN105814568A (en) Logic circuit generating device and method
KR20190104329A (en) Floating-point instruction format with built-in rounding rules
US10802806B1 (en) Generating vectorized control flow using reconverging control flow graphs
US20200117475A1 (en) Function evaluation using multiple values loaded into registers by a single instruction
CN116483319A (en) Operator processing method, device, equipment and medium for software-defined chips
JP5157534B2 (en) Behavioral synthesis apparatus and program
JP2018041301A (en) RTL optimization system and RTL optimization program
JP6897213B2 (en) Code generator, code generator and code generator
JP2014225200A (en) Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program
CN116414396A (en) A LLVM target definition file generation method, device and electronic equipment
JP6175306B2 (en) Control program dividing apparatus, control program dividing method and recording medium therefor
CN117540669B (en) Method and device for processing structured data of digital circuit
JP2011180814A (en) Compiler apparatus, compiling method and program
WO2016136197A1 (en) Data processing device, data processing method, and recording medium
JP2014225201A (en) Semiconductor device design apparatus, semiconductor device design method, and semiconductor device design program
CN104268023A (en) MSVL (modeling, simulation and verification language) program memory management method
US10896272B2 (en) High-level synthesis device, high-level synthesis method, and computer readable medium
CN119067188A (en) A method and device for obtaining the optimal parallel computing strategy for deep networks
JP2019191796A (en) High-level synthesis method, high-level synthesis program, and high-level synthesis apparatus
JP2011170602A (en) Apparatus, method and program for synthesizing operation
JPWO2017086391A1 (en) Vectorization apparatus, vectorization method, and recording medium storing vectorization program
JP2011154523A (en) Compilation method, compiler and vector computer

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150526

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150625

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160105

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20160531