(57)【特許請求の範囲】
【請求項１】
第１の演算と第２の演算から成る連続演算を論理回路で行わせる際のディレイを計算する演算ディレイ計算装置において、
前記第１の演算と前記第２の演算から成る連続演算の各演算の種類及びビット幅を求める解析手段と、
前記第１の演算と前記第２の演算の種類のペアに対応する計算タイプを求めるタイプ選択手段と、
前記求まった計算タイプに対応する追加ディレイの計算方法を選択する計算方法選択手段と、
前記選択された計算方法を用い且つ前記求まった各演算のビット幅をパラメータとして追加ディレイを算出し、得られた追加ディレイを前記第１の演算のディレイに加算して前記連続演算のディレイを算出するディレイ計算手段と、
を具備することを特徴とする演算ディレイ計算装置。
【請求項２】
前記タイプ選択手段は、前記第１の演算と前記第２の演算のビット幅を変えて求めた前記第１の演算と前記第２の演算の種類のペアに対応する計算タイプを保持する第１の保持手段を有し、この保持手段を参照して前記第１の演算と前記第２の演算の種類のペアに対応する計算タイプを求め、
前記計算方法選択手段は、前記計算タイプ別に予め求められた前記第１の演算と前記第２の演算のビット幅の関数で表される追加ディレイの計算方法を保持する第２の保持手段を有し、この保持手段を参照して前記計算タイプに対応する追加ディレイの計算方法を求めることを特徴とする請求項１記載の演算ディレイ計算装置。
【請求項３】
前記連続演算の計算タイプ毎に前記第１、第２の演算の各ビット幅を変化させて、前記連続演算を論理合成で得られた論理回路により実行することで得られるディレイデータを収集し、これら収集したディレイデータに基づいて前記追加ディレイの計算方法で用いる定数を求める定数生成手段を設けたことを特徴とする請求項１又は２記載の演算ディレイ計算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、動作記述から論理回路を合成する高位合成技術に係り、特に高位合成技術により論理回路を合成するためのスケジューリング処理に使用される演算ディレイ計算装置及び方法に関する。
【０００２】
【従来の技術】
近年、製品サイクルが短くなり、設計から市場投入までの時間の短縮が求められている。この設計期間短縮のため、論理設計のレベルを従来のレジスタ転送レベル（以下ＲＴレベルと記す）より抽象度の高い動作レベルヘ上げた設計技術が現れてきている。特に、動作レベルの記述（以下動作記述と記す）から論理回路を合成する高位合成技術が注目されてきている。
【０００３】
この高位合成技術により性能の良い回路を合成するためには、性能の良いスケジューリング処理が必要である。スケジューリングとは動作記述中の演算をクロック・サイクル毎に実行されるグルーブに分割する処理である。１クロック・サイクル内で実行できる演算列はひとつのグループに入れることができる。
【０００４】
【発明が解決しようとする課題】
ところで、上記したスケジューリングは、演算のディレイに基づいてグループ分けするので、ディレイ計算の正確さがスケジューリング結果に大きく影響する。特に、連続した演算のディレイを従来では個々の演算のディレイの合計として計算しているため、実際のディレイ値との誤差が大きく、本来なら連続した演算を１クロック・サイクルで実行できるにも拘らず、１クロック・サイクルで実行できないという誤判定が生じ、連続した演算を別々のグループヘ分割するといった状況が起っている。このため、動作終了までのクロック・サイクル数が多い、即ち処理速度が遅い論理回路が合成されるといった問題があった。
【０００５】
本発明は、上述の如き従来の課題を解決するためになされたもので、その目的は、連続した演算のディレイを精度よく計算することができ、従ってスケジューリングを正確に行うことができる演算ディレイ計算装置及び方法を提供することである。
【０００６】
【課題を解決するための手段】
上記目的を達成するために、請求項１の発明の特徴は、第１の演算と第２の演算から成る連続演算を論理回路で行わせる際のディレイを計算する演算ディレイ計算方法において、前記第１の演算の種類と前記第２の演算の種類のペア及び前記第１の演算のビット幅と前記第２の演算のビット幅のペアにより一意的に決まる追加ディレイを計算する過程と、前記第１の演算の種類とビット幅で決まる予め知られいてる第１の演算のディレイに前記算出された追加ディレイを加算して、前記第１、第２の演算から成る連続演算のディレイを算出する過程とを具備することにある。  請求項２の発明の特徴は、前記第１の演算の種類と前記第２の演算の種類のペアで決まる計算タイプを設定し、この計算タイプと前記第１の演算のビット幅と前記第２の演算のビット幅のペアにより一意的に決まる追加ディレイを計算することにある。
【０００７】
請求項３の発明の特徴は、第１の演算と第２の演算から成る連続演算を論理回路で行わせる際のディレイを計算する演算ディレイ計算装置において、前記第１の演算と前記第２の演算から成る連続演算の各演算の種類及びビット幅を求める解析手段と、前記第１の演算と前記第２の演算の種類のペアに対応する計算タイプを求めるタイプ選択手段と、前記求まった計算タイプに対応する追加ディレイの計算方法を選択する計算方法選択手段と、前記選択された計算方法を用い且つ前記求まった各演算のビット幅をパラメータとして追加ディレイを算出し、得られた追加ディレイを前記第１の演算のディレイに加算して前記連続演算のディレイを算出するディレイ計算手段とを具備することにある。
【０００８】
請求項４の発明の前記タイプ選択手段は、前記第１の演算と前記第２の演算のビット幅を変えて求めた前記第１の演算と前記第２の演算の種類のペアに対応する計算タイプを保持する第１の保持手段を有し、この保持手段を参照して前記第１の演算と前記第２の演算の種類のペアに対応する計算タイプを求め、前記計算方法選択手段は、前記タイプ別に予め求められた前記第１の演算と前記第２の演算のビット幅の関数で表される追加ディレイの計算方法を保持する第２の保持手段を有し、この保持手段を参照して前記計算タイプに対応する追加ディレイの計算方法を求める。
【０００９】
請求項５の発明の特徴は、前記連続演算の計算タイプ毎に前記第１、第２の演算の各ビット幅を変化させて、前記連続演算を論理合成で得られた論理回路により実行することで得られるディレイデータを収集し、これら収集したディレイデータに基づいて前記追加ディレイの計算方法で用いる定数を求める定数生成手段を設けたことにある。
【００１０】
動作記述から論理回路を合成する高位合成の処理の一つであるスケジューリングは、演算のディレイを見積もる必要がある。この見積もり値と実際の値との差がスケジューリング結果に大きく影響する。特に、連続した演算のディレイを個々の演算のディレイの合計として見積もっていたのでは、実際の値との差が大きい。この差がスケジューリング結果に悪い影響を与える。そこで、連続した演算のディレイ値の正確な計算方法を提供することにより、性能の良いスケジューリング処理を可能にする。
【００１１】
上記発明によれば、第１の演算と第２の演算から成る連続演算のディレイを計算するに際し、前記第１の演算の種類と前記第２の演算の種類のペア及び前記第１の演算のビット幅と前記第２の演算のビット幅のペアにより一意的に決まる追加ディレイを計算し、この追加ディレイを第１の演算のデイレイに加算することにより、連続演算のディレイを求めている。
【００１２】
【発明の実施の形態】
以下、本発明の実施形態を図面に基づいて説明する。図１は、本発明の演算ディレイ計算装置の一実施形態に係る構成を示したブロック図である。演算ディレイ計算装置は、連続演算式１００を入力する連続演算入力部１、入力された連続演算式１００の演算の種類とビット幅を解析する連続演算解析部２、入力された連続演算式１００の演算の種類に応じて計算タイプを選択する計算タイプ選択部３、演算の種類に応じた計算タイプを保持する計算タイプライブラリ４、入力された連続演算式１００の計算タイプに従って計算方法を選択する計算方法選択部５、計算タイプに応じた追加ディレイの計算方法を保持する計算方法ライブラリ６、入力された連続演算式１００のディレイを計算して連続演算のディレイ２００を出力するディレイ計算部７を有している。
【００１３】
次に本実施の形態の動作について説明する。連続演算式１００はディレイ計算対象となる演算式である。連続演算入力部１は、連続演算式１００を連続演算解析部２に入力する。連続演算解析部２は連続演算式１００の各演算の種類やビット幅を解析する。例えば、連続演算式１００が「（ｘ＋ｙ）×ｚ」であり、その加算のビット幅が１６で、掛け算のビット幅が３２の場合、その解析結果は図２に示す如くである。
【００１４】
計算タイプ選択部３は連続演算解析部２で解析された各演算の種類に応じて、計算タイプライブラリ４に登録されている計算タイプを選択する。この計算タイプライブラリ４に登録されている演算の種類と計算タイプの対応関係は例えば図３に示す如くである。
【００１５】
計算方法選択部５は計算タイプ選択部３で選択された計算タイプに従って計算方法ライブラリ６に登録されている計算方法を選択する。ディレイ計算部７は計算方法選択部５で選択された計算方法を用い、連続演算解析部２で解析された各演算のビット幅をパラメータとして連続演算式１００のディレイを計算する。連続演算のディレイ２００は上記のように計算された結果である。
【００１６】
次に上記した連続演算解析部２、計算タイプ選択部３、計算方法選択部５及びディレイ計算部７の処理方法を図４のフローチャートを参照して詳しく説明する。
【００１７】
図４は連続演算解析部２からディレイ計算部７に至るまでの処理の流れを示したフローチャートである。このフローチャートでは、連続演算式１００は２つの演算の連続した構成を有している場合を想定している。
【００１８】
まず、連続演算解析部２はステップ４０１で、連続演算の第一演算の種類をｏｐ１、ビット幅をｗ１、第二演算の種類をｏｐ２、ビット幅をｗ２と解析する。計算タイプ選択部３はステップ４０２で、連続演算の種類ｏｐ１とｏｐ２に基づいて計算タイプを計算タイプライブラリ４から選択する。
【００１９】
例えば、図３に示したように計算タイプはタイプ１からタイプ３までの三種類がある。これらの計算タイプは、予め計算タイプライブラリ４に登録されている。これら計算タイプにより追加ディレイの計算方法が異なる。計算タイプ選択部３はステップ４０３で計算タイプに従って計算方法を計算方法ライブラリ６から選択する。この実施例では、２つの連続した演算のディレイを「第一演算のディレイ＋追加ディレイΔ」の形で計算する。
【００２０】
図５は計算タイプ毎の追加ディレイの計算方法例を示した表図である。但し、図中、ｄ、ｄ１，ｄ２は関数で、ｃは定数である。タイプ１の場合、追加ディレイΔは、定数ｃおよび第二演算のビット幅ｗ２と第一演算のビット幅ｗ１の差（ｗ２−ｗ１）の関数の和によって計算される。差（ｗ２−ｗ１）の関数として、ｗ１とｗ２の大小関係によって異なる関数ｄ１又はｄ２が用いられる。
【００２１】
定数ｃは第一演算の種類ｏｐ１と第二演算の種類ｏｐ２によって異なる値を取る。関数ｄ１、ｄ２は図６に示すような第二演算のビット幅ｗ２と第一演算のビット幅ｗ１の差（ｗ２−ｗ１）の関数である。関数ｄ１、ｄ２に現れる定数ａ、ｂは第一演算の種類ｏｐ１と第二演算の種類ｏｐ２によって異なる値を取る。
【００２２】
タイプ２の場合、追加ディレイΔは、第一演算のビット幅ｗ１の関数ｄと、第二演算のビット幅ｗ２と第一演算のビット幅ｗ１の差（ｗ２−ｗ１）の関数との和によって計算される。関数ｄは図７に示すようなｗ１の関数である。関数ｄに現れる定数ｃ１とｃ２は第一演算の種類ｏｐ１と第二演算の種類ｏｐ２によって異なる値を取る。差（ｗ２−ｗ１）の関数としては、ｗ１とｗ２の大小関係によって異なる関数ｄ１またはｄ２が用いられる。関数ｄ１、ｄ２はタイプ１の場合と同様に図６に示した関数である。
【００２３】
タイプ３の場合、追加ディレイΔは、定数ｃおよび第二演算のビット幅ｗ２と第一演算のビット幅ｗ１の差（ｗ２−Ｗ１）の関数の和によって計算される。但し、ｗ２がｗ１より大きい場合は追加ディレイΔは定数ｃとして計算される。関数ｄ１は図６に示したものである。
【００２４】
上記のように選択した計算方法に従ってステップ４０４で第一演算のビット幅ｗ１と第二演算のビット幅ｗ２をパラメータとして追加ディレイΔを計算する。最後に、ディレイ計算部７はステップ４０５で第一演算のディレイ（計算方法ライブラリ６等に格納されている）とステップ４０４で計算した追加ディレイΔの和を取って連続演算のディレイを計算する。
【００２５】
関数Δ（ｗ１，ｗ２）、ｄ１（ｗ２−ｗ１）、ｄ２（ｗ２−ｗ１）に現れる定数ｃ、ａ、ｂの値の例を図８に示す。これらの値は実際に論理合成したディレイ値に基づいて計算される。例として、連続演算（ｘ＋ｙ＋ｚ）のディレイ計算結果を図９に示す。図９に示した例は第一演算のビット幅が１６、第二演算のビット幅が３２の場合である。図９には従来のディレイ計算の結果も示してある。例えば、制約としてクロック・サイクルが１０ＮＳ秒であるとして、スケジューリングを実行する際、従来のディレイ計算方法を用いた場合、１５．１７ＮＳ秒と計算され、連続した加算を同じクロック・サイクルで実行するようにスケジューリングできない。
【００２６】
しかし、本発明の計算方法を用いた場合、９．３７ＮＳ秒と計算され、連続した加算を同じクロック・サイクルで実行できるようにスケジューリングが可能である。実際、関数Δ（ｗ１、ｗ２）等に現れる定数の計算に用いる実際のディレイ値の収集時と同じ条件下での論理合成後のディレイは９．２６ＮＳ秒であり、合成後の論理回路を制約で与えたクロック・サイクルで動作させることが可能である。このように本発明のディレイ計算装置を用いることにより、より良いスケジューリングが可能となる。
【００２７】
次に上記した計算方法ライブラリ６に登録されている計算方法で使用する定数の生成について図１０を参照して説明する。
【００２８】
図１０は上記計算方法で使用する定数の生成手順を示したフローチャートである。ステップ１０１で計算方法を生成する連続演算を指定する。そして、第一演算の種類をｏｐ１、第二演算の種類をｏｐ２とする。ステップ１０２で連続演算の計算タイプを指定し、それをｔｙｐｅとする。演算の種類と計算タイプの対応例は図３に示してある。ステップ１０３で第一演算のビット幅と第二演算のビット幅を変えて計算タイプｔｙｐｅ用のデータを収集する。計算タイプ毎の収集データの一覧を図１１に示す。
【００２９】
例えば、タイプ１の場合、演算（列）欄の演算に対して、第一演算のビット幅と第二演算のビット幅欄の値を変化させたディレイ値を収集する。これらのディレイは、例えば論理合成を実行して収集する。ステップ１０４において、ステップ１０３で収集したデータに基づいて追加ディレイΔに現れる定数を計算する。これらの定数の計算方法例を図１２に示す。ステップ１０５でステップ１０４で計算された定数を持った追加ディレイΔを計算方法ライブラリ６に登録する。
【００３０】
例として連続演算（ｘ＋ｙ＋ｚ）の追加ディレイΔに現れる定数の計算に必要なデータを図１３に、そのデータを用いた定数の計算結果を図１４に示す。第一演算の種類が「加算」、第二演算の種類が「加算」である連続演算は「タイプ１」である。この場合の図１４に示す結果は図８に示した値と一致している。
【００３１】
一般に追加ディレイΔに現れる定数は論理合成で用いる論理ライブラリ毎に異なる。論理ライブラリ毎に人手で計算する方法でライブラリ６を構築していたのでは時間が掛かり、また、間違いが混入する恐れがある。そこで、本実施例で示した方法で追加ディレイ関数を自動生成することにより、間違いがなく、時間を掛けることなく、計算方法ライブラリ６を構築することが可能となる。
【００３２】
本実施の形態によれば、連続した第一の演算と第二の演算のディレイを第一の演算のディレイに別途計算して得た追加ディレイΔを加算して算出することにより、従来よりも連続演算のディレイを精度よく計算することができ、スケジューリングを正確に行うことができる。このため、従来の計算方法では、同じクロック・サイクルで実行できないディレイ値が出たものを、本例の方法で計算すると、同じクロック・サイクルで実行できるディレイ値が出ることがあり、これを用いて高位合成することにより、処理時間の速い高性能の論理回路を得ることができる。
【００３３】
尚、本発明の演算ディレイ計算方法は典型的には図４のフローチャートに示した各ステップをプログラム化してコンピュータに実行させることにより実現でき、同様に連続演算のディレイを精度よく計算することができる。その際、コンピュータプログラムは、フロッピーディスクやハードディスク等のディスク型記録媒体、半導体メモリやカード型メモリ等の各種メモリ、或いは通信ネットワークなどの各種のプログラム記録媒体を通じてコンピューターに供給することができる。
【００３４】
【発明の効果】
以上詳細に説明したように、本発明の演算ディレイ計算装置及び方法によれば、連続演算のディレイを精度よく計算することができ、従ってスケジューリングを正確に行うことができる。
【図面の簡単な説明】
【図１】本発明の演算ディレイ計算装置の一実施形態に係る構成を示したブロック図である。
【図２】図１に示した連続演算解析部の解析結果例を示した表図である。
【図３】図１に示した計算タイプライブラリに登録されている演算の種類と計算タイプの対応例を示した表図である。
【図４】図１に示した連続演算解析部からディレイ計算部に至るまでの処理の流れを示したフローチャートである。
【図５】図１の計算方法ライブラレに登録されている計算タイプ毎の計算方法例を示した表図である。
【図６】図５に示した関数ｄ１、ｄ２の具体例を示した表図である。
【図７】図５に示した関数ｄの具体例を示した表図である。
【図８】図１に示したディレイ計算部で扱った関数Δ（ｗ１，ｗ２）、ｄ１（ｗ２−ｗ１）、ｄ２（ｗ２−ｗ１）に現れる定数ｃ、ａ、ｂの値を示した表図である。
【図９】図１に示した装置で連続演算（ｘ＋ｙ＋ｚ）のディレイ計算を行った結果と従来の計算方法で行った結果例を示した表図である。
【図１０】図１に示した計算方法ライブラリに登録されている計算方法で使用する定数の生成手順を示したフローチャートである。
【図１１】図１０のステップ１０３で収集する計算タイプ毎の収集データ例を一覧とした表図である。
【図１２】図１０のステップ１０４で扱う追加ディレイΔに現れる定数の計算方法を示した表図である。
【図１３】図１０のステップ１０４で扱う追加ディレイΔに現れる定数の計算に必要なデータ例を示した表図である。
【図１４】図１０に示した方法で生成した定数計算の結果例を示した表図である。
【符号の説明】
１  連続演算入力部
２  連続演算解析部
３  計算タイプ選択部
４  計算タイプライブラリ
５  計算方法選択部
６  計算方法ライブラリ
７  ディレイ計算部
１００  連続演算式
２００  連続演算のディレイ
【図１】
0003816286.tif 000002
【図２】
0003816286.tif 000003
【図３】
0003816286.tif 000004
【図４】
0003816286.tif 000005
【図５】
0003816286.tif 000006
【図６】
0003816286.tif 000007
【図７】
0003816286.tif 000008
【図８】
0003816286.tif 000009
【図９】
0003816286.tif 000010
【図１０】
0003816286.tif 000011
【図１１】
0003816286.tif 000012
【図１２】
0003816286.tif 000013
【図１３】
0003816286.tif 000014
【図１４】
0003816286.tif 000015