JP6242170B2 - Circuit design support apparatus and program - Google Patents
Circuit design support apparatus and program Download PDFInfo
- Publication number
- JP6242170B2 JP6242170B2 JP2013234536A JP2013234536A JP6242170B2 JP 6242170 B2 JP6242170 B2 JP 6242170B2 JP 2013234536 A JP2013234536 A JP 2013234536A JP 2013234536 A JP2013234536 A JP 2013234536A JP 6242170 B2 JP6242170 B2 JP 6242170B2
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- code block
- parallelization
- code
- evaluation
- 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.)
- Active
Links
Images
Description
本発明は、回路設計を支援する回路設計支援装置に関する。
より具体的には、動作記述コード(以下、単に「動作記述」ともいう)からレジスタ転送レベルを自動生成する高位合成(動作合成)を利用した半導体設計を支援する回路設計支援装置に関する。
The present invention relates to a circuit design support apparatus that supports circuit design.
More specifically, the present invention relates to a circuit design support apparatus that supports semiconductor design using high-level synthesis (behavioral synthesis) that automatically generates a register transfer level from an operation description code (hereinafter also simply referred to as “behavior description”).
従来の半導体集積回路設計では、回路に含まれるレジスタ(フリップフロップ)とレジスタ間の組み合わせ回路の動作を記述するレジスタ転送レベル(RTL)をハードウェア記述言語で設計していた。
近年では集積回路の回路規模が増大しており、RTL設計時間を多大に要することが問題となっている。
そこで、RTLよりも抽象度が高い高級言語であるC言語、C++言語、SystemC言語などを用いて自動的にRTLを生成する高位合成技術が提唱されており、これを実現する高位合成ツールが市販されている。
In conventional semiconductor integrated circuit design, a register transfer level (RTL) that describes the operation of a register (flip-flop) included in a circuit and a combinational circuit between the registers is designed in a hardware description language.
In recent years, the circuit scale of integrated circuits has increased, and it has been a problem that it takes a lot of RTL design time.
Therefore, a high-level synthesis technology that automatically generates RTL using a high-level language such as C language, C ++ language, or System C language that has a higher abstraction level than RTL has been proposed, and a high-level synthesis tool that realizes this is commercially available. Has been.
しかし、高位合成ツールで生成されるRTLは可読性が悪いため、このような高級言語を用いた設計では、生成されるRTLの性能に問題が発生した場合に、設計者にRTLを解析させることなく、発生した問題についての適切な情報を設計者に通知する必要がある。
そのため、特許文献1では、遅延不具合が発生した場合に、遅延不具合に対応する高級言語のソースコード箇所、また遅延不具合に関連する高級言語のソースコード箇所をユーザに通知することが示されている。
また、特許文献2では、高級言語から回路の消費電力を解析する方法が開示されている。
特許文献2では、回路の内部処理が並列処理可能で、かつ、並列化する回路の動作周波数を下げることが可能であり、削減される消費電力が指定閾値以上である場合に、回路を並列化することで、消費電力を低減することが開示されている。
補足すると、一般に消費電力を削減する技術の一つとして、動作周波数を下げて、回路を並列化する手法がある。
上記の特許技術文献2では、その手法を利用している。
一般に消費電力は、回路規模と動作周波数に比例するが、例えば動作周波数を半分にした場合に、要求される処理能力を動作周波数を半分にする前と同じにするには、回路を並列化し、処理能力をあげる必要がある。
このとき、並列化回路の規模がもとの回路の2倍以上になっても、電源電圧を下げることが可能となれば、電源電圧は式(1)のように消費電力には二乗で効くため、消費電力を下げることが可能となる。
または、並列化しても回路規模が2倍以上とならない場合は、周波数が1/2になって、回路規模は2倍にならないため、消費電力は下がることになる。
P=α・f・C・v2 ・・・式(1)
なお、式(1)において、Pは消費電力であり、αは動作率であり、fは動作周波数であり、Cは回路規模であり、vは電源電圧である。
However, since the RTL generated by the high-level synthesis tool has poor readability, in the design using such a high-level language, if a problem occurs in the performance of the generated RTL, the designer is not allowed to analyze the RTL. , The designer needs to be notified of the appropriate information about the problem that occurred.
Therefore,
In
Supplementally, as one of the techniques for reducing power consumption, there is a technique of reducing the operating frequency to parallelize the circuits.
In the above-mentioned
Generally, the power consumption is proportional to the circuit scale and the operating frequency. For example, when the operating frequency is halved, in order to make the required processing capacity the same as before halving the operating frequency, the circuit is parallelized, It is necessary to increase the processing capacity.
At this time, if the power supply voltage can be lowered even if the scale of the parallel circuit is more than twice that of the original circuit, the power supply voltage works on the power consumption by the square as shown in Equation (1). Therefore, power consumption can be reduced.
Alternatively, if the circuit scale does not double or more even when parallelized, the frequency is halved and the circuit scale does not double, resulting in a reduction in power consumption.
P = α · f · C · v 2 Formula (1)
In Equation (1), P is power consumption, α is an operating rate, f is an operating frequency, C is a circuit scale, and v is a power supply voltage.
特許文献1に記載の方法は、遅延不具合の主因となるクリティカルパスの位置を設計者に通知するものの、クリティカルパスを直接改善するものではない。
高位合成上、クリティカルパスの改善は、ツール依存性の問題もあり、クリティカルパス箇所の改善方法が一般化されておらず、設計者が改善することは難しいといった問題がある。
設計者が容易にクリティカルパスの改善を行えるようにすることが設計の効率化の面で望ましい。
しかしながら、前述したように、特許文献1の方法は、クリティカルパスの位置を設計者に通知するものの、クリティカルパスを改善し、遅延不具合を解消するものではない。
Although the method described in
In high-level synthesis, there is a problem that the improvement of the critical path has a problem of tool dependency, and the improvement method of the critical path part is not generalized, and it is difficult for the designer to improve.
It is desirable in terms of design efficiency that the designer can easily improve the critical path.
However, as described above, the method of
また、特許文献2による回路並列化及び動作周波数の低減による消費電力削減方法では、効果的に消費電力を削減できないといった課題がある。
具体的には、LSI(Large Scale Integration)の中で、回路並列化ができる箇所は、非常に多くある。
図16に回路並列化前の回路を示す。
図中で並列化が可能な箇所は、a−b間、b−c間、c−d間、d−e間の4つある。
さらにこれら2つを組み合わせると、4C2=6通り、さらに4C3=4通り、全て実施して1通りとなり、この4つの小さい論理だけで15通り(4+6+4+1=15)の候補がある。
一般化するとΣn=1:N NCnとなる。
並列化対象となる回路はLSIの回路の中で点在しており、その組み合わせは膨大となり、実時間で処理ができないといった問題がある。
また、ここで、最も広範囲に並列化ができるa−e間を並列化したとしても、それが消費電力の改善に必ずしも効果的であるとは限らない。
このように、従来技術では、並列化が可能な箇所を抽出するのに長時間を要し、また、長時間をかけても必ずしも消費電力の改善に効果的な箇所を抽出できるとも限らない。
Further, the power consumption reduction method by circuit parallelization and reduction of the operating frequency according to
Specifically, in LSI (Large Scale Integration), there are many places where circuit parallelization is possible.
FIG. 16 shows a circuit before circuit parallelization.
In the figure, there are four places where parallelization is possible, between ab, bc, cd, and de.
Furthermore, when these two are combined, 4C2 = 6 ways, further 4C3 = 4 ways, all are implemented as one way, and there are 15 (4 + 6 + 4 + 1 = 15) candidates with only these four small logics.
When generalized, Σn = 1: N N C n .
Circuits to be parallelized are scattered in the LSI circuit, and the combination becomes enormous, and there is a problem that processing cannot be performed in real time.
Here, even if a-e that can be parallelized in the widest range is parallelized, this is not necessarily effective in improving power consumption.
As described above, in the conventional technique, it takes a long time to extract a portion that can be parallelized, and even if it takes a long time, it is not always possible to extract a portion that is effective in improving power consumption.
この発明は、上記の事情に鑑みたものであり、遅延不具合を解消するための並列化及び消費電力を改善するための並列化のいずれに対しても、並列化の対象箇所を効率的に決定することを主な目的とする。 The present invention has been made in view of the above circumstances, and the parallelization target portion is efficiently determined for both the parallelization for eliminating the delay defect and the parallelization for improving the power consumption. The main purpose is to do.
本発明に係る回路設計支援装置は、
設計対象回路の動作記述コードに含まれる複数のコードブロックの中から、前記複数のコードブロックの高位合成により生成される複数のデータパスのうちのクリティカルパスに対応するコードブロックをクリティカルコードブロックとして抽出するコードブロック抽出部と、
前記複数のコードブロックから、前記クリティカルコードブロックよりも後のコードブロックであって回路並列化の対象外のコードブロックである並列化対象外コードブロック及び前記並列化対象外コードブロックに後続するコードブロックを除外して、クリティカルコードブロックを含む、回路並列化の候補になるコードブロックを並列化候補コードブロックとして特定し、前記並列化候補コードブロックにおいて、評価対象となるコードブロックの範囲である評価対象範囲を前記クリティカルコードブロックを中心にして広狭を変化させて複数設定し、評価対象範囲ごとに、評価対象範囲のコードブロックに対応するデータパスの特性を評価し、複数の評価対象範囲の中から、回路並列化の対象にする評価対象範囲を選択する評価部とを有することを特徴とする。
A circuit design support apparatus according to the present invention includes:
A code block corresponding to a critical path among a plurality of data paths generated by high-level synthesis of the plurality of code blocks is extracted as a critical code block from a plurality of code blocks included in the operation description code of the circuit to be designed. A code block extractor to perform,
From the plurality of code blocks, a code block after the critical code block and a code block that is not subject to circuit parallelization, and a code block that follows the non-parallelization target code block And a code block that is a candidate for circuit parallelization including a critical code block is identified as a parallelization candidate code block, and an evaluation target that is a range of code blocks to be evaluated in the parallelization candidate code block A plurality of ranges are set by changing the range around the critical code block, and the characteristics of the data path corresponding to the code block in the evaluation target range are evaluated for each evaluation target range. And an evaluation unit that selects an evaluation target range to be subjected to circuit parallelization. Characterized in that it.
本発明によれば、動作記述コードの全てのコードブロックを並列化の評価の対象とするのではなく、並列化候補コードブロックに限定して評価するため、並列化の対象箇所を効率的に決定することができる。
また、クリティカルコードブロックを中心にして評価対象範囲を設定するため、並列化の対象箇所を効率的に決定することができる。
また、各評価対象範囲に含まれるコードブロックに対応するデータパスでの遅延時間を評価することにより、遅延不具合に対処するための並列化の対象箇所を効率的に決定することができる。
また、各評価対象範囲に含まれるコードブロックに対応するデータパスで構成される回路が並列化された場合の設計対象回路の回路規模を評価することにより、消費電力の改善に対処するための並列化の対象箇所を効率的に決定することができる。
According to the present invention, not all code blocks of the behavioral description code are subjected to parallelization evaluation, but are limited to the parallelization candidate code blocks. can do.
In addition, since the evaluation target range is set centering on the critical code block, it is possible to efficiently determine the target part of parallelization.
In addition, by evaluating the delay time in the data path corresponding to the code block included in each evaluation target range, it is possible to efficiently determine the target part of parallelization for dealing with the delay defect.
In addition, by evaluating the circuit scale of the design target circuit when the circuit configured by the data path corresponding to the code block included in each evaluation target range is parallelized, parallel processing for coping with improvement of power consumption It is possible to efficiently determine the location to be converted.
実施の形態1.
本実施の形態では、半導体設計支援装置を説明する。
より具体的には、本実施の形態に係る半導体設計支援装置は、動作合成の対象となるコード記述から得たタイミング情報を含むスケジューリング結果、またはRTLをタイミング解析した結果から、最も遅延が大きい箇所を抽出する。
そして、本実施の形態に係る半導体設計支援装置は、最も遅延が大きい箇所を中心として、回路の並列化が可能であり、かつ、効果的に回路の並列化による動作周波数の削減で、消費電力が改善される箇所を特定する。
また、本実施の形態に係る半導体設計支援装置は、最も遅延が大きい箇所を中心として、回路の並列化が可能であり、かつ、回路規模を抑えつつ、タイミングが改善される箇所を特定することもできる。
更に、本実施の形態に係る半導体設計支援装置は、設計者が再設計することなく、動作周波数を削減し、かつ並列化された回路と、その回路の入出力回路を自動で生成することも可能である。
In this embodiment, a semiconductor design support apparatus will be described.
More specifically, the semiconductor design support apparatus according to the present embodiment has a portion with the largest delay from the scheduling result including timing information obtained from the code description to be subjected to behavioral synthesis or the result of timing analysis of the RTL. To extract.
Then, the semiconductor design support apparatus according to the present embodiment is capable of circuit paralleling around the point with the longest delay, and can effectively reduce power consumption by reducing the operating frequency by paralleling the circuit. Identify where the improvement is.
In addition, the semiconductor design support apparatus according to the present embodiment can specify a location where the circuit can be paralleled and the timing is improved while suppressing the circuit scale, with the location having the largest delay as the center. You can also.
Furthermore, the semiconductor design support apparatus according to the present embodiment can reduce the operating frequency and automatically generate the parallelized circuit and the input / output circuit of the circuit without redesigning by the designer. Is possible.
図1は、本実施の形態に係る半導体設計支援装置10の構成例を示す。
半導体設計支援装置10は、回路設計支援装置の例に相当する。
図1に示すように、半導体設計支援装置10は、入出力部100と、データ処理部200と、記憶部300を備える。
FIG. 1 shows a configuration example of a semiconductor
The semiconductor
As shown in FIG. 1, the semiconductor
入出力部100において、高位言語表示部101は、高位合成への入力となる動作記述コードを表示する。
動作記述コードでは、設計対象回路の動作が高位言語で記述されている。
また、動作記述コードには、複数のコードブロック(一塊の記述)が含まれる。
各コードブロックは、設計対象回路に含まれるデータパスに対応する。
In the input /
In the operation description code, the operation of the circuit to be designed is described in a high-level language.
The operation description code includes a plurality of code blocks (a group of descriptions).
Each code block corresponds to a data path included in the circuit to be designed.
並列化可能領域表示部102は、動作記述コードにおいて回路並列化が可能な領域である並列化可能領域を表示する。
並列化可能領域は、動作記述コードの複数のコードブロックから、並列化対象外コードブロック及び並列化対象外コードブロックに後続するコードブロックを除外した範囲である。
並列化対象外コードブロックは、回路並列化の対象外のデータパスに対応するコードブロックである。
並列化可能領域は、並列化の候補になるデータパスに対応するコードブロックの範囲である。
以下では、並列化可能領域は、並列化候補コードブロックともいう。
The parallelizable
The parallelizable area is a range in which a code block that is not subject to parallelization and a code block that follows the code block that is not subject to parallelization are excluded from a plurality of code blocks of the behavioral description code.
The non-parallelization target code block is a code block corresponding to a data path that is not subject to circuit parallelization.
The parallelizable area is a range of code blocks corresponding to data paths that are candidates for parallelization.
Hereinafter, the parallelizable area is also referred to as a parallelization candidate code block.
並列化指示部103は、設計者が動作記述コード上で並列化対象領域を指定するための要素である。
遅延情報表示部104は、動作記述コード上の遅延情報(スラックともいう)、クリティカルパス、遅延情報のヒストグラムを表示する。
モード指定部105は、速度改善モード(第1の評価モード)又は消費電力改善モード(第2の評価モード)を指定する。
性能表示部106は、生成された回路の遅延情報及び回路規模を表示する。
性能表示部106は、評価結果表示部の例に相当する。
The
The delay
The
The
The
記憶部300において、スケジューリング結果・RTL記憶部301は、動作記述コードの高位合成により得られるスケジューリング結果・RTLを記憶する。
In the
遅延情報記憶部302は、動作記述コードのスケジューリング結果またはRTLを静的解析した結果から得られた遅延情報が記述される遅延情報テーブルを記憶する。
遅延情報テーブルでは、データパスごとに、遅延情報とコードブロックとが対応付けられている。
The delay
In the delay information table, delay information and code blocks are associated with each data path.
ヒストグラム記憶部303は、遅延情報のヒストグラムを記憶する。
The
クリティカルパス情報記憶部304は、設計対象回路に含まれるデータパスのうちクリティカルパスに相当するデータパスに対応するコードブロック(クリティカルコードブロック)の情報をクリティカルパス情報として記憶する。
The critical path
並列化可能領域記憶部305は、並列化可能領域を記憶する。
The parallelizable
並列化回路コード記憶部306は、並列化した回路及び並列化に必要な入出力回路の高位言語による動作記述コード又はRTLを記憶する。
The parallel circuit
データ処理部200において、高位合成部201は、高位言語での動作記述コード及び高位合成に必要なオプションを入力し、高位合成後の中間結果であるスケジューリング結果、及び合成の結果であるRTLを生成する。
In the
タイミング解析部202は、以下の3つの機能を有する。
(a)動作記述コード上の変数や処理に対応する遅延情報を取得し、コードブロックと遅延情報を対応づける。
(b)上記(a)で得られた遅延情報を元にヒストグラムを作成する。
(c)得られた遅延情報からクリティカルパスを抽出する。
The
(A) Obtain delay information corresponding to variables and processing on the operation description code, and associate the code block with the delay information.
(B) A histogram is created based on the delay information obtained in (a) above.
(C) A critical path is extracted from the obtained delay information.
タイミング解析部202の入力は、動作記述コードと当該動作記述コードに対応するスケジューリング結果、またはRTLである。
タイミング解析部202の出力は、クリティカルパスと当該クリティカルパスに対応するコードブロック(クリティカルコードブロック)、遅延情報のヒストグラムである。
The input of the
The output of the
まず、上記(a)について説明する。
タイミング解析部202は、以下の(1)または(2)を元に、設計対象回路内で、全ての遅延情報(スラック)とそれに対応する動作記述コード上の変数を取得する。
タイミング解析方法は、以下の2つから選択できる。
2つのうちいずれかで実施するかは、設計者が選択できる。
(1)高位合成後のスケジューリング結果から解析する
(2)静的タイミング解析により解析する(RTLのマッピング)
First, (a) will be described.
Based on the following (1) or (2), the
The timing analysis method can be selected from the following two.
The designer can select whether to implement either of the two.
(1) Analyze from scheduling results after high-level synthesis (2) Analyze by static timing analysis (RTL mapping)
上記(1)の利点は、論理合成などの後工程に依らず、短期間に実施ができる点である。
一方で、消費電力の改善、または速度改善の効果が低い可能性がある。
上記(2)の利点は、マッピング後の解析となるため、情報が正確であり、消費電力の改善、または速度改善の効果が高い可能性がある。
しかし、マッピング試行などを行うため、短期間の効果は(1)より低い。
The advantage of the above (1) is that it can be carried out in a short period of time without depending on subsequent processes such as logic synthesis.
On the other hand, the effect of improving power consumption or speed may be low.
The advantage of (2) above is the analysis after mapping, so the information is accurate, and there is a possibility that the effect of improving power consumption or speed is high.
However, since a mapping trial is performed, the short-term effect is lower than (1).
ここで、スラックとは、目標となる速度にどれだけ余裕があるかを示す値である。
例えば目標が10ns(100MHz)である場合に、あるレジスタ間の遅延が10.1nsである場合は、−0.1nsがスラックとなる。
これはタイミング違反となる。
逆に、レジスタ間の遅延が9.9nsであった場合は、+0.1nsのスラックであり、タイミングは0.1nsの余裕があることになる。
Here, the slack is a value indicating how much room is available for the target speed.
For example, when the target is 10 ns (100 MHz) and the delay between certain registers is 10.1 ns, −0.1 ns is slack.
This is a timing violation.
Conversely, if the delay between registers is 9.9 ns, the slack is +0.1 ns, and the timing has a margin of 0.1 ns.
なお、上記における(2)のタイミング情報と高位言語の対応は、特許文献1に記載されている。
The correspondence between the timing information (2) and the high-level language in the above is described in
上記(1)または(2)の手段により、タイミング解析部202は、遅延情報と対応するコードブロックとをひもづける。
具体的には、スケジューリング結果、あるいはRTLの各データパスと、各データパスでのスラック(遅延情報)と、各データパスに対応するコードブロックとが記述された遅延情報テーブルを生成し、生成した遅延情報テーブルを遅延情報記憶部302に書き込む。
例えば、図4の回路に対する遅延情報テーブルは、図5のようになる。
図4及び図5の詳細は後述する。
By means of (1) or (2) above, the
Specifically, a delay information table in which scheduling results or RTL data paths, slack (delay information) in each data path, and code blocks corresponding to each data path are described is generated and generated. The delay information table is written into the delay
For example, the delay information table for the circuit of FIG. 4 is as shown in FIG.
Details of FIGS. 4 and 5 will be described later.
次に、上記の(b)について説明する。
タイミング解析部202は、動作記述コードに対応する全ての遅延情報をヒストグラム化する。
ヒストグラムは、横軸をスラック、縦軸をそのスラックを持つデータパス数とする。
タイミング解析部202は、生成したヒストグラムをヒストグラム記憶部303に書き込む。
例えば、図5の遅延情報テーブルから生成されたヒストグラムは、図6のようになる。
図6の詳細は後述する。
Next, the above (b) will be described.
The
In the histogram, the horizontal axis represents slack, and the vertical axis represents the number of data paths having the slack.
The
For example, the histogram generated from the delay information table of FIG. 5 is as shown in FIG.
Details of FIG. 6 will be described later.
次に、上記(c)を説明する。
タイミング解析部202は、上記(a)により得られた遅延情報テーブルを参照して、最も遅延が大きいデータパス(クリティカルパス)と、そのデータパスの遅延情報、そのデータパスに対応するコードブロック(クリティカルコードブロック)を抽出する。
そして、タイミング解析部202は、抽出したデータパス、遅延情報、コードブロックの情報を、クリティカルパス情報として、クリティカルパス情報記憶部304に書き込む。
このように、タイミング解析部202は、動作記述コードに含まれる複数のコードブロックの中から、クリティカルコードブロックを抽出しており、コードブロック抽出部の例に相当する。
Next, the above (c) will be described.
The
Then, the
Thus, the
なお、上記(a)、(b)、(c)で得られた情報は、遅延情報表示部104にて、設計者に表示し、解析の補助にしてもよい。
Note that the information obtained in the above (a), (b), and (c) may be displayed to the designer on the delay
回路並列化可否解析部203は、動作記述コードにおいて、クリティカルコードブロックを含む、回路並列化の候補になるコードブロックを並列化候補コードブロックとして特定する。
動作記述コードには、回路並列化ができるコードブロックとできないコードブロックがある。
回路並列化可否解析部203は、動作記述コードの複数のコードブロックから、クリティカルコードブロックよりも後のコードブロックであって並列化の対象外のコードブロックである並列化対象外コードブロック及び並列化対象外コードブロックに後続するコードブロックを除外して、並列化候補コードブロックを抽出する。
並列化の対象外のコードブロックは、前クロックでの処理結果が現在のクロックでの処理結果に影響を与えるコードブロックである。
回路並列化可否解析部203は、このように、並列化候補コードブロックを抽出しており、後述の回路並列化判定部204とともに、評価部の例に相当する。
The circuit parallelization
The behavioral description code includes a code block that can be circuit-parallelized and a code block that cannot.
The circuit parallelization enable / disable
Code blocks that are not subject to parallelization are code blocks in which the processing result at the previous clock affects the processing result at the current clock.
In this way, the circuit parallelization
具体的には、ある変数が参照後、代入されている場合(例えば、counter=counter+1は、counter変数が参照後、その変数に代入されている)、時間制約がある部分(SystemC言語の場合はwait()の有無)、さらに合成オプションによる制約部分は並列化ができない。
合成オプションにより回路並列化ができない例としては、ループ展開しない場合や、メモリポート数制約でポート数が足りない場合などである。
Specifically, when a certain variable is assigned after reference (for example, counter = counter + 1 is assigned to the variable after referencing the counter variable), there is a time-constrained part (in the case of SystemC language) The presence or absence of wait ()), and the restriction part due to the synthesis option cannot be parallelized.
Examples of circuit parallelization that cannot be performed by the synthesis option include a case where loop expansion is not performed or a case where the number of ports is insufficient due to the restriction on the number of memory ports.
回路並列化可否解析部203は、動作記述コードを入力として、上記のように並列化ができない箇所を排除し、並列化できるコードブロックを抽出し、抽出したコードブロックを並列化可能領域記憶部305に書き込む。
The circuit parallelization
上記のように、回路並列化可否解析部203が静的に並列化可能領域(並列化候補コードブロック)を決めることにより、設計者が並列化が可能かどうかを判断することなく、回路並列化が容易に可能となる。
As described above, the circuit parallelization
また、ROM(Read Only Memory)などのメモリは、並列化により容量が2倍になる可能性があり、回路規模の増加量が多い可能性がある。
特にFPGA(Field Programmable Gate Array)はメモリ配置が決まっている場合があり、メモリが増加することで、速度劣化が生じる懸念がある。
このように制約がある場合があるので、並列化可能領域表示部102が、動作記述コード上の回路並列化が可能な領域を設計者にハイライトで示すようにしてもよい。
設計者は、開発の制約により回路の複製を希望しない箇所を、並列化指示部103を介して回路並列化可否解析部203に通知することで、該当箇所を回路並列化の対象外とすることができる。
In addition, a memory such as a ROM (Read Only Memory) may be doubled in capacity due to parallelization, and there is a possibility that an increase in circuit scale is large.
In particular, a field programmable gate array (FPGA) may have a predetermined memory arrangement, and there is a concern that speed increases due to an increase in memory.
Since there may be such restrictions, the parallelizable
The designer notifies the circuit parallelization enable / disable
また、回路並列化可否解析部203は、設計者が記述した全ての動作記述コードを並列化可否の解析の対象とせず、設計者に対象となるコードを指定させてもよい。
さらに、回路並列化可否解析部203は、ある変数を入力とし、その変数を中心とした範囲で並列化の可否を判定してもよい。
Further, the circuit parallelization
Further, the circuit parallelization
なお、上記では、回路並列化可否解析部203は、動作記述コードから解析を行っているが、高位合成の中間結果であるスケジューリング結果、あるいは、合成結果であるRTLから回路並列化の判断をしてもよい。
In the above description, the circuit parallelization
回路並列化判定部204は、回路並列化可否解析部203により抽出された並列化可能領域(並列化候補コードブロック)において、データパスの特性を評価し、速度改善ができる箇所や消費電力が削減できる箇所を抽出し、回路並列化を行う範囲を判定する。
モード指定部105で速度改善モードが指定されていれば、回路並列化判定部204は、速度改善ができる箇所を抽出し、消費電力改善モードが指定されていれば、回路並列化判定部204は、消費電力が削減できる箇所を抽出する。
並列化ができる範囲は、通常、ソースコード上で点在している。
点在した箇所の全てを、あるいは、その組み合わせの全てに対して回路並列化を施しても、速度の改善又は消費電力の改善が実現されるとは限らない。
また、点在した箇所の全て、あるいは、その組み合わせの全てに対して回路並列化の効果を評価するには長時間を要する。
そこで、回路並列化判定部204は、クリティカルパスを中心にして、効率的に速度改善ができる箇所や消費電力が削減できる箇所を抽出する。
回路並列化判定部204の動作の詳細は、後述する。
なお、回路並列化判定部204は、前述の回路並列化可否解析部203とともに、評価部の例に相当する。
The circuit
If the speed improvement mode is specified by the
The range that can be parallelized is usually scattered on the source code.
Even if circuit parallelization is applied to all of the scattered locations or all of the combinations, speed improvement or power consumption improvement is not always realized.
In addition, it takes a long time to evaluate the effect of circuit parallelization on all the scattered points or all of the combinations.
Therefore, the circuit
Details of the operation of the circuit
The circuit
並列回路生成部205は、回路並列化判定部204により選択された箇所(コードブロック)の並列化を実施する。
つまり、並列回路生成部205は、回路並列化判定部204により選択されたコードブロックに対応するデータパスで構成される回路を並列化する。
回路並列化前後で、外から見たときの機能を同一にするには、並列化に付随する入出力回路も必要となる。
そこで、並列回路生成部205は、対象回路の並列化とそれに付随する入出力回路を自動的に生成する機能も有する。
The parallel
That is, the parallel
In order to have the same function when viewed from outside before and after circuit parallelization, an input / output circuit accompanying the parallelization is also required.
Therefore, the parallel
並列回路生成部205が、並列化対象となる回路及び付随する入出力回路も自動生成することで、設計者に並列化対象となる回路及び入出力回路を再設計させる必要がなく、設計開発の短期化が可能となる。
また以下に示す通り、生成される回路は高位言語でも可能となる。
そのため、高速なシミュレーションも可能である。
The parallel
As shown below, the generated circuit can also be in a high-level language.
Therefore, high speed simulation is also possible.
並列回路生成部205による回路の生成方法について述べる。
並列回路生成部205は、並列化可能領域記憶部305から、回路並列化判定部204により選択された並列化の対象範囲の入力信号と出力信号を抽出し、スケジューリング結果・RTL記憶部301にある信号と対応させる。
A circuit generation method by the parallel
The parallel
ここで、入出力制御回路はあらかじめテンプレートとなる高位言語を用意しておき、並列回路生成部205は、並列化の対象となる回路の入力信号毎に入力制御回路を、出力信号毎に出力制御回路を生成する。
テンプレートの入力制御回路は、並列化対象回路のクロックと、そのクロックの2倍の周期をもつクロックと、並列化対象回路と同一のリセット信号と、1つのデータ入力信号と、2つのデータ出力信号と、その2つのデータ出力信号が有意であることを示す2つのイネーブル信号を持つ。
この入力制御回路は、データ入力信号を奇数クロックと偶数クロックで交互にイネーブル付きで出力する機能を有する。
データ出力信号とイネーブル信号は、上記2倍の周期で出力される。
同様に、テンプレートの出力制御回路は、並列化対象回路のクロックと、そのクロックの2倍の周期をもつクロックと、並列化対象回路と同一のリセット信号と、2つのデータ入力信号と、そのデータ入力信号が有意であることを示すイネーブル信号と、1つのデータ出力信号を持つ。
この出力制御回路は、入力信号のイネーブルが有意なものを出力する機能を持つ。
データ出力信号は元のクロック周期で出力される。
また、上記において、もし並列化対象回路の入出力信号にイネーブルがついていた場合は、出力制御回路においてもイネーブル付きでデータ出力信号を生成する。
Here, the input / output control circuit prepares a high-level language as a template in advance, and the parallel
The template input control circuit includes a clock of the parallelization target circuit, a clock having a cycle twice that of the clock, the same reset signal as the parallelization target circuit, one data input signal, and two data output signals. And two enable signals indicating that the two data output signals are significant.
The input control circuit has a function of outputting a data input signal with an enable signal alternately with an odd number clock and an even number clock.
The data output signal and the enable signal are output with the double cycle.
Similarly, the output control circuit of the template includes a clock of the parallelization target circuit, a clock having a cycle twice that of the clock, the same reset signal as the parallelization target circuit, two data input signals, and the data It has an enable signal indicating that the input signal is significant and one data output signal.
This output control circuit has a function of outputting a significant enable signal.
The data output signal is output with the original clock period.
In the above, if the input / output signal of the parallel target circuit is enabled, the output control circuit also generates a data output signal with enable.
簡単のため、並列化対象回路の入力信号がa、出力信号がeの場合の生成される回路イメージを図13に示す。
また、図13の回路の動作を示すタイミングチャートを図14に示す。
図13及び図14において、複製回路1及び複製回路2は、並列化された回路である。
a_evenは偶数クロックでの入力制御回路からのデータ出力信号であり、a_oddは奇数クロックでの入力制御回路からのデータ出力信号である。
ien_evenは偶数クロックでの入力制御回路からのイネーブル信号であり、ien_oddは奇数クロックでの入力制御回路からのイネーブル信号である。
e_evenは偶数クロックでの出力制御回路へのデータ入力信号であり、e_oddは奇数クロックでの出力制御回路へのデータ入力信号である。
oen_evenは偶数クロックでの出力制御回路へのイネーブル信号であり、oen_oddは奇数クロックでの出力制御回路へのイネーブル信号である。
eは出力制御回路からのデータ出力信号であり、o_enは出力制御回路からのイネーブル信号である。
clk1はデフォルトのクロック信号であり、clk2はclk1の2倍の周期のクロック信号である。
For simplicity, FIG. 13 shows a circuit image generated when the input signal of the parallel target circuit is a and the output signal is e.
FIG. 14 is a timing chart showing the operation of the circuit of FIG.
In FIG. 13 and FIG. 14, the
a_even is a data output signal from the input control circuit at an even clock, and a_odd is a data output signal from the input control circuit at an odd clock.
ien_even is an enable signal from the input control circuit at an even clock, and ien_odd is an enable signal from the input control circuit at an odd clock.
e_even is a data input signal to the output control circuit at an even clock, and e_odd is a data input signal to the output control circuit at an odd clock.
oen_even is an enable signal to the output control circuit at an even clock, and oen_odd is an enable signal to the output control circuit at an odd clock.
e is a data output signal from the output control circuit, and o_en is an enable signal from the output control circuit.
clk1 is a default clock signal, and clk2 is a clock signal having a cycle twice that of clk1.
また、並列回路生成部205は、並列化可能領域記憶部305から抽出した入力信号と出力信号から、上記のとおり入出力回路の高位言語を自動で生成し、高位合成を行う。
このときスケジューリング結果が得られるので、並列回路生成部205は、このスケジューリング結果と、前記抽出した並列化のスケジューリング結果とその複製を1つ生成し、上記全てを結合したスケジューリングを生成し、高位合成を行う。
これにより、自動的に並列化した回路とそれに付随する入出力制御回路が自動生成される。
自動生成された上記全ての回路は、並列化回路コード記憶部306に書き込まれる。
The parallel
Since a scheduling result is obtained at this time, the parallel
As a result, an automatically parallelized circuit and an accompanying input / output control circuit are automatically generated.
All the automatically generated circuits are written in the parallelized circuit
また、上記では生成されるのはRTLだけだが、高位言語で出力する方法もある。
一般にRTLより高位言語のほうがシミュレーションが高速なため、高位言語で出力することでシミュレーションの高速化が可能となる。
In the above, only RTL is generated, but there is a method of outputting in a high-level language.
In general, a higher-level language is faster in simulation than RTL, so that the simulation can be speeded up by outputting in a higher-level language.
高位言語で出力するためには、並列回路生成部205は、まず並列化の対象となった範囲を動作記述コードから抜き出す。
次に、並列回路生成部205は、抜き出したコードを関数化、あるいはモジュール化する。
その後、並列回路生成部205は、関数化、モジュール化された前記コードから入出力信号を抽出し、前記テンプレートとなる高位言語で記述された入出力制御回路を自動生成する。
その後、並列回路生成部205は、並列化対象となるコードと入出力制御コードを接続する。
In order to output in a high-level language, the parallel
Next, the parallel
After that, the parallel
Thereafter, the parallel
なお、本実施の形態では、周波数を1/2にし、回路を2並列化しているが、周波数を1/N(Nは3以上の整数)、回路をN並列に置き換えてもよい。 In this embodiment, the frequency is halved and two circuits are paralleled. However, the frequency may be 1 / N (N is an integer of 3 or more) and the circuit may be replaced with N parallel.
次に、本実施の形態に係る半導体設計支援装置10による速度改善例と消費電力改善例を説明する。
速度改善モードか消費電力改善モードかは、設計者がモード指定部105を介して指定する。
また、以降の説明で用いる動作記述コードのサンプルプログラムコードを図2に示す。
このサンプルプログラムコードは、説明に不要な箇所のコードは除いているので、不完全であることに注意する。
また、このサンプルプログラムコードは、C言語で記述されているが、他の言語で記述されていてもよい。
図5において、破線で区切った範囲が、一塊の記述であり、コードブロックに相当する。
Next, a speed improvement example and a power consumption improvement example by the semiconductor
The designer designates the speed improvement mode or the power consumption improvement mode via the
FIG. 2 shows a sample program code of the operation description code used in the following description.
Note that this sample program code is incomplete because it excludes code that is not needed for explanation.
The sample program code is described in C language, but may be described in other languages.
In FIG. 5, the range delimited by a broken line is a lump description and corresponds to a code block.
まず、速度改善を行うための動作例を示す。
図6に、速度改善モードでの半導体設計支援装置10の動作フローを示す。
First, an example of operation for speed improvement is shown.
FIG. 6 shows an operation flow of the semiconductor
ステップ101:高位合成
高位合成部201が、高位言語の動作記述コード(図5)を高位合成する。
そして、高位合成部201は、生成したスケジューリング結果とRTLをスケジューリング結果・RTL記憶部301に書き込む。
図4は、生成されたRTLの一部を示す。
Step 101: High-level synthesis The high-
Then, the high-
FIG. 4 shows a part of the generated RTL.
ステップ102:クリティカルパス解析
タイミング解析部202が、高位合成部201によって得られたスケジューリング結果、あるいは、生成されたRTLより静的タイミング解析された情報から、スラックを算出し、遅延情報テーブルを生成し、また、クリティカルパス及びクリティカルコードブロックの抽出を行う。
タイミング解析部202は、遅延情報テーブルを遅延情報記憶部302に書込み、クリティカルパス情報をクリティカルパス情報記憶部304に書き込む。
図4の回路に対して生成された遅延情報テーブルを図5に示す。
図4の例では、クリティカルパスに対応する記述が図2の「d=a*b+c;」(6行目)であると仮定する。
「d=a*b+c;」(6行目)は、5行目〜9行目で構成されるコードブロックに含まれており、タイミング解析部202は、5行目〜9行目で構成されるコードブロックをクリティカルコードブロックとして抽出する。
後述するように、回路並列化判定部204は、このクリティカルコードブロックを中心として、動作記述コード上で評価対象範囲を設定する。
評価対象範囲とは、速度改善の評価の対象にするコードブロックの範囲である。
Step 102: Critical path analysis The
The
FIG. 5 shows a delay information table generated for the circuit of FIG.
In the example of FIG. 4, it is assumed that the description corresponding to the critical path is “d = a * b + c;” (line 6) of FIG.
“D = a * b + c;” (line 6) is included in a code block composed of
As will be described later, the circuit
The evaluation target range is a range of code blocks to be evaluated for speed improvement.
ステップ103:回路並列化可否解析
回路並列化可否解析部203は、クリティカルパス情報記憶部304のクリティカルパス情報を入力し、クリティカルコードブロックを中心として回路並列化が可能な並列化可能領域(並列化候補コードブロック)を抽出する。
回路並列化可否解析部203は、まず、クリティカルコードブロックよりも後のコードブロックから、並列化対象外コードブロック及び前記並列化対象外コードブロックに後続するコードブロックを動作記述コードから除外する。
そして、回路並列化可否解析部203は、除外後の動作記述コードを、並列化可能領域とする。
図2のサンプルプログラムコードでは、「x=x+f;」及び「counter++」が先行するコードブロックと依存関係があるため、「x=x+f;」及び「if(x>0)counter++」が並列化対象外コードブロックとなり、除外される。
図2のサンプルプログラムコードでは、「x=x+f;」及び「if(x>0)counter++」に後続するコードブロックが存在していないが、後続するコードブロックが存在している場合には、後続するコードブロックも除外される。
回路並列化可否解析部203は、並列化可能領域を、並列化可能領域記憶部305に書き込む。
Step 103: Circuit parallelization possibility analysis The circuit parallelization
The circuit parallelization
Then, the circuit parallelization
In the sample program code of FIG. 2, since “x = x + f;” and “counter ++” have a dependency relationship with the preceding code block, “x = x + f;” and “if (x> 0) counter ++” are to be parallelized. It becomes an outer code block and is excluded.
In the sample program code of FIG. 2, there is no code block following “x = x + f;” and “if (x> 0) counter ++”, but if there is a code block following, Code blocks to be excluded are also excluded.
The circuit parallelization
ステップ104:タイミング解析
タイミング解析部202は、並列化可能領域記憶部305から並列化可能領域を入力し、並列化可能領域に対して、ステップ102と同様にして、スラックを算出し、遅延情報テーブルを生成する。
この段階で生成される遅延情報テーブルも図5に示すものと同様である。
並列化可能領域記憶部305は、生成した遅延情報テーブルを遅延情報記憶部302に書き込む。
Step 104: Timing Analysis The
The delay information table generated at this stage is the same as that shown in FIG.
The parallelizable
ステップ105:回路並列化判定
ステップ105−1:
まず、タイミング解析部202が、ステップ104で生成した遅延情報テーブルを元に、横軸がスラック、縦軸がデータパス個数のヒストグラムを作成し、ヒストグラム記憶部303に書き込む。
また、ここで基準となるスラックの値(閾値)を設計者が設定する。
通常、余裕を見て+0.2などの値が設定される。
この段階で生成されるヒストグラム例を図6に示す。
図6のヒストグラムは、図5の遅延情報テーブルから生成されたものである。
図6において、ヒストグラムの上部に記述されている値は、データパスの個数である。
ステップ105−2:
次に、図11に示すフローに従って、並列化可能範囲の中から並列化の対象とする箇所が選択される。
以下にて、図11の各ステップを説明する。
Step 105: Circuit parallelization determination Step 105-1:
First, the
In addition, the designer sets a reference slack value (threshold value).
Usually, a value such as +0.2 is set with a margin.
An example of a histogram generated at this stage is shown in FIG.
The histogram of FIG. 6 is generated from the delay information table of FIG.
In FIG. 6, the value described at the top of the histogram is the number of data paths.
Step 105-2:
Next, according to the flow shown in FIG. 11, a location to be parallelized is selected from the parallelizable range.
Below, each step of FIG. 11 is demonstrated.
ステップ1051:
回路並列化判定部204が、並列化可能範囲において、評価対象となるコードブロックの範囲である評価対象範囲を設定する。
回路並列化判定部204は、ステップ1051の繰り返しの度に、クリティカルコードブロックを中心にして評価対象範囲の広狭を変化させて、複数の評価対象範囲を設定する。
具体的には、回路並列化判定部204は、ステップ1051の繰り返しごとに、クリティカルコードブロックを中心にして徐々に範囲を狭めていって複数の評価対象範囲を設定する。
例えば、図2の例において、並列化可能範囲で、クリティカルコードブロックを中心とする最も広い評価対象範囲は、1行目〜15行目である。
このため、回路並列化判定部204は、最初に、1行目〜15行目を評価対象範囲として設定する。
次のステップ1051では、例えば、クリティカルコードブロックの前方で、クリティカルコードブロックから最も離れたコードブロックを除外した範囲を評価対象範囲として設定する。
前方でクリティカルコードブロックから最も離れている行は、1行目である。
図2の例では、1行目〜4行目で1つのコードブロックを形成するので、回路並列化判定部204は、1行目〜4行目のコードブロックを除外して、5行目〜15行目のコードブロックを評価対象範囲として設定する。
次のステップ1051では、例えば、クリティカルコードブロックの後方で、クリティカルコードブロックから最も離れたコードブロックを除外した範囲を評価対象範囲として設定する。
後方でクリティカルコードブロックから最も離れている行は、15行目である。
図2の例では、11行目〜15行目で1つのコードブロックを形成するので、回路並列化判定部204は、11行目〜15行目のコードブロックを除外して、1行目〜10行目のコードブロックを評価対象範囲として設定する。
このようにして、回路並列化判定部204は、クリティカルコードブロックを中心にして並列化可能範囲内の全ての組合せが含まれるように、複数の評価対象範囲を設定する。
Step 1051:
The circuit
The circuit
Specifically, the circuit
For example, in the example of FIG. 2, the widest evaluation target range centering on the critical code block in the parallelizable range is the 1st to 15th rows.
For this reason, the circuit
In the next step 1051, for example, a range excluding the code block farthest from the critical code block in front of the critical code block is set as the evaluation target range.
The line farthest from the critical code block ahead is the first line.
In the example of FIG. 2, since one code block is formed in the first to fourth lines, the circuit
In the next step 1051, for example, a range excluding the code block farthest from the critical code block behind the critical code block is set as the evaluation target range.
The line farthest away from the critical code block is the 15th line.
In the example of FIG. 2, since one code block is formed in the 11th to 15th lines, the circuit
In this way, the circuit
ステップ1052:
タイミング解析部202が、評価対象範囲でのスラックを計算する。
スラックの計算は、ステップ104のものと同じである。
Step 1052:
The
The slack calculation is the same as in
ステップ1053:
次に、タイミング解析部202が、基準値以下のスラックのデータパスの個数(ヒストグラム上の面積)を計数する。
基準値は、ステップ105−1で指定された基準値(+0.2)である。
Step 1053:
Next, the
The reference value is the reference value (+0.2) designated in Step 105-1.
なお、1行目〜15行目についてのスラックは既にステップ104で計算され、また、基準値以下のスラックのデータパスの個数もステップ105−1で計数されているので、1行目〜15行目の評価対象範囲については、ステップ1052及びステップ1053は省略される。
Note that the slack for the first to fifteenth rows has already been calculated in
ステップ1054:
次に、タイミング解析部202は、ステップ1053での計数結果をヒストグラム記憶部303に書き込む。
Step 1054:
Next, the
ステップ1055:
回路並列化判定部204は、並列化可能領域で設定可能な全ての評価対象範囲に対してステップ1052〜1054の処理を行ったかを判断し、未処理の評価対象範囲があれば、ステップ1051以降の処理を繰り返す。
一方、全ての評価対象範囲に対する処理が完了していれば、ステップ1056に進む。
Step 1055:
The circuit
On the other hand, if the processing for all the evaluation target ranges is completed, the process proceeds to step 1056.
ステップ1056:
回路並列化判定部204は、複数の評価対象範囲の中から、並列化を行う評価対象範囲を選択する。
具体的には、回路並列化判定部204は、ステップ1053で計数されたデータパスの個数が最も大きい評価対象範囲を選択する。
また、最も大きい個数を持つ評価対象範囲が複数ある場合は、回路並列化後の動作記述コードのコードサイズが最も小さいものを選択する。
最も小さいコードサイズのものを選択するのは、回路規模の増加を抑える目的である。
例えば、評価対象範囲が図2の1行目〜15行目である場合は、基準値+0.2以下となる個数は、図5及び図6に示すように、5個である。
また、評価対象範囲が図2の5行目〜15行目である場合は、回路構成は図7のようになり、基準値+0.2以下となる個数は、図8及び図9に示すように、5個である。
また、評価対象範囲が図2の1行目〜10行目である場合は、回路構成図、遅延情報テーブル及びヒストグラムの図示は省略するが、基準値+0.2以下となる個数は、5個である。
これら以外の評価対象範囲の場合は、基準値+0.2以下となる個数は、4個以下である。
そして、個数が最も大きく、かつ、コードサイズが最も小さいのは、図2の1行目〜10行目の評価対象範囲であり、回路並列化判定部204は、この評価対象範囲を選択する。
なお、図2の1行目〜10行目の評価対象範囲の回路構成は、図10のようになる。
Step 1056:
The circuit
Specifically, the circuit
In addition, when there are a plurality of evaluation target ranges having the largest number, the one with the smallest code size of the behavioral description code after circuit parallelization is selected.
The purpose of selecting the smallest code size is to suppress an increase in circuit scale.
For example, when the evaluation target range is the first to fifteenth rows in FIG. 2, the number of reference values +0.2 or less is five as shown in FIGS.
When the evaluation target range is the 5th to 15th rows in FIG. 2, the circuit configuration is as shown in FIG. 7, and the number of reference values +0.2 or less is as shown in FIG. 8 and FIG. And five.
When the evaluation target range is the first row to the tenth row in FIG. 2, the circuit configuration diagram, the delay information table, and the histogram are omitted, but the number of reference values +0.2 or less is five. It is.
In the case of an evaluation target range other than these, the number of reference values +0.2 or less is 4 or less.
The largest number and the smallest code size are the evaluation target ranges of the first to tenth lines in FIG. 2, and the circuit
The circuit configuration of the evaluation target range in the first to tenth rows in FIG. 2 is as shown in FIG.
ステップ106:並列回路生成(図3)
並列回路生成部205が、ステップ105において選択された評価対象範囲のコードブロックに対応する回路(図10)を並列化する。
Step 106: Parallel circuit generation (FIG. 3)
The parallel
なお、ここで、ステップ105で並列化された回路の規模が大きい場合は、ステップ105に戻り、次にスラックの面積が大きい評価対象範囲を選択し、許容できる回路規模内において、最適な改善効果があるものを選択してもよい。
Here, when the scale of the circuit parallelized in
次に消費電力の改善を行う例を説明する。
以下では、図2のサンプルプログラムコードを用いて説明を行う。
消費電力改善モードの際の半導体設計支援装置10の動作フローを図12に示す。
Next, an example of improving power consumption will be described.
Hereinafter, description will be made using the sample program code of FIG.
FIG. 12 shows an operation flow of the semiconductor
図12において、ステップ101〜104は図6と同一である。
In FIG. 12,
ステップ201:再合成
設計対象回路がデフォルトの動作周波数から低減された低減動作周波数(例えば、1/2の周波数)で動作するとの設定で、高位合成部201が高位合成を再度行い、RTLを得る。
再度合成するのは、周波数が低減されたことで、回路規模が削減される、つまりフリップフロップ(FF)が削減され、消費電力が下がる可能性があるためである。
なお、
Step 201: Resynthesis With the setting that the circuit to be designed operates at a reduced operating frequency (for example, a half frequency) reduced from the default operating frequency, the high
The reason for synthesizing again is that the circuit size is reduced by reducing the frequency, that is, flip-flops (FF) are reduced, and power consumption may be reduced.
In addition,
ステップ202:並列回路生成
並列回路生成部205が、図13に示すように、複製回路、入力制御回路及び出力制御回路を生成し、これらを上記再合成したRTLとつなげ、回路規模を得る。
Step 202: Parallel circuit generation As shown in FIG. 13, the parallel
ステップ203:回路並列化判定
次に、回路並列化判定部204が、並列化可能領域においてクリティカルコードブロックを中心に広狭を変化させて評価対象範囲を設定する。
これは速度改善モードと同様の処理である。
Step 203: Circuit Parallelization Determination Next, the circuit
This is the same processing as in the speed improvement mode.
ステップ201〜203を、全ての評価対象範囲について処理した後、回路並列化判定部204は、回路並列化後の設計対象回路の回路規模が最も小さくなる評価対象範囲を選択する。
このように、消費電力改善モードでは、回路並列化判定部204は、評価対象範囲のコードブロックに対応するデータパスで構成される回路が並列化された場合の設計対象回路の回路規模を評価して、評価対象範囲を選択する。
After processing
As described above, in the power consumption improvement mode, the circuit
なお、上記では、ステップ201において、設計対象回路が低減動作周波数で動作する設定で高位合成を行うことで、設計対象回路が低減動作周波数する場合の回路規模を評価する例を説明した。
しかしながら、設計対象回路が低減動作周波数で動作すると設計対象回路に要求される条件が満たされない場合は、ステップ201を省略し、設計対象回路がデフォルトの動作周波数で動作する場合の設計対象回路の回路規模を評価するようにしてもよい。
In the above description, in
However, if the condition required for the design target circuit is not satisfied when the design target circuit operates at the reduced operation frequency, the circuit of the design target circuit when the design target circuit operates at the default operation frequency is omitted. You may make it evaluate a scale.
また、速度改善モード及び消費電力改善モードのいずれにおいても、性能表示部106が、並列化対象箇所とその性能である速度及び回路規模を、設計者にて通知する。
Further, in both the speed improvement mode and the power consumption improvement mode, the
また、本実施の形態では、回路並列化判定部204が解析を自動的に行い、並列化する範囲の決定を行っているが、回路並列化可否解析部203、並列回路生成部205を用いて、設計者が並列化する範囲を決めることも可能である。
In the present embodiment, the circuit
以上、本実施の形態に係る半導体設計支援装置によれば、設計者の能力に依存することなく低消費電力なハードウェア構成のRTLを短時間で得るという効果がある。
また、要求となる動作周波数に到達しない場合でも、設計者が問題個所の特定と改善を行うことなく、自動的に速度改善が短時間に行えるといった効果がある。
As described above, according to the semiconductor design support apparatus according to the present embodiment, there is an effect that an RTL having a hardware configuration with low power consumption can be obtained in a short time without depending on the ability of the designer.
In addition, even if the required operating frequency is not reached, there is an effect that the designer can automatically improve the speed in a short time without specifying and improving the problem part.
以上、本実施の形態では、
回路の動作を記述した動作記述を入力として、高位合成処理を行い、HDL記述を出力する半導体設計支援装置であって、
前記高位合成された結果であるスケジューリング結果、あるいはRTLから、遅延情報を取得し、前記動作記述と遅延情報を関連付け、また遅延情報のヒストグラムを作成するタイミング解析手段と、
並列化回路と並列化に必要な入出力回路を自動生成する並列回路生成手段と、
並列化が可能な領域を前記動作記述から抽出する回路並列化可否解析手段と、
複数の並列化可能領域から、前記ヒストグラムと前記並列化回路と入出力回路の回路規模を取得し、
その中から、速度を満足する回路、あるいは周波数を改善できる回路を抽出する手段を有する半導体設計支援装置を説明した。
As described above, in the present embodiment,
A semiconductor design support apparatus that performs a high-level synthesis process and outputs an HDL description with an operation description describing the operation of a circuit as an input,
Timing analysis means for acquiring delay information from the scheduling result that is a result of the high-level synthesis, or RTL, associating the behavior description with delay information, and creating a histogram of delay information;
Parallel circuit generation means for automatically generating a parallel circuit and an input / output circuit necessary for parallelization;
A circuit parallelization possibility analyzing means for extracting a parallelizable area from the behavior description;
From a plurality of parallelizable areas, obtain the circuit scale of the histogram, the parallelized circuit and the input / output circuit,
A semiconductor design support apparatus having means for extracting a circuit that satisfies speed or a circuit that can improve frequency has been described.
最後に、本実施の形態に示した半導体設計支援装置10のハードウェア構成例を図15を参照して説明する。
半導体設計支援装置10はコンピュータであり、半導体設計支援装置10の各要素をプログラムで実現することができる。
半導体設計支援装置10のハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
Finally, a hardware configuration example of the semiconductor
The semiconductor
As a hardware configuration of the semiconductor
演算装置901は、プログラムを実行するCPU(Central Processing Unit)である。
外部記憶装置902は、例えばROM(Read Only Memory)やフラッシュメモリ、ハードディスク装置である。
主記憶装置903は、RAM(Random Access Memory)である。
記憶部300は、主記憶装置903又は外部記憶装置902により実現される。
通信装置904は、例えば、NIC(Network Interface Card)である。
入出力装置905は、例えばマウス、キーボード、ディスプレイ装置等である。
The
The
The
The
The
The input /
プログラムは、通常は外部記憶装置902に記憶されており、主記憶装置903にロードされた状態で、順次演算装置901に読み込まれ、実行される。
プログラムは、図1に示す「〜部」(記憶部300内の要素を除く、以下も同様)として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはオペレーティングシステム(OS)も記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、図1に示す「〜部」の機能を実現するプログラムを実行する。
また、本実施の形態の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の設定」、「〜の選択」、「〜の算出」、「〜の計数」、「〜の解析」、「〜の評価」、「〜の生成」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置903にファイルとして記憶されている。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置903にファイルとして記憶されてもよい。
The program is normally stored in the
The program is a program that realizes a function described as “˜unit” (excluding elements in the
Further, an operating system (OS) is also stored in the
In the description of the present embodiment, “determination of”, “determination of”, “extraction of”, “setting of”, “selection of”, “calculation of”, “counting of” ”,“ Analysis of ”,“ Evaluation of ”,“ Generation of ”,“ Input of ”,“ Output of ”, etc. Information, data, signal values, and variables indicating the results of processing The value is stored in the
Further, the encryption key / decryption key, random number value, and parameter may be stored in the
なお、図15の構成は、あくまでも半導体設計支援装置10のハードウェア構成の一例を示すものであり、半導体設計支援装置10のハードウェア構成は図15に記載の構成に限らず、他の構成であってもよい。
Note that the configuration of FIG. 15 is merely an example of the hardware configuration of the semiconductor
10 半導体設計支援装置、100 入出力部、101 高位言語表示部、102 並列化可能領域表示部、103 並列化指示部、104 遅延情報表示部、105 モード指定部、106 性能表示部、200 データ処理部、201 高位合成部、202 タイミング解析部、203 回路並列化可否解析部、204 回路並列化判定部、205 並列回路生成部、300 記憶部、301 スケジューリング結果・RTL記憶部、302 遅延情報記憶部、303 ヒストグラム記憶部、304 クリティカルパス情報記憶部、305 並列化可能領域記憶部、306 並列化回路コード記憶部。
DESCRIPTION OF
Claims (13)
前記複数のコードブロックから、前記クリティカルコードブロックよりも後のコードブロックであって回路並列化の対象外のコードブロックである並列化対象外コードブロック及び前記並列化対象外コードブロックに後続するコードブロックを除外して、クリティカルコードブロックを含む、回路並列化の候補になるコードブロックを並列化候補コードブロックとして特定し、前記並列化候補コードブロックにおいて、評価対象となるコードブロックの範囲である評価対象範囲を前記クリティカルコードブロックを中心にして広狭を変化させて複数設定し、評価対象範囲ごとに、評価対象範囲のコードブロックに対応するデータパスの特性を評価し、複数の評価対象範囲の中から、回路並列化の対象にする評価対象範囲を選択する評価部とを有することを特徴とする回路設計支援装置。 A code block corresponding to a critical path among a plurality of data paths generated by high-level synthesis of the plurality of code blocks is extracted as a critical code block from a plurality of code blocks included in the operation description code of the circuit to be designed. A code block extractor to perform,
From the plurality of code blocks, a code block after the critical code block and a code block that is not subject to circuit parallelization, and a code block that follows the non-parallelization target code block And a code block that is a candidate for circuit parallelization including a critical code block is identified as a parallelization candidate code block, and an evaluation target that is a range of code blocks to be evaluated in the parallelization candidate code block A plurality of ranges are set by changing the range around the critical code block, and the characteristics of the data path corresponding to the code block in the evaluation target range are evaluated for each evaluation target range. And an evaluation unit that selects an evaluation target range to be subjected to circuit parallelization. Circuit design support apparatus characterized by.
評価対象範囲のコードブロックに対応するデータパスの特性として、評価対象範囲のコードブロックに対応するデータパスでの遅延時間を評価することを特徴とする請求項1に記載の回路設計支援装置。 The evaluation unit is
The circuit design support apparatus according to claim 1, wherein the delay time in the data path corresponding to the code block in the evaluation target range is evaluated as the characteristic of the data path corresponding to the code block in the evaluation target range.
評価対象範囲のコードブロックに対応するデータパスの特性として、評価対象範囲のコードブロックに対応するデータパスで構成される回路が並列化された場合の前記設計対象回路の規模を評価することを特徴とする請求項1に記載の回路設計支援装置。 The evaluation unit is
As a characteristic of the data path corresponding to the code block in the evaluation target range, the scale of the circuit to be designed when the circuit configured by the data path corresponding to the code block in the evaluation target range is parallelized is characterized. The circuit design support apparatus according to claim 1.
前記複数のコードブロックから、前記並列化対象外コードブロック、前記並列化対象外コードブロックに後続するコードブロック、及び前記回路設計支援装置のユーザにより指定されたコードブロックを除外して、前記並列化候補コードブロックを特定することを特徴とする請求項1に記載の回路設計支援装置。 The evaluation unit is
Exclude from the plurality of code blocks the code block that is not subject to parallelization, the code block that follows the code block that is not subject to parallelization, and the code block specified by the user of the circuit design support device, and the parallelization The circuit design support apparatus according to claim 1, wherein a candidate code block is specified.
前記クリティカルコードブロックを中心にして前記並列化候補コードブロック内の全ての組合せが含まれるように、評価対象範囲を複数設定することを特徴とする請求項1に記載の回路設計支援装置。 The evaluation unit is
The circuit design support apparatus according to claim 1, wherein a plurality of evaluation target ranges are set so that all combinations in the parallelization candidate code block are included around the critical code block.
遅延時間が閾値以上のデータパスの数が最大の評価対象範囲を選択することを特徴とする請求項2に記載の回路設計支援装置。 The evaluation unit is
3. The circuit design support apparatus according to claim 2, wherein an evaluation target range having the maximum number of data paths having a delay time equal to or greater than a threshold is selected.
遅延時間が閾値以上のデータパスの数が最大の評価対象範囲が2つ以上ある場合に、
遅延時間が閾値以上のデータパスの数が最大の評価対象範囲のうち、回路並列化後の動作記述コードのコードサイズが最小になる評価対象範囲を選択することを特徴とする請求項6に記載の回路設計支援装置。 The evaluation unit is
When there are two or more evaluation target ranges with the maximum number of data paths whose delay time is equal to or greater than the threshold,
The evaluation target range in which the code size of the behavioral description code after circuit parallelization is minimized is selected from the evaluation target range having the maximum number of data paths with a delay time equal to or greater than the threshold value. Circuit design support device.
回路並列化後の前記設計対象回路の規模が最小の評価対象範囲を選択することを特徴とする請求項3に記載の回路設計支援装置。 The evaluation unit is
The circuit design support apparatus according to claim 3, wherein an evaluation target range having a minimum scale of the circuit to be designed after circuit parallelization is selected.
前記設計対象回路がデフォルトの動作周波数から低減された低減動作周波数で動作する場合の前記設計対象回路の規模を評価することを特徴とする請求項3に記載の回路設計支援装置。 The evaluation unit is
4. The circuit design support apparatus according to claim 3, wherein a scale of the circuit to be designed is evaluated when the circuit to be designed operates at a reduced operating frequency reduced from a default operating frequency.
前記設計対象回路が前記低減動作周波数で動作すると前記設計対象回路に要求される条件が満たされない場合に、前記設計対象回路がデフォルトの動作周波数で動作する場合の前記設計対象回路の規模を評価することを特徴とする請求項9に記載の回路設計支援装置。 The evaluation unit is
When the design target circuit operates at the reduced operation frequency and the condition required for the design target circuit is not satisfied, the scale of the design target circuit when the design target circuit operates at a default operation frequency is evaluated. The circuit design support apparatus according to claim 9.
評価対象範囲のコードブロックに対応するデータパスでの遅延時間を評価する第1の評価モードと、評価対象範囲のコードブロックに対応するデータパスで構成される回路が並列化された場合の前記設計対象回路の規模を評価する第2の評価モードとのいずれかを、前記回路設計支援装置のユーザに選択させ、
前記ユーザにより前記第1の評価モードが選択された場合に、評価対象範囲ごとに、評価対象範囲のコードブロックに対応するデータパスでの遅延時間を評価し、
前記ユーザにより前記第2の評価モードが選択された場合に、評価対象範囲ごとに、評価対象範囲のコードブロックに対応するデータパスで構成される回路が並列化された場合の前記設計対象回路の規模を評価することを特徴とする請求項1に記載の回路設計支援装置。 The evaluation unit is
The design when the first evaluation mode for evaluating the delay time in the data path corresponding to the code block in the evaluation target range and the circuit configured by the data path corresponding to the code block in the evaluation target range are parallelized One of the second evaluation modes for evaluating the scale of the target circuit is selected by the user of the circuit design support device,
When the first evaluation mode is selected by the user, for each evaluation target range, evaluate the delay time in the data path corresponding to the code block of the evaluation target range,
When the second evaluation mode is selected by the user, the circuit of the design target when the circuit configured by the data path corresponding to the code block of the evaluation target range is parallelized for each evaluation target range The circuit design support apparatus according to claim 1, wherein the scale is evaluated.
前記評価部による評価結果を表示する評価結果表示部を有することを特徴とする請求項1に記載の回路設計支援装置。 The circuit design support device further includes:
The circuit design support apparatus according to claim 1, further comprising an evaluation result display unit that displays an evaluation result by the evaluation unit.
前記複数のコードブロックから、前記クリティカルコードブロックよりも後のコードブロックであって回路並列化の対象外のコードブロックである並列化対象外コードブロック及び前記並列化対象外コードブロックに後続するコードブロックを除外して、クリティカルコードブロックを含む、回路並列化の候補になるコードブロックを並列化候補コードブロックとして特定し、前記並列化候補コードブロックにおいて、評価対象となるコードブロックの範囲である評価対象範囲を前記クリティカルコードブロックを中心にして広狭を変化させて複数設定し、評価対象範囲ごとに、評価対象範囲のコードブロックに対応するデータパスの特性を評価し、複数の評価対象範囲の中から、回路並列化の対象にする評価対象範囲を選択する評価処理とをコンピュータに実行させることを特徴とするプログラム。 A code block corresponding to a critical path among a plurality of data paths generated by high-level synthesis of the plurality of code blocks is extracted as a critical code block from a plurality of code blocks included in the operation description code of the circuit to be designed. Code block extraction processing to
From the plurality of code blocks, a code block after the critical code block and a code block that is not subject to circuit parallelization, and a code block that follows the non-parallelization target code block And a code block that is a candidate for circuit parallelization including a critical code block is identified as a parallelization candidate code block, and an evaluation target that is a range of code blocks to be evaluated in the parallelization candidate code block A plurality of ranges are set by changing the range around the critical code block, and the characteristics of the data path corresponding to the code block in the evaluation target range are evaluated for each evaluation target range. , Evaluation processing to select the evaluation target range to be circuit parallelization and A program characterized by causing a computer to execute.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013234536A JP6242170B2 (en) | 2013-11-13 | 2013-11-13 | Circuit design support apparatus and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013234536A JP6242170B2 (en) | 2013-11-13 | 2013-11-13 | Circuit design support apparatus and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015095130A JP2015095130A (en) | 2015-05-18 |
JP6242170B2 true JP6242170B2 (en) | 2017-12-06 |
Family
ID=53197484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013234536A Active JP6242170B2 (en) | 2013-11-13 | 2013-11-13 | Circuit design support apparatus and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6242170B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017154183A1 (en) * | 2016-03-10 | 2017-09-14 | 三菱電機株式会社 | High-level synthesis device, high-level synthesis method, and high-level synthesis program |
JP6996431B2 (en) * | 2018-06-13 | 2022-01-17 | 日本電信電話株式会社 | Parameter optimizer, method, and program |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0683896A (en) * | 1992-09-03 | 1994-03-25 | Toshiba Corp | Design supporting device |
JP2002073713A (en) * | 2000-08-31 | 2002-03-12 | Sony Corp | Circuit generating device, circuit generating method and cad designing device |
JP2007193529A (en) * | 2006-01-18 | 2007-08-02 | Matsushita Electric Ind Co Ltd | High-level synthesis method for semiconductor integrated circuit |
US7681158B2 (en) * | 2007-04-09 | 2010-03-16 | Kabushiki Kaisha Toshiba | Delay budget allocation with path trimming |
JP5347995B2 (en) * | 2010-02-03 | 2013-11-20 | 日本電気株式会社 | Behavioral synthesis apparatus, behavioral synthesis method, and program |
-
2013
- 2013-11-13 JP JP2013234536A patent/JP6242170B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2015095130A (en) | 2015-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110192192B (en) | Neural network based physical synthesis for circuit design | |
US10684776B2 (en) | Memory configuration for inter-processor communication in an MPSoC | |
US8799837B2 (en) | Optimizing a netlist circuit representation by leveraging binary decision diagrams to perform rewriting | |
Vijayan et al. | Fine-grained aging-induced delay prediction based on the monitoring of run-time stress | |
KR20130084029A (en) | Method of designing a system-on-chip including a tapless standard cell, designing system and system-on-chip | |
Gubbi et al. | Survey of machine learning for electronic design automation | |
JP2010238054A (en) | Apparatus for supporting semiconductor design, high-order synthesis method and program for supporting semiconductor design | |
US7958476B1 (en) | Method for multi-cycle path and false path clock gating | |
JP6242170B2 (en) | Circuit design support apparatus and program | |
Ali et al. | Exploring HLS optimizations for efficient stereo matching hardware implementation | |
US8776003B2 (en) | System and method for employing side transition times from signoff-quality timing analysis information to reduce leakage power in an electronic circuit and an electronic design automation tool incorporating the same | |
CN115859897B (en) | Model generation method, layout area prediction device and related equipment | |
US20190034562A1 (en) | High-level synthesis device, high-level synthesis method, and computer readable medium | |
US10606972B2 (en) | Method, design program, and design apparatus of a high level synthesis process of a circuit | |
JP2008299464A (en) | Power consumption calculation method, power consumption calculation program, and power consumption calculation device | |
CN104133931B (en) | The method and system of respective paths in being designed for detection combination equivalent circuit | |
JP2006259820A (en) | Failure detection improving device, failure detection improving program, and failure detection improving method | |
US8959467B2 (en) | Structural rule analysis with TCL scripts in synthesis or STA tools and integrated circuit design tools | |
US8522175B2 (en) | Semiconductor circuit design supporting apparatus and method, and non-transitory computer-readable medium | |
US9600613B1 (en) | Block-level code coverage in simulation of circuit designs | |
JP5408264B2 (en) | Integrated circuit power consumption calculation apparatus, processing method, and program | |
JP2006268165A (en) | Timing analyzing device for integrated circuit, timing optimizing device for integrated circuit, timing analyzing method for integrated circuit, timing optimizing method for integrated circuit, method for manufacturing integrated circuit board, control program and readable recording medium | |
JP2018041301A (en) | RTL optimization system and RTL optimization program | |
US9852259B2 (en) | Area and/or power optimization through post-layout modification of integrated circuit (IC) design blocks | |
JP6305644B2 (en) | Architecture generation apparatus and architecture generation program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160930 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170912 |
|
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: 20171010 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171107 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6242170 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |