JP5644432B2 - Behavioral synthesis system, behavioral synthesis method, behavioral synthesis program, and semiconductor device - Google Patents

Behavioral synthesis system, behavioral synthesis method, behavioral synthesis program, and semiconductor device Download PDF

Info

Publication number
JP5644432B2
JP5644432B2 JP2010268967A JP2010268967A JP5644432B2 JP 5644432 B2 JP5644432 B2 JP 5644432B2 JP 2010268967 A JP2010268967 A JP 2010268967A JP 2010268967 A JP2010268967 A JP 2010268967A JP 5644432 B2 JP5644432 B2 JP 5644432B2
Authority
JP
Japan
Prior art keywords
loop
processing
control
control circuit
behavioral synthesis
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010268967A
Other languages
Japanese (ja)
Other versions
JP2012118835A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2010268967A priority Critical patent/JP5644432B2/en
Publication of JP2012118835A publication Critical patent/JP2012118835A/en
Application granted granted Critical
Publication of JP5644432B2 publication Critical patent/JP5644432B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は動作合成システム、動作合成方法、動作合成用プログラム及び半導体装置に関し、特に動作が直列に記述された動作記述に基づいて当該動作を並列して実行するRTL記述を生成する動作合成システム、動作合成方法、動作合成用プログラム及びこれを用いて設計された半導体装置に関する。   The present invention relates to a behavioral synthesis system, a behavioral synthesis method, a behavioral synthesis program, and a semiconductor device, and in particular, a behavioral synthesis system that generates an RTL description for executing the operations in parallel based on the behavioral descriptions in which the behaviors are described in series. The present invention relates to a behavioral synthesis method, a behavioral synthesis program, and a semiconductor device designed using the behavioral synthesis program.

近年、論理回路を含む半導体装置では、回路規模が増大しており、設計期間の長期化が問題となっている。そこで、論理回路の動作手順を記述した動作記述からRTL(Register Transfer Level)記述を合成する動作合成システムが用いられている。この動作合成システムを用いることで設計効率を高めることができる。   In recent years, in a semiconductor device including a logic circuit, the circuit scale has been increased, and a prolonged design period has become a problem. Therefore, a behavioral synthesis system that synthesizes an RTL (Register Transfer Level) description from a behavioral description that describes the operational procedure of a logic circuit is used. Design efficiency can be increased by using this behavioral synthesis system.

動作記述は、例えばC言語、C++言語、Java(登録商標)言語などのソフトウェアプログラミング言語や、SystemCやSpecCといったソフトウェアプログラム言語に半導体回路設計のために拡張を施した言語で記述される。   The behavioral description is described in, for example, a software programming language such as C language, C ++ language, Java (registered trademark) language, or a software programming language such as SystemC or SpecC, which has been extended for semiconductor circuit design.

このような、ソフトウェアプログラム言語で記述された動作記述から、高性能な半導体回路を合成するためには、動作記述中のループ処理を高速に実行することのできる半導体回路を合成することが望まれる。なぜなら、動作記述中のループ処理の処理速度が、全体の処理性能に大きな影響を与えるためである。   In order to synthesize a high-performance semiconductor circuit from such a behavioral description written in a software program language, it is desirable to synthesize a semiconductor circuit that can execute loop processing in the behavioral description at high speed. . This is because the processing speed of the loop processing in the behavioral description greatly affects the overall processing performance.

単一のループを高速に実行できる回路の動作合成技術の一例に、ループパイプライン技法(もしくは、ループフォールディング技法、パイプライン技法とも呼ばれる)が存在する。ループパイプライン技法は、ループの一回分の処理(以下、イタレーションと呼ぶ)が終了する以前に、次の一回分の処理(イタレーション)の実行を開始するという「パイプライン動作」を行うことにより、単一のループを高速に実行する回路を合成する技法である。特許文献1乃至8、非特許文献1乃至2などループパイプライン技法の実現方法が従来数々提案されている。   As an example of a behavioral synthesis technique for a circuit that can execute a single loop at high speed, there is a loop pipeline technique (also called a loop folding technique or a pipeline technique). The loop pipeline technique performs a “pipeline operation” in which the execution of the next process (iteration) is started before the process of the loop (hereinafter referred to as iteration) is completed. This is a technique for synthesizing a circuit that executes a single loop at high speed. A number of methods for realizing the loop pipeline technique such as Patent Documents 1 to 8 and Non-Patent Documents 1 and 2 have been proposed.

ループパイプライン技法の実現方法としては、種々のループ構造に対応可能であることが望ましく、特に、多重にネストしたループに適用可能であることが望ましい。特許文献9を参照すると、多重にネストしたループに対するループパイプライン技法の実現方法が示されている。   As a method for realizing the loop pipeline technique, it is desirable to be able to deal with various loop structures, and in particular, it is desirable to be applicable to multiple nested loops. Reference 9 discloses a method for realizing a loop pipeline technique for multiple nested loops.

しかしながら、現状の動作合成技術は、ループパイプライン技法のように、単一のループを高速に実行できる回路の合成に主眼がおかれ、逐次的に記述された複数のループを並列に実行して高速に処理を実行するような回路の合成を自動的に行うことができない。   However, the current behavioral synthesis technology focuses on the synthesis of a circuit that can execute a single loop at a high speed, such as the loop pipeline technique, and executes a plurality of loops described sequentially in parallel. It is not possible to automatically synthesize a circuit that executes processing at high speed.

逐次的に記述された複数のループ処理を並列に実行できなければ、先行するループの完了を待ってからしか後続のループ処理の実行を開始することができないため、複数のループ処理が逐次的に記述された回路全体の処理を高速に行うことができない。   If multiple sequential loop processes cannot be executed in parallel, the subsequent loop processes can only be started after waiting for the completion of the preceding loop. The entire described circuit cannot be processed at high speed.

例えば、動作記述はプログラミング言語の記述に沿って記載される。このプログラミング言語の記載は、一般的に、並列的に処理可能な動作であっても上から下に向かって動作を記載していく形態をとる。そのため、動作記述がループ処理L1〜L4を含む場合、動作合成により生成される回路は、ループ処理L1〜L4を逐次処理する形態となる。このような回路では処理時間は、ループ処理L1〜L4の処理時間の総和となる。一方、ループ処理L1〜L4を並列して処理した場合、回路の処理時間は、ループ処理L1〜L4の処理時間のうちもっと長い処理時間となる。   For example, the behavioral description is described along the description of the programming language. The description of the programming language generally takes the form of describing the operation from the top to the bottom even if the operation can be performed in parallel. Therefore, when the behavioral description includes the loop processes L1 to L4, the circuit generated by the behavioral synthesis is configured to sequentially process the loop processes L1 to L4. In such a circuit, the processing time is the sum of the processing times of the loop processing L1 to L4. On the other hand, when the loop processing L1 to L4 is processed in parallel, the processing time of the circuit becomes a longer processing time among the processing times of the loop processing L1 to L4.

そこで、非特許文献3に、直列に記述された複数のループを並列に実行する回路を合成することのできる動作合成技術が示されている。非特許文献3の図4.6を参照すると、直列に記述された複数のループを並列に実行する様子が例示されている(図Loop-level parallelismを参照のこと)。   Therefore, Non-Patent Document 3 discloses a behavioral synthesis technique capable of synthesizing a circuit that executes a plurality of loops described in series in parallel. Referring to FIG. 4.6 of Non-Patent Document 3, a state in which a plurality of loops described in series are executed in parallel is illustrated (see FIG. Loop-level parallelism).

さらに、非特許文献3の4.3.2節並びに図4.7及び図4.8を参照すると、動作合成技術で合成される論理回路の概要が例示されている。動作合成技術では、1つのループの実行を1つの処理要素(プロセッシングアレイ;Processing array;PA)で実現する。このPAは、Very Long Instruction Word (VLIW)プロセッサ型と呼ばれる定型のアーキテクチャで実現される。また、このPAは、有限状態機械で実現された制御回路を有しており、ループ内の処理の実行は該制御回路にて制御されている。複数のPAの実行は、タイミングコントローラ(Timing Controller)によって制御される。   Further, referring to section 4.3.2 of Non-Patent Document 3 and FIGS. 4.7 and 4.8, an outline of a logic circuit synthesized by the behavioral synthesis technique is illustrated. In the behavioral synthesis technique, execution of one loop is realized by one processing element (processing array; PA). This PA is realized by a fixed architecture called a Very Long Instruction Word (VLIW) processor type. The PA has a control circuit realized by a finite state machine, and execution of processing in the loop is controlled by the control circuit. Execution of a plurality of PAs is controlled by a timing controller.

また、特許文献10に、ループを分割することにより、複数のループを並列に実行できる回路を合成する動作合成技術が示されている。特許文献10の技術では、動作合成可能な記述で書かれたソースから、自動的に配列に関する記述のあるループ文を検出し、そのうち代入に関する記述のあるループ回数と、参照に関する記述のあるループ回数からグループ単位に回路構造を分割する。   Patent Document 10 discloses a behavioral synthesis technique for synthesizing a circuit that can execute a plurality of loops in parallel by dividing the loop. In the technique of Patent Document 10, a loop statement having a description related to an array is automatically detected from a source written in a description that allows behavioral synthesis, and the number of loops having a description related to substitution and the number of loops having a description related to reference are detected. To divide the circuit structure into groups.

また、特許文献11並びに特許文献12に、予めスレッド間同期通信が記述された動作記述から、スレッドが並列に実行されるような回路を合成する動作合成技術が示されている。   Patent Documents 11 and 12 describe a behavioral synthesis technique for synthesizing a circuit in which threads are executed in parallel from a behavioral description in which thread-to-thread synchronous communication is described in advance.

また、特許文献13に、ループを併合(マージ)することにより、複数のループを並列に実行できる回路を合成する動作合成技術が示されている。特許文献13の技術では、第1のループと第2のループと間に依存関係がある場合、2つのループをお互いに、部分的、又は完全に併合(マージ)し、1つのループとして合成する。   Patent Document 13 discloses a behavioral synthesis technique for synthesizing a circuit that can execute a plurality of loops in parallel by merging the loops. In the technique of Patent Document 13, when there is a dependency between the first loop and the second loop, the two loops are partially or completely merged with each other and merged as one loop. .

特開平08−44773号公報Japanese Patent Laid-Open No. 08-44773 特開2003−30261号公報JP 2003-30261 A 特開2007−272797号公報JP 2007-272797 A 特開2007−287044号公報JP 2007-287044 A 特開2004−326463号公報JP 2004-326463 A 特開平06−60147号公報Japanese Patent Laid-Open No. 06-60147 特開2009−25973号公報JP 2009-25973 A 特開2006−350849号公報JP 2006-350849 A 特開2009−238085号公報JP 2009-238085 A 特開2002−269162号公報JP 2002-269162 A 特開2000−57180号公報JP 2000-57180 A 特開2001−43251号公報JP 2001-43251 A 特表2008−501185号公報Special table 2008-501185

John P. Elliott, 「Understanding Behavioral Synthesis」, Kluwer Academic Publishers, pp. 26-40John P. Elliott, "Understanding Behavioral Synthesis", Kluwer Academic Publishers, pp. 26-40 Cheng-Tsung Hwang et al., 「Scheduling for Functional Pipelining and Loop Winding」, 28th, ACM/IEEE Design Automation Conference, p764-769.Cheng-Tsung Hwang et al., `` Scheduling for Functional Pipelining and Loop Winding '', 28th, ACM / IEEE Design Automation Conference, p764-769. Philippe Coussy and Adam Morawiec編,「High-Level Synthesis, From Algorithm to Digital Circuit」, Springer, pp. 53-74Philippe Coussy and Adam Morawiec, “High-Level Synthesis, From Algorithm to Digital Circuit”, Springer, pp. 53-74

しかしながら、非特許文献3及び特許文献10〜13記載の技術では、依存関係を有するループ処理がある場合に合成できる回路に何らかの制限が課されてしまい、設計の効率が低下する問題がある。以下にそれぞれの技術についての問題点の具体的内容を示す。   However, in the techniques described in Non-Patent Document 3 and Patent Documents 10 to 13, there is a problem that a certain restriction is imposed on a circuit that can be synthesized when there is a loop process having a dependency relationship, and design efficiency is lowered. The specific contents of the problems with each technology are shown below.

非特許文献3では、合成される回路がVLIWプロセッサ型と呼ばれるアーキテクチャに固定されており、自由度が低い。また、非特許文献3は、複数のPAの実行の制御、すなわち、複数のループの実行の制御のために、タイミングコントローラという特別な制御回路が必要になるためである。つまり、非特許文献3に記載の技術では、扱うことができるループ処理の種類に制限があり、かつ、制御の複雑化(及び回路面積の増大)という問題がある。   In Non-Patent Document 3, the synthesized circuit is fixed to an architecture called a VLIW processor type, and the degree of freedom is low. Further, Non-Patent Document 3 is because a special control circuit called a timing controller is required for controlling execution of a plurality of PAs, that is, controlling execution of a plurality of loops. That is, in the technique described in Non-Patent Document 3, there are limitations on the types of loop processing that can be handled, and there is a problem of complicated control (and an increase in circuit area).

特許文献10では、二つのループの実行回数に特別な関係が成り立つときのみ適用可能である。例えば、ループの実行回数が予め分からないような記述に対しては適用することができない。つまり、特許文献10に記載の技術では、合成できる回路に限りがあるという問題がある。   Patent Document 10 is applicable only when a special relationship is established between the number of executions of two loops. For example, it cannot be applied to a description in which the number of loop executions is not known in advance. In other words, the technique described in Patent Document 10 has a problem that the number of circuits that can be synthesized is limited.

特許文献11及び12では、動作記述に予めスレッド間同期通信に関する記述されていなければならない。すなわち、特許文献11及び12では、スレッド間同期通信が記述されていない動作記述からはループが並列動作する回路を合成することができない。つまり、特許文献11及び12の技術の問題点は、合成できる回路が限られているということである。   In Patent Documents 11 and 12, the operation description must be described in advance regarding synchronous communication between threads. That is, in Patent Documents 11 and 12, a circuit in which loops operate in parallel cannot be synthesized from an operation description in which inter-thread synchronous communication is not described. That is, the problem with the techniques of Patent Documents 11 and 12 is that the circuits that can be synthesized are limited.

特許文献13で、ループの構造が複雑であり、ループを併合できない場合には適用できない。つまり、特許文献13の技術の問題点は、合成できる回路が限られているということである。   In Patent Document 13, the structure of the loop is complicated, and it cannot be applied when the loops cannot be merged. That is, the problem of the technique of Patent Document 13 is that the circuits that can be synthesized are limited.

本発明にかかる動作合成システムの一態様は、動作記述からRTL(Register Transfer Level)記述を合成する動作合成システムであって、前記動作記述に含まれるループ処理間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成するループ間依存関係解析処理部と、前記ループ処理中の演算を実行するコントロールステップを決定するスケジューリング処理と、前記ループ処理中の演算を行う演算器とデータを格納するレジスタとを決定するバインディング処理と、を行うスケジューリング・バインディング処理部と、前記ループ処理内の前記コントロールステップの実行状態を制御する第1の制御論理と、前記ループ処理の前記実行条件に基づき当該ループ処理の実行状態を制御する第2の制御論理と、を含む制御回路を前記スケジューリング・バインディング処理部の処理結果と前記ループ間依存関係情報とに応じて生成する制御回路作成処理部と、前記演算器と前記レジスタとを用いてデータパスを作成し、前記データパスと前記制御回路とを含むRTL記述を生成するRTL記述生成処理部と、を有する。   One aspect of the behavioral synthesis system according to the present invention is a behavioral synthesis system that synthesizes an RTL (Register Transfer Level) description from a behavioral description, and analyzes the dependency between loop processes included in the behavioral description. An inter-loop dependency analysis processing unit that extracts dependency loop processing execution conditions having dependency relationships with other loop processing and generates inter-loop dependency relationship information, and scheduling that determines a control step for executing an operation during the loop processing A scheduling and binding processing unit that performs processing, a calculation unit that performs a calculation in the loop process, and a binding process that determines a register that stores data; and controls an execution state of the control step in the loop process Execution of the loop process based on the first control logic and the execution condition of the loop process A control circuit including a second control logic that controls a state, a control circuit creation processing unit that generates a control circuit according to a processing result of the scheduling and binding processing unit and the inter-loop dependency relationship information, the arithmetic unit, An RTL description generation processing unit that generates a data path using a register and generates an RTL description including the data path and the control circuit;

本発明にかかる動作合成方法の一態様は、動作記述からRTL(Register Transfer Level)記述を合成する動作合成方法であって、前記動作記述に含まれるループ処理間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成し、前記ループ処理の演算を実行するコントロールステップを決定し、前記ループ処理の演算を行う演算器とデータを格納するレジスタとを決定し、前記ループ処理内の前記コントロールステップの実行状態を制御する第1の制御論理と、前記ループ処理の前記実行条件に基づき当該ループ処理の実行状態を制御する第2の制御論理と、を含む制御回路を前記スケジューリング・バインディング処理部の処理結果と前記ループ間依存関係情報とに応じて生成し、前記演算器と前記レジスタとを用いてデータパスを作成し、前記データパスと前記制御回路とを含むRTL記述を生成する。   One aspect of the behavioral synthesis method according to the present invention is a behavioral synthesis method for synthesizing an RTL (Register Transfer Level) description from a behavioral description. A computing unit that extracts the execution condition of the dependency loop process having a dependency relationship with the loop process of the loop, generates inter-loop dependency relationship information, determines a control step for executing the operation of the loop process, and performs the operation of the loop process And a register for storing data, and control the execution state of the loop process based on the first control logic for controlling the execution state of the control step in the loop process and the execution condition of the loop process A control circuit including a second control logic according to the processing result of the scheduling and binding processing unit and the inter-loop dependency relationship information. Form, to create a data path with said and said arithmetic unit register, generates a RTL description including said data path and the control circuit.

本発明にかかる動作合成プログラムの一態様は、演算回路において実行され、記憶装置に格納された動作記述からRTL(Register Transfer Level)記述を合成し、当該RTL記述を前記記憶装置に格納する動作合成プログラムであって、前記動作記述に含まれるループ処理間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成するループ間依存関係解析処理と、前記ループ処理の演算を実行するコントロールステップを決定し、前記ループ処理の演算を行う演算器とデータを格納するレジスタとを決定するスケジューリング・バインディング処理と、前記ループ処理内の前記コントロールステップの実行状態を制御する第1の制御論理と、前記ループ処理の前記実行条件に基づき当該ループ処理の実行状態を制御する第2の制御論理と、を含む制御回路を前記スケジューリング・バインディング処理部の処理結果と前記ループ間依存関係情報とに応じて生成する制御回路作成処理と、前記演算器と前記レジスタとを用いてデータパスを作成し、前記データパスと前記制御回路とを含むRTL記述を生成するRTL記述生成処理と、を行う。   One aspect of the behavioral synthesis program according to the present invention is a behavioral synthesis in which an RTL (Register Transfer Level) description is synthesized from a behavioral description executed in an arithmetic circuit and stored in a storage device, and the RTL description is stored in the storage device. A loop for analyzing dependency relations between loop processes included in the behavior description and extracting execution conditions of dependent loop processes having dependency relations with other loop processes to generate inter-loop dependency relation information An inter-dependency analysis process, a control step for executing the operation of the loop process, a scheduling binding process for determining an arithmetic unit for the operation of the loop process and a register for storing data, First control logic for controlling the execution state of the control step, and the execution condition of the loop processing A control circuit creating process for generating a control circuit including a second control logic that controls an execution state of the loop process based on a processing result of the scheduling and binding processing unit and the inter-loop dependency relationship information; A data path is created using the arithmetic unit and the register, and an RTL description generation process for generating an RTL description including the data path and the control circuit is performed.

本発明にかかる半導体装置の一態様は、他のループ処理との依存関係を有さない第1のループ処理を実行する第1のループ処理回路と、他のループ処理との依存関係を有する第2のループ処理を実行する第2のループ処理回路と、前記第1、第2のループ処理回路の前記コントロールステップの実行状態を制御する第1の制御論理と、他のループ処理の処理結果に応じて前記第2のループ処理の実行状態を制御する第2の制御論理と、を含む制御回路と、を有する。   According to one aspect of the semiconductor device of the present invention, a first loop processing circuit that executes a first loop process that does not have a dependency relationship with another loop process and a dependency relationship between the other loop process. A second loop processing circuit that executes the second loop processing, a first control logic that controls an execution state of the control step of the first and second loop processing circuits, and a processing result of another loop processing. And a control circuit including a second control logic for controlling the execution state of the second loop process.

本発明にかかる動作合成システム、動作合成方法、動作合成プログラム及び半導体装置によれば、逐次的に記述された複数のループの間にデータ依存関係がある場合でも並列化を行い、該ループを同時に実行できるような回路を合成できる。   According to the behavioral synthesis system, behavioral synthesis method, behavioral synthesis program, and semiconductor device according to the present invention, parallelization is performed even when there is a data dependency between a plurality of loops described sequentially, and the loops are simultaneously processed. A circuit that can be executed can be synthesized.

実施の形態1にかかる動作合成システムのブロック図である。1 is a block diagram of a behavioral synthesis system according to a first exemplary embodiment. 実施の形態1にかかる動作合成システムにおける論理合成方法の手順を示すフローチャートである。3 is a flowchart showing a procedure of a logic synthesis method in the behavioral synthesis system according to the first exemplary embodiment; 実施の形態1にかかる動作合成システムで扱う動作記述の一例を示す図である。FIG. 3 is a diagram illustrating an example of behavioral descriptions handled by the behavioral synthesis system according to the first exemplary embodiment. 図3に示す動作記述におけるループ処理間の依存関係を示す図である。FIG. 4 is a diagram illustrating a dependency relationship between loop processes in the behavioral description illustrated in FIG. 3. 実施の形態1にかかる動作合成システムのスケジューリング・バインディング処理部がループL1を処理した結果の一例を示す図である。It is a figure which shows an example of the result as which the scheduling and binding process part of the behavioral synthesis system concerning Embodiment 1 processed the loop L1. 実施の形態1にかかる動作合成システムのスケジューリング・バインディング処理部がループL2を処理した結果の一例を示す図である。It is a figure which shows an example of the result as which the scheduling and binding process part of the behavioral synthesis system concerning Embodiment 1 processed the loop L2. 実施の形態1にかかる動作合成システムのスケジューリング・バインディング処理部がループL3を処理した結果の一例を示す図である。It is a figure which shows an example of the result as which the scheduling and binding process part of the behavioral synthesis system concerning Embodiment 1 processed the loop L3. 実施の形態1にかかる動作合成システムのスケジューリング・バインディング処理部がループL4を処理した結果の一例を示す図である。It is a figure which shows an example of the result as which the scheduling and binding process part of the behavioral synthesis system concerning Embodiment 1 processed the loop L4. 実施の形態1にかかる動作合成システムの制御回路作成処理部が生成するループ内のステップの実行を制御する第1の制御論理の状態遷移図である。FIG. 3 is a state transition diagram of a first control logic that controls execution of steps in a loop generated by a control circuit creation processing unit of the behavioral synthesis system according to the first exemplary embodiment; 実施の形態1にかかる動作合成システムの制御回路作成処理部が生成するループ内のステップの実行を制御する第1の制御論理の状態遷移図である。FIG. 3 is a state transition diagram of a first control logic that controls execution of steps in a loop generated by a control circuit creation processing unit of the behavioral synthesis system according to the first exemplary embodiment; 実施の形態1にかかる動作合成システムの制御回路作成処理部が生成するループ内のステップの実行を制御する第1の制御論理の状態遷移図である。FIG. 3 is a state transition diagram of a first control logic that controls execution of steps in a loop generated by a control circuit creation processing unit of the behavioral synthesis system according to the first exemplary embodiment; 実施の形態1にかかる動作合成システムの制御回路作成処理部が生成するループ内のステップの実行を制御する第1の制御論理の状態遷移図である。FIG. 3 is a state transition diagram of a first control logic that controls execution of steps in a loop generated by a control circuit creation processing unit of the behavioral synthesis system according to the first exemplary embodiment; 実施の形態1にかかる動作合成システムの制御回路作成処理部が生成するループの実行を制御する第2の制御論理と図12の第1の制御論理とを含む制御論理の状態遷移図である。FIG. 13 is a state transition diagram of a control logic including a second control logic that controls execution of a loop generated by the control circuit creation processing unit of the behavioral synthesis system according to the first exemplary embodiment and the first control logic of FIG. 12. 実施の形態1にかかる論理合成システムが図3に示した動作記述から合成したRTL記述に基づき生成された半導体装置の回路図の例である。4 is an example of a circuit diagram of a semiconductor device generated based on an RTL description synthesized from the behavioral description shown in FIG. 3 by the logic synthesis system according to the first embodiment; FIG. 実施の形態2にかかる論理合成システムのブロック図である。FIG. 3 is a block diagram of a logic synthesis system according to a second exemplary embodiment. 実施の形態2にかかる論理合成システムにおける論理合成方法の手順を示すフローチャートである。10 is a flowchart showing a procedure of a logic synthesis method in the logic synthesis system according to the second exemplary embodiment; 実施の形態2にかかる動作合成システムのスケジューリング・バインディング処理部がループL4を処理した結果の一例を示す図である。It is a figure which shows an example of the result as which the scheduling and binding process part of the behavioral synthesis system concerning Embodiment 2 processed the loop L4. 実施の形態2にかかる動作合成システムの制御回路作成処理部が生成するステージ内のステップの実行を制御する第1の制御論理の状態遷移図である。FIG. 10 is a state transition diagram of first control logic that controls execution of steps in a stage generated by a control circuit creation processing unit of the behavioral synthesis system according to the second exemplary embodiment; 実施の形態2にかかる動作合成システムの制御回路作成処理部が生成するステージ内のステップの実行を制御する第1の制御論理の状態遷移図である。FIG. 10 is a state transition diagram of first control logic that controls execution of steps in a stage generated by a control circuit creation processing unit of the behavioral synthesis system according to the second exemplary embodiment; 実施の形態2にかかる動作合成システムの制御回路作成処理部が生成するステージ内のステップの実行を制御する第1の制御論理の状態遷移図である。FIG. 10 is a state transition diagram of first control logic that controls execution of steps in a stage generated by a control circuit creation processing unit of the behavioral synthesis system according to the second exemplary embodiment; 実施の形態2にかかる動作合成システムの制御回路作成処理部が生成するステージ内のステップの実行を制御する第1の制御論理の状態遷移図である。FIG. 10 is a state transition diagram of first control logic that controls execution of steps in a stage generated by a control circuit creation processing unit of the behavioral synthesis system according to the second exemplary embodiment; 実施の形態2にかかる動作合成システムの制御回路作成処理部が生成するステージ内のステップの実行を制御する第1の制御論理の状態遷移図である。FIG. 10 is a state transition diagram of first control logic that controls execution of steps in a stage generated by a control circuit creation processing unit of the behavioral synthesis system according to the second exemplary embodiment; 実施の形態2にかかる動作合成システムの制御回路作成処理部が生成するステージの実行を制御する第3の制御論理の状態遷移図である。FIG. 10 is a state transition diagram of a third control logic that controls execution of a stage generated by a control circuit creation processing unit of the behavioral synthesis system according to the second exemplary embodiment; 実施の形態2にかかる動作合成システムの制御回路作成処理部が生成するループの実行を制御する第2の制御論理を含む第3の制御論理の状態遷移図である。FIG. 10 is a state transition diagram of a third control logic including a second control logic that controls execution of a loop generated by the control circuit creation processing unit of the behavioral synthesis system according to the second exemplary embodiment;

実施の形態1
以下、図面を参照して本発明の実施の形態について説明する。以下では、本発明にかかる動作合成システムでは、処理において用いる情報を格納する記憶装置を用いるが、これらは必須の構成要素ではなく、システムの構成において適宜設けられるものである。図1に実施の形態1にかかる動作合成システム1のブロック図を示す。図1に示すように、動作合成システム1は、記憶装置10と、処理装置20と、を有する。
Embodiment 1
Embodiments of the present invention will be described below with reference to the drawings. In the following, in the behavioral synthesis system according to the present invention, a storage device that stores information used in processing is used. However, these are not essential components, and are appropriately provided in the configuration of the system. FIG. 1 shows a block diagram of a behavioral synthesis system 1 according to the first exemplary embodiment. As illustrated in FIG. 1, the behavioral synthesis system 1 includes a storage device 10 and a processing device 20.

記憶装置10は、データやプログラムを格納する。ここでは、記憶装置10の例として、RAM(Random Access Memory)やROM(Read Only Memory)、或いはフラッシュメモリ等の半導体記憶装置を挙げることができる。なお、記憶装置10は、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の外部記憶装置(ストレージ)でも良い。或いは、記憶装置10は、DVD(Digital Versatile Disk)やメモリカード等の記憶媒体(メディア)でも良い。また、記憶装置10は、コンピュータ本体に内蔵された記憶装置に限らず、周辺機器(外付けHDD等)や外部のサーバ(ストレージサーバ等)に設置された記憶装置、或いは、NAS(Network Attached Storage)でも良い。但し、実際には、これらの例に限定されない。   The storage device 10 stores data and programs. Here, examples of the storage device 10 include a semiconductor storage device such as a random access memory (RAM), a read only memory (ROM), or a flash memory. The storage device 10 may be an external storage device (storage) such as an HDD (Hard Disk Drive) or an SSD (Solid State Drive). Alternatively, the storage device 10 may be a storage medium (media) such as a DVD (Digital Versatile Disk) or a memory card. The storage device 10 is not limited to a storage device built in the computer main body, but is a storage device installed in a peripheral device (such as an external HDD) or an external server (such as a storage server), or a NAS (Network Attached Storage). ) However, actually, it is not limited to these examples.

そして、動作合成システム1では、記憶装置10は、動作記述記憶部11とループ間依存関係情報記憶部12とRTL記述記憶部13を有する。動作記述記憶部11は、動作合成システムの入力となる動作記述を予め記憶している。ループ間依存関係情報記憶部12は、動作記述に記載されたループの間の依存関係を示すループ間依存関係情報を記憶する。RTL記述記憶部13は、動作合成システムが最終的に出力するRTL(Register Transfer Level)記述を記憶する。   In the behavioral synthesis system 1, the storage device 10 includes the behavior description storage unit 11, the inter-loop dependency relationship information storage unit 12, and the RTL description storage unit 13. The behavioral description storage unit 11 stores in advance a behavioral description that is input to the behavioral synthesis system. The inter-loop dependency relationship information storage unit 12 stores inter-loop dependency relationship information indicating a dependency relationship between loops described in the behavior description. The RTL description storage unit 13 stores an RTL (Register Transfer Level) description that is finally output by the behavioral synthesis system.

処理装置20は、プログラム制御により動作する。ここでは、処理装置20の例として、CPU(Central Processing Unit)やマイクロプロセッサ(microprocessor)等の処理装置、又は同様の機能を有する半導体集積回路(Integrated Circuit:IC)等を想定している。なお、処理装置20は、PC(パーソナルコンピュータ)、シンクライアント端末/サーバ、ワークステーション、メインフレーム、スーパーコンピュータ等のコンピュータでも良い。但し、実際には、これらの例に限定されない。処理装置20は、ループ間依存関係解析処理部21と、スケジューリング・バインディング処理部22と、制御回路作成処理部23と、RTL記述生成処理部24とを有する。   The processing device 20 operates under program control. Here, as an example of the processing apparatus 20, a processing apparatus such as a CPU (Central Processing Unit) or a microprocessor, or a semiconductor integrated circuit (IC) having a similar function is assumed. The processing device 20 may be a computer such as a PC (personal computer), a thin client terminal / server, a workstation, a mainframe, or a supercomputer. However, actually, it is not limited to these examples. The processing device 20 includes an inter-loop dependency relationship analysis processing unit 21, a scheduling / binding processing unit 22, a control circuit creation processing unit 23, and an RTL description generation processing unit 24.

ループ間依存関係解析処理部21は、記憶装置10の動作記述記憶部11から動作記述を読み出し、該動作記述に含まれるループ処理間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出する。そして、ループ間依存関係解析処理部21は、抽出した依存関係を示すループ間依存関係情報を生成する。このループ間依存関係情報は、記憶装置10のループ間依存関係情報記憶部12にループ間依存関係情報として記憶される。   The inter-loop dependency relationship analysis processing unit 21 reads out the behavior description from the behavior description storage unit 11 of the storage device 10, analyzes the dependency relationship between the loop processes included in the behavior description, and determines the dependency relationship with other loop processes. The execution condition of the dependency loop processing that has is extracted. Then, the inter-loop dependency relationship analysis processing unit 21 generates inter-loop dependency relationship information indicating the extracted dependency relationship. The inter-loop dependency relationship information is stored as inter-loop dependency relationship information in the inter-loop dependency relationship information storage unit 12 of the storage device 10.

スケジューリング・バインディング処理部22は、ループ処理中の演算を実行するコントロールステップを決定するスケジューリング処理を行う。また、スケジューリング・バインディング処理部22は、ループ処理中の演算を行う演算器とデータを格納するレジスタとを決定するバインディング処理を行う。   The scheduling and binding processing unit 22 performs a scheduling process for determining a control step for executing an operation in the loop process. Further, the scheduling and binding processing unit 22 performs a binding process for determining an arithmetic unit that performs an operation during the loop process and a register that stores data.

制御回路作成処理部23は、スケジューリング・バインディング処理部22の処理結果とループ間依存関係情報とに応じて、第1の制御論理と第2の制御論理とを含む制御回路を生成する。第1の制御論理は、ループ処理内のコントロールステップの実行状態を制御するものである。第2の制御論理は、ループ処理の実行条件に基づき当該ループ処理の実行状態を制御するものである。   The control circuit creation processing unit 23 generates a control circuit including the first control logic and the second control logic in accordance with the processing result of the scheduling / binding processing unit 22 and the inter-loop dependency relationship information. The first control logic controls the execution state of the control step in the loop process. The second control logic controls the execution state of the loop process based on the execution condition of the loop process.

RTL記述生成処理部24は、スケジューリング・バインディング処理部22にて決定された演算器とレジスタからデータパスを作成し、該データパスと制御回路作成処理部23にて作成された制御回路とを備えたRTL記述を作成し、記憶装置のRTL記述記憶部13に格納する。   The RTL description generation processing unit 24 creates a data path from the arithmetic unit and the register determined by the scheduling and binding processing unit 22, and includes the data path and a control circuit created by the control circuit creation processing unit 23. The RTL description is created and stored in the RTL description storage unit 13 of the storage device.

続いて、実施の形態1にかかる動作合成システム1の動作について説明する。図2に動作合成システム1の処理手順を示すフローチャートを示す。図2に示すように、動作合成システム1では、まず、ループ間依存関係解析処理部21によるループ間依存関係解析処理(ステップS1)が行われる。ループ間依存関係解析処理では、まず、動作記述記憶部11から動作記述を読み出す。そして、動作記述に含まれるループ処理間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成する。   Subsequently, an operation of the behavioral synthesis system 1 according to the first exemplary embodiment will be described. FIG. 2 is a flowchart showing the processing procedure of the behavioral synthesis system 1. As shown in FIG. 2, in the behavioral synthesis system 1, first, inter-loop dependency relationship analysis processing (step S <b> 1) is performed by the inter-loop dependency relationship analysis processing unit 21. In the inter-loop dependency analysis process, first, the behavior description is read from the behavior description storage unit 11. Then, the dependency relation between the loop processes included in the behavior description is analyzed, the execution condition of the dependency loop process having the dependency relation with the other loop processes is extracted, and the inter-loop dependency relation information is generated.

このループ間依存関係情報に含まれる実行条件には、前記依存ループ処理に含まれるコントロールステップが実行可能な状態となる条件が含まれる。例えば、ループ間依存関係情報には、ループの間に依存関係がない場合には「依存関係なし」という情報が記録される。また、ループ間に依存関係がある場合であって、先行するループの実行を完了する前に後続のループの実行を開始できる場合には、「後続のループが実行できるタイミング」の情報が記録される。後続のループが実行できるタイミングは、ループ中で読み書きされる変数の大小関係で表現される。また、例えば、ループの制御変数(ループ変数)の大小関係をもって表現される。また、ループ中でアクセスされる配列変数の添え字に使用されている変数の大小関係をもって表現される。ループ間依存関係情報は、ループ間依存関係情報記憶部12に記憶される。つまり、ループ間依存関係解析処理では、いずれのループ処理がいずれのタイミングで実行できるかを解析する。   The execution condition included in the inter-loop dependency relationship information includes a condition that enables the control step included in the dependency loop process to be executed. For example, information indicating “no dependency” is recorded in the inter-loop dependency relationship information when there is no dependency relationship between the loops. In addition, if there is a dependency relationship between the loops and the execution of the subsequent loop can be started before the execution of the preceding loop is completed, the information of “when the subsequent loop can be executed” is recorded. The The timing at which the subsequent loop can be executed is expressed by the magnitude relationship of variables read and written in the loop. Also, for example, it is expressed with a magnitude relationship between loop control variables (loop variables). In addition, it is expressed with the magnitude relation of the variables used for the subscript of the array variable accessed in the loop. The inter-loop dependency relationship information is stored in the inter-loop dependency relationship information storage unit 12. That is, in the inter-loop dependency relationship analysis processing, which loop processing can be executed at which timing is analyzed.

ループ間依存関係解析処理部21はループ間依存関係解析処理に、例えば、Dror E. Maydan et al., "Efficient and exact data dependence analysis", Proceedings of conference on Programming language design and implementation, pp. 1-14,1991に記載の既存の技術を使用しても良い。   The inter-loop dependency analysis processing unit 21 performs, for example, Dr E. Maydan et al., “Efficient and exact data dependence analysis”, Proceedings of conference on Programming language design and implementation, pp. 1- 14, the existing technology described in 1991 may be used.

次いで、スケジューリング・バインディング処理部22によるスケジューリング・バインディング処理(ステップS2)が行われる。スケジューリング・バインディング処理では、記憶装置10の動作記述記憶部11から動作記述を読み出す。そして、スケジューリング・バインディング処理では、動作記述に含まれる各ループ処理について演算を実行するコントロールステップを決定し(この処理をスケジューリング処理と称す)、各ループ処理の演算を行う演算器とデータを格納するレジスタとを決定する(この処理をバインディング処理と称す)。より具体的には、スケジューリング・バインディング処理のスケジューリング処理では、動作記述からCDFG(Control Data Flow Graph)を作成する。このCDFGには、ループ処理のコントロールステップが記述されている。   Next, scheduling and binding processing (step S2) by the scheduling and binding processing unit 22 is performed. In the scheduling and binding process, the behavioral description is read from the behavioral description storage unit 11 of the storage device 10. In the scheduling and binding process, a control step for executing an operation for each loop process included in the behavioral description is determined (this process is referred to as a scheduling process), and an arithmetic unit for performing the operation of each loop process and data are stored. A register is determined (this process is called a binding process). More specifically, in the scheduling process of the scheduling and binding process, a CDFG (Control Data Flow Graph) is created from the operation description. This CDFG describes a loop processing control step.

スケジューリング・バインディング処理部22は、スケジューリング処理、バインディング処理に、例えば、John P. Elliott, "Understanding Behavioral Synthesis", Kluwer Academic Publishers, pp. 25-40.に記載の既存の技術を使用しても良い。   For example, John P. Elliott, “Understanding Behavioral Synthesis”, Kluwer Academic Publishers, pp. 25-40. The existing technology described in (1) may be used.

次いで、制御回路作成処理部23による制御回路作成処理(ステップS3)が行われる。制御回路作成処理では、スケジューリング・バインディング処理の処理結果とループ間依存関係情報とに基づき制御回路を生成する。制御回路作成処理において生成される制御回路には、第1の制御回路と第2の制御回路とが含まれる。制御回路作成処理は第1の制御回路を生成するステップS31と、第2の制御回路を生成するステップS32とを含む。まず、ステップS31では、ループ処理内の前記コントロールステップの実行状態を制御する第1の制御論理を作成する。ここで、第1の制御論理は、スケジューリング・バインディング処理の結果に応じて作成される。この第1の制御論理は、第1の制御回路として実装される。第1の制御回路は、例えば、予め決められた複数の状態を、決められた条件に従って、決められた順番で遷移する有限状態機械(FSM:Finite State Machine)で構成される。また、第1の制御回路は、ループ処理のコンロールステップ毎に実行するか否かを制御する。   Next, a control circuit creation process (step S3) is performed by the control circuit creation processing unit 23. In the control circuit creation process, a control circuit is generated based on the processing result of the scheduling / binding process and the inter-loop dependency information. The control circuit generated in the control circuit creation process includes a first control circuit and a second control circuit. The control circuit creation process includes step S31 for generating the first control circuit and step S32 for generating the second control circuit. First, in step S31, a first control logic for controlling the execution state of the control step in the loop process is created. Here, the first control logic is created according to the result of the scheduling and binding process. This first control logic is implemented as a first control circuit. The first control circuit includes, for example, a finite state machine (FSM) that transitions a plurality of predetermined states in a predetermined order according to a predetermined condition. The first control circuit controls whether or not to execute each control step of the loop process.

次いで、ステップS32では、ループ処理の実行条件に基づきループ処理の実行状態を制御する第2の制御論理を作成する。ここで、ループ処理の実行条件は、ループ間依存関係情報に含まれるものである。この第2の制御論理は、第2の制御回路として実装される。第2の制御回路は、第1の制御回路に処理の開始条件を与えるか否かを制御する制御回路として実装される。また、第2の制御回路は、例えば、ステップS31で作成された第1の制御回路の実行条件をループ処理の実行条件に応じて変更することにより構成しても良い。この場合、第2の制御回路は、有限状態機械を構成する配線及び回路として第1の制御回路に組み込まれる形態となる。第2の制御論理は、実装形態に関わらずループ処理の実行を開始するか、開始せずに待つかを制御するように構成される。   Next, in step S32, a second control logic for controlling the execution state of the loop process is created based on the execution condition of the loop process. Here, the execution condition of the loop processing is included in the inter-loop dependency relationship information. This second control logic is implemented as a second control circuit. The second control circuit is implemented as a control circuit that controls whether or not to give processing start conditions to the first control circuit. The second control circuit may be configured, for example, by changing the execution condition of the first control circuit created in step S31 according to the execution condition of the loop process. In this case, the second control circuit is configured to be incorporated in the first control circuit as a wiring and a circuit constituting the finite state machine. The second control logic is configured to control whether to start executing the loop process or wait without starting regardless of the implementation.

ループ処理の実行を制御する第2の制御論理は、例えば、ループ処理の先頭状態においてループの開始条件を検査するように構成される。また、ループ処理の全状態においてループの開始条件を検査するように構成されても良い。また、ループ処理のある特定の状態でのみループの開始条件を検査するように構成されても良い。なお、ループ処理に対して依存関係を有する先行ループが存在しない場合には、無条件でループの実行を開始するように構成される。   The second control logic that controls the execution of the loop process is configured to check the start condition of the loop in the head state of the loop process, for example. Further, the start condition of the loop may be inspected in all states of the loop processing. Further, the loop start condition may be inspected only in a specific state where the loop processing is performed. It should be noted that when there is no preceding loop having a dependency relationship with respect to the loop processing, execution of the loop is unconditionally started.

次いで、RTL記述生成処理部24によるRTL記述生成処理(ステップS4)が行われる。RTL記述生成処理では、バインディング処理により決定された演算器とレジスタとを用いてデータパスを作成し、データパスと制御回路作成処理により生成された制御回路とを含むRTL記述を生成する。このRTL記述は、RTL記述記憶部13に格納される。   Next, RTL description generation processing (step S4) is performed by the RTL description generation processing unit 24. In the RTL description generation process, a data path is created using an arithmetic unit and a register determined by the binding process, and an RTL description including the data path and the control circuit generated by the control circuit creation process is generated. This RTL description is stored in the RTL description storage unit 13.

続いて、上記において説明した動作合成システム1の処理手順についてより具体的に説明する。まず、動作合成システム1で扱う動作記述の一例を図3に示す。図3に示す動作記述は、「SystemC言語」を用いて表記されているが、本発明の説明に関連ない部分は一部省略されている。   Next, the processing procedure of the behavioral synthesis system 1 described above will be described more specifically. First, an example of the behavioral description handled by the behavioral synthesis system 1 is shown in FIG. The behavioral description shown in FIG. 3 is expressed using “System C language”, but a part not related to the description of the present invention is partially omitted.

当該動作記述は、入力端子からカラー画像のR(Red)、G(Green)、B(Blue)成分をそれぞれ入力し、Y(輝度信号)、U(色差信号(Cb))、V(色差信号(Cr))成分を計算して、それぞれ対応する配列に格納するような動作を行う。RGB成分は16個分のデータが入力端子より逐次的に与えられ、YUV成分は配列の0番地から15番地に入力順に格納されるものとする。   In the operation description, R (Red), G (Green), and B (Blue) components of a color image are input from an input terminal, respectively, and Y (luminance signal), U (color difference signal (Cb)), and V (color difference signal) are input. (Cr)) The components are calculated and stored in the corresponding arrays. It is assumed that 16 RGB data are sequentially given from the input terminal, and the YUV components are stored in the order of input from address 0 to address 15 in the array.

当該動作記述の1行目から11行目まで(図3)に端子の情報が例示されている。当該動作記述には、sc_uint<8>型の入力端子r_in、g_in及びb_inがそれぞれ備えられている。また、sc_uint<8>型、かつ、16ワード分の容量を持つ配列r_ary[]、u_ary[]及びv_ary[]が備えられている。なお、sc_uint<8>型とは、8ビット幅を持ち符号なしの整数型である。   The terminal information is illustrated in the first to eleventh lines (FIG. 3) of the behavior description. The operation description includes sc_int <8> type input terminals r_in, g_in, and b_in, respectively. In addition, arrays r_ary [], u_ary [] and v_ary [] having a sc_uint <8> type and a capacity of 16 words are provided. The sc_uint <8> type is an integer type having an 8-bit width and no sign.

また、当該動作記述の12行目から31行目まで(図3)に、動作の情報が例示されている。まず、15行目のループ処理L1により、入力端子r_inより16個のデータが読み込まれ、配列r_ary[]に格納される。同様に、19行目のループ処理L2、23行目のループ処理L3により、入力端子g_in、b_inから読み込まれた値が配列g_ary[]、b_ary[]にそれぞれ格納される。   In addition, behavior information is illustrated in the 12th to 31st lines (FIG. 3) of the behavior description. First, 16 pieces of data are read from the input terminal r_in by the loop processing L1 of the 15th row and stored in the array r_ary []. Similarly, the values read from the input terminals g_in and b_in are stored in the arrays g_ary [] and b_ary [] by the loop process L2 on the 19th line and the loop process L3 on the 23rd line, respectively.

次に、27行目のループ処理L4により、配列r_ary[]、g_ary[]及びb_ary[]からそれぞれ値が読み出され(28行目)、それらの値を引数として、関数y_gen()、u_gen()及びv_gen()が呼び出される。関数により計算された値は、配列y_ary[]、u_ary[]及びv_ary[]にそれぞれ格納される(29行目から31行目)。図3に示す動作記述では、これらの処理を配列の各要素に対して繰り返す。   Next, by loop processing L4 on the 27th line, values are read from the arrays r_ary [], g_ary [] and b_ary [] (line 28), and the functions y_gen () and u_gen are used with these values as arguments. () And v_gen () are called. The values calculated by the function are stored in arrays y_ary [], u_ary [] and v_ary [] (from the 29th line to the 31st line). In the behavioral description shown in FIG. 3, these processes are repeated for each element of the array.

なお、上述した関数y_gen()、u_gen()及びv_gen()はそれぞれ、カラー画像のRGB成分からYUB成分を計算する関数であることを想定しているが、本発明には直接関連しないため詳細は省略する。また、図3の動作記述は予め記憶装置10の動作記述記憶部11に格納されている。続いて、図3で示した動作記述について、図2のステップS1〜S4の処理を行った場合の具体例について説明する。   The functions y_gen (), u_gen (), and v_gen () described above are assumed to be functions for calculating the YUB component from the RGB components of the color image, but are not directly related to the present invention, and thus are detailed. Is omitted. 3 is stored in the operation description storage unit 11 of the storage device 10 in advance. Next, a specific example when the processing of steps S1 to S4 in FIG. 2 is performed on the behavioral description shown in FIG.

まず、ループ間依存関係解析処理部21によるループ間依存関係解析処理(ステップS1)の具体例について説明する。ループ間依存関係解析処理では、動作記述記憶部11から、動作記述を読み出す。次に、ループ間依存関係解析処理部21は、動作記述に基づき、ループ間の依存関係を解析し、どのループをどのタイミングで実行できるかを決定する。この解析結果を図4に示す。   First, a specific example of the inter-loop dependency analysis processing (step S1) by the inter-loop dependency analysis processing unit 21 will be described. In the inter-loop dependency analysis process, the behavior description is read from the behavior description storage unit 11. Next, the inter-loop dependency analysis processing unit 21 analyzes the inter-loop dependency based on the behavioral description and determines which loop can be executed at which timing. The analysis result is shown in FIG.

図3を参照すると、ループ処理L1、L2、L3はそれぞれ値を読み出す入力端子及び読み込んだ値を書き込む配列が、それぞれ重複していない。従、ループ処理L1、L2、L3はそれぞれ依存関係がない。そこで、図4に示すループ間依存関係情報には、先行するループ処理L1と、後続するループ処理L2、L3との間に、それぞれ依存関係がないこと、並びに、先行するループ処理L2と、後続するループL3との間に依存関係がないことが示されている。   Referring to FIG. 3, in the loop processes L1, L2, and L3, the input terminals for reading values and the arrays for writing the read values do not overlap each other. Accordingly, the loop processes L1, L2, and L3 have no dependency relationship. Therefore, in the inter-loop dependency relationship information shown in FIG. 4, there is no dependency between the preceding loop process L1 and the subsequent loop processes L2 and L3, and the preceding loop process L2 and subsequent It is shown that there is no dependency relationship with the loop L3.

一方、ループ処理L4は、配列r_ary[]、g_ary[]、b_ary[]から値を読み込んでいる。これらの配列の値は、それぞれ、ループ処理L1、L2、L3によって書き込まれる。つまり、ループ処理L4は、ループ処理L1、L2、L3に対して依存関係を有する。そこで、図4に示すループ間依存関係情報には、先行するループ処理L1、L2、L3と、後続するループL4との間に依存関係があることが示されている。   On the other hand, the loop process L4 reads values from the arrays r_ary [], g_ary [], b_ary []. The values of these arrays are written by loop processing L1, L2, and L3, respectively. That is, the loop process L4 has a dependency relationship with the loop processes L1, L2, and L3. Therefore, the inter-loop dependency relationship information shown in FIG. 4 indicates that there is a dependency relationship between the preceding loop processes L1, L2, and L3 and the subsequent loop L4.

また、配列r_ary[]の添え字である変数i及び変数lに注目をすると、ループ処理L1の変数iとループ処理L4の変数lとの間にi>lという関係が成り立っていれば、ループ処理L1とループ処理L4との間に依存関係があっても、ループ処理L4を実行することができる。この依存関係は、ループ処理L1において、配列r_ary[]の0番目の要素r_ary[0]へのデータを書き込みが完了し、変数iの値が1になっていれば、ループ処理L4において、当該要素r_ary[0]から値を読み出すことができることを意味する。同様に、ループ処理L2とループ処理L4との間にはj>lという関係が、ループ処理L3とループ処理L4との間にはk>lという関係が成り立っていればループ処理L4を実行することができる。そこで、図4に示す例では、先行するループ処理L1、L2、L3に対して、後続するループ処理L4の「後続のループが実行できるタイミング」が、それぞれ、i>l、j>l及びk>lであることが示されている。   Further, when attention is paid to the variable i and the variable l which are subscripts of the array r_ary [], if the relationship i> l is established between the variable i of the loop processing L1 and the variable l of the loop processing L4, the loop Even if there is a dependency between the process L1 and the loop process L4, the loop process L4 can be executed. In the loop processing L1, if the writing to the 0th element r_ary [0] of the array r_ary [] is completed in the loop processing L1 and the value of the variable i is 1, This means that a value can be read from the element r_ary [0]. Similarly, if the relationship j> l is established between the loop processing L2 and the loop processing L4, and the relationship k> l is established between the loop processing L3 and the loop processing L4, the loop processing L4 is executed. be able to. Therefore, in the example shown in FIG. 4, the “timing at which the subsequent loop can be executed” of the subsequent loop processing L4 with respect to the preceding loop processing L1, L2, and L3 is i> l, j> l, and k, respectively. It is shown that> 1.

次いで、スケジューリング・バインディング処理部22によるスケジューリング・バインディング処理(ステップS2)の具体例について説明する。スケジューリング・バインディング処理では、スケジューリング処理とバインディング処理とを行う。そこで、スケジューリング処理において図3に示す動作記述を処理した結果得られるコントロールステップの動作記述を図5〜図8に示す。なお、図5〜図8は、それぞれループ処理L1〜L4に対応するコントロールステップの動作記述である。   Next, a specific example of scheduling and binding processing (step S2) by the scheduling and binding processing unit 22 will be described. In the scheduling and binding process, a scheduling process and a binding process are performed. Therefore, the operation description of the control step obtained as a result of processing the operation description shown in FIG. 3 in the scheduling process is shown in FIGS. 5 to 8 are operation descriptions of control steps corresponding to the loop processes L1 to L4, respectively.

図5に示すように、ループ処理L1は、ステップL1_S1、L1_S2及びL1_S3の処理により構成される。図5の11行目、21行目、及び31行目はそれぞれステップの名前を表している。変数RG_iは変数iに対応した記憶素子(レジスタ)を表している。ステップL1_S1では、レジスタRG_iを0に初期化する動作が記述されている(12行目)。ステップL1_S2では、入力端子r_inから値を読み込み、配列r_ary[]のレジスタRG_iに格納されている値で示される要素に書き込む(22行目)。その後、レジスタRG_iの値を1つ大きい値に更新する(23行目)。ステップL1_S3は、ループ処理L1の全ての処理が終わったステップであり、何も行わない。   As shown in FIG. 5, the loop process L1 includes the processes of steps L1_S1, L1_S2, and L1_S3. The 11th, 21st, and 31st lines in FIG. 5 each represent the name of a step. A variable RG_i represents a storage element (register) corresponding to the variable i. In step L1_S1, an operation for initializing the register RG_i to 0 is described (line 12). In step L1_S2, a value is read from the input terminal r_in and written to the element indicated by the value stored in the register RG_i of the array r_ary [] (line 22). Thereafter, the value of the register RG_i is updated to one larger value (the 23rd line). Step L1_S3 is a step in which all the processes of the loop process L1 are completed, and nothing is performed.

図6に示すように、ループ処理L2は、ステップL2_S1、L2_S2及びL2_S3の処理により構成される。図6の11行目、21行目、及び31行目はそれぞれステップの名前を表している。変数RG_jは変数jに対応した記憶素子(レジスタ)を表している。ステップL2_S1では、レジスタRG_jを0に初期化する動作が記述されている(12行目)。ステップL2_S2では、入力端子g_inから値を読み込み、配列g_ary[]のレジスタRG_jに格納されている値で示される要素に書き込む(22行目)。その後、レジスタRG_jの値を1つ大きい値に更新する(23行目)。ステップL2_S3は、ループ処理L2の全ての処理が終わったステップであり、何も行わない。   As shown in FIG. 6, the loop process L2 is configured by the processes of steps L2_S1, L2_S2, and L2_S3. The 11th, 21st, and 31st lines in FIG. 6 each represent the name of a step. A variable RG_j represents a storage element (register) corresponding to the variable j. In step L2_S1, an operation for initializing the register RG_j to 0 is described (line 12). In step L2_S2, a value is read from the input terminal g_in and written to the element indicated by the value stored in the register RG_j of the array g_ary [] (line 22). Thereafter, the value of the register RG_j is updated to one larger value (the 23rd line). Step L2_S3 is a step in which all the processes of the loop process L2 are completed, and nothing is performed.

図7に示すように、ループ処理L3は、ステップL3_S1、L3_S2及びL3_S3の処理により構成される。図7の11行目、21行目、及び31行目はそれぞれステップの名前を表している。変数RG_kは変数kに対応した記憶素子(レジスタ)を表している。ステップL3_S1では、レジスタRG_kを0に初期化する動作が記述されている(12行目)。ステップL3_S2では、入力端子b_inから値を読み込み、配列b_ary[]のレジスタRG_kに格納されている値で示される要素に書き込む(22行目)。その後、レジスタRG_kの値を1つ大きい値に更新する(23行目)。ステップL3_S3は、ループ処理L3の全ての処理が終わったステップであり、何も行わない。   As shown in FIG. 7, the loop process L3 is configured by the processes of steps L3_S1, L3_S2, and L3_S3. The 11th, 21st, and 31st lines in FIG. 7 each represent the name of a step. A variable RG_k represents a storage element (register) corresponding to the variable k. In step L3_S1, an operation for initializing the register RG_k to 0 is described (line 12). In step L3_S2, a value is read from the input terminal b_in and written to an element indicated by the value stored in the register RG_k of the array b_ary [] (line 22). Thereafter, the value of the register RG_k is updated to one larger value (the 23rd line). Step L3_S3 is a step in which all the processes of the loop process L3 are completed, and nothing is performed.

図8に示すように、ループ処理L4は、ステップL4_S1〜L4_S5の処理により構成される。ステップL4_S1では、レジスタRG_lの値が0に初期化する動作が記述されている(12行目)。ステップL4_S2では、配列r_ary[]、g_ary[]及びb_ary[]のレジスタRG_lの値で示されている要素を読み出し、レジスタRG_r、RG_g及びRG_bにそれぞれ格納する(22行目から24行目)。ステップL4_S3では、レジスタRG_r、RG_g、RG_bの値を引数として関数y_gen()、u_gen()及びv_gen()をそれぞれ呼び出し、戻り値をレジスタRG_y、RG_u及びRG_vにそれぞれ格納する(32行目から34行目)。ステップL4_S4では、レジスタRG_y、RG_u、RG_vの値を、配列y_ary[]、u_ary[]及びv_ary[]の、レジスタRG_lに格納されている値で示されている要素に、それぞれ格納する(42行目から44行目)。さらに、ステップL4_S4では、レジスタRG_lの値を1つ大きい値に更新している(45行目)。ステップL4_S5は、ループ処理L4の全ての処理が終わったステップであり、何も行わない。   As shown in FIG. 8, the loop process L4 is configured by the processes of steps L4_S1 to L4_S5. In step L4_S1, an operation for initializing the value of the register RG_l to 0 is described (line 12). In step L4_S2, the element indicated by the value of the register RG_l in the arrays r_ary [], g_ary [] and b_ary [] is read and stored in the registers RG_r, RG_g and RG_b, respectively (line 22 to line 24). In step L4_S3, the functions y_gen (), u_gen () and v_gen () are called with the values of the registers RG_r, RG_g and RG_b as arguments, and the return values are stored in the registers RG_y, RG_u and RG_v, respectively (from the 32nd line to the 34th line). Line). In step L4_S4, the values of the registers RG_y, RG_u, and RG_v are stored in the elements indicated by the values stored in the register RG_l in the arrays y_ary [], u_ary [], and v_ary [], respectively (line 42). 44th line from the eyes). Further, in step L4_S4, the value of the register RG_l is updated to one larger value (45th line). Step L4_S5 is a step in which all the processes of the loop process L4 are completed, and nothing is performed.

次いで、制御回路作成処理部23による制御回路作成処理(ステップS3)の具体例について説明する。制御回路作成処理では、上述したようにステップS31とステップS32の2つの処理ステップにより構成される。そこで、以下では、制御回路作成処理についてステップS31とステップS32とに分けて説明する。   Next, a specific example of the control circuit creation processing (step S3) by the control circuit creation processing unit 23 will be described. As described above, the control circuit creation process includes two processing steps, step S31 and step S32. Therefore, in the following, the control circuit creation process will be described separately in step S31 and step S32.

まず、ステップS31では、ループ処理内のコントロールステップの実行状態を制御する第1の制御論理を生成する。実施の形態1にかかる動作合成システム1では、第1の制御論理を有限状態機械として構成する。そこで、制御回路作成処理部が生成する第1の制御論理の状態遷移図を図9〜図12に示す。なお、図9〜図12に示す状態遷移図は、それぞれループ処理L1〜L4に対応するものである。   First, in step S31, the first control logic for controlling the execution state of the control step in the loop process is generated. In the behavioral synthesis system 1 according to the first exemplary embodiment, the first control logic is configured as a finite state machine. Therefore, FIGS. 9 to 12 show state transition diagrams of the first control logic generated by the control circuit creation processing unit. The state transition diagrams shown in FIGS. 9 to 12 correspond to the loop processes L1 to L4, respectively.

図9では、ループ処理L1に属するコンロールステップを制御する有限状態機械(FSM)の状態遷移図が示されている。ループ処理L1の有限状態機械は、状態A11、A12、A13及び遷移B11、B12、B13を有する。状態A11、A12において、ステップL1_S1、L1_S2がそれぞれ実行される。状態A13ではループ処理L1の全ての処理を実行し終わった後のステップであり何も行わない。   FIG. 9 shows a state transition diagram of a finite state machine (FSM) that controls the control steps belonging to the loop process L1. The finite state machine of the loop process L1 has states A11, A12, A13 and transitions B11, B12, B13. In states A11 and A12, steps L1_S1 and L1_S2 are executed, respectively. State A13 is a step after execution of all the loop processing L1, and nothing is performed.

状態A11から状態A12への状態遷移を示す遷移B11は、状態A11に続き無条件で実行される。また、状態A12において、レジスタRG_iの値が16よりも小さいときには、状態A12から状態A12へと戻る遷移B12が実行される。一方、レジスタRG_iの値が16以上である場合、状態A12から状態B13への状態遷移を示す遷移B13が実行される。   A transition B11 indicating a state transition from the state A11 to the state A12 is executed unconditionally following the state A11. When the value of the register RG_i is smaller than 16 in the state A12, the transition B12 that returns from the state A12 to the state A12 is executed. On the other hand, when the value of the register RG_i is 16 or more, a transition B13 indicating a state transition from the state A12 to the state B13 is executed.

図10では、ループ処理L2に属するコンロールステップを制御する有限状態機械(FSM)の状態遷移図が示されている。ループ処理L2の有限状態機械は、状態A21、A22、A23及び遷移B21、B22、B23を有する。状態A21、A22において、ステップL2_S1、L2_S2がそれぞれ実行される。状態A23ではループ処理L2の全ての処理を実行し終わった後のステップであり何も行わない。   FIG. 10 shows a state transition diagram of a finite state machine (FSM) that controls the control steps belonging to the loop process L2. The finite state machine of the loop process L2 has states A21, A22, A23 and transitions B21, B22, B23. In states A21 and A22, steps L2_S1 and L2_S2 are executed. State A23 is a step after execution of all the processes of the loop process L2, and nothing is performed.

状態A21から状態A22への状態遷移を示す遷移B21は、状態A21に続き無条件で実行される。また、状態A22において、レジスタRG_iの値が16よりも小さいときには、状態A22から状態A22へと戻る遷移B22が実行される。一方、レジスタRG_iの値が16以上である場合、状態A22から状態B23への状態遷移を示す遷移B23が実行される。   A transition B21 indicating a state transition from the state A21 to the state A22 is executed unconditionally following the state A21. When the value of the register RG_i is smaller than 16 in the state A22, the transition B22 that returns from the state A22 to the state A22 is executed. On the other hand, when the value of the register RG_i is 16 or more, a transition B23 indicating a state transition from the state A22 to the state B23 is executed.

図11では、ループ処理L3に属するコンロールステップを制御する有限状態機械(FSM)の状態遷移図が示されている。ループ処理L3の有限状態機械は、状態A31、A32、A33及び遷移B31、B32、B33を有する。状態A31、A32において、ステップL3_S1、L3_S2がそれぞれ実行される。状態A33ではループ処理L3の全ての処理を実行し終わった後のステップであり何も行わない。   FIG. 11 shows a state transition diagram of a finite state machine (FSM) that controls the control steps belonging to the loop process L3. The finite state machine of the loop process L3 has states A31, A32, A33 and transitions B31, B32, B33. In states A31 and A32, steps L3_S1 and L3_S2 are respectively executed. State A33 is a step after execution of all the loop processing L3 is completed, and nothing is performed.

状態A31から状態A32への状態遷移を示す遷移B31は、状態A31に続き無条件で実行される。また、状態A32において、レジスタRG_iの値が16よりも小さいときには、状態A32から状態A32へと戻る遷移B32が実行される。一方、レジスタRG_iの値が16以上である場合、状態A32から状態B33への状態遷移を示す遷移B33が実行される。   A transition B31 indicating a state transition from the state A31 to the state A32 is executed unconditionally following the state A31. When the value of the register RG_i is smaller than 16 in the state A32, the transition B32 that returns from the state A32 to the state A32 is executed. On the other hand, when the value of the register RG_i is 16 or more, a transition B33 indicating a state transition from the state A32 to the state B33 is executed.

図12では、ループ処理L4に属するコンロールステップを制御する有限状態機械(FSM)の状態遷移図が示されている。ループ処理L4の有限状態機械は、状態A41〜A45及び遷移B31〜B35を有する。状態A41〜A44において、ステップL4_S1〜L4_S4がそれぞれ実行される。状態A45ではループ処理L4の全ての処理を実行し終わった後のステップであり何も行わない。   FIG. 12 shows a state transition diagram of a finite state machine (FSM) that controls the control steps belonging to the loop process L4. The finite state machine of the loop process L4 has states A41 to A45 and transitions B31 to B35. In states A41 to A44, steps L4_S1 to L4_S4 are respectively executed. State A45 is a step after execution of all the loop processing L4, and nothing is performed.

状態A41から状態A42への状態遷移を示す遷移B41は、状態A41に続き無条件で実行される。状態A42から状態A43への状態遷移を示す遷移B42は、状態A42に続き無条件で実行される。状態A43から状態A44への状態遷移を示す遷移B43は、状態A43に続き無条件で実行される。また、状態A44において、レジスタRG_iの値が16よりも小さいときには、状態A44から状態A42へと戻る遷移B44が実行される。一方、レジスタRG_iの値が16以上である場合、状態A44から状態B45への状態遷移を示す遷移B45が実行される。   A transition B41 indicating a state transition from the state A41 to the state A42 is executed unconditionally following the state A41. A transition B42 indicating a state transition from the state A42 to the state A43 is executed unconditionally following the state A42. A transition B43 indicating a state transition from the state A43 to the state A44 is executed unconditionally following the state A43. When the value of the register RG_i is smaller than 16 in the state A44, the transition B44 returning from the state A44 to the state A42 is executed. On the other hand, when the value of the register RG_i is 16 or more, a transition B45 indicating a state transition from the state A44 to the state B45 is executed.

つまり、ステップS31では、図9〜図12で示した状態遷移をする第1の制御論理を作成し、当該第1の制御論理に基づく第1の制御回路を生成する。   That is, in step S31, the first control logic that makes the state transition shown in FIGS. 9 to 12 is created, and a first control circuit based on the first control logic is generated.

次いで、ステップS32では、ループ処理の実行条件に基づきループ処理の実行状態を制御する第2の制御論理を生成する。制御回路作成処理では、記憶装置10のループ間依存関係情報記憶部12に格納されているループ間の依存関係を読み出す。そして、ループ処理L4に対して依存関係があるループ処理L1〜L3それぞれについての実行状況とループ処理L4が実行可能となる条件をもとに第2の制御論理を構成する。実施の形態1にかかる動作合成システム1では、第1の制御論理を有限状態機械として構成するのに対し、第2の制御論理は第1の制御論理に状態遷移条件を与える制御回路として構成する。   Next, in step S32, second control logic for controlling the execution state of the loop process is generated based on the execution condition of the loop process. In the control circuit creation processing, the inter-loop dependency stored in the inter-loop dependency relationship information storage unit 12 of the storage device 10 is read. Then, the second control logic is configured based on the execution status of each of the loop processes L1 to L3 having a dependency relationship with the loop process L4 and the conditions under which the loop process L4 can be executed. In the behavioral synthesis system 1 according to the first exemplary embodiment, the first control logic is configured as a finite state machine, whereas the second control logic is configured as a control circuit that gives a state transition condition to the first control logic. .

図3に示した動作記述においては、図4に示すようにループ処理L1〜L3は、他のループ処理と依存関係を有しておらず、ループ処理L4は、ループ処理L1〜L3と依存関係を有する。そのため、図3に示した動作記述を処理する動作合成システム1では、ループ処理L1〜L3に対しては第2の制御論理は生成しない。一方、動作合成システム1は、ループ処理L4がループ処理L1〜L3に対して依存関係を有するため、ループ処理L4の実行状態を制御する論理として第2の制御論理が生成される。ここで、第2の制御論理は、図4に示すループ間依存関係情報に基づき生成される。ループ処理の実行条件は、図4のループ間依存関係情報に示すように、ループ処理L4に対して依存関係を有する先行ループ処理の実行状況によって決定される。   In the behavioral description shown in FIG. 3, as shown in FIG. 4, the loop processes L1 to L3 have no dependency with other loop processes, and the loop process L4 has a dependency with the loop processes L1 to L3. Have Therefore, the behavioral synthesis system 1 that processes the behavioral description shown in FIG. 3 does not generate the second control logic for the loop processing L1 to L3. On the other hand, in the behavioral synthesis system 1, since the loop process L4 has a dependency relationship with the loop processes L1 to L3, the second control logic is generated as the logic for controlling the execution state of the loop process L4. Here, the second control logic is generated based on the inter-loop dependency relationship information shown in FIG. As shown in the inter-loop dependency relationship information in FIG. 4, the execution condition of the loop processing is determined by the execution status of the preceding loop processing having a dependency on the loop processing L4.

図8に示すように、ループ処理L4は、ステップL4_S2においてループ処理L1〜L3の処理結果を必要とする。そのため、制御回路作成処理では、図4のループ処理L4の実行条件を満たした場合にループ処理L4に対応する第1の制御論理に対する開始信号S0をイネーブル状態ENとする第2の制御論理を生成する。この第2の制御論理は、レジスタRG_i、RG_j、RG_kの値とレジスタRG_lの値とを比較し、レジスタRG_lが、レジスタRG_i、RG_j、RG_kの全てより小さいときに第1の制御論理に開始信号S0を与えるものとなる。つまり、本実施の形態おいて生成される第2の制御論理は、ループ処理L4を実行するか否かを制御するものとなる。なお、第2の制御回路は、第2の制御論理を実現したものである。   As shown in FIG. 8, the loop process L4 requires the processing results of the loop processes L1 to L3 in step L4_S2. Therefore, in the control circuit creation process, when the execution condition of the loop process L4 in FIG. 4 is satisfied, a second control logic is generated that sets the start signal S0 for the first control logic corresponding to the loop process L4 to the enable state EN. To do. The second control logic compares the values of the registers RG_i, RG_j, RG_k and the value of the register RG_l, and when the register RG_l is smaller than all of the registers RG_i, RG_j, RG_k, the start signal is sent to the first control logic. S0 is given. That is, the second control logic generated in the present embodiment controls whether or not to execute the loop process L4. Note that the second control circuit implements the second control logic.

また、制御回路作成処理では、第2の制御論理が生成する開始信号S0に応じて状態遷移を行うようにループ処理L4を修正する。より具体的には、制御回路作成処理では、ループ処理L4に対応する第1の制御論理のうちステップL2_S2を実行する状態A42を状態A46とする。また、制御回路作成処理では、開始信号S0がイネーブル状態ENでない場合に状態A46から状態A46に遷移する遷移B46を追加する。さらに、制御回路作成処理では、図12の遷移B42を、開始信号S0がイネーブル状態ENである場合に状態A46から状態A43に遷移する遷移B47に修正する。このように修正されたループ処理L4に対応した第1の制御論理の状態遷移図を図13に示す。   In the control circuit creation process, the loop process L4 is modified so that the state transition is performed according to the start signal S0 generated by the second control logic. More specifically, in the control circuit creation process, state A42 in which step L2_S2 is executed in the first control logic corresponding to loop process L4 is set as state A46. Further, in the control circuit creation process, a transition B46 is added to transition from the state A46 to the state A46 when the start signal S0 is not the enable state EN. Furthermore, in the control circuit creation process, the transition B42 in FIG. 12 is modified to a transition B47 that transitions from the state A46 to the state A43 when the start signal S0 is in the enable state EN. FIG. 13 shows a state transition diagram of the first control logic corresponding to the loop process L4 modified in this way.

なお、第2の制御論理は、第1の制御論理を修正することで生成することもできる。この場合、第2の制御論理は、ループ処理L4に対応する第1の制御論理を、ループ処理L4の実行条件を満たした場合にステップL4_S2の処理が行われるように修正した、その修正部分として生成される。   Note that the second control logic can also be generated by modifying the first control logic. In this case, the second control logic corrects the first control logic corresponding to the loop process L4 so that the process of step L4_S2 is performed when the execution condition of the loop process L4 is satisfied. Generated.

次いで、RTL記述生成処理部24によるRTL記述生成処理(ステップS4)の具体例について説明する。RTL記述生成処理では、スケジューリング・バインディング処理部22にて決定された演算器とレジスタからデータパスを作成し、制御回路作成処理部23にて作成された制御回路と当該データパスとに基づきRTL記述を作成する。そして、作成したRTL記述を、記憶装置10のRTL記述記憶部13に格納する。   Next, a specific example of the RTL description generation process (step S4) by the RTL description generation processing unit 24 will be described. In the RTL description generation process, a data path is created from the arithmetic units and registers determined by the scheduling and binding processing unit 22, and the RTL description is based on the control circuit created by the control circuit creation processing unit 23 and the data path. Create Then, the created RTL description is stored in the RTL description storage unit 13 of the storage device 10.

上記処理を経て生成されたRTL記述に基づき生成される半導体装置のブロック図の具体例を図14に示す。図14に示すように、半導体装置は、第1の制御回路に相当する有限状態機械34、44、54、64及び第2の制御回路に相当する制御回路71を有する。また、図14に示す半導体装置の各素子は、以下の対応関係を有する。   A specific example of a block diagram of a semiconductor device generated based on the RTL description generated through the above processing is shown in FIG. As shown in FIG. 14, the semiconductor device includes finite state machines 34, 44, 54, 64 corresponding to the first control circuit and a control circuit 71 corresponding to the second control circuit. Each element of the semiconductor device shown in FIG. 14 has the following correspondence.

入力端子r_in、g_in、b_inは、それぞれ図3の2行目のr_in、図3の3行目のg_in、図3の4行目のb_inに対応する。レジスタ32、42、52、62は、それぞれ図5の12行目のレジスタRG_i、図6の12行目のレジスタRG_j、図7の12行目のレジスタRG_k、図8の12行目のレジスタRG_lに対応する。レジスタ36、46、56は、それぞれ図8の22行目のレジスタRG_r、図8の23行目のレジスタRG_g、図8の24行目のレジスタRG_bに対応する。レジスタ38、48、58は、それぞれ図8の32行目のレジスタRG_y、図8の33行目のレジスタRG_u、図8の34行目のレジスタRG_vに対応する。加算器33、43、53、63は、それぞれ図5の23行目の加算器、図6の23行目の加算器、図7の23行目の加算器、図8の45行目の加算器に対応する。メモリ35、45、55は、図5の22行目の配列r_ary、図6の22行目の配列g_ary、図7の22行目の配列b_aryに対応する。メモリ39、49、59は、それぞれ図8の42行目の配列y_ary、図8の43行目の配列u_ary、図8の44行目の配列v_aryに対応する。サブモジュール37、47、57は、それぞれ図8の32行目の関数y_gen、図8の33行目のu_gen、図8の34行目のv_genに対応する。なお、マルチプレクサ31、41、51、61は、有限状態機械34、44、54、64が制御するものであり、レジスタRG_i、RG_j、RG_k、RG_lの値を初期化するために用いられる。   Input terminals r_in, g_in, and b_in correspond to r_in in the second row in FIG. 3, g_in in the third row in FIG. 3, and b_in in the fourth row in FIG. 3, respectively. The registers 32, 42, 52, and 62 are respectively a register RG_i on the 12th line in FIG. 5, a register RG_j on the 12th line in FIG. 6, a register RG_k on the 12th line in FIG. 7, and a register RG_l on the 12th line in FIG. Corresponding to The registers 36, 46, and 56 correspond to the register RG_r on the 22nd line in FIG. 8, the register RG_g on the 23rd line in FIG. 8, and the register RG_b on the 24th line in FIG. The registers 38, 48, and 58 correspond to the register RG_y on the 32nd line in FIG. 8, the register RG_u on the 33rd line in FIG. 8, and the register RG_v on the 34th line in FIG. The adders 33, 43, 53, and 63 are the adder in the 23rd row in FIG. 5, the adder in the 23rd row in FIG. 6, the adder in the 23rd row in FIG. 7, and the adder in the 45th row in FIG. Corresponding to the vessel. The memories 35, 45, and 55 correspond to the array r_ary on the 22nd line in FIG. 5, the array g_ary on the 22nd line in FIG. 6, and the array b_ary on the 22nd line in FIG. The memories 39, 49, and 59 correspond to the array y_ary on the 42nd row in FIG. 8, the array u_ary on the 43rd row in FIG. 8, and the array v_ary on the 44th row in FIG. The submodules 37, 47, and 57 respectively correspond to the function y_gen on the 32nd line in FIG. 8, u_gen on the 33rd line in FIG. 8, and v_gen on the 34th line in FIG. The multiplexers 31, 41, 51, 61 are controlled by the finite state machines 34, 44, 54, 64, and are used to initialize the values of the registers RG_i, RG_j, RG_k, RG_l.

図14に示す半導体装置では、有限状態機械34は、加算器33が出力する値を受け取り、マルチプレクサ31、レジスタ32、加算器33、メモリ35、入力端子r_inを制御することでループ処理L1の動作を制御する。有限状態機械34は、最初のクロックに応じてループ処理L1が状態A11(ステップL1_S1)から実行されるように制御する。有限状態機械34は、状態A11で、レジスタ32(RG_i)に値0を代入する制御を行う。さらに、有限状態機械34は、状態A12(ステップL1_S2)に対応する制御として、入力端子r_inから読み込んだ値を、メモリ35の配列のうちレジスタ32(RG_i)の値で示される配列に格納する。同時に、有限状態機械34は、レジスタ32(RG_i)の値を1つ大きな値に更新する。該更新値は、有限状態機械34へと伝えられる。さらに、有限状態機械34は、該更新値が16よりも小さいときには再度状態A12を実行するように制御し、該更新値が16以上のときは、状態A12を状態A13(ステップL1_S3)に遷移させるように制御する。   In the semiconductor device shown in FIG. 14, the finite state machine 34 receives the value output from the adder 33, and controls the multiplexer 31, the register 32, the adder 33, the memory 35, and the input terminal r_in to operate the loop process L1. To control. The finite state machine 34 controls the loop processing L1 to be executed from the state A11 (step L1_S1) according to the first clock. The finite state machine 34 performs control to assign a value 0 to the register 32 (RG_i) in the state A11. Further, the finite state machine 34 stores the value read from the input terminal r_in in the array indicated by the value of the register 32 (RG_i) in the array of the memory 35 as control corresponding to the state A12 (step L1_S2). At the same time, the finite state machine 34 updates the value of the register 32 (RG_i) to one larger value. The updated value is communicated to the finite state machine 34. Further, the finite state machine 34 controls to execute the state A12 again when the update value is smaller than 16, and when the update value is 16 or more, the state A12 is changed to the state A13 (step L1_S3). To control.

有限状態機械44は、加算器43が出力する値を受け取り、マルチプレクサ41、レジスタ42、加算器43、メモリ45、入力端子g_inを制御することでループ処理L2の動作を制御する。有限状態機械44は、最初のクロックに応じてループ処理L2が状態A21(ステップL2_S1)から実行されるように制御する。有限状態機械44は、状態A21で、レジスタ42(RG_j)に値0を代入する制御を行う。さらに、有限状態機械44は、状態A22(ステップL2_S2)に対応する制御として、入力端子g_inから読み込んだ値を、メモリ45の配列のうちレジスタ42(RG_j)の値で示される配列に格納する。同時に、有限状態機械44は、レジスタ42(RG_j)の値を1つ大きな値に更新する。該更新値は、有限状態機械44へと伝えられる。さらに、有限状態機械44は、該更新値が16よりも小さいときには再度状態A22を実行するように制御し、該更新値が16以上のときは、状態A22を状態A23(ステップL2_S3)に遷移させるように制御する。   The finite state machine 44 receives the value output from the adder 43, and controls the operation of the loop processing L2 by controlling the multiplexer 41, the register 42, the adder 43, the memory 45, and the input terminal g_in. The finite state machine 44 controls the loop process L2 to be executed from the state A21 (step L2_S1) according to the first clock. The finite state machine 44 performs control to substitute the value 0 into the register 42 (RG_j) in the state A21. Further, the finite state machine 44 stores the value read from the input terminal g_in in an array indicated by the value of the register 42 (RG_j) in the array of the memory 45 as control corresponding to the state A22 (step L2_S2). At the same time, the finite state machine 44 updates the value of the register 42 (RG_j) to one larger value. The updated value is communicated to the finite state machine 44. Further, the finite state machine 44 controls to execute the state A22 again when the update value is smaller than 16, and when the update value is 16 or more, the state A22 is changed to the state A23 (step L2_S3). To control.

有限状態機械54は、加算器53が出力する値を受け取り、マルチプレクサ51、レジスタ52、加算器53、メモリ55、入力端子b_inを制御することでループ処理L3の動作を制御する。有限状態機械54は、最初のクロックに応じてループ処理L3が状態A31(ステップL3_S1)から実行されるように制御する。有限状態機械54は、状態A31で、レジスタ52(RG_k)に値0を代入する制御を行う。さらに、有限状態機械54は、状態A32(ステップL3_S2)に対応する制御として、入力端子b_inから読み込んだ値を、メモリ55の配列のうちレジスタ52(RG_k)の値で示される配列に格納する。同時に、有限状態機械54は、レジスタ52(RG_k)の値を1つ大きな値に更新する。該更新値は、有限状態機械54へと伝えられる。さらに、有限状態機械54は、該更新値が16よりも小さいときには再度状態A32を実行するように制御し、該更新値が16以上のときは、状態A32を状態A33(ステップL3_S3)に遷移させるように制御する。   The finite state machine 54 receives the value output from the adder 53 and controls the operation of the loop processing L3 by controlling the multiplexer 51, the register 52, the adder 53, the memory 55, and the input terminal b_in. The finite state machine 54 controls the loop process L3 to be executed from the state A31 (step L3_S1) according to the first clock. The finite state machine 54 performs control for substituting the value 0 into the register 52 (RG_k) in the state A31. Further, the finite state machine 54 stores the value read from the input terminal b_in in the array indicated by the value of the register 52 (RG_k) in the array of the memory 55 as control corresponding to the state A32 (step L3_S2). At the same time, the finite state machine 54 updates the value of the register 52 (RG_k) to one larger value. The updated value is communicated to the finite state machine 54. Further, the finite state machine 54 performs control so that the state A32 is executed again when the update value is smaller than 16, and when the update value is 16 or more, the state A32 is changed to the state A33 (step L3_S3). To control.

有限状態機械64は、加算器63から値を受け取り、マルチプレクサ61、加算器63、レジスタ62、36、46、56、38、48、58、メモリ35、45、55、39、49、59を制御し、ループ処理L4の動作を制御する。また、有限状態機械64は、制御回路71により制御される。   The finite state machine 64 receives the value from the adder 63 and controls the multiplexer 61, the adder 63, the registers 62, 36, 46, 56, 38, 48, 58, and the memories 35, 45, 55, 39, 49, 59. Then, the operation of the loop processing L4 is controlled. The finite state machine 64 is controlled by the control circuit 71.

まず、有限状態機械64は、制御回路71が出力する開始信号S0の状態に関わらず、状態A41(ステップL4_S1)に対応する制御として、レジスタ62(RG_l)に値0を代入するように動作する。そして、有限状態機械64は、状態A41から状態A42に状態が遷移する。この状態A42においては、有限状態機械64は、制御回路71が出力する開始信号S0がイネーブル状態となるまでは、状態A42を実行せず待ち状態を維持する。制御回路71は、レジスタ32、42、52の値を読み取り、レジスタ62(RG_l)の値がレジスタ32、42、52のいずれの値よりも小さいときに開始信号S0をイネーブル状態ENとする。そして、有限状態機械64は、開始信号S0がイネーブル状態ENとなったことに応じて状態A42に対応するステップL4_S2の動作を実現する制御を行う。この制御では、メモリ35、45、55の配列のうちレジスタ62(RG_l)の値で示される配列に格納されている要素がそれぞれレジスタ36、46、56に格納される。   First, the finite state machine 64 operates to assign a value 0 to the register 62 (RG_l) as control corresponding to the state A41 (step L4_S1) regardless of the state of the start signal S0 output from the control circuit 71. . Then, the state of the finite state machine 64 transitions from the state A41 to the state A42. In this state A42, the finite state machine 64 does not execute the state A42 and maintains the waiting state until the start signal S0 output from the control circuit 71 is enabled. The control circuit 71 reads the values of the registers 32, 42, and 52, and sets the start signal S0 to the enable state EN when the value of the register 62 (RG_l) is smaller than any of the values of the registers 32, 42, and 52. Then, the finite state machine 64 performs control for realizing the operation of Step L4_S2 corresponding to the state A42 in response to the start signal S0 becoming the enable state EN. In this control, the elements stored in the array indicated by the value of the register 62 (RG_l) among the arrays of the memories 35, 45, and 55 are stored in the registers 36, 46, and 56, respectively.

そして、レジスタ36、46、56の値が更新されたことに応じて、状態A42から状態A43への状態遷移が行われ、さらに状態A43の処理が行われたことに応じて状態A44の処理が行われる。つまり、ステップL4_S2の後、ステップL4_S3及びステップL4_S4の処理が続けて行われる。   Then, the state transition from the state A42 to the state A43 is performed according to the updated values of the registers 36, 46, and 56, and the processing of the state A44 is performed according to the processing of the state A43 being further performed. Done. That is, after step L4_S2, the processes of step L4_S3 and step L4_S4 are performed continuously.

ステップL4_S3では、サブモジュール37、47、57のいずれもがレジスタ36、46、56の値(RG_r、RG_g、RG_b)を読み込む。そして、サブモジュール37、47、57は、レジスタ38、48、49(RG_y、RG_u、RG_v)のうち対応するレジスタに処理後に得られた値を格納する。   In step L4_S3, all the submodules 37, 47, and 57 read the values (RG_r, RG_g, and RG_b) of the registers 36, 46, and 56. Then, the submodules 37, 47, and 57 store values obtained after processing in the corresponding registers among the registers 38, 48, and 49 (RG_y, RG_u, and RG_v).

ステップL4_S4では、レジスタ38(RG_y)に格納された値がメモリ39の配列のうちレジスタ62(RG_l)で示される値の配列に格納される。また、レジスタ48(RG_u)に格納された値がメモリ49の配列のうちレジスタ62(RG_l)で示される値の配列に格納される。また、レジスタ58(RG_v)に格納された値がメモリ59の配列のうちレジスタ62(RG_l)で示される値の配列に格納される。さらに、ステップL4_S4では、加算器63がレジスタ62の値を1つ大きな値に更新する。該更新値は、有限状態機械64へと伝えられる。   In step L4_S4, the value stored in the register 38 (RG_y) is stored in the array of values indicated by the register 62 (RG_l) in the array of the memory 39. The value stored in the register 48 (RG_u) is stored in the array of values indicated by the register 62 (RG_l) in the array of the memory 49. The value stored in the register 58 (RG_v) is stored in the array of values indicated by the register 62 (RG_l) in the array of the memory 59. Further, in step L4_S4, the adder 63 updates the value of the register 62 to one larger value. The updated value is communicated to the finite state machine 64.

さらに、有限状態機械64は、状態A44で、該更新値が16よりも小さいときには再度A42に状態を遷移させてステップL4_S2を実行するように制御する。一方、該更新値が16以上のときには、有限状態機械64は、状態A44から状態A45に状態を遷移させ、ステップL4_S5を実行するように制御する。   Further, the finite state machine 64 performs control so that when the updated value is smaller than 16 in the state A44, the state is again shifted to A42 and step L4_S2 is executed. On the other hand, when the update value is 16 or more, the finite state machine 64 performs control so that the state is changed from the state A44 to the state A45 and step L4_S5 is executed.

上記説明より、実施の形態1にかかる動作合成システム1は、ループ間依存関係解析処理により、動作記述中のループ処理間の依存関係を解析する。そして、動作合成システム1は、当該解析結果に基づきループ処理中のコントロールステップ毎の実行状態を制御する第1の制御論理と、ループ処理の実行状態を制御する第2の制御論理とを生成する。その後、動作合成システム1は、第1の制御論理と第2の制御論理とを含む制御回路と、動作記述による処理を行う演算器及びレジスタと、を含むRTL記述を生成する。これにより、動作合成システム1では、ループ処理を全て独立した回路として有し、かつ、ループ間の依存関係を考慮した動作が可能なRTL記述を生成することができる。つまり、動作合成システム1によれば、逐次的に記述された複数のループの間にデータ依存関係がある場合でもループ処理の並列化を行い、該ループ処理を同時に実行できるような回路を合成できる。   From the above description, the behavioral synthesis system 1 according to the first embodiment analyzes the dependency relationship between the loop processes in the behavior description by the inter-loop dependency relationship analysis process. Then, the behavioral synthesis system 1 generates a first control logic for controlling the execution state for each control step during the loop processing and a second control logic for controlling the execution state of the loop processing based on the analysis result. . Thereafter, the behavioral synthesis system 1 generates an RTL description including a control circuit including the first control logic and the second control logic, and an arithmetic unit and a register that perform processing according to the behavior description. As a result, the behavioral synthesis system 1 can generate an RTL description that has all loop processing as independent circuits and that can operate in consideration of the dependency between loops. That is, according to the behavioral synthesis system 1, even when there is a data dependency between a plurality of loops described sequentially, it is possible to synthesize a circuit that can execute loop processing in parallel by parallelizing the loop processing. .

また、動作合成システム1では、上記のようなRTL記述をループ処理間の依存関係の複雑さに関わらず生成することができる。これは、ループ処理間の依存関係を考慮した制御を行う制御回路をループ処理にかかる回路とは別に設けるためである。   The behavioral synthesis system 1 can generate the RTL description as described above regardless of the complexity of the dependency between loop processes. This is because a control circuit that performs control in consideration of the dependency between loop processes is provided separately from the circuit related to the loop processes.

また、動作合成システム1により生成されるRTL記述に基づき形成される半導体装置は、他のループ処理との依存関係を有さない第1のループ処理を実行する第1のループ処理回路と、他のループ処理との依存関係を有する第2のループ処理を実行する第2のループ処理回路と、第1、第2のループ処理回路のコントロールステップの実行状態を制御する第1の制御論理と、他のループ処理の処理結果に応じて前記第2のループ処理の実行状態を制御する第2の制御論理と、を含む制御回路と、を有する。この半導体装置は、ループ処理の並列化がなされているため、1つの処理を短時間に処理できる。つまり、動作合成システム1によれば、処理性能の高い半導体装置を合成することが可能になる。   In addition, a semiconductor device formed based on the RTL description generated by the behavioral synthesis system 1 includes a first loop processing circuit that executes a first loop process that does not have a dependency relationship with other loop processes, and others. A second loop processing circuit that executes a second loop processing having a dependency relationship with the loop processing of the first loop, a first control logic that controls an execution state of a control step of the first and second loop processing circuits, And a control circuit including a second control logic that controls an execution state of the second loop process in accordance with a processing result of another loop process. In this semiconductor device, since loop processing is parallelized, one process can be processed in a short time. That is, according to the behavioral synthesis system 1, it is possible to synthesize a semiconductor device with high processing performance.

なお、上記実施の形態では、動作合成システム1がハードウェアにより実現された例について説明したが、上記ハードウェアの処理に対応する処理をソフトウェアにより実現すこともできる。この動作合成プログラムは、演算回路において実行され、記憶装置に格納された動作記述からRTL記述を合成し、RTL記述を前記記憶装置に格納するものである。   In the above embodiment, the example in which the behavioral synthesis system 1 is realized by hardware has been described. However, processing corresponding to the processing of the hardware can also be realized by software. This behavioral synthesis program is executed in an arithmetic circuit, synthesizes an RTL description from a behavioral description stored in a storage device, and stores the RTL description in the storage device.

実施の形態2
実施の形態2にかかる動作合成システム2は、他のループ処理と依存関係を有するループ処理を含む動作記述からパイプライン方式の処理を行うRTL記述を合成するものである。この動作合成システム2のブロック図を図15に示す。図15に示すように、動作合成システム2は、実施の形態1にかかる動作合成システム1の制御回路作成処理部23を制御回路作成処理部23aに置き換えた処理装置20aを有する。なお、実施の形態2にかかる動作合成システム2の説明において、実施の形態1にかかる動作合成システム1と同じ構成要素については、実施の形態1と同じ符号を付して説明を省略する。
Embodiment 2
The behavioral synthesis system 2 according to the second exemplary embodiment synthesizes an RTL description that performs pipeline processing from a behavioral description including a loop process having a dependency relationship with other loop processes. A block diagram of this behavioral synthesis system 2 is shown in FIG. As illustrated in FIG. 15, the behavioral synthesis system 2 includes a processing device 20a in which the control circuit creation processing unit 23 of the behavioral synthesis system 1 according to the first embodiment is replaced with a control circuit creation processing unit 23a. In the description of the behavioral synthesis system 2 according to the second embodiment, the same components as those in the behavioral synthesis system 1 according to the first embodiment are denoted by the same reference numerals as those in the first embodiment, and the description thereof is omitted.

制御回路作成処理部23aは、スケジューリング・バインディング処理部22にて決定されたコンロールステップと、ループ間依存関係情報記憶部12に記録されたループ間依存関係情報と、に基づき前記ループ処理に含まれるコントロールステップをパイプライン処理のステージ毎にグループ化し、ステージ内のステップの実行を制御する第1の制御論理と、ステージ毎の実行状態を制御する第3の制御論理と、ループの実行を制御する第3の制御論理とを有する制御回路を作成する。   The control circuit creation processing unit 23a is included in the loop processing based on the control step determined by the scheduling / binding processing unit 22 and the inter-loop dependency information stored in the inter-loop dependency information storage unit 12. The control steps are grouped for each stage of the pipeline processing, the first control logic for controlling the execution of the steps in the stage, the third control logic for controlling the execution state for each stage, and the execution of the loop are controlled. A control circuit having a third control logic is created.

次いで、実施の形態2にかかる動作合成システム2の動作について説明する。そこで、動作合成システム2の動作手順を示すフローチャートを図16に示す。図16に示すように、動作合成システム2において、制御回路作成処理以外の処理(図16のステップS1、S2、S4)は、図2に示したフローチャートと同じである。そこで、以下では、ステップS1、S2、S4の説明については省略し、動作合成システム2において特徴的な制御回路作成処理部23aの制御回路作成処理(ステップS5)について説明する。   Next, the operation of the behavioral synthesis system 2 according to the second exemplary embodiment will be described. FIG. 16 is a flowchart showing the operation procedure of the behavioral synthesis system 2. As shown in FIG. 16, in the behavioral synthesis system 2, processes other than the control circuit creation process (steps S1, S2, and S4 in FIG. 16) are the same as those in the flowchart shown in FIG. Therefore, in the following, description of steps S1, S2, and S4 will be omitted, and control circuit creation processing (step S5) of the control circuit creation processing unit 23a that is characteristic in the behavioral synthesis system 2 will be described.

ステップS5は、ステップS51〜S54の4つの処理ステップを有する。ステップS51は、ステージ決定処理を行う。ステップS51では、制御回路作成処理部23aがスケジューリングにて決定されたコントロールステップをパイプライン処理のステージに割り当てる。このステージには、1つのループ処理に属するコントロールステップのうち、単一又は連続して実行される複数のコントロールステップをグループ化したものが割り当てられる。1つのグループに含まれるステップの数は予め与えられたイニシエーションインターバルと同じか、それ以下とする。ループパイプライン技法が適用されたループ処理では、1つのイタレーションが最後まで終了する前に次のイタレーションを開始するように動作する。このとき、1つのイタレーションの開始から次のイタレーションの開始までの時間(クロック数)を、イニシエーションインターバルと呼ぶ。1つのステップに着目すると、1つ目のイタレーションのための実行をしてから、イニシエーションインターバルの時間(クロック数)が経過するまでは、実行されないという性質がある。連続して実行される複数のコントロールステップを、イニシエーションインターバルのクロック数毎にグループ化すると、1イタレーションは1イニシエーションインターバル毎に1つずつステージを移動する。このとき、異なるステージに属する演算は同じ演算器を共有しないようにバインディングの際に予め考慮することが望ましい。さらには、異なるステージ間でレジスタを共有しないようにバインディングの際に予め考慮することが望ましい。   Step S5 has four processing steps of steps S51 to S54. Step S51 performs stage determination processing. In step S51, the control circuit creation processing unit 23a assigns the control step determined by scheduling to the pipeline processing stage. This stage is assigned with a group of a plurality of control steps executed in a single or continuous manner among control steps belonging to one loop process. The number of steps included in one group is equal to or less than a predetermined initiation interval. In the loop processing to which the loop pipeline technique is applied, the operation is performed so that the next iteration is started before the end of one iteration. At this time, the time (number of clocks) from the start of one iteration to the start of the next iteration is called an initiation interval. Focusing on one step, there is a property that it is not executed until the time (number of clocks) of the initiation interval elapses after execution for the first iteration. When a plurality of control steps executed in succession are grouped by the number of clocks in the initiation interval, one iteration moves the stage one by one in each initiation interval. At this time, it is desirable to consider in advance at the time of binding so that operations belonging to different stages do not share the same arithmetic unit. Furthermore, it is desirable to consider in advance when binding so that registers are not shared between different stages.

次いで、ステップS52では、制御回路作成処理部23aが、ステージ毎にそのステージに属するコントロールステップの実行を制御する第1の制御論理を作成する。当該第1の制御論理は、例えば、有限状態機械(FSM)で構成される。当該第1の制御論理は、ステージ毎に作成され、該ステージに属するコントロールステップを順に実行するように構成される。   Next, in step S52, the control circuit creation processing unit 23a creates first control logic for controlling the execution of the control step belonging to that stage for each stage. The first control logic is constituted by, for example, a finite state machine (FSM). The first control logic is created for each stage, and is configured to sequentially execute control steps belonging to the stage.

次いで、ステップS53では、制御回路作成処理部23aが、ステージの実行を制御する第3の制御論理を作成する。該第3の制御論理は、ステージの開始条件を検査し、ステージに属する最初のコントロールステップの実行を開始するか、開始せずに待つかを制御するように構成される。ステージの開始の第1の条件は、直前のステージ又はループの実行状況(終了状況)によって決定される。また、ステージの開始の第2の条件は、直後のステージ又はループ処理の実行状況によって決定される。第1、第2の条件の両方の開始条件が満たされるときにステージの実行を開始するように第3の制御論理を構成する。   Next, in step S53, the control circuit creation processing unit 23a creates a third control logic for controlling the execution of the stage. The third control logic is configured to check the start condition of the stage and control whether to start execution of the first control step belonging to the stage or to wait without starting. The first condition for starting a stage is determined by the execution status (end status) of the immediately preceding stage or loop. Also, the second condition for starting the stage is determined by the stage immediately following or the execution status of the loop processing. The third control logic is configured to start execution of the stage when both start conditions of the first and second conditions are met.

次いで、ステップS54では、制御回路作成処理部23aが、ループ処理の実行を制御する第2の制御論理を作成する。第2の制御論理は、実施の形態1と同様に、他のループ処理の実行状況に応じて制御対象のループ処理に対応する第1、第2の制御論理に処理の開始を通知する開始信号S0を出力する制御回路として生成される。また、第2の制御論理は、ステップS52及びS53で作成された第1、第2の制御回路の実行条件を変更することにより構成することもできる。該第2の制御論理では、ループ処理の開始条件を検査し、ループ処理の実行を開始するか、開始せずに待つかを制御するように構成される。   Next, in step S54, the control circuit creation processing unit 23a creates a second control logic that controls execution of the loop processing. As in the first embodiment, the second control logic is a start signal for notifying the first and second control logic corresponding to the loop process to be controlled of the start of the process according to the execution status of other loop processes. It is generated as a control circuit that outputs S0. The second control logic can also be configured by changing the execution conditions of the first and second control circuits created in steps S52 and S53. The second control logic is configured to check a start condition of the loop process and control whether to start executing the loop process or wait without starting.

ループ処理の開始条件は、該ループに対して依存関係を有する先行ループの実行状況によって決定される。すなわち、ループ間依存関係情報記憶部12に格納されているループ間依存関係情報を読み出し、該ループ処理に対して依存関係があるループ処理それぞれについて、その実行状況と実行が可能となる条件(ループ処理の開始条件)をもとに制御論理を構成する。ループの実行を制御する第2の制御論理は、例えば、ループ処理の先頭状態においてループ処理の開始条件を検査するように構成される。また、例えば、ループ処理の全状態においてループ処理の開始条件を検査するように構成されても良い。また、例えば、ループ処理のある特定の状態においてループ処理の開始条件を検査するように構成されても良い。なお、ループ処理に対して依存関係を有する先行ループが存在しない場合には、無条件でループ処理の実行を開始するように構成される。   The start condition of the loop process is determined by the execution status of the preceding loop having a dependency relationship with the loop. That is, the inter-loop dependency relationship information stored in the inter-loop dependency relationship information storage unit 12 is read, and the execution status and the conditions (loops) that enable execution of each loop process that has a dependency relationship with the loop process. The control logic is configured based on the processing start condition). For example, the second control logic for controlling the execution of the loop is configured to check the start condition of the loop process in the head state of the loop process. Further, for example, the start condition of the loop process may be inspected in all the states of the loop process. Further, for example, the start condition of the loop process may be inspected in a specific state where the loop process is performed. In addition, when there is no preceding loop having a dependency relationship with the loop process, the loop process is unconditionally started.

続いて、上記において説明した動作合成システム2の動作手順の具体例について説明する。この説明では、実施の形態2にかかる動作合成システムに対しても、実施の形態1と同じ動作記述(図3)が与えられ、ループ処理L4に対してイニシエーションインターバル1にてループパイプラインが適用されるものとする。   Next, a specific example of the operation procedure of the behavioral synthesis system 2 described above will be described. In this description, the behavioral description system according to the second embodiment is also given the same behavioral description (FIG. 3) as in the first embodiment, and the loop pipeline is applied at the initiation interval 1 to the loop processing L4. Shall be.

実施の形態2では、ループ処理L4に対してループパイプラインが適用されるため、ステップS2のスケジューリング・バインディング処理にて決定されるコントロールステップが、実施の形態1とは異なる。そこで、実施の形態2のステップS2で決定されるコントロールステップの動作を示す記述の例を図17に示す。図17に示すように、実施の形態2におけるステップL4_S2の動作は、図8に示した動作の記述におけるステップL4_S2の動作に対して、レジスタRG_l2が新たに加わり、このレジスタRG_l2にレジスタRG_lの値を代入している点が異なる(25行目)。さらに、図17に示すように、実施の形態2のステップL4_S3の動作は、図8に示した動作の記述におけるステップL4_S3の動作に対して、レジスタRG_l3が新たに加わり、レジスタRG_l2の値を代入している点が異なる(35行目)。図17に示すように、実施の形態2のステップL4_S4の動作は、図8に示した動作の記述におけるステップL4_S4の動作に対して、書き込まれる配列y_ary、u_ary、v_aryの添え字がRG_lからRG_l3に変更されている点が異なる。なお、ループ処理L1,L2,L3に対してスケジューリング・バインディング処理を適用した結果は、本発明の実施の形態1に対応する実施例と同様(図5〜図7)である。   In the second embodiment, since the loop pipeline is applied to the loop process L4, the control steps determined in the scheduling and binding process in step S2 are different from those in the first embodiment. Therefore, FIG. 17 shows an example of description indicating the operation of the control step determined in step S2 of the second embodiment. As shown in FIG. 17, in the operation of step L4_S2 in the second embodiment, register RG_l2 is newly added to the operation of step L4_S2 in the description of the operation shown in FIG. 8, and the value of register RG_l is added to this register RG_l2. Is different (line 25). Further, as shown in FIG. 17, in the operation of step L4_S3 of the second embodiment, register RG_l3 is newly added to the operation of step L4_S3 in the description of the operation shown in FIG. 8, and the value of register RG_l2 is substituted. Is different (line 35). As shown in FIG. 17, the operation of step L4_S4 in the second embodiment is different from the operation of step L4_S4 in the description of the operation shown in FIG. 8 in that the subscripts of the array y_ary, u_ary, v_ary to be written are The point that has been changed to. Note that the result of applying the scheduling and binding process to the loop processes L1, L2, and L3 is the same as the example corresponding to the first embodiment of the present invention (FIGS. 5 to 7).

次いで、制御回路作成処理部23aは、スケジューリングにて決定されたステップをステージに割り当てる(ステップS51)。ループ処理L4の処理はイニシエーションインターバル1にてループパイプライン技法を適用するため、各ステージに含まれるステップの数は1つである。そのため、制御回路作成処理部23a、まず、ループ処理L4の各ステップを1つのステージとしてグループ化する。ステージST1ではステップL1_S11を、ステージST2ではステップL4_S2を、ステージST3ではステップL4_S3を、ステージST4でステップL4_S4を、ステージST5ではステップL4_S5を実行するようにグループ化する。   Next, the control circuit creation processing unit 23a assigns the step determined by scheduling to the stage (step S51). Since the processing of the loop processing L4 applies the loop pipeline technique at the initiation interval 1, the number of steps included in each stage is one. Therefore, the control circuit creation processing unit 23a first groups each step of the loop processing L4 as one stage. Grouping is performed so that step L1_S11 is performed in stage ST1, step L4_S2 is performed in stage ST2, step L4_S3 is performed in stage ST3, step L4_S4 is performed in stage ST4, and step L4_S5 is performed in stage ST5.

次いで、制御回路作成処理部23aは、ステージ毎に、そのステージに属するステップの実行を制御する第1の制御論理を作成する(ステップS52)。当該第1の制御論理は、例えば、有限状態機械(FSM)で構成される。当該第1の制御論理は、ステージ毎に作成され、該ステージに属するステップを順に実行するように構成される。そこで、第1の制御論理の状態遷移図を図18〜図22に示す。図18では、ステージST1についての第1の制御論理が有限状態機械として表現されている。ステージST1の有限状態機械には、1つの状態A51と2つの遷移B51、B52を有する。遷移B51が実行されるときステップL4_S1が実行され、遷移B52が実行されるときは何もしない。遷移B51、B52の実行条件は、まだ指定されていない。同様に、図19〜図22には、ステップL4_S2〜L4_S5に対応する各ステージの第1の制御論理が有限状態機械の状態遷移図として表されている。各有限状態機械は、実行するステップが異なるのみで、その他はステージST1の有限状態機械と同様である。   Next, the control circuit creation processing unit 23a creates, for each stage, first control logic that controls execution of the steps belonging to that stage (step S52). The first control logic is constituted by, for example, a finite state machine (FSM). The first control logic is created for each stage, and is configured to sequentially execute the steps belonging to the stage. Thus, state transition diagrams of the first control logic are shown in FIGS. In FIG. 18, the first control logic for the stage ST1 is expressed as a finite state machine. The finite state machine of stage ST1 has one state A51 and two transitions B51 and B52. Step L4_S1 is executed when the transition B51 is executed, and nothing is executed when the transition B52 is executed. The execution conditions for the transitions B51 and B52 have not been specified yet. Similarly, in FIGS. 19 to 22, the first control logic of each stage corresponding to steps L4_S2 to L4_S5 is represented as a state transition diagram of a finite state machine. Each finite state machine is the same as the finite state machine of stage ST1 except that the steps to be executed are different.

次いで、制御回路作成処理部23aは、ステージ毎に、そのステージの実行を制御する第3の制御論理を作成する(ステップS53)。当該第3の制御論理は、ステージの実行条件を検査し、ステージの最初のステップの実行を開始するか、開始せずに待つかを制御するように構成される。そこで、第3の制御論理の状態遷移図を図23に示す。図23に示す状態遷移図には、各ステージ間の状態遷移条件が示されている。   Next, the control circuit creation processing unit 23a creates, for each stage, third control logic that controls execution of that stage (step S53). The third control logic is configured to check the execution condition of the stage and control whether to start execution of the first step of the stage or to wait without starting. Therefore, FIG. 23 shows a state transition diagram of the third control logic. The state transition diagram shown in FIG. 23 shows the state transition conditions between the stages.

具体的には、ステージST1には直前のステージが存在しないので、ステージST1は無条件に実行を開始する。ステージST2は、直前のステージであるステージST1の終了が通知されたときに遷移A61を実行し(すなわち、ステップL4_S2を実行する)、ステージST1の終了が通知されなければ遷移B62を実行する(すなわち、何もしない)ように制御される。ステージST3は、直前のステージであるステージST2が終了かつレジスタRG_lが16よりも小さいことが通知されたときに遷移B71を実行し(すなわち、ステップL4_S3を実行する)、ステージST2が終了かつレジスタRG_lが16よりも小さいことが通知されなければ遷移B72を実行する(すなわち、何もしない)ように制御される。ステージST4は、直前のステージであるステージST3の終了が通知されたときに遷移B82を実行し(すなわち、ステップL4_S4を実行する)、ステージST3の終了が通知されなければ遷移B82を実行する(すなわち、何もしない)ように制御される。ステージST5は、ループ処理L4の実行を完了した後のステージであるため、直前のループ処理L4の処理の完了が通知されたのち、遷移B92を実行し続けるように制御される。なお、ループ処理L4の処理の完了の通知とは、すなわち、ステージST2が終了し、かつ、レジスタRG_lの値が16以上であることである。   Specifically, since there is no previous stage in stage ST1, stage ST1 starts execution unconditionally. The stage ST2 executes the transition A61 when the end of the immediately preceding stage ST1 is notified (that is, executes step L4_S2), and if the end of the stage ST1 is not notified, executes the transition B62 (ie, , Do nothing). The stage ST3 executes the transition B71 when it is notified that the immediately preceding stage ST2 is finished and the register RG_l is smaller than 16 (that is, the step L4_S3 is executed), the stage ST2 is finished and the register RG_l If it is not notified that is smaller than 16, it is controlled to execute the transition B72 (that is, do nothing). The stage ST4 executes the transition B82 when notified of the end of the immediately preceding stage ST3 (that is, executes step L4_S4), and executes the transition B82 when not notified of the end of the stage ST3 (that is, , Do nothing). Since the stage ST5 is a stage after the execution of the loop process L4 is completed, after the completion of the process of the immediately preceding loop process L4 is notified, the stage ST5 is controlled to continue executing the transition B92. Note that the notification of the completion of the process of the loop process L4 means that the stage ST2 is completed and the value of the register RG_l is 16 or more.

次いで、制御回路作成処理部23aは、ループ処理の実行を制御する第2の制御論理を作成する(ステップS54)。ステップS54では、第2の制御論理が生成する開始信号S0に応じて状態遷移を行うように図22で示した第1の制御論理を修正する。より具体的には、ステップS54では、ループ処理L4に対応する第1の制御論理のうちステージST2に含まれるステップL2_S2の遷移条件を修正する。修正後のステップL4_S2に対応する第1の制御論理では、遷移B61a、B62aを有する。そして、開始信号S0がイネーブル状態のとときに遷移B61aが実行されることでステップL4_S1が実行され、開始信号S0がディスイネーブル状態のとときに遷移B62aが実行されることで何もしない状態となる。このように修正された第1の制御論理を含むループ処理L4に対応した第3の制御論理の状態遷移図を図24に示す。   Next, the control circuit creation processing unit 23a creates a second control logic that controls execution of the loop processing (step S54). In step S54, the first control logic shown in FIG. 22 is modified so that state transition is performed in accordance with the start signal S0 generated by the second control logic. More specifically, in step S54, the transition condition of step L2_S2 included in stage ST2 in the first control logic corresponding to loop process L4 is corrected. The first control logic corresponding to step L4_S2 after correction has transitions B61a and B62a. Then, when the start signal S0 is in the enabled state, the transition B61a is executed to execute step L4_S1, and when the start signal S0 is in the disabled state, the transition B62a is executed to do nothing. Become. FIG. 24 shows a state transition diagram of the third control logic corresponding to the loop process L4 including the first control logic modified in this way.

上記説明より、実施の形態2にかかる動作合成システム2では、制御回路作成処理において、パイプライン処理に対応して、パイプライン処理のステージ毎の実行状態を制御する第3の制御論理を作成する。また、制御回路作成処理では、第3の制御論理と共に、実施の形態1と同様に第1、第2の制御論理を作成する。なお、実施の形態2における第1の制御論理は、ステージ内のコントロールステップの実行状態を制御するものである。   From the above description, in the behavioral synthesis system 2 according to the second embodiment, in the control circuit creation process, the third control logic for controlling the execution state for each stage of the pipeline process is created corresponding to the pipeline process. . In the control circuit creation process, the first and second control logics are created together with the third control logic as in the first embodiment. Note that the first control logic in the second embodiment controls the execution state of the control steps in the stage.

動作合成システム2により生成されるRTL記述は、第3の制御論理を含む制御回路を有する。つまり、動作合成システム2では、個々のループ処理をパイプライン実行させた上で、複数のループを並行して実行するような回路を合成することができる。   The RTL description generated by the behavioral synthesis system 2 has a control circuit including third control logic. That is, in the behavioral synthesis system 2, it is possible to synthesize a circuit that executes a plurality of loops in parallel after performing individual loop processing in a pipeline.

なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、制御回路では、第1の制御論理、第2の制御論理、第3の制御論理は、それぞれが独立した回路として構成されている必要なく、当該制御論理に基づく動作が実現できる形態で回路が形成されていれば良い。   Note that the present invention is not limited to the above-described embodiment, and can be changed as appropriate without departing from the spirit of the present invention. For example, in the control circuit, the first control logic, the second control logic, and the third control logic do not need to be configured as independent circuits, and the circuit can perform operations based on the control logic. As long as the is formed.

1、2 動作合成システム
10 記憶装置
11 動作記述記憶部
12 ループ間依存関係情報記憶部
13 RTL記述記憶部
20、20a 処理装置
21 ループ間依存関係解析部
22 スケジューリング・バインディング処理部
23、23a 制御回路作成処理部
24 RTL記述生成処理部
31、41、51、61 マルチプレクサ
32、42、52、62 レジスタ
33、43、53、63 加算器
34、44、54、64 有限状態機械
35、45、55 メモリ
36、46、56 レジスタ
37、47、57 サブモジュール
38、48、58 レジスタ
39、49、59 メモリ
71 制御回路
DESCRIPTION OF SYMBOLS 1, 2 Behavior synthesis system 10 Memory | storage device 11 Behavior description memory | storage part 12 Inter-loop dependence information storage part 13 RTL description memory | storage part 20, 20a Processor 21 Inter-loop dependence analysis part 22 Scheduling and binding process part 23, 23a Control circuit Creation processing unit 24 RTL description generation processing unit 31, 41, 51, 61 Multiplexer 32, 42, 52, 62 Register 33, 43, 53, 63 Adder 34, 44, 54, 64 Finite state machine 35, 45, 55 Memory 36, 46, 56 Registers 37, 47, 57 Submodules 38, 48, 58 Registers 39, 49, 59 Memory 71 Control circuit

Claims (9)

ループ処理を含む動作記述からRTL(Register Transfer Level)記述を合成する動作合成システムであって、
前記ループ処理の間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成するループ間依存関係解析処理部と、
前記ループ処理中の演算を実行するコントロールステップを決定するスケジューリング処理と、前記ループ処理中の演算を行う演算器とデータを格納するレジスタとを決定するバインディング処理と、を行うスケジューリング・バインディング処理部と、
前記ループ処理内の前記コントロールステップの実行状態を制御する第1の制御論理と、前記ループ処理の前記実行条件に基づき当該ループ処理の実行状態を制御する第2の制御論理と、を含む制御回路を前記スケジューリング・バインディング処理部の処理結果と前記ループ間依存関係情報とに応じて生成する制御回路作成処理部と、
前記演算器と前記レジスタとを用いてデータパスを作成し、前記データパスと前記制御回路とを含むRTL記述を生成するRTL記述生成処理部と、
を有する動作合成システム。
A behavioral synthesis system that synthesizes an RTL (Register Transfer Level) description from a behavioral description including loop processing ,
By analyzing the dependencies between the loop processing, the loop between the dependency analysis processing unit that generates dependency information between loop extracts the execution conditions of the dependent loop having a dependency relationship with another loop,
A scheduling and binding processing unit for performing a scheduling process for determining a control step for executing an operation in the loop process; and a binding process for determining an arithmetic unit for performing the operation in the loop process and a register for storing data; ,
A control circuit including a first control logic that controls an execution state of the control step in the loop process, and a second control logic that controls the execution state of the loop process based on the execution condition of the loop process Generating a control circuit according to the processing result of the scheduling and binding processing unit and the inter-loop dependency relationship information;
An RTL description generation processing unit that generates a data path using the arithmetic unit and the register, and generates an RTL description including the data path and the control circuit;
A behavioral synthesis system.
前記ループ間依存関係情報は、前記依存ループ処理に含まれるコントロールステップが実行可能な状態となる実行条件を含む請求項1に記載の動作合成システム。   The behavioral synthesis system according to claim 1, wherein the inter-loop dependency relationship information includes an execution condition in which a control step included in the dependency loop process is executable. 前記制御回路は、予め決められた複数の状態を、決められた条件に従って、決められた順番で遷移するステートマシーンである請求項1又は2に記載の動作合成システム。   The behavioral synthesis system according to claim 1, wherein the control circuit is a state machine that transitions a plurality of predetermined states in a predetermined order according to a predetermined condition. 前記第1の制御論理は、前記ループ処理のコントロールステップ毎に実行するか否かを制御する請求項1乃至3のいずれか1項に記載の動作合成システム。   4. The behavioral synthesis system according to claim 1, wherein the first control logic controls whether or not the first control logic is executed for each control step of the loop processing. 5. 複数のステージを含み、ステージ毎にパイプライン処理が行われ、
前記制御回路作成処理部は、前記ループ処理に含まれるコントロールステップをパイプライン処理のステージ毎にグループ化し、前記ステージ毎の実行状態を制御する第3の制御論理を含む前記制御回路を生成する請求項1乃至のいずれか1項に記載の動作合成システム。
Including multiple stages, pipeline processing is performed for each stage,
The control circuit creation processing unit groups control steps included in the loop processing for each stage of pipeline processing, and generates the control circuit including a third control logic for controlling an execution state for each stage. Item 5. The behavioral synthesis system according to any one of Items 1 to 4 .
記憶装置と演算回路とを有する動作合成システムにおいて前記演算回路における処理によりループ処理を含む動作記述からRTL(Register Transfer Level)記述を合成する動作合成方法であって、
前記ループ処理の間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成し、
前記ループ処理の演算を実行するコントロールステップを決定し、
前記ループ処理の演算を行う演算器とデータを格納するレジスタとを決定するスケジューリング・バインディング処理を行い
前記ループ処理内の前記コントロールステップの実行状態を制御する第1の制御論理と、前記ループ処理の前記実行条件に基づき当該ループ処理の実行状態を制御する第2の制御論理と、を含む制御回路を前記スケジューリング・バインディング処理の処理結果と前記ループ間依存関係情報とに応じて生成し、
前記演算器と前記レジスタとを用いてデータパスを作成し、
前記データパスと前記制御回路とを含むRTL記述を合成する動作合成方法。
A behavioral synthesis method for synthesizing an RTL (Register Transfer Level) description from a behavioral description including loop processing by processing in the arithmetic circuit in a behavioral synthesis system having a storage device and an arithmetic circuit ,
By analyzing the dependencies between the loop processing, generates dependency information between loop extracts the execution conditions of the dependent loop having a dependency relationship with another loop,
Determine a control step for executing the calculation of the loop processing,
Performs scheduling and binding processing to determine a computing unit that performs the computation of the loop processing and a register that stores data,
A control circuit including a first control logic that controls an execution state of the control step in the loop process, and a second control logic that controls the execution state of the loop process based on the execution condition of the loop process Is generated according to the processing result of the scheduling binding process and the inter-loop dependency relationship information,
Create a data path using the arithmetic unit and the register,
A behavioral synthesis method for synthesizing an RTL description including the data path and the control circuit.
演算回路において実行され、記憶装置に格納された動作記述からRTL(Register Transfer Level)記述を合成し、当該RTL記述を前記記憶装置に格納する動作合成プログラムであって、
前記動作記述に含まれるループ処理間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成するループ間依存関係解析処理と、
前記ループ処理の演算を実行するコントロールステップを決定し、前記ループ処理の演算を行う演算器とデータを格納するレジスタとを決定するスケジューリング・バインディング処理と、
前記ループ処理内の前記コントロールステップの実行状態を制御する第1の制御論理と、前記ループ処理の前記実行条件に基づき当該ループ処理の実行状態を制御する第2の制御論理と、を含む制御回路を前記スケジューリング・バインディング処理部の処理結果と前記ループ間依存関係情報とに応じて生成する制御回路作成処理と、
前記演算器と前記レジスタとを用いてデータパスを作成し、前記データパスと前記制御回路とを含むRTL記述を生成するRTL記述生成処理と、
を行う動作合成プログラム。
A behavioral synthesis program for synthesizing an RTL (Register Transfer Level) description from a behavioral description executed in an arithmetic circuit and stored in a storage device, and storing the RTL description in the storage device,
By analyzing the dependencies between loop process included in the operation description, the loop between dependence analyzing to generate dependency information between loop extracts the execution conditions of the dependent loop having a dependency relationship with another loop processing Processing,
Determining a control step for executing the operation of the loop processing; scheduling binding processing for determining an arithmetic unit for performing the operation of the loop processing and a register for storing data;
A control circuit including a first control logic that controls an execution state of the control step in the loop process, and a second control logic that controls the execution state of the loop process based on the execution condition of the loop process A control circuit creating process for generating the process according to the processing result of the scheduling and binding processing unit and the inter-loop dependency relationship information;
RTL description generation processing for generating a data path using the arithmetic unit and the register, and generating an RTL description including the data path and the control circuit;
A behavioral synthesis program.
他のループ処理との依存関係を有さない第1のループ処理を実行する第1のループ処理回路と、
他のループ処理との依存関係を有する第2のループ処理を実行する第2のループ処理回路と、
前記第1、第2のループ処理回路のコントロールステップの実行状態を制御する第1の制御論理と、他のループ処理の処理結果に応じて前記第2のループ処理の実行状態を制御する第2の制御論理と、を含む制御回路と、
を有する半導体装置。
A first loop processing circuit that executes the first loop processing that does not have a dependency relationship with other loop processing;
A second loop processing circuit for executing a second loop processing having a dependency relationship with other loop processing;
A first control logic for controlling the execution state of the control step of the first and second loop processing circuits , and a second for controlling the execution state of the second loop processing according to the processing results of other loop processing A control circuit comprising:
A semiconductor device.
前記第1、第2のループ処理回路は、パイプライン処理により前記第1、第2のループ処理を実行し、
前記制御回路は、前記第2のループ処理の実行状態を前記パイプライン処理のステージ毎に制御する第3の制御論理を含む請求項8に記載の半導体装置。
The first and second loop processing circuits execute the first and second loop processing by pipeline processing,
The semiconductor device according to claim 8, wherein the control circuit includes a third control logic that controls an execution state of the second loop processing for each stage of the pipeline processing.
JP2010268967A 2010-12-02 2010-12-02 Behavioral synthesis system, behavioral synthesis method, behavioral synthesis program, and semiconductor device Expired - Fee Related JP5644432B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010268967A JP5644432B2 (en) 2010-12-02 2010-12-02 Behavioral synthesis system, behavioral synthesis method, behavioral synthesis program, and semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010268967A JP5644432B2 (en) 2010-12-02 2010-12-02 Behavioral synthesis system, behavioral synthesis method, behavioral synthesis program, and semiconductor device

Publications (2)

Publication Number Publication Date
JP2012118835A JP2012118835A (en) 2012-06-21
JP5644432B2 true JP5644432B2 (en) 2014-12-24

Family

ID=46501557

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010268967A Expired - Fee Related JP5644432B2 (en) 2010-12-02 2010-12-02 Behavioral synthesis system, behavioral synthesis method, behavioral synthesis program, and semiconductor device

Country Status (1)

Country Link
JP (1) JP5644432B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5842255B2 (en) * 2013-12-12 2016-01-13 国立大学法人東京工業大学 Apparatus and method for generating logic circuit from logic circuit description in programming language
JP6072383B1 (en) * 2016-03-10 2017-02-01 三菱電機株式会社 High level synthesis apparatus, high level synthesis method, and high level synthesis program

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7107199B2 (en) * 2002-10-31 2006-09-12 Hewlett-Packard Development Company, L.P. Method and system for the design of pipelines of processors
US7257802B2 (en) * 2003-12-29 2007-08-14 Mentor Graphics Corporation Method and system for hardware accelerated verification of digital circuit design and its testbench
US7412684B2 (en) * 2004-05-28 2008-08-12 Peter Pius Gutberlet Loop manipulation in a behavioral synthesis tool
JP4580827B2 (en) * 2005-06-17 2010-11-17 株式会社東芝 Behavioral synthesis apparatus and automatic behavioral synthesis method
JP5110525B2 (en) * 2008-03-28 2012-12-26 日本電気株式会社 Behavioral synthesis system, behavioral synthesis method, and behavioral synthesis program

Also Published As

Publication number Publication date
JP2012118835A (en) 2012-06-21

Similar Documents

Publication Publication Date Title
JP6977239B2 (en) Matrix multiplier
Yazdanbakhsh et al. Flexigan: An end-to-end solution for fpga acceleration of generative adversarial networks
US8443170B2 (en) Apparatus and method for performing SIMD multiply-accumulate operations
EP2951681B1 (en) Solution to divergent branches in a simd core using hardware pointers
US10324730B2 (en) Memory shuffle engine for efficient work execution in a parallel computing system
JP4042604B2 (en) Program parallelization apparatus, program parallelization method, and program parallelization program
EP3370150A1 (en) Program generation method and system for accelerator
US9355061B2 (en) Data processing apparatus and method for performing scan operations
JP2020533691A (en) Efficient direct convolution using SIMD instructions
US20110106871A1 (en) Apparatus and method for performing multiply-accumulate operations
JP2009116854A (en) System, method and computer program product for performing scan operation
EP2951682B1 (en) Hardware and software solutions to divergent branches in a parallel pipeline
JP6666554B2 (en) Information processing apparatus, conversion program, and conversion method
JP2007034887A (en) Method and apparatus for automatically creating shift register file for high-level synthesis compiler
JP6933263B2 (en) Data processing device, loop control device, data processing method, loop control method and program
JP6492943B2 (en) Computer, compiling method, compiling program, and pipeline processing program
JP2012252374A (en) Information processor
JP5644432B2 (en) Behavioral synthesis system, behavioral synthesis method, behavioral synthesis program, and semiconductor device
US10754652B2 (en) Processor and control method of processor for address generating and address displacement
US9383981B2 (en) Method and apparatus of instruction scheduling using software pipelining
CN112074810B (en) Parallel processing apparatus
CN116468078A (en) Intelligent engine processing method and device for artificial intelligent chip
JP2009238085A (en) Behavioral synthesis system, behavioral synthesis method, and program for behavioral synthesis
Stratton et al. Optimizing halide for digital signal processors
JP2019067117A (en) Code creating device, code creating method and code creating program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140603

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140711

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: 20141007

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141020

R150 Certificate of patent or registration of utility model

Ref document number: 5644432

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees