(57)【要約】【課題】ハードウエアの新規作成による負荷の削減や、システムの短期開発及びシステムの信頼性を向上させることを目的とする。【解決手段】動作実績のある検証済みのハードウエアに係るハードウエア情報をデータベースに格納する格納手段と、システム仕様によって要求される機能群を個々の機能に分割し、分割した個々の機能を、アルゴリズムブロックと、アルゴリズムを読み出すアルゴリズム呼び出しブロックと、に分割した機能ブロックデータベースを構築する構築手段と、アルゴリズムブロックと同じ機能を持つハードウエアに係るハードウエア情報をデータベースから抽出する抽出手段と、を有することによって課題を解決する。【選択図】図１
2008009858.tif 000002
【特許請求の範囲】
【請求項１】
プログラム言語を用いて記述されているシステム仕様を基に、システム仕様によって要求される機能を、ハードウエアで実現する機能と、ソフトウエアで実現する機能と、に割り当てることにより中央処理装置を備える集積回路の設計を行う集積回路設計装置であって、
動作実績のある検証済みのハードウエアに係るハードウエア情報をデータベースに格納する格納手段と、
前記システム仕様によって要求される機能群を個々の機能に分割し、分割した個々の機能を、アルゴリズムブロックと、アルゴリズムを読み出すアルゴリズム呼び出しブロックと、に分割した機能ブロックデータベースを構築する構築手段と、
前記アルゴリズムブロックと同じ機能を持つハードウエアに係る前記ハードウエア情報を前記データベースから抽出する抽出手段と、
を有することを特徴とする集積回路設計装置。
【請求項２】
前記抽出手段は、アルゴリズム名及び／又はアルゴリズム内のパラメータ名を含む検索条件に基づいて、前記アルゴリズムブロックと同じ機能を持つハードウエアに係る前記ハードウエア情報を前記データベースから抽出することを特徴とする請求項１に記載の集積回路設計装置。
【請求項３】
前記アルゴリズムブロックを、前記抽出手段が抽出した前記ハードウエア情報に係るソフトウエアモデルと置き換え、前記システム仕様の正当性確認で用いたテストに合格した場合、前記アルゴリズムブロックを前記ハードウエア情報に係るハードウエアに割り付ける割り付け手段を更に有することを特徴とする請求項１又は２に記載の集積回路設計装置。
【請求項４】
プログラム言語を用いて記述されているシステム仕様を基に、システム仕様によって要求される機能を、ハードウエアで実現する機能と、ソフトウエアで実現する機能と、に割り当てることにより中央処理装置を備える集積回路の設計を行う集積回路設計装置における集積回路設計方法であって、
動作実績のある検証済みのハードウエアに係るハードウエア情報をデータベースに格納する格納ステップと、
前記システム仕様によって要求される機能群を個々の機能に分割し、分割した個々の機能を、アルゴリズムブロックと、アルゴリズムを読み出すアルゴリズム呼び出しブロックと、に分割した機能ブロックデータベースを構築する構築ステップと、
前記アルゴリズムブロックと同じ機能を持つハードウエアに係る前記ハードウエア情報を前記データベースから抽出する抽出ステップと、
を有することを特徴とする集積回路設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路設計装置及び集積回路設計方法に関する。
【背景技術】
【０００２】
中央処理装置を備える集積回路を設計する際、まず、開発対象となるシステムの仕様をＣ言語等のプログラム言語によって記述する。
【０００３】
そのプログラム言語で記述されたシステム仕様に対して、入力データ及び入力データに対する出力期待値を用意したテストを作成し、シミュレーションを行うことで、そのシステム仕様が、所望の開発対象であるシステムを反映していることを検証する。
【０００４】
その後、システム仕様からハードウエアで実現する機能とソフトウエアで実現する機能とに分割、割り当てを行う。
【０００５】
ハードウエアで実現する機能に関しては、その機能をハードウエアの論理回路として実現し、その論理回路を組み合わせて、半導体集積回路を作成する。
【０００６】
個々の機能をハードウエアで実現するのかソフトウエアで実現するのかの割り当て方法としては、一般的に、ソフトウエア処理では時間のかかる機能から優先的にハードウエアへ割り当てる方法が用いられている。
【０００７】
それは、設計者による机上計算、若しくはシステムのシミュレーションモデルを用いたシミュレーション結果に基づいて行われる。
【０００８】
ハードウエアで実現する機能が決定すると、手作業によるハードウエアの作成、若しくは、システム仕様記述からの動作合成によるハードウエア作成を行っている。
【０００９】
システム記述からのハードウエアを出力する動作合成ツールとして、Ｆｏｒｔｅ社のＣｙｎｔｈｅｓｉｚｅｒや、Ｙ  Ｅｘｐｌｏｒａｔｉｏｎｓ社のｅＸＣｉｔｅ等が知られている。
【００１０】
【特許文献１】特開２００５−２４２６４２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら従来の技術では、ハードウエアで実現するよう割り当てられた機能を実際にハードウエアで実現させる際、新規にハードウエアを作成する負荷が生じている。
【００１２】
手作業によるハードウエアの作成においては、ハードウエアの作成負荷と同時に、作成したハードウエア自身の検証が必要となる。動作合成によるハードウエアの作成においては、時間の概念のないソフトウエアから時間の概念を持つハードウエアへの変換における技術的な課題がある。また、動作合成ツールに適したシステム記述が必要になる等、現時点では、人手の介入が必要となっている。
【００１３】
また、動作合成前後の回路の等価性を検証する等価性検証ツールが存在しないため、手作業によるハードウエア作成と同様に、ハードウエア自身の検証が別に必要となる。検証作業は、一般に、ハードウエア開発における全工程の約７割を占めていると言われており、ハードウエア作成における大きな負荷となっている。
【００１４】
また、市場の要求により、システムは、ますます複雑化・大規模化しており、且つ、短期開発が求められている。
【００１５】
このような状況の中で、システム仕様からのハードウエアとソフトウエアとの分割・割り当て、そして、新たなハードウエアを作成するという手法では、要求されるシステムの短期開発及び品質の保持が困難になってきている。
【００１６】
本発明はこのような問題点に鑑みなされたもので、ハードウエアの新規作成による負荷の削減や、システムの短期開発及びシステムの信頼性を向上させることを目的とする。
【課題を解決するための手段】
【００１７】
そこで、本発明の集積回路設計装置は、プログラム言語を用いて記述されているシステム仕様を基に、システム仕様によって要求される機能を、ハードウエアで実現する機能と、ソフトウエアで実現する機能と、に割り当てることにより中央処理装置を備える集積回路の設計を行う集積回路設計装置であって、動作実績のある検証済みのハードウエアに係るハードウエア情報をデータベースに格納する格納手段と、システム仕様によって要求される機能群を個々の機能に分割し、分割した個々の機能を、アルゴリズムブロックと、アルゴリズムを読み出すアルゴリズム呼び出しブロックと、に分割した機能ブロックデータベースを構築する構築手段と、アルゴリズムブロックと同じ機能を持つハードウエアに係るハードウエア情報をデータベースから抽出する抽出手段と、を有することを特徴とする。
【００１８】
係る構成とすることにより、ハードウエアの新規作成による負荷の削減や、システムの短期開発及びシステムの信頼性を向上させることができる。
【００１９】
なお、集積回路設計装置とは、例えば、後述する情報処理装置１等に対応する。
【００２０】
また、本発明は、集積回路設計方法としてもよい。
【発明の効果】
【００２１】
本発明によれば、ハードウエアの新規作成による負荷の削減や、システムの短期開発及びシステムの信頼性を向上させることができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施形態について図面に基づいて説明する。
【００２３】
図１は、情報処理装置の一例のハードウエア構成図である。図１に示されるように、情報処理装置１は、ハードウエア構成として、入力装置１１と、表示装置１２と、記録媒体ドライブ装置１３と、ＲＯＭ１５と、ＲＡＭ１６と、ＣＰＵ１７と、インターフェース装置１８と、ＨＤ１９と、を含む。
【００２４】
入力装置１１は、情報処理装置１の操作者（又はユーザ）が操作するキーボード及びマウス等で構成され、情報処理装置１に各種操作情報等を入力するのに用いられる。表示装置１２は、情報処理装置１の操作者が利用するディスプレイ等で構成され、各種情報（又は画面）等を表示するのに用いられる。インターフェース装置１８は、情報処理装置１をネットワーク等に接続するインターフェースである。
【００２５】
後述する情報処理装置１の機能又は後述するフローチャート等に係るプログラムは、例えば、ＣＤ−ＲＯＭ等の記録媒体１４によって情報処理装置１に提供されるか、ネットワーク等を通じてダウンロードされる。記録媒体１４は、記録媒体ドライブ装置１３にセットされ、プログラムが記録媒体１４から記録媒体ドライブ装置１３を介してＨＤ１９にインストールされる。なお、プログラムは、始めからＨＤ１９等にインストールされていてもよい。
【００２６】
ＲＯＭ１５は、情報処理装置１の電源投入時に最初に読み込まれるプログラム等を記録する。ＲＡＭ１６は、情報処理装置１のメインメモリである。ＣＰＵ１７は、必要に応じて、ＨＤ１９よりプログラムを読み出して、ＲＡＭ１６に格納し、プログラムを実行することで、後述する機能の全て又は一部を提供したり、後述するフローチャートの一部を実行したりする。また、ＨＤ１９は、プログラム以外に、例えば後述するハードウエアＩＰデータベース等を格納する。
【００２７】
図２は、集積回路設計処理の一例を示すフローチャートである。
ステップＳ１０１において、情報処理装置１は、動作実績のある検証済みハードウエアをハードウエアＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）としてハードウエアＩＰデータベースに登録する。この登録作業は、ある機能を持つハードウエアにおいて、検証が行われ動作が確認された時に、情報処理装置１が、そのハードウエアをハードウエアＩＰとしてハードウエアＩＰデータベースに登録する。
【００２８】
ハードウエアＩＰデータベースに登録するハードウエアＩＰは、ハードウエアＩＰ名、ハードウエアＩＰの仕様書、設計データ、ソフトウエアモデル、そして、ハードウエアＩＰの特徴を示すキーワードである。
【００２９】
新たにシステムを開発する者は、どのようなハードウエアＩＰがデータベースに登録されているかを知っている必要はない。
【００３０】
ステップＳ１０２において、開発者は、開発対象となるシステムの仕様をＣ言語により記述する。
【００３１】
ステップＳ１０３において、開発者は、プログラム言語で記述されたシステム仕様に対して、入力データ及び入力データに対する出力期待値を用意したテストを作成し、シミュレーションを行う。このことで、開発者は、そのシステム仕様が、所望の開発対象であるシステムに対する要望を反映しているか否かを検証する。
【００３２】
ステップＳ１０４において、テストがフェイル（失敗）した場合は、システム仕様が間違っているので、開発者は、ステップＳ１０２に戻り、修正を行う。
【００３３】
ステップＳ１０４において、テストがパス（成功）した場合は、システム仕様の正当性が確認される。従って、情報処理装置１は、このシステム仕様をベースに、ハードウエアとソフトウエアとの分割・割り当てを行い、ハードウエアで実現する機能に関して集積回路の設計を行う。
【００３４】
ステップＳ１０５において、情報処理装置１は、システム仕様で要求される機能群から個々の機能ごとに分割する。更に、情報処理装置１は、個々の機能において、アルゴリズムブロックと、アルゴリズムを呼び出すアルゴリズム呼び出しブロックとに分割を行い、機能ブロックデータベースを作成する。
【００３５】
ステップＳ１０６において、情報処理装置１は、機能ブロックデータベースのアルゴリズムブロックと同じ機能を持つ可能性のあるハードウエアＩＰを探し出すため、ハードウエアＩＰデータベースを検索する。
【００３６】
情報処理装置１は、アルゴリズム名及び／又はアルゴリズム内のパラメータ名及び／又はコメントと、ハードウエアＩＰデータベースに登録されているキーワードとで一致するものがあるか否か、ハードウエアＩＰを検索する。
【００３７】
ステップＳ１０７において、情報処理装置１は、同じ機能を持つ可能性のあるハードウエアＩＰが見つからない場合は、当該アルゴリズムブロックをハードウエアに割り当てず、ステップＳ１１１へ進む。
【００３８】
ステップＳ１０７において、情報処理装置１は、ハードウエアＩＰの候補が見つかった場合、ステップＳ１０８において、アルゴリズムブロックをハードウエアＩＰのソフトウエアモデルと置き換える。そして、情報処理装置１（又は開発者）は、ステップＳ１０３のシステム仕様の正当性確認で用いたテストを実施する。
【００３９】
ステップＳ１０９において、テストが全てパスしたと判定すると、情報処理装置１は、アルゴリズムブロックと、ハードウエアＩＰの機能とが等価であると判断し、ステップＳ１１０へ進む。テストがフェイルしたと判定すると、情報処理装置１は、アルゴリズムブロックと、ハードウエアＩＰの機能とが等価でないと判断し、当該アルゴリズムブロックをハードウエアに割り当てず、ステップＳ１１１へ進む。
【００４０】
ステップＳ１１０において、情報処理装置１は、機能ブロックの該当するアルゴリズムブロックをハードウエアで、即ち、ハードウエアＩＰで実現する機能として割り当てる。ステップ１１１において、情報処理装置１は、全てのアルゴリズムブロックについて、ステップＳ１０６からステップＳ１１０までの処理を繰り返したか否かを判定する。
【００４１】
そして、情報処理装置１は、全てのアルゴリズムブロックについて、検索が行われたと判定すると、図２に示すような処理を終了する。
【００４２】
ステップＳ１１０において、ハードウエアで実現する機能として割り当てが行われた機能は、情報処理装置１によって、ハードウエアＩＰの設計データが用いられて、集積回路の設計が行われる。
【００４３】
そして、割り当てが行われなかった機能については、ソフトウエアにより実現する。即ち、割り当てが行われなかった機能については、中央処理装置においてソフトウエア処理として実現するものとして割り当て、システムを開発する。
【００４４】
図３は、ハードウエアＩＰデータベースの一例を示す図である。２０１は、ハードウエアＩＰデータベースである。２０２は、仕様書、設計データ、ソフトウエアモデルを格納したファイルサーバーである。ここで、ファイルサーバーは、ネットワークを介して情報処理装置１に接続されているものとする。
【００４５】
ハードウエアＩＰデータベース２０１の仕様書、設計データ、ソフトウエアモデルには、ファイルサーバー２０２における格納先が登録されている。
【００４６】
なお、ハードウエアＩＰデータベース２０１に登録されるハードウエアＩＰは、動作実績があり検証済みである必要がある。
【００４７】
設計データは、ハードウエアにマッピングできるデータであり、ハードウエア記述言語であるＶｅｒｉｌｏｇやＶＨＤＬで記述されたＲＴＬモデルである。ソフトウエアモデルは、設計データと等価な機能を持つ例えばＣ言語等で記述されたモデルである。
【００４８】
ハードウエアＩＰデータベース２０１には、ハードウエアＩＰとして、ＪＰＥＧ符号化モジュール、ＪＰＥＧ復号化モジュール、２値化モジュール、エッジ検出フィルタモジュール、そして、シェーディングモジュールが登録されている。また、ＪＰＥＧ符号化モジュールのキーワードとして、ＪＰＥＧ、Ｅｎｄｏｄｅ、エンコード、圧縮が登録されている。
【００４９】
同様に、ＪＥＰＧ復号化モジュールのキーワードとして、ＪＰＥＧ、Ｄｅｃｏｄｅ、デコードが登録されている。また、２値化モジュールのキーワードとして、２値化、ｄｉｇｉｔｉｚｅ、閾値が登録されている。
【００５０】
図４は、開発するシステム仕様の一例を示す図である。本実施形態で開発するシステムは、３０１の画像作成の機能を持つシステムであり、３０２の画像の２値化処理、３０３の回転処理、３０４の圧縮処理を行う単機能ブロックからなる。
【００５１】
開発者はこのシステムをＣ言語により記述し、入力データ及び入力データに対する出力期待値を用意したテストを作成し、シミュレーションを行うことで、このシステム仕様が、所望の開発対象であるシステムの要求を反映しているかを検証する。
【００５２】
図５は、システム仕様によって要求される各機能を、細かな機能ブロックであるアルゴリズムブロックと、アルゴリズム呼び出しブロックとに分割した機能ブロックデータベースの一例を示す図である。
【００５３】
各機能ブロックは、機能を実現するアルゴリズムブロックと、アルゴリズムを呼び出すアルゴリズム呼び出しブロックとに分割できる。４０１は、画像作成機能ブロック（画像作成機能ブロック）であり、アルゴリズムブロックは、２値化処理機能ブロック４０２と、回転処理機能ブロック４０３と、圧縮処理機能ブロック４０４とを持つ。なお、２値化処理機能ブロック４０２は、２値化処理機能ブロックデータベースといっても良い。また、回転処理機能ブロック４０３は、回転処理機能ブロックデータベースといっても良い。また、圧縮処理機能ブロック４０４は、圧縮処理機能ブロックデータベースといっても良い。
【００５４】
また、矢印は、データフローを示している。図５に示される機能ブロック（機能ブロックデータベース）は、情報処理装置１が、Ｃ言語で記述されたシステム仕様を解析し、アルゴリズム部と、アルゴリズム呼び出し部とに分解することで、構築される。
【００５５】
図６は、機能ブロックデータベースにおける２値化処理機能ブロックの詳細を示す図である。５０２は、アルゴリズム呼び出しブロックのＣ言語によるソースコードである。５０３は、アルゴリズムブロックのＣ言語によるソースコードである。
【００５６】
機能ブロックデータベース４０１の構築が完了すると、情報処理装置１は、全てのアルゴリズムブロックに対して、ハードウエアＩＰデータベース２０１に機能が等価な可能性があるハードウエアＩＰがあるか否か、検索を行う。
【００５７】
検索の方法は、アルゴリズムブロックのプログラムにあるアルゴリズム名（プログラム名）及び／又はアルゴリズム内のパラメータ名及び／又はコメントが、ハードウエアＩＰデータベースのキーワードに有るかどうかである。
【００５８】
例えば、アルゴリズムブロック５０３のソースコードにある「２値化」「閾値」が、２値化モジュールのキーワードに含まれている。
【００５９】
従って、ハードウエアＩＰデータベース２０１に登録されているハードウエアＩＰである２値化モジュールの機能が、２値化処理機能ブロック４０２におけるアルゴリズムブロック５０３と等価である可能性がある。
【００６０】
次に、情報処理装置１は、２値化処理機能ブロック４０２のアルゴリズムブロック５０３を、ハードウエアＩＰデータベース２０１の２値化モジュールに登録されているソフトウエアモデルと置き換える。そして、情報処理装置１は、テストを用いてシミュレーションを行い、アルゴリズムブロック５０３がテストをパスするかどうかを確認する。
【００６１】
テストをパスすれば、システムとして成り立つので、機能として等価であると判断できる。従って、情報処理装置１は、２値化処理機能ブロック４０２のアルゴリズムブロック５０３を、ハードウエアに割り当てると判断する。そして、情報処理装置１は、そのハードウエアとして、ハードウエアＩＰデータベース２０１に登録されている２値化モジュールの設計データを用いる。
【００６２】
テストをフェイルすると、情報処理装置１は、機能としては等価でないと判断する。
【００６３】
以上、上述したように、本実施形態によれば、動作実績のある検証済みハードウエアＩＰを優先的にハードウエアに割り当てることにより、ハードウエアの新規作成による負荷の削減を行うことができる。また、ハードウエアの新規作成個所が減ることにより、集積回路の短期開発、及び信頼性の向上が可能となる。
【００６４】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００６５】
例えば、上述した実施形態では、システム仕様及びソフトウエアモデルを記述する言語として、Ｃ言語を用いて説明を行ったが、これに限定されるものではない。同様に、上述した実施形態では、設計データとして、ハードウエア記述言語であるＶｅｒｉｌｏｇやＶＨＤＬで記述されたＲＴＬモデルを用いて説明したが、使用する言語及びモデルの抽象度は、これに限定するものではない。
【図面の簡単な説明】
【００６６】
【図１】情報処理装置の一例のハードウエア構成図である。
【図２】集積回路設計処理の一例を示すフローチャートである。
【図３】ハードウエアＩＰデータベースの一例を示す図である。
【図４】開発するシステム仕様の一例を示す図である。
【図５】システム仕様によって要求される各機能を、細かな機能ブロックであるアルゴリズムブロックと、アルゴリズム呼び出しブロックとに分割した機能ブロックデータベースの一例を示す図である。
【図６】機能ブロックデータベースにおける２値化処理機能ブロックの詳細を示す図である。
【符号の説明】
【００６７】
１    情報処理装置
１１  入力装置
１２  表示装置
１３  記録媒体ドライブ装置
１４  記録媒体
１５  ＲＯＭ
１６  ＲＡＭ
１７  ＣＰＵ
１８  インターフェース装置
１９  ＨＤ
【図１】
2008009858.tif 000003
【図２】
2008009858.tif 000004
【図３】
2008009858.tif 000005
【図４】
2008009858.tif 000006
【図５】
2008009858.tif 000007
【図６】
2008009858.tif 000008