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 PDFInfo
- 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
Links
- 230000003542 behavioural effect Effects 0.000 title claims description 137
- 230000015572 biosynthetic process Effects 0.000 title claims description 99
- 238000003786 synthesis reaction Methods 0.000 title claims description 90
- 239000004065 semiconductor Substances 0.000 title claims description 21
- 238000001308 synthesis method Methods 0.000 title claims description 10
- 238000000034 method Methods 0.000 claims description 266
- 238000012545 processing Methods 0.000 claims description 229
- 230000007704 transition Effects 0.000 claims description 81
- 238000004458 analytical method Methods 0.000 claims description 20
- 230000002194 synthesizing effect Effects 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 5
- 230000001419 dependent effect Effects 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 32
- 230000015654 memory Effects 0.000 description 20
- 230000006399 behavior Effects 0.000 description 19
- 238000003491 array Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 230000000977 initiatory effect Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
ループパイプライン技法の実現方法としては、種々のループ構造に対応可能であることが望ましく、特に、多重にネストしたループに適用可能であることが望ましい。特許文献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.
しかしながら、現状の動作合成技術は、ループパイプライン技法のように、単一のループを高速に実行できる回路の合成に主眼がおかれ、逐次的に記述された複数のループを並列に実行して高速に処理を実行するような回路の合成を自動的に行うことができない。 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
さらに、非特許文献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
また、特許文献10に、ループを分割することにより、複数のループを並列に実行できる回路を合成する動作合成技術が示されている。特許文献10の技術では、動作合成可能な記述で書かれたソースから、自動的に配列に関する記述のあるループ文を検出し、そのうち代入に関する記述のあるループ回数と、参照に関する記述のあるループ回数からグループ単位に回路構造を分割する。
また、特許文献11並びに特許文献12に、予めスレッド間同期通信が記述された動作記述から、スレッドが並列に実行されるような回路を合成する動作合成技術が示されている。
また、特許文献13に、ループを併合(マージ)することにより、複数のループを並列に実行できる回路を合成する動作合成技術が示されている。特許文献13の技術では、第1のループと第2のループと間に依存関係がある場合、2つのループをお互いに、部分的、又は完全に併合(マージ)し、1つのループとして合成する。
しかしながら、非特許文献3及び特許文献10〜13記載の技術では、依存関係を有するループ処理がある場合に合成できる回路に何らかの制限が課されてしまい、設計の効率が低下する問題がある。以下にそれぞれの技術についての問題点の具体的内容を示す。
However, in the techniques described in
非特許文献3では、合成される回路がVLIWプロセッサ型と呼ばれるアーキテクチャに固定されており、自由度が低い。また、非特許文献3は、複数のPAの実行の制御、すなわち、複数のループの実行の制御のために、タイミングコントローラという特別な制御回路が必要になるためである。つまり、非特許文献3に記載の技術では、扱うことができるループ処理の種類に制限があり、かつ、制御の複雑化(及び回路面積の増大)という問題がある。
In
特許文献10では、二つのループの実行回数に特別な関係が成り立つときのみ適用可能である。例えば、ループの実行回数が予め分からないような記述に対しては適用することができない。つまり、特許文献10に記載の技術では、合成できる回路に限りがあるという問題がある。
特許文献11及び12では、動作記述に予めスレッド間同期通信に関する記述されていなければならない。すなわち、特許文献11及び12では、スレッド間同期通信が記述されていない動作記述からはループが並列動作する回路を合成することができない。つまり、特許文献11及び12の技術の問題点は、合成できる回路が限られているということである。
In
特許文献13で、ループの構造が複雑であり、ループを併合できない場合には適用できない。つまり、特許文献13の技術の問題点は、合成できる回路が限られているということである。
In
本発明にかかる動作合成システムの一態様は、動作記述から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に実施の形態1にかかる動作合成システム1のブロック図を示す。図1に示すように、動作合成システム1は、記憶装置10と、処理装置20と、を有する。
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
記憶装置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
そして、動作合成システム1では、記憶装置10は、動作記述記憶部11とループ間依存関係情報記憶部12とRTL記述記憶部13を有する。動作記述記憶部11は、動作合成システムの入力となる動作記述を予め記憶している。ループ間依存関係情報記憶部12は、動作記述に記載されたループの間の依存関係を示すループ間依存関係情報を記憶する。RTL記述記憶部13は、動作合成システムが最終的に出力するRTL(Register Transfer Level)記述を記憶する。
In the
処理装置20は、プログラム制御により動作する。ここでは、処理装置20の例として、CPU(Central Processing Unit)やマイクロプロセッサ(microprocessor)等の処理装置、又は同様の機能を有する半導体集積回路(Integrated Circuit:IC)等を想定している。なお、処理装置20は、PC(パーソナルコンピュータ)、シンクライアント端末/サーバ、ワークステーション、メインフレーム、スーパーコンピュータ等のコンピュータでも良い。但し、実際には、これらの例に限定されない。処理装置20は、ループ間依存関係解析処理部21と、スケジューリング・バインディング処理部22と、制御回路作成処理部23と、RTL記述生成処理部24とを有する。
The
ループ間依存関係解析処理部21は、記憶装置10の動作記述記憶部11から動作記述を読み出し、該動作記述に含まれるループ処理間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出する。そして、ループ間依存関係解析処理部21は、抽出した依存関係を示すループ間依存関係情報を生成する。このループ間依存関係情報は、記憶装置10のループ間依存関係情報記憶部12にループ間依存関係情報として記憶される。
The inter-loop dependency relationship
スケジューリング・バインディング処理部22は、ループ処理中の演算を実行するコントロールステップを決定するスケジューリング処理を行う。また、スケジューリング・バインディング処理部22は、ループ処理中の演算を行う演算器とデータを格納するレジスタとを決定するバインディング処理を行う。
The scheduling and
制御回路作成処理部23は、スケジューリング・バインディング処理部22の処理結果とループ間依存関係情報とに応じて、第1の制御論理と第2の制御論理とを含む制御回路を生成する。第1の制御論理は、ループ処理内のコントロールステップの実行状態を制御するものである。第2の制御論理は、ループ処理の実行条件に基づき当該ループ処理の実行状態を制御するものである。
The control circuit
RTL記述生成処理部24は、スケジューリング・バインディング処理部22にて決定された演算器とレジスタからデータパスを作成し、該データパスと制御回路作成処理部23にて作成された制御回路とを備えたRTL記述を作成し、記憶装置のRTL記述記憶部13に格納する。
The RTL description
続いて、実施の形態1にかかる動作合成システム1の動作について説明する。図2に動作合成システム1の処理手順を示すフローチャートを示す。図2に示すように、動作合成システム1では、まず、ループ間依存関係解析処理部21によるループ間依存関係解析処理(ステップS1)が行われる。ループ間依存関係解析処理では、まず、動作記述記憶部11から動作記述を読み出す。そして、動作記述に含まれるループ処理間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成する。
Subsequently, an operation of the
このループ間依存関係情報に含まれる実行条件には、前記依存ループ処理に含まれるコントロールステップが実行可能な状態となる条件が含まれる。例えば、ループ間依存関係情報には、ループの間に依存関係がない場合には「依存関係なし」という情報が記録される。また、ループ間に依存関係がある場合であって、先行するループの実行を完了する前に後続のループの実行を開始できる場合には、「後続のループが実行できるタイミング」の情報が記録される。後続のループが実行できるタイミングは、ループ中で読み書きされる変数の大小関係で表現される。また、例えば、ループの制御変数(ループ変数)の大小関係をもって表現される。また、ループ中でアクセスされる配列変数の添え字に使用されている変数の大小関係をもって表現される。ループ間依存関係情報は、ループ間依存関係情報記憶部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
ループ間依存関係解析処理部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
次いで、スケジューリング・バインディング処理部22によるスケジューリング・バインディング処理(ステップS2)が行われる。スケジューリング・バインディング処理では、記憶装置10の動作記述記憶部11から動作記述を読み出す。そして、スケジューリング・バインディング処理では、動作記述に含まれる各ループ処理について演算を実行するコントロールステップを決定し(この処理をスケジューリング処理と称す)、各ループ処理の演算を行う演算器とデータを格納するレジスタとを決定する(この処理をバインディング処理と称す)。より具体的には、スケジューリング・バインディング処理のスケジューリング処理では、動作記述からCDFG(Control Data Flow Graph)を作成する。このCDFGには、ループ処理のコントロールステップが記述されている。
Next, scheduling and binding processing (step S2) by the scheduling and
スケジューリング・バインディング処理部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
次いで、ステップ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
続いて、上記において説明した動作合成システム1の処理手順についてより具体的に説明する。まず、動作合成システム1で扱う動作記述の一例を図3に示す。図3に示す動作記述は、「SystemC言語」を用いて表記されているが、本発明の説明に関連ない部分は一部省略されている。
Next, the processing procedure of the
当該動作記述は、入力端子からカラー画像の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
当該動作記述の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
まず、ループ間依存関係解析処理部21によるループ間依存関係解析処理(ステップS1)の具体例について説明する。ループ間依存関係解析処理では、動作記述記憶部11から、動作記述を読み出す。次に、ループ間依存関係解析処理部21は、動作記述に基づき、ループ間の依存関係を解析し、どのループをどのタイミングで実行できるかを決定する。この解析結果を図4に示す。
First, a specific example of the inter-loop dependency analysis processing (step S1) by the inter-loop dependency
図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
図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 (
次いで、制御回路作成処理部23による制御回路作成処理(ステップS3)の具体例について説明する。制御回路作成処理では、上述したようにステップS31とステップS32の2つの処理ステップにより構成される。そこで、以下では、制御回路作成処理についてステップS31とステップS32とに分けて説明する。
Next, a specific example of the control circuit creation processing (step S3) by the control circuit
まず、ステップ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
図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
図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
図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
上記処理を経て生成された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
入力端子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
図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
有限状態機械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
有限状態機械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
有限状態機械64は、加算器63から値を受け取り、マルチプレクサ61、加算器63、レジスタ62、36、46、56、38、48、58、メモリ35、45、55、39、49、59を制御し、ループ処理L4の動作を制御する。また、有限状態機械64は、制御回路71により制御される。
The
まず、有限状態機械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
そして、レジスタ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
ステップ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
ステップ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
さらに、有限状態機械64は、状態A44で、該更新値が16よりも小さいときには再度A42に状態を遷移させてステップL4_S2を実行するように制御する。一方、該更新値が16以上のときには、有限状態機械64は、状態A44から状態A45に状態を遷移させ、ステップL4_S5を実行するように制御する。
Further, the
上記説明より、実施の形態1にかかる動作合成システム1は、ループ間依存関係解析処理により、動作記述中のループ処理間の依存関係を解析する。そして、動作合成システム1は、当該解析結果に基づきループ処理中のコントロールステップ毎の実行状態を制御する第1の制御論理と、ループ処理の実行状態を制御する第2の制御論理とを生成する。その後、動作合成システム1は、第1の制御論理と第2の制御論理とを含む制御回路と、動作記述による処理を行う演算器及びレジスタと、を含むRTL記述を生成する。これにより、動作合成システム1では、ループ処理を全て独立した回路として有し、かつ、ループ間の依存関係を考慮した動作が可能なRTL記述を生成することができる。つまり、動作合成システム1によれば、逐次的に記述された複数のループの間にデータ依存関係がある場合でもループ処理の並列化を行い、該ループ処理を同時に実行できるような回路を合成できる。
From the above description, the
また、動作合成システム1では、上記のようなRTL記述をループ処理間の依存関係の複雑さに関わらず生成することができる。これは、ループ処理間の依存関係を考慮した制御を行う制御回路をループ処理にかかる回路とは別に設けるためである。
The
また、動作合成システム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
なお、上記実施の形態では、動作合成システム1がハードウェアにより実現された例について説明したが、上記ハードウェアの処理に対応する処理をソフトウェアにより実現すこともできる。この動作合成プログラムは、演算回路において実行され、記憶装置に格納された動作記述からRTL記述を合成し、RTL記述を前記記憶装置に格納するものである。
In the above embodiment, the example in which the
実施の形態2
実施の形態2にかかる動作合成システム2は、他のループ処理と依存関係を有するループ処理を含む動作記述からパイプライン方式の処理を行うRTL記述を合成するものである。この動作合成システム2のブロック図を図15に示す。図15に示すように、動作合成システム2は、実施の形態1にかかる動作合成システム1の制御回路作成処理部23を制御回路作成処理部23aに置き換えた処理装置20aを有する。なお、実施の形態2にかかる動作合成システム2の説明において、実施の形態1にかかる動作合成システム1と同じ構成要素については、実施の形態1と同じ符号を付して説明を省略する。
The
制御回路作成処理部23aは、スケジューリング・バインディング処理部22にて決定されたコンロールステップと、ループ間依存関係情報記憶部12に記録されたループ間依存関係情報と、に基づき前記ループ処理に含まれるコントロールステップをパイプライン処理のステージ毎にグループ化し、ステージ内のステップの実行を制御する第1の制御論理と、ステージ毎の実行状態を制御する第3の制御論理と、ループの実行を制御する第3の制御論理とを有する制御回路を作成する。
The control circuit
次いで、実施の形態2にかかる動作合成システム2の動作について説明する。そこで、動作合成システム2の動作手順を示すフローチャートを図16に示す。図16に示すように、動作合成システム2において、制御回路作成処理以外の処理(図16のステップS1、S2、S4)は、図2に示したフローチャートと同じである。そこで、以下では、ステップS1、S2、S4の説明については省略し、動作合成システム2において特徴的な制御回路作成処理部23aの制御回路作成処理(ステップS5)について説明する。
Next, the operation of the
ステップ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
次いで、ステップS52では、制御回路作成処理部23aが、ステージ毎にそのステージに属するコントロールステップの実行を制御する第1の制御論理を作成する。当該第1の制御論理は、例えば、有限状態機械(FSM)で構成される。当該第1の制御論理は、ステージ毎に作成され、該ステージに属するコントロールステップを順に実行するように構成される。
Next, in step S52, the control circuit
次いで、ステップS53では、制御回路作成処理部23aが、ステージの実行を制御する第3の制御論理を作成する。該第3の制御論理は、ステージの開始条件を検査し、ステージに属する最初のコントロールステップの実行を開始するか、開始せずに待つかを制御するように構成される。ステージの開始の第1の条件は、直前のステージ又はループの実行状況(終了状況)によって決定される。また、ステージの開始の第2の条件は、直後のステージ又はループ処理の実行状況によって決定される。第1、第2の条件の両方の開始条件が満たされるときにステージの実行を開始するように第3の制御論理を構成する。
Next, in step S53, the control circuit
次いで、ステップS54では、制御回路作成処理部23aが、ループ処理の実行を制御する第2の制御論理を作成する。第2の制御論理は、実施の形態1と同様に、他のループ処理の実行状況に応じて制御対象のループ処理に対応する第1、第2の制御論理に処理の開始を通知する開始信号S0を出力する制御回路として生成される。また、第2の制御論理は、ステップS52及びS53で作成された第1、第2の制御回路の実行条件を変更することにより構成することもできる。該第2の制御論理では、ループ処理の開始条件を検査し、ループ処理の実行を開始するか、開始せずに待つかを制御するように構成される。
Next, in step S54, the control circuit
ループ処理の開始条件は、該ループに対して依存関係を有する先行ループの実行状況によって決定される。すなわち、ループ間依存関係情報記憶部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
続いて、上記において説明した動作合成システム2の動作手順の具体例について説明する。この説明では、実施の形態2にかかる動作合成システムに対しても、実施の形態1と同じ動作記述(図3)が与えられ、ループ処理L4に対してイニシエーションインターバル1にてループパイプラインが適用されるものとする。
Next, a specific example of the operation procedure of the
実施の形態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
次いで、制御回路作成処理部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
次いで、制御回路作成処理部23aは、ステージ毎に、そのステージの実行を制御する第3の制御論理を作成する(ステップS53)。当該第3の制御論理は、ステージの実行条件を検査し、ステージの最初のステップの実行を開始するか、開始せずに待つかを制御するように構成される。そこで、第3の制御論理の状態遷移図を図23に示す。図23に示す状態遷移図には、各ステージ間の状態遷移条件が示されている。
Next, the control circuit
具体的には、ステージ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
上記説明より、実施の形態2にかかる動作合成システム2では、制御回路作成処理において、パイプライン処理に対応して、パイプライン処理のステージ毎の実行状態を制御する第3の制御論理を作成する。また、制御回路作成処理では、第3の制御論理と共に、実施の形態1と同様に第1、第2の制御論理を作成する。なお、実施の形態2における第1の制御論理は、ステージ内のコントロールステップの実行状態を制御するものである。
From the above description, in the
動作合成システム2により生成されるRTL記述は、第3の制御論理を含む制御回路を有する。つまり、動作合成システム2では、個々のループ処理をパイプライン実行させた上で、複数のループを並行して実行するような回路を合成することができる。
The RTL description generated by the
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、制御回路では、第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
Claims (9)
前記ループ処理の間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成するループ間依存関係解析処理部と、
前記ループ処理中の演算を実行するコントロールステップを決定するスケジューリング処理と、前記ループ処理中の演算を行う演算器とデータを格納するレジスタとを決定するバインディング処理と、を行うスケジューリング・バインディング処理部と、
前記ループ処理内の前記コントロールステップの実行状態を制御する第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.
前記制御回路作成処理部は、前記ループ処理に含まれるコントロールステップをパイプライン処理のステージ毎にグループ化し、前記ステージ毎の実行状態を制御する第3の制御論理を含む前記制御回路を生成する請求項1乃至4のいずれか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 .
前記ループ処理の間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成し、
前記ループ処理の演算を実行するコントロールステップを決定し、
前記ループ処理の演算を行う演算器とデータを格納するレジスタとを決定するスケジューリング・バインディング処理を行い、
前記ループ処理内の前記コントロールステップの実行状態を制御する第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.
前記動作記述に含まれるループ処理の間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成するループ間依存関係解析処理と、
前記ループ処理の演算を実行するコントロールステップを決定し、前記ループ処理の演算を行う演算器とデータを格納するレジスタとを決定するスケジューリング・バインディング処理と、
前記ループ処理内の前記コントロールステップの実行状態を制御する第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.
他のループ処理との依存関係を有する第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.
前記制御回路は、前記第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.
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)
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)
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 |
-
2010
- 2010-12-02 JP JP2010268967A patent/JP5644432B2/en not_active Expired - Fee Related
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 |