(57)【要約】【課題】浮動小数点や三角関数などの複雑な演算を実行する演算器と、単純な演算器との動作合成におけるスケジューリング、共有化が可能演算ライブラリを構成する。【解決手段】ＬＳＩの設計における動作合成に用いられる演算ライブラリ（２６）を生成するライブラリ生成プログラム（３２）をコンピュータに実行させる。そのプログラム（３２）は、  （ａ）入力装置（２）を用いて入力された、生成対象の前記演算ライブラリ（２６）に対応するパラメータ（１４）を供給するステップと、  （ｂ）前記パラメータ（１４）に応答して、動作合成時に共有化可能な演算器で構成される高級演算器を生成するステップと、  （ｃ）前記高級演算器を有する前記演算ライブラリ（２６）を構成するステップを具備する方法をコンピュータで実行する。【選択図】図７
2007316731.tif 000002
【特許請求の範囲】
【請求項１】
ＬＳＩの設計における動作合成に用いられる演算ライブラリを生成するライブラリ生成プログラムであって、
（ａ）入力装置を用いて入力された、生成対象の前記演算ライブラリに対応するパラメータを供給するステップと、
（ｂ）前記パラメータに応答して、動作合成時に共有化可能な演算器で構成される高級演算器を生成するステップと、
（ｃ）前記高級演算器を有する前記演算ライブラリを構成するステップ
をコンピュータに実行させるための
ライブラリ生成プログラム。
【請求項２】
請求項１に記載のライブラリ生成プログラムにおいて、
前記（ｂ）ステップは、
前記高級演算器を構成する前記演算器を、前記動作合成時に、他の演算器と共有可能なように構成するステップ
を含む
ライブラリ生成プログラム。
【請求項３】
請求項１に記載のライブラリ生成プログラムにおいて、
前記（ｂ）ステップは、
供給された前記パラメータに応答して、前記パラメータの妥当性を検査する妥当性検査ステップ
を含む
ライブラリ生成プログラム。
【請求項４】
請求項１に記載のライブラリ生成プログラムにおいて、
前記高級演算器が実行する演算は、
前記動作合成時に、前記演算器または前記他の演算器と共有されることのない特定の演算であり、
前記（ｂ）ステップは、
前記高級演算器を、前記特定の演算を実行する演算器として構成するステップ
を含む
ライブラリ生成プログラム。
【請求項５】
請求項１から４の何れか１項に記載のライブラリ生成プログラムにおいて、
前記高級演算器は、浮動小数点演算を実行する演算器または三角関数演算を実行する演算器である
ライブラリ生成プログラム。
【請求項６】
ＬＳＩの設計を支援するＬＳＩ設計支援プログラムであって、
（ａ）入力装置を用いて入力されたパラメータに応答して、動作合成時に共有化可能な演算器で構成される高級演算器を有する演算ライブラリを構成するステップと、
（ｂ）ハードウェア対応アルゴリズム記述を読み出すステップと、
（ｃ）前記演算ライブラリを読み出すステップと、
（ｄ）前記ハードウェア対応アルゴリズム記述から、前記高級演算器に対応する高級演算器記述を特定し、前記高級演算器記述を前記演算ライブラリの前記高級演算器に変更するステップ
をコンピュータに実行させるための
ＬＳＩ設計支援プログラム。
【請求項７】
請求項６に記載のＬＳＩ設計支援プログラムにおいて、
前記高級演算器を構成する前記演算器は、前記動作合成時に、他の演算器と共有可能に構成され、
前記（ａ）ステップは、
前記高級演算器を、前記動作合成時に、前記演算器または前記他の演算器と共有されることのない演算を実行する演算器で構成するステップ
を含み、
前記（ｄ）ステップは、
前記高級演算器記述を、前記演算ライブラリの前記高級演算器にリンクさせるため変更を行うステップ
を含む
ＬＳＩ設計支援プログラム。
【請求項８】
請求項６に記載のＬＳＩ設計支援プログラムにおいて、さらに、
（ｅ）前記演算ライブラリの高級演算器に変更されたハードウェ対応アルゴリズム記述と前記演算ライブラリとを読み込んで動作合成を実行し、ＲＴＬ回路を生成するステップ
をコンピュータに実行させるための
ＬＳＩ設計支援プログラム。
【請求項９】
ＬＳＩを設計するステップと、
設計された前記ＬＳＩを製造するステップと
を具備し、
前記設計するステップは、
（ａ）入力装置を用いて入力されたパラメータに応答して、動作合成時に共有化可能な演算器で構成される高級演算器を有する前記演算ライブラリを構成するステップと、
（ｂ）ハードウェア対応アルゴリズム記述を読み出すステップと、
（ｃ）前記演算ライブラリを読み出すステップと、
（ｄ）前記ハードウェア対応アルゴリズム記述から、前記高級演算器に対応する高級演算器記述を特定し、前記高級演算器記述を前記演算ライブラリの前記高級演算器に変更するステップ
を具備する
ＬＳＩ製造方法。
【請求項１０】
請求項９に記載のＬＳＩ製造方法において、
前記高級演算器を構成する前記演算器は、前記動作合成時に、他の演算器と共有可能に構成され、
前記（ａ）ステップは、
前記高級演算器を、前記動作合成時に、前記演算器または前記他の演算器と共有されることのない演算を実行する演算器で構成するステップ
を含み、
前記（ｄ）ステップは、
前記高級演算器記述を、前記演算ライブラリの前記高級演算器にリンクさせるため変更を行うステップ
を含む
ＬＳＩ製造方法。
【請求項１１】
請求項９または１０に記載のＬＳＩ製造方法によって製造された
半導体装置。
【請求項１２】
入力装置を用いて入力された、生成対象の演算ライブラリに対応するパラメータを保持するパラメータ記憶部と、
前記パラメータ記憶部から、前記パラメータを読み出し、読み出した前記パラメータに応答して、動作合成時に共有化可能な演算器で構成される高級演算器を生成する演算ライブラリ生成部と、
前記演算ライブラリ生成部によって生成された前記高級演算器を保持する演算ライブラリと
を具備する
演算ライブラリ生成装置。
【請求項１３】
請求項１２に記載の演算ライブラリ生成装置において、
前記演算ライブラリ生成部は、
前記高級演算器を構成する前記演算器を、前記動作合成時に、他の演算器と共有可能なように構成する
演算ライブラリ生成装置。
【請求項１４】
請求項１２に記載の演算ライブラリ生成装置において、
前記演算ライブラリ生成部は、さらに、
供給された前記パラメータに応答して、前記パラメータの妥当性を検査する妥当性検査部を含む
演算ライブラリ生成装置。
【請求項１５】
請求項１２に記載の演算ライブラリ生成装置において、
前記高級演算器が実行する演算は、
前記動作合成時に、前記演算器または前記他の演算器と共有されることのない特定の演算であり、
前記演算ライブラリ生成部は
前記高級演算器を、前記特定の演算を実行する演算器として構成する
演算ライブラリ生成装置。
【請求項１６】
請求項１２から１５の何れか１項に記載の演算ライブラリ生成装置において、
前記高級演算器は、浮動小数点演算を実行する演算器または三角関数演算を実行する演算器である
演算ライブラリ生成装置。
【請求項１７】
入力装置を用いて入力されたパラメータに応答して、動作合成時に共有化可能な演算器で構成される高級演算器を有する演算ライブラリと、
ハードウェア対応アルゴリズム記述を保持するアルゴリズム記述記憶部と、
前記ハードウェア対応アルゴリズム記述から、前記高級演算器に対応する高級演算器記述を特定し、前記高級演算器記述を前記演算ライブラリの前記高級演算器に変更するリンク変更部と
を具備する
ＬＳＩ設計支援装置。
【請求項１８】
請求項１７に記載のＬＳＩ設計支援装置において、
前記高級演算器が実行する演算は、
前記演算器または前記他の演算器と共有することのない特定の演算であり、
前記演算ライブラリ生成部は
前記高級演算器を、前記特定の演算を実行する演算器として構成し、
前記リンク変更部は、
前記高級演算器記述を、前記演算ライブラリの前記高級演算器にリンクさせるため変更を行う
ＬＳＩ設計支援装置。
【請求項１９】
請求項１８に記載のＬＳＩ設計支援装置において、さらに、
前記演算ライブラリの高級演算器に変更されたハードウェ対応アルゴリズム記述と前記演算ライブラリとを読み込んで動作合成を実行し、ＲＴＬ回路を生成する動作合成部
を具備するＬＳＩ設計支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムＬＳＩ（Large Scale Integration：大規模集積回路）の設計に関する。
【背景技術】
【０００２】
近年、市場に流通する機器の多くにＬＳＩが搭載されてきている。半導体技術の進歩に伴って、市場に流通する機器のライフサイクルは、ますます短くなってきている。そのため、半導体メーカにとっては、短期間で高性能なシステムＬＳＩを開発することが重要となってきている。
【０００３】
短期間でシステムＬＳＩを開発する技術として、動作合成ツールを用いたシステムＬＳＩの開発技術が知られている。動作合成ツールとは、ハードウェアの動作を表現するアルゴリズムから、論理合成ツールに入力されるＲＴＬ（Register Transfer Level）記述を生成するＥＤＡ（Electronic Design Automation）ツールである。
【０００４】
動作合成ツールによるシステムＬＳＩの開発期間を短縮する手法としては、例えば、ソフトウェア部分とハードウェア部分とを含めたシステム仕様を、Ｃ／Ｃ＋＋言語などの動作記述レベルで記述し、システムレベルでの検証を行うソフトウェア／ハードウェア協調検証などが知られている。従来のシステムＬＳＩの開発において、上記のソフトウェア／ハードウェア協調検証を行った後、ソフトウェアおよびハードウェアのそれぞれに関して、詳細な設計を行っている。
【０００５】
ハードウェア部分の詳細な設計を行う場合に、上記のソフトウェア／ハードウェア協調検証で使用された記述（Ｃ／Ｃ＋＋言語などで記述されたシステム仕様の、ハードウェア部分の記述）を用いて動作合成を行う技術が知られている（例えば、非特許文献１参照）。
【０００６】
図１は、上記非特許文献１に記載のＬＳＩ設計工程を示す流れ図である。図１を参照すると、従来の動作合成では、動作記述を入力として、ＲＴＬ記述を生成している。非特許文献１には、動作合成の主要機能であるスケジューリング、アロケーションに関する技術が開示されている。動作合成におけるスケジューリングとは、動作記述に基づいて、開発対象のＬＳＩで実行される各演算の並列化や逐次化を行う処理である。換言すると、スケジューリングを行うことで、ＬＳＩを動作させる際に、どの演算を、いつ、どのような順序で実行するかを決定している。また、アロケーションとは、スケジューリングされた各演算を、演算器に割り当てるための処理である。さらに、従来の動作合成では、アロケーションを行うことで、演算器の共有化が行われている。
【０００７】
アロケーションにおける演算器の共有化では、動作合成を行った後特定の演算子などが同時に使用されないことがわかっている場合、その演算器を共有使用することを決定する。この共有化により、開発されるＬＳＩ全体の回路規模を小さくすることができる。
【０００８】
図１に示されているように、従来の動作合成においては、動作記述に記載されている演算に着目し、スケジューリング、共有化といった最適化処理を行っている。従来の動作合成におけるスケジューリング、共有化の対象となる演算器が演算ライブラリに備えられている。
【０００９】
図２は、上記の演算ライブラリに備えられた演算器に関連する情報を示すテーブルである。図２を参照すると、非特許文献１に記載の設計工程における従来の演算ライブラリには、加算器、減算器、乗算器などの基本的な演算器が、引数のビット数に応じて備えられている。
【００１０】
上述のしたように、従来の演算ライブラリには、加算器、減算器、乗算器などの基本的な演算器が用意されている。開発の対象となるシステムＬＳＩの多様化、大規模化に伴って、より複雑な演算器（例えば、浮動小数点演算器や三角関数演算器）を用いた演算を行うことが必要とされている。従来の動作合成においては、このような複雑な演算は、一つのマクロやＩＰ（Intellectual  Property）などを基準とした単位で演算ライブラリに備えられていた。
【００１１】
浮動小数点を用いた演算を有する動作記述に対して、動作合成を行うと場合を例示して、従来の動作合成に関して説明を行う。上述のように、浮動小数点演算を行う演算器（以下、浮動小数点演算器と呼ぶ）がマクロとして演算ライブラリに用意されている。この場合、動作合成を実行すると、スケジューリング、共有化は、この浮動小数点演算器のマクロを単位として行われることになる。
【００１２】
また、三角関数を用いた演算を有する動作記述に対して、動作合成を行うと場合を例示して、従来の動作合成に関して説明を行う。三角関数を用いた演算では、引数の値に対応する演算結果をテーブルとして構成し、直接数値で表現していた。この場合、三角関数を有する動作記述を動作合成すると、三角関数の演算部分には各テーブルが割り当てられる。したがって、上述の浮動小数点演算器と同様に、スケジューリング、共有化の自由度に制限が生じてしまうこととなる。
【００１３】
【非特許文献１】日経エレクトロニクス、1996,2,12（ＮＯ，655）、Ｐ146〜Ｐ169、日経ＢＰ社、「伝送用ＬＳＩを動作合成で開発、機能設計の期間が１／１０に短縮」
【発明の開示】
【発明が解決しようとする課題】
【００１４】
このように、複雑な演算器のマクロを有する演算ライブラリを用いた動作合成においては、スケジューリングや共有化を行なう場合、それらはマクロ同士（または、ＩＰ同士）で行われる。そのため、システムＬＳＩの動作合成では、スケジューリングや共有化の自由度に制限が生じてしまう場合がある。システムＬＳＩの開発において、動作合成におけるスケジューリングや共有化の自由度が制限されると、最適な動作合成結果を得られない場合がある。
【００１５】
つまり、従来はＣ／Ｃ＋＋言語などで記述されたシステム仕様を流用してハードウェア部分の動作記述としていた。しかしながら、Ｃ／Ｃ＋＋言語などで記述されたシステム仕様の記述の仕方によっては、上記のような自由度に関する制限に起因して、最適な動作合成結果を得られないことがあるという問題があった。
【課題を解決するための手段】
【００１６】
以下に、［発明を実施するための最良の形態］で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１７】
上記課題を解決するために、ＬＳＩの設計における動作合成に用いられる演算ライブラリ（２６）を生成するライブラリ生成プログラム（３２）をコンピュータに実行させる。そのプログラム（３２）は、
（ａ）入力装置（２）を用いて入力された、生成対象の前記演算ライブラリ（２６）に対応するパラメータ（１４）を供給するステップと、
（ｂ）前記パラメータ（１４）に応答して、動作合成時に共有化可能な演算器で構成される高級演算器を生成するステップと、
（ｃ）前記高級演算器を有する前記演算ライブラリ（２６）を構成するステップ
を具備する方法をコンピュータで実行可能なライブラリ生成プログラムである。
【発明の効果】
【００１８】
本発明の演算ライブラリは、浮動小数点や三角関数などの複雑な演算を実行する演算器に対応する演算器ライブラリ（例えば、浮動小数点加算ライブラリやＳＩＮ関数ライブラリ）を備えている。この演算器ライブラリは、動作合成におけるスケジューリング、共有化が可能な単純な演算器の組み合わせで構成されている。したがって、動作記述に上記のような複雑な演算が含まれていたとしても、動作合成時の演算器のスケジューリング、共有化が制限され、その自由度が低下してしまうことがない。また、Ｃ言語やＣ＋＋言語などを用いてシステム仕様が記述されている場合に、その記述からハードウェア用動作記述への移行を円滑に行うことが可能となる。
【発明を実施するための最良の形態】
【００１９】
以下に、図面を参照して、本発明を実施するための形態について説明を行う。なお、以下の実施形態において、動作レベル（アルゴリズム・レベル）の記述をアルゴリズム記述と呼ぶ。また、ＲＴＬの記述をＲＴＬ記述と呼ぶ。また、ゲート・レベルの記述を論理記述と呼ぶ。したがって、動作記述からＲＴＬ記述への展開を動作合成と呼び、ＲＴＬ記述からゲート・レベルへの展開を論理合成と呼ぶ。更に、以下に述べる実施形態では、アルゴリズム記述がＣ／Ｃ＋＋言語を用いて記述されている場合を例示して本願発明の説明を行う。なお、これは本願発明に適用されるアルゴリズム記述がＣ／Ｃ＋＋言語に制限されることを意味するものではない。
【００２０】
［第１の実施形態］
［構成］
図３は、本発明のＬＳＩ設計支援装置１０の構成を例示するブロック図である。図３を参照すると、本実施形態のＬＳＩ設計支援装置１０は、情報処理装置１と入力装置２と表示装置３とを含んで構成されている。また、ＬＳＩ設計支援装置１０によって設計された半導体装置の情報を半導体製造装置に送ることで、本願発明を半導体製造に適用することができる。
【００２１】
情報処理装置１は、パーソナルコンピュータやワークステーションなどに代表される高速演算処理装置である。入力装置２は、情報処理装置１に対して、データを入力する機能を備えたマンマシンインターフェースであり、例えば、キーボードやマウスなどがその代表である。以下の実施形態においては、入力装置２が、キーボードである場合を例示して説明を行う。表示装置３は、情報処理装置１の処理結果を外部に出力する機能を有するマンマシンインターフェースであり、例えば、ＣＲＴや液晶ディスプレイがその代表である。以下の実施形態においては、表示装置３が、ディスプレイ装置である場合を例示し、抽出されたパラメータ値やシミュレーション結果などを視覚的に表示するものとして説明を行う。
【００２２】
上述の情報処理装置１は、図６に示されているように、ＣＰＵ（Central  Processing  Unit：中央演算処理装置）４と、メモリ５と、入出力インターフェース６と、大容量記憶装置７とを備えて構成され、それらはバス８を介して接続されている。ＣＰＵ４は、ＬＳＩ設計支援装置１０に備えられた各種装置の制御や、情報処理装置１に入出力されるデータの処理を行う演算処理装置であり、入力装置２などから受け取ったデータを解釈して演算し、その演算結果を表示装置３などで出力する。メモリ５は、データの書き込みと読み出しができる記憶媒体であり、例えば、ＳＤＲＡＭやＤＤＲ−ＳＤＲＡＭなどがその代表として例示される。入出力インターフェース６は、上述の入力装置２や表示装置３と情報処理装置１との間で実行されるデータ通信を制御する装置である。大容量記憶装置７は、記憶媒体に大量のデータを記録させるために使用する装置であり、例えば、ＨＤＤ（Hard  Disk  Drive）などがその代表として例示される。また、図６に示されているように、大容量記憶装置７はデータ記憶部１１とプログラム記憶部１２とを含んで構成されている。
【００２３】
データ記憶部１１は、大容量記憶装置７が保持する各種データの中で本実施形態に関連するデータが格納されている記憶領域を示している。また同様に、プログラム記憶部１２は、大容量記憶装置７が保持する各種データの中で、本実施形態の動作に関連するコンピュータプログラムが格納されている記憶領域を示している。以下に、図面を参照してデータ記憶部１１とプログラム記憶部１２の詳細な構成に関して説明を行う。
【００２４】
図４は、データ記憶部１１の構成を例示するブロック図である。図４を参照すると、データ記憶部１１は、パラメータ記憶部２１と、アルゴリズム記述記憶部２２と、ソフトウェアアルゴリズム記述記憶部２３と、ハードウェアアルゴリズム記述記憶部２４と、リンク変更アルゴリズム記述記憶部２５と、算術演算ライブラリ２６と、ＲＴＬ記述記憶部２７とを含んで構成されている。
【００２５】
パラメータ記憶部２１は、入力装置２を介して入力されたパラメータを保持している。ハードウェアアルゴリズム記述記憶部２４は、Ｃ言語やＣ＋＋言語で記述されたシステム仕様のアルゴリズム記述を保持している。ソフトウェアアルゴリズム記述記憶部２３は、アルゴリズム記述のソフトウェア部分の記述であるソフトウェアアルゴリズム記述を保持している。ハードウェアアルゴリズム記述記憶部２４は、アルゴリズム記述のハードウェア部分の記述であるハードウェアアルゴリズム記述を保持している。リンク変更アルゴリズム記述記憶部２５は、ハードウェアアルゴリズム記述のリンクを変更したリンク変更後記述を保持している。算術演算ライブラリ２６は、動作合成に使用される演算器を保持している。ＲＴＬ記述記憶部２７は、動作合成によって生成されたＲＴＬ記述を保持している。このＲＴＬは、論理合成に使用される。
【００２６】
図５は、プログラム記憶部１２の構成を例示するブロック図である。図５を参照すると、プログラム記憶部１２は、動作合成実行プログラム３１と、算術演算ライブラリ生成部３２と、ソフトウェア／ハードウェア分割部３３と、リンク変更部３４と、動作合成部３５と、検証部３６と、パラメータ妥当性検証部３７と、浮動小数点ライブラリ生成部３８と、三角関数ライブラリ生成部３９とを含んで構成されている。
【００２７】
動作合成実行プログラム３１は、本実施形態における動作記述からＲＴＬ記述を生成する手順を示している。算術演算ライブラリ生成部３２は、算術演算ライブラリ２６に保持される演算器（複雑な演算器ライブラリ）を生成するための手順を示している。ソフトウェア／ハードウェア分割部３３は、システム仕様のアルゴリズム記述から、ソフトウェア部分の記述とハードウェア部分の記述を特定するための手順を示している。リンク変更部３４は、ハードウェアアルゴリズム記述のリンクを変更したリンク変更後記述を生成するために手順を示している。動作合成部３５は、リンク変更後記述に基づいて動作合成の手順を示している。検証部３６は、検証動作の手順を示している。パラメータ妥当性検証部３７は、算術演算ライブラリ２６に保持される演算器を生成する場合に、入力されるパラメータの妥当性をチェックする手順を示している。このパラメータ妥当性検証部３７は、算術演算ライブラリ生成部３２に示される動作に対応して読み出される。浮動小数点ライブラリ生成部３８は、浮動小数点ライブラリを生成するための手順を示している。三角関数ライブラリ生成部３９は、三角関数ライブラリを生成するための手順を示している。同様に、平方根関数ライブラリ生成部５１、指数関数ライブラリ生成部５２、対数関数ライブラリ生成部５３および絶対値関数ライブラリ生成部５４は、それぞれ、平方根関数ライブラリ、指数関数ライブラリ、対数関数ライブラリおよび絶対値関数ライブラリを生成するための手順を示している。
【００２８】
図６は、パラメータ記憶部２１の構成を例示するテーブル４０である。パラメータは、生成する演算器に応じて指定される。生成される演算器は、指定されるパラメータによって、所望の演算制度に対応してビット幅、アルゴリズムなどが決定される。図６を参照すると、パラメータテーブル４０は、生成演算４１とパラメータデータ４２とが関連付けられている。また、図６に例示されるパラメータテーブル４０は、浮動小数点乗算４３、浮動小数点加算４４、ＳＩＮ関数４５およびＣＯＳ関数４６に関するパラメータを含んで構成されている。
【００２９】
［動作］
以下に、図面を参照して、第１の実施形態の動作に関して説明を行う。図７は、本発明のＬＳＩ設計支援装置１０における第１の実施形態の動作を例示する流れ図である。第１の実施形態における情報処理装置１は、算術演算ライブラリ生成部３２に示される手順に対応して、算術演算ライブラリ２６を生成している。図７を参照すると、算術演算ライブラリ生成部３２は、入力されたパラメータに応答して、パラメータ妥当性検証部３７を読み出す。パラメータ妥当性検証部３７に示される手順に対応して、その入力されたパラメータの妥当性のチェックを行う。
【００３０】
ＬＳＩ設計支援装置１０は、パラメータ妥当性検証部３７に示される手順に対応して、入力されたパラメータの妥当性のチェックを行なうべきか否かの判断を行う。妥当性のチェックを行なうという判断をした場合、入力されたパラメータに関してのチェックを行なう。このとき、ＬＳＩ設計支援装置１０は、パラメータ妥当性検証部３７に示される手順に対応して、妥当でないパラメータが入力された場合には、エラーを出力する。また、妥当でないパラメータが入力された場合に、その入力されたパラメータに基づいて、指定可能な新たなパラメータを要求する構成であっても良い。入力されたパラメータが妥当であった場合、算術演算ライブラリ生成部３２に示される手順に対応して、生成しようとする演算ライブラリ生成部（３８，３９）を読み出す。
【００３１】
以下、浮動小数点加算の演算ライブラリ（以下、浮動小数点加算ライブラリと呼ぶ）を生成する場合に対応して説明を行う。なお、算術演算ライブラリ生成部３２は、入力されたパラメータが、浮動小数点加算ライブラリに対応するものである場合、パラメータ妥当性検証部３７の妥当性のチェックを行なうことなく、浮動小数点ライブラリ生成部３８を読み出す。
【００３２】
図７を参照すると、ＬＳＩ設計支援装置１０は、入力装置２から入力されたパラメータ１３に応答して、算術演算ライブラリ生成部３２に示されている手順に対応して、浮動小数点ライブラリ生成部３８を読み出す。ＬＳＩ設計支援装置１０は、浮動小数点ライブラリ生成部３８に示される手順に対応して浮動小数点加算ライブラリを生成する。上述の図６のパラメータテーブル４０に示されているように、浮動小数点加算ライブラリを生成する場合に使用するパラメータは、入力／出力データの指数部のビット幅と仮数部のビット幅である。
【００３３】
したがって、ＬＳＩ設計支援装置１０は、浮動小数点ライブラリ生成部３８に示される手順に対応して、以下のような処理を実行する浮動小数点加算ライブラリを生成する。浮動小数点加算ライブラリでの処理は、二つの引数の指数部を比較する。その比較によって得られた結果に基づいて、小さいほうの仮数部を合わせるようにシフトする。その後、シフトした後の仮数部どうしを加算する。更に加算結果を正規化する。この正規化では、仮数部を右／左シフトし、浮動小数点の表現である１．ｍに変換する。そして、正規化した結果を浮動小数点の結果として出力する。
【００３４】
図８は、本実施形態における浮動小数点加算ライブラリの構成を例示する図である。図８を参照すると、本実施形態の浮動小数点加算ライブラリは、入力データ／出力データの指数部が５ビット、仮数部が５ビットというパラメータが入力されて生成されている。図８には、本実施形態の浮動小数点加算ライブラリにおいて、変数などの宣言部分以降で、実際の浮動小数点加算演算が、シフト（＜＜）、比較（＝＝、＞＝）、加算（＋）、減算（−）などの単純なビット演算で構成されていることが示されている。上述したように、これらの単純なビット演算は、動作合成用の演算ライブラリとして予め準備されているものである。
ここにおいて、動作合成の実行対象であるハードウェアアルゴリズム記述が、後述する図１３に記載されているような記述の場合を例示して、具体的に本実施形態の浮動小数点加算ライブラリについて説明を行う。この場合、浮動小数点の加算を行なっている“ｂ＋ｃ”の演算は、この浮動小数点加算ライブラリを使用することで、動作合成用に準備されているシフト器、比較器、加算器および減算器で実現されることとなる。（なお、生成されるライブラリの使用方法に関する詳細は後述するものとする。）
【００３５】
これらのシフト器、比較器、加算器および減算器は、動作合成において、スケジューリング、共有化の対象となる。つまり、ハードウェアアルゴリズム記述の中で、上記の“ｂ＋ｃ”の演算以外の部分で、シフト器、比較器、加算器および減算器を使用するような記述があれば、これらは動作合成において演算器の共有化が行われる対象になりうる。
したがって、本実施形態の浮動小数点加算ライブラリを適用することによって、動作記述に浮動小数点加算を行う記述がある場合であっても、動作合成時の演算器のスケジューリング、共有化が制限され、その自由度が低下してしまうことがない。具体的には、浮動小数点加算ライブラリ内で使用しているシフト器、加算器が、浮動小数点加算以外の演算におけるシフト器、加算器と共有化することが可能となる。
【００３６】
なお、上記の浮動小数点加算を実行する演算以外にも、浮動小数点減算や浮動小数点乗算に本実施形態の動作を適用することが可能である。例えば、浮動小数点乗算の場合、指数部を加算し、仮数部を乗算する。そして、それらに対応して正規化することで、浮動小数点加算ライブラリを構成することができる。
【００３７】
以下に、三角関数の演算ライブラリ（以下、三角関数ライブラリと呼ぶ）を生成する場合に対応して説明を行う。上述の図６のパラメータテーブル４０に示されているように、三角関数ライブラリを生成する場合に使用するパラメータは、入力／出力データのビット幅、近似方法、分割数である。近似方法、分割数は、演算制度に影響を及ぼすパラメータである。このパラメータは、所望の演算制度に対応して指定される。
【００３８】
上述したように、図７を参照すると、本実施形態のＬＳＩ設計支援装置１０は、入力装置２から入力されたパラメータに応答して、算術演算ライブラリ生成部３２に示されている手順に対応して、パラメータ妥当性検証部３７を読み出す。ＬＳＩ設計支援装置１０は、パラメータ妥当性検証部３７に示される手順に対応して、入力されたパラメータ１３の妥当性のチェックを行なうべきか否かの判断を行う。ここで、パラメータ妥当性検証部３７は、入力／出力データの指数部のビット幅、近似方法、分割数が入力されたことに応答して、妥当性のチェックを行う。上述したように、妥当でないパラメータ１３が入力された場合には、エラー（または、指定可能な新たなパラメータの要求）を出力する。
【００３９】
例えば、パラメータ妥当性検証部３７は、三角関数ライブラリを生成する場合、分割数に応じて１次式あるいは２次式の補間関数を用いて演算結果を求めている。このときパラメータ妥当性検証部３７は、
入力データの取りうる範囲≧分割数
の関係が満たされているか否かの判断を行う。
以下に、生成する三角関数ライブラリが、
ｙ＝ｓｉｎ（ｘ×π／２）：０≦ｘ＜１  ・・・（１）
というである場合を例示して、パラメータ妥当性検証部３７が実行する妥当性チェックに関して、具体的に説明を行う。
上記（１）式において、ｘは入力データを示している。その入力データが３ビットであるとすると、ｘがとり得る範囲は、
０００：（０）
００１
０１０：（π／８）
０１１
１００：（π／４）
１０１
１１０：（３π／８）
１１１
である。したがって、この場合の分割数の最大値は８である。
ここにおいて、仮にパラメータとして入力された分割数が８を超えていた場合には、パラメータ妥当性検証部３７は、エラーを出力する（または、指定可能な８以下のパラメータを要求する。）。なお、８未満の数字が分割数として指定された場合であっても、ライブラリ生成は正常に行われる。しかしながら、その場合に生成されるライブラリの演算精度は、分割数として８が指定された場合に比較して低下することになる。そのため、必要とする演算精度に基づいてこの分割数を入力することで適切なライブラリを構成することができる。
【００４０】
また、それ以外にも、実際にハードウェアかされた場合の面積などを考慮し、入力データ、出力データのビット幅、分割数に対して制限が設けられている場合、この制限に適合しているか否かをチェックする。
【００４１】
妥当性のチャックが終了した後、算術演算ライブラリ生成部３２に示される手順に対応して三角関数ライブラリ生成部３９を読み出す。ここにおいて、読み出された三角関数ライブラリ生成部３９に示される手順が、ＳＩＮ関数の演算器を生成する場合を例示して説明を行う。以下の実施形態において、本願発明の理解を容易にするために、そのＳＩＮ関数が
ｙ＝ｓｉｎ（ｘ×π／２）：０≦ｘ＜１
であるものを例示して説明する。
【００４２】
三角関数ライブラリを生成する場合、まず関数がとりうる範囲を所定数で分割する。そして、その分割点での値を用いて補間近似する。これによって、三角関数ライブラリを生成することが可能となる。図９は、分割数が４分割である場合の本実施形態の動作を例示するグラフである。上述のように、この分割数は、三角関数ライブラリを生成するためのパラメータのひとつである。
【００４３】
補間近似は、分割点での値を用いて、１次式により補間を行う。また、この補間近似では、２次式を用いることも可能である。１次式または２次式のどちらを選択するかは、入力されるパラメータによって決定される。
【００４４】
補間近似を１次式によって行う場合を以下に説明する。１次式近似（直線近似）の場合、演算結果は下記（１）式によって求められる。
【００４５】
ｙ（ｘ）＝ｙ（ｎ）＋｛ｙ（ｎ＋１）−ｙ（ｎ）｝×ｔ    ・・・（１）
ただし、
ｔ＝｛ｘ−ｘ（ｎ）｝／（１／Ｎ）
Ｎ：分割数、ｎ：任意の分割点
である。
【００４６】
また、補間近似を２次式によって行う場合を以下に説明する。図１０は、ＳＩＮ（Ｘ）と１次近似との差分を２次式で近似するときの動作を例示するグラフである。２次式近似の場合は、１次式近似よりも、より制度の高い演算結果を得ることができる。演算結果は下記（２）式によって求められる。
【００４７】
y（x）＝y（n）＋｛y（n＋1)−y（n））×t＋４t×(１−t)×gain（n）・・・（２）
三角関数ライブラリ生成部３９は、入力装置２を介して入力されたパラメータ記憶部２１にしたがって、上記の処理内容の三角関数ライブラリを生成する。
【００４８】
図１１は、本実施形態における三角関数ライブラリの構成を例示する図である。図１１には、本実施形態の三角関数ライブラリとしてＳＩＮ関数ライブラリが例示されている。そのＳＩＮ関数ライブラリは、入力データ／出力データが８ビットであり、演算アルゴリズムとして、二次近似、分割数が４というパラメータが入力されて生成されている。図１１には、このＳＩＮ関数ライブラリにおける、変数などの宣言部分以降での実際のＳＩＮ関数演算が単純な、比較（＜）、減算（−）、乗算（＊）、シフト（＞＞）、加算（＋）などで構成されていることが示されている。
したがって、上述した浮動小数点加算ライブラリと同様に、ＳＩＮ関数演算を実行する記述と、それ以外で比較器、減算器、乗算器、シフト器、加算器を使用するような演算を行う記述があれば、これらは動作合成において共有化が行われる対象になりうる。
【００４９】
したがって、本実施形態の三角関数ライブラリを適用することによって、動作記述に三角関数演算を行う記述がある場合であっても、動作合成時の演算器のスケジューリング、共有化が制限され、その自由度が低下してしまうことがない。具体的には、三角関数ライブラリ内で使用しているシフト器、加算器が、その三角関数演算以外の演算におけるシフト器、加算器と共有化することが可能となる。なお、上記の三角関数（ＳＩＮ関数）を実行する演算以外の三角関数演算（例えばＣＯＳ演算）にも、本実施形態の動作を適用することが可能である。また、近似方法として、１次式、２次式を適用して場合を例示して説明を行ってきた。これ以外にも、例えば、ビット単位の演算である乗算、シフト、加算を用いた近似式を適用することも可能である。
【００５０】
上述のように、本実施形態の演算ライブラリは、浮動小数点や三角関数などの複雑な演算を実行する演算器に対応する演算器ライブラリ（例えば、浮動小数点加算ライブラリやＳＩＮ関数ライブラリ）を備えている。この演算器ライブラリは、動作合成におけるスケジューリング、共有化が可能な単純な演算器の組み合わせで構成されている。したがって、動作記述に上記のような複雑な演算が含まれていたとしても、動作合成時の演算器のスケジューリング、共有化が制限され、その自由度が低下してしまうことがない。また、Ｃ言語やＣ＋＋言語などを用いてシステム仕様が記述されている場合に、その記述からハードウェア用動作記述への移行を円滑に行うことが可能となる。
【００５１】
［第２の実施形態］
以下に、図面を参照して、本願発明のＬＳＩ設計支援装置における第２の実施形態について説明を行う。上述の第１の実施形態では、算術演算ライブラリ２６を生成する実施形態について説明を行ってきた。第２の実施形態では、その算術演算ライブラリ２６を用いてＲＴＬ記述を生成する構成・動作に関して説明を行う。
【００５２】
図１２を参照すると、第２の実施形態におけるＬＳＩ設計支援装置１０は、動作合成実行プログラム３１に示される手順に対応して、アルゴリズム記述記憶部２２に保持されているアルゴリズム記述を読み出す。ソフトウェア／ハードウェア分割部３３は、読み出されたアルゴリズム記述の、ハードウェア向けアルゴリズム記述を特定する。ソフトウェア／ハードウェア分割部３３は、特定したハードウェア向けアルゴリズム記述をハードウェアアルゴリズム記述記憶部２４に保持する。リンク変更部３４は、ハードウェアアルゴリズム記述記憶部２４に保持されているハードウェア向けアルゴリズム記述と、算術演算ライブラリ２６に保持されている演算器とを読み出す。
【００５３】
リンク変更部３４は、そのハードウェア向けアルゴリズム記述で使用されている演算に対し、算術演算ライブラリ２６に保持されている演算器の使用が可能なように変更を行う。リンク変更部３４は変更結果を、リンク変更後記述としてリンク変更アルゴリズム記述記憶部２５に保持させる。
【００５４】
動作合成部３５は、そのリンク変更アルゴリズム記述記憶部２５に保持されているリンク変更後記述と算術演算ライブラリ２６の演算器とに基づいて動作合成を行い、ＲＴＬ記述を生成する。
【００５５】
以下に、具体的なリストを用いて、第２の実施形態の動作について説明を行う。図１３は、ハードウェアアルゴリズム記述記憶部２４に保持されるハードウェア向けアルゴリズム記述の例を示すリストである。図１３に示されるリストは、Ｃ＋＋言語で記述された設計対象のアルゴリズムから、ハードウェア部分として切り出された記述の例である。
【００５６】
図１４は、第１の実施形態の動作によって生成された浮動小数点の乗算、加算を行う浮動小数点演算器ライブラリである。図１４に示されるライブラリは、指数部５ビット、仮数部５ビットの浮動小数点を示している。以下の実施形態において、ハードウェア化する場合の設計仕様が、指数部５ビット、仮数部５ビットという設計仕様である場合を例示して説明を行う。通常、Ｃ＋＋言語での浮動小数点は、３２ビットあるいは６４ビットとして定義されている。上記の設計仕様の場合、そのまま３２ビットあるいは６４ビットの浮動小数点演算器ライブラリを構成すると、冗長なハードウェアを構成してしまうことになる。
【００５７】
図１５は、リンク変更部３４によって生成されるリンク変更後記述の例を示すリストである。図１５を参照すると、図１５を参照すると、そのリストに示されるリンク変更後記述には、図１４の浮動小数点演算ライブラリへのリンク宣言部が追加されている。また、リンク変更部３４は、図１３に示されているハードウェア向けアルゴリズム記述用いられている浮動小数点変数（ａ、ｂ、ｃ）の演算
（＊ｘ＝ａ×ｂ＋ｃ）
が、生成した浮動小数点演算ライブラリ中の浮動小数点の演算となるように、浮動小数点変数（ａ、ｂ、ｃ）の宣言部分が、図１４のリストにおける
ｆｌｏａｔ＿５＿５
と変更する。
【００５８】
これによって、生成されたリンク変更後記述が動作合成部３５に渡される。動作合成部３５は、そのリンク変更後記述と、算術演算ライブラリ２６に登録されている演算器とに対応してＲＴＬ記述を生成する。なお、上述の実施形態では、Ｃ言語／Ｃ＋＋言語などがサポートしている関数のオーバーロード機能を利用している。そのため、変数の宣言部を変更するだけで演算の置き換えが可能となる。仮にオーバーロードをサポートしていない言語でアルゴリズム記述が構成されていた場合、外部からの指示に対応して演算を置き換えることで、本実施形態の動作を実現可能である。
【図面の簡単な説明】
【００５９】
【図１】図１は、従来の動作合成の流れを示す流れ図である。
【図２】図２は、従来の演算ライブラリの構成を示すテーブルである。
【図３】図３は、本願発明のＬＳＩ設計支援システムの構成を例示するブロック図である。
【図４】図４は、データ記憶部１１の構成を例示するブロック図である。
【図５】図５は、プログラム記憶部１２の構成を例示するブロック図である。
【図６】図６は、パラメータと演算器との対応を示すテーブルである。
【図７】図７は、第１の実施形態の動作を例示する流れ図である。
【図８】図８は、本実施形態における浮動小数点加算ライブラリの構成を例示する図である。
【図９】図９は、本実施形態の動作を例示するグラフである。
【図１０】図１０は、ＳＩＮ（Ｘ）と１次近似との差分を２次式で近似するときの動作を例示するグラフである。
【図１１】図１１は、本実施形態における三角関数ライブラリの構成を例示する図である。
【図１２】図１２は、第２の実施形態の動作を例示する流れ図である。
【図１３】図１３は、ハードウェアアルゴリズム記述例である。
【図１４】図１４は、リンク変更部ソース例である。
【図１５】図１５は、リンク変更後記述例である。
【符号の説明】
【００６０】
１０…ＬＳＩ設計支援装置
１…情報処理装置
２…入力装置
３…表示装置
４…ＣＰＵ
５…メモリ
６…入出力インターフェース
７…大容量記憶装置
８…バス
１１…データ記憶部
１２…プログラム記憶部
１３…パラメータ
１４…実行結果
２１…パラメータ記憶部
２２…アルゴリズム記述記憶部
２３…ソフトウェアアルゴリズム記述記憶部
２４…ハードウェアアルゴリズム記述記憶部
２５…リンク変更アルゴリズム記述記憶部
２６…算術演算ライブラリ
２７…ＲＴＬ記述記憶部
３１…動作合成実行プログラム
３２…算術演算ライブラリ生成部
３３…ソフトウェア／ハードウェア分割部
３４…リンク変更部
３５…動作合成部
３６…検証部
３７…パラメータ妥当性検証部
３８…浮動小数点ライブラリ生成部
３９…三角関数ライブラリ生成部
４０…テーブル
４１…生成演算
４２…パラメータ
４３…浮動小数点乗算
４４…浮動小数点加算
４５…ＳＩＮ演算
４６…ＣＯＳ演算
５１…平方根関数ライブラリ生成部
５２…指数関数ライブラリ生成部
５３…対数関数ライブラリ生成部
５４…絶対値関数ライブラリ生成部
１０１…テーブル
【図１】
2007316731.tif 000003
【図２】
2007316731.tif 000004
【図３】
2007316731.tif 000005
【図４】
2007316731.tif 000006
【図５】
2007316731.tif 000007
【図６】
2007316731.tif 000008
【図７】
2007316731.tif 000009
【図８】
2007316731.tif 000010
【図９】
2007316731.tif 000011
【図１０】
2007316731.tif 000012
【図１１】
2007316731.tif 000013
【図１２】
2007316731.tif 000014
【図１３】
2007316731.tif 000015
【図１４】
2007316731.tif 000016
【図１５】
2007316731.tif 000017