(57)【要約】【課題】  ハードウェアモデルの修正を容易に行うことのできるアーキテクチャ検証装置を得る。【解決手段】  ハードウェアモデル２００ａ，２００ｂは、それぞれ、ハードウェアの動作とデータ処理単位とタイミングとを示す記述に基づいてシミュレーションを行う。この記述として、アルゴリズム動作記述２１１とデータアクセス記述２１２とタイミング生成記述２１３とを分けて構成する。これにより、データ処理単位の変更や動作タイミングの変更に対して、動作記述の修正を不要とする。【選択図】        図１
2007018440.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアの動作とデータ処理単位とタイミングとを示す記述に基づいて、ハードウェアモデルでシミュレーションを行うアーキテクチャ検証装置において、
前記記述を、アルゴリズム動作記述とデータアクセス記述とに分けたことを特徴とするアーキテクチャ検証装置。
【請求項２】
ハードウェアの動作とデータ処理単位とタイミングとを示す記述に基づいて、ハードウェアモデルでシミュレーションを行うアーキテクチャ検証装置において、
前記記述を、アルゴリズム動作記述とタイミングを示す記述とに分けたことを特徴とするアーキテクチャ検証装置。
【請求項３】
複数のハードウェアモデルに共通のメモリ領域とレジスタ領域を設け、
前記複数のハードウェアモデルがバスを介してデータ転送する場合のシミュレーションでは、前記共通のメモリ領域またはレジスタ領域のうち少なくともいずれか一方を用いてデータ転送するようにしたことを特徴とする請求項１または請求項２記載のアーキテクチャ検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ハードウェアとソフトウェアで構成されるシステムのアーキテクチャを検証するアーキテクチャ検証装置に関するものである。
【背景技術】
【０００２】
一般に、ＬＳＩ（Large Scale Integrated circuit）等の論理装置を設計する上でその機能や性能の検証を目的として動作シミュレーションが行われている。
アルゴリズム検証用ＣプログラムをＬＳＩとして実現するアーキテクチャに合わせたハードウェアモデルにマッピングし、アーキテクチャレベルのシミュレーションを行うことにより、実現されるＬＳＩの性能、必要メモリ容量、バス混雑度合いを論理設計前に評価することが可能となる。このようなアーキテクチャ検証においては、例えば、特許文献１に記載されているように、ソフト／ハードの処理分割、ハードウェア・ブロックの処理単位、バスのビット幅／アービトレーション等、アーキテクチャの構成を変更することにより、最適なアーキテクチャを導き出すことが可能となる。
【０００３】
【特許文献１】特開２００４−３８３９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、アルゴリズム検証用Ｃプログラムを単純にハードウェア・モデルにマッピングした場合、アーキテクチャの構成変更によるハードウェアモデルの修正に多大な労力を要する。また、アーキテクチャの要素となる各ハードウェアブロック間のデータ転送はバスを介して行われるが、シミュレーション時において、バスのハードウェア・モデルにデータを転送させることは、シミュレーション実行を遅くさせる原因となる。
【０００５】
この発明は上記のような課題を解決するためになされたもので、ハードウェアモデルの修正を容易に行うことのできるアーキテクチャ検証装置を得ることを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係るアーキテクチャ検証装置は、ハードウェアの動作とデータ処理単位とタイミングとを示す記述に基づいて、ハードウェアモデルでシミュレーションを行う場合、記述を、アルゴリズム動作記述とデータアクセス記述とに分けるようにしたものである。
【発明の効果】
【０００７】
この発明のアーキテクチャ検証装置は、ハードウェアモデルの記述を、アルゴリズム動作記述とデータアクセス記述とに分けたので、ハードウェアモデルの修正を容易に行うことができる。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
図１は、この発明の実施の形態１によるアーキテクチャ検証装置におけるハードウェアモデルの説明図であるが、この説明に先立ち、アーキテクチャ検証装置における概念を説明する。
図２は、アーキテクチャ検証装置でアルゴリズム検証用Ｃプログラムをマッピングする場合の説明図である。
【０００９】
ハードウェアイメージのないアルゴリズム検証用Ｃプログラム１を、ソフトウェア処理とハードウェア処理に分割し、ソフトウェア処理をＣＰＵ１００に割り当て、ハードウェア処理を各ハードウェアブロックのハードウェアモデル２００ａ，２００ｂ，２００ｃに割り当てる。ＣＰＵ１００、ハードウェアモデル２００ａ，２００ｂ，２００ｃが参照するデータ領域は、主メモリモデル３００、もしくはＣＰＵ１００のレジスタ１０１や各ハードウェアモデル２００ａ，２００ｂ，２００ｃ内の個別メモリ２０１、レジスタ２０２に割り当てられる。また、データはバスモデル４００を介して参照される。
【００１０】
アルゴリズム検証用Ｃプログラム１の動作がＣＰＵ１００とハードウェアモデル２００ａ，２００ｂ，２００ｃに割り当てられ、データ領域が主メモリモデル３００、個別メモリ２０１、レジスタ１０１、２０２に割り当てられた後、各モデルにクロックをベースとした時間単位で全体の動作をシミュレーションできるようにすれば、実現されるＬＳＩと同じ動作をシミュレーションできるようになる。
【００１１】
これにより、ＬＳＩの論理設計前であるアーキテクチャ設計段階にて、実現されるＬＳＩの動作の確認ができ、ＬＳＩの処理速度、メモリ使用量、バス混雑度の性能を評価できる。本評価を行うことにより、実現しようとするＬＳＩの処理能力、ボトルネック等の問題点、改善点を明確にすることが可能になる。問題点、改善点が明確になれば、アーキテクチャを変更する（ソフトウェアとハードウェアの分割変更、ハードウェアの処理単位変更、バスのデータ幅/処理優先順位変更）ことにより、最適なＬＳＩのアーキテクチャを見出すことが可能となる。
【００１２】
上記のような構成において、アルゴリズム検証用Ｃプログラム１を、単純にハードウェアモデル２００ａ，２００ｂ，２００ｃにマッピングした場合、各ハードウェアモデル２００ａ，２００ｂ，２００ｃの記述に、動作、データ処理単位、タイミングが混在した形となり、アーキテクチャの変更によるハードウェアモデルの修正に多大な労力を要することになる。そこで、本発明では、図１に示すように、各ハードウェアモデル２００ａ，２００ｂの記述を、アルゴリズム動作記述２１１、データアクセス記述２１２、タイミング生成記述２１３に分けるよう構成している。
【００１３】
図１において、アルゴリズム動作記述２１１は、ＬＳＩで実現する動作／機能、および、動作の順序を示した記述である。例えば、変数Ａと変数Ｂとを加算し、結果が正の値であれば、加算結果と変数Ｃとを乗算して変数Ｍに格納する、といったことを示す記述である。
【００１４】
また、データアクセス記述２１２とは、次のような記述である。即ち、アーキテクチャ検証では、変数の参照手順、格納手順の詳細は必ずしも記述する必要はないが、各変数がレジスタであるのか、メモリであるのかを示す必要があり、かつ、レジスタの場合は演算処理をしているハードウェアモデル内に存在するレジスタであるのか、他のハードウェアモデル内に存在するレジスタであるのかを示す必要がある。そこで、このような変数の参照と格納を示す記述としてデータアクセス記述を用意している。
【００１５】
また、タイミング生成記述２１３とは次のような記述である。即ち、上述したアルゴリズム動作記述２１１、データアクセス記述２１２は論理的な動作を記述しており、実現されるＬＳＩで何サイクルで処理されるかといった点については記述されていない。そこで、このようなタイミングを指定するためにタイミング生成記述２１３を用意する。また、このタイミング生成記述２１３は、データアクセスに対するタイミング生成記述と、アルゴリズム動作に対するタイミング生成記述がある。
【００１６】
図１に示すようなハードウェアモデルにおいて、ハードウェアで処理されるデータの単位が変更された場合、動作そのものは変更とならないが、データのアクセス単位が変更となり、これに伴い、他のハードウェアとの同期タイミングが変更となる。
【００１７】
例えば、画像データの処理において、１画面のデータを一気に読み込んでデータの処理をする場合と、１ラインずつデータを読み込んでデータ処理を行う場合の２ケースが考えられる。ＬＳＩの中には、複数のハードウェアブロックが存在し、それぞれ固有の処理機能を持っている。１画面のデータを一気に読み込んで処理する場合は、１個のハードウェアブロックが１画面のデータを全て処理した後に別のハードウェアブロックにデータ転送するという方法をとる。一方、１ラインずつデータを読み込んで処理する場合は、１ラインずつの処理を行って別のハードウェアブロックにデータ転送するという方法をとる。
【００１８】
この両ケースにおいて、ＬＳＩ全体でみれば処理内容（動作）は同じであるが、１画面のデータで処理する場合は、各ハードウェアブロックが１画面全ての処理が終了するまではデータ転送が発生しないため、同期をとるタイミングが長くなり、かつ、１回のデータ転送量（＝アクセスの単位）が多くなる。一方、１ラインずつのデータで処理する場合は、１ライン処理後にデータ転送が発生するため、１画面ずつの場合に比べて同期をとるタイミングが短くなり、１回のデータ転送量も少なくなる。
【００１９】
また、実現するハードウェアの回路に依存して、ハードウェアモデルの同期タイミングが変更となる。例えば、特定のハードウェアブロックのパイプライン制御において、３段のパイプラインで処理していた回路を４段のパイプラインに変更した場合、そのハードウェアブロック内のパイプライン用同期信号の発生が３回を１単位とした処理から４回を１単位とした処理に変更となる。このことを影響して、メモリへのアクセス頻度も変更となる。
【００２０】
このような、ハードウェアで処理されるデータの単位が変更された場合や、実現するハードウェアの回路に依存するような場合でも、本実施の形態では、アルゴリズム動作記述２１１、データアクセス記述２１２、タイミング生成記述２１３を分けて記述しているため、アーキテクチャ変更時において、モデル全体の記述を変更することなく、データアクセス記述もしくはタイミング生成記述のみの変更により、シミュレーションを行うことが可能となる。
【００２１】
以上のように、実施の形態１のアーキテクチャ検証装置によれば、ハードウェアの動作とデータ処理単位とタイミングとを示す記述に基づいて、ハードウェアモデルでシミュレーションを行うアーキテクチャ検証装置において、記述を、アルゴリズム動作記述とデータアクセス記述とに分けたので、データ処理単位の変更に対し、動作記述の修正を不要とし、データアクセス記述のみの修正により対応が可能である等、アーキテクチャ変更時でも、ハードウェアモデル全体の記述を変更することなく対応できるという効果がある。
【００２２】
また、実施の形態１のアーキテクチャ検証装置によれば、ハードウェアの動作とデータ処理単位とタイミングとを示す記述に基づいて、ハードウェアモデルでシミュレーションを行うアーキテクチャ検証装置において、記述を、アルゴリズム動作記述とタイミングを示す記述とに分けたので、動作タイミングの変更に対し、動作記述の修正を不要とし、タイミング生成記述のみの修正により対応が可能である等、アーキテクチャ変更時でも、ハードウェアモデル全体の記述を変更することなく対応できるという効果がある。
【００２３】
実施の形態２．
図３は、実施の形態２のアーキテクチャ検証装置を示す説明図である。
図において、メモリ領域５０１とレジスタ領域５０２は、それぞれ複数のハードウェアモデル２００ａ，２００ｂに共通に設けられたメモリ／レジスタ領域である。また、バスモデル４００におけるアクセス優先順位制御４０１は、一般にアービトレーションと言われている機能と同等である。即ち、複数のハードウェアモデル２００ａ，２００ｂからバスへのアクセス要求が発生し、ある特定のアクセス要求の処理が終了する前に別のアクセス要求が発生した場合、後に発生したアクセス要求は待ちの状態となる。そこで、待ちの状態になったアクセス要求が複数存在した場合、待ち状態にあるどのアクセス要求を優先して処理するかを決める制御がこのアクセス優先順位制御４０１である。尚、この制御は、待ち状態のアクセス要求の処理順番決めであって、アクセス要求の処理を行う時間（タイミング）は考慮されていない。
【００２４】
バスモデル４００のタイミング生成記述４０２ａ，４０２ｂは、各ハードウェアモデル２００ａ，２００ｂのタイミング生成記述２１３に対応したタイミング生成記述であり、基本的にはこれらのタイミング生成記述２１３と同様の機能を有するものである。尚、図３においては、図２に示したＣＰＵ１００や主メモリモデル３００およびアルゴリズム検証用Ｃプログラム１の図示は省略している。
【００２５】
このように構成されたアーキテクチャ検証装置では、バスを介したハードウェア間のデータ転送動作に対し、シミュレーション上はバスモデル４００にデータを転送することなく、ハードウェアモデル２００ａ，２００ｂが、共通のメモリ/レジスタ領域５０１，５０２にデータを転送することにより、シミュレーション時間の短縮を可能とする。
【００２６】
例えば、ハードウェアモデル２００ａのレジスタの値を、ハードウェアモデル２００ｂが読み込むとした場合。実際のハードウェアの動作に合わせたシミュレーションを実行すれば、ハードウェアモデル２００ａのレジスタ値を、一旦、バスモデル４００に転送し、その後、バスモデル４００にあるレジスタ値をハードウェアモデル２００ｂが読み込むことになる。
【００２７】
一方、図３に示すように、各ハードウェアモデル２００ａ，２００ｂに共通のレジスタ領域５０２を持ち、このレジスタ領域５０２に読み書きできるようにすれば、上記例において、ハードウェアモデル２００ｂが共通のレジスタ領域５０２から読み込むだけで良いことになる。本実施の形態によれば、ハードウェアモデル２００ａ，２００ｂ間のデータ転送は共通のメモリ領域５０１への読み書きのみでよく、バスを経由した実際のデータの流れを模擬する必要はない。
【００２８】
ところで、本実施の形態では、バスにデータが流れていないため、バスのデータ転送処理時間が無視されることになれば、ハードウェア全体の処理時間に大きな誤差が生じ、バスの混雑度も評価できなくなる。そこで、バスモデル４００において、ハードウェアモデル２００ａ，２００ｂからバスへのアクセスタイミングの処理のみを行う。これは、各ハードウェアモデル２００ａ，２００ｂのタイミング生成記述２１３と、バスモデル４００のタイミング生成記述４０２ａ，４０２ｂとの間において、要求/許可（req/ack）の信号によりタイミングを合わせる。また、バスモデル４００内において、アクセス優先順位制御４０１がバスモデル４００内のタイミング生成記述４０２ａ，４０２ｂに対し、バスアクセス許可信号を発生させる順序を制御することにより、ハードウェア全体のタイミングを合わせることが可能となる。
【００２９】
即ち、実施の形態２では、バスにデータを流していないため、バスモデル４００はハードウェアが実際に行うデータ転送処理に必要な動作をしていないことになる。このため、ハードウェアではデータ転送に何サイクルか何十サイクルかを必要とするデータ転送に対し、バスモデル４００では、０サイクルで処理をしてしまうことになる（これが処理時間の誤差となる）。そこで、バスへのアクセス・タイミングの処理において、データ転送処理に必要なサイクルを消費させることにより、バスのデータ転送処理のトータルにおいて、処理サイクル（処理時刻）を整合させるようにしている。
【００３０】
また、図３中に示すデータアクセスライブラリ６００は、ハードウェアモデル２００ａ，２００ｂのデータアクセス記述２１２で使用される関数ライブラリを示す。このデータアクセスライブラリ６００は、データアクセス記述２１２により指定されたデータ量に合わせて、メモリ領域５０１、レジスタ領域５０２への読み込み、書き出しを行う。
【００３１】
例えば、アルゴリズム検証用Ｃプログラム１において、
ａ＝ｂ［３］；
のようにデータの参照（読み込み）があった場合、アルゴリズム動作記述２１１では、データアクセス記述２１２で定義されるメモリへの読み込み関数を用いた記述となる。尚、ｂ［３］とは、ｂという名前の配列（変数の集合）のうち、３番目の要素を意味している。データアクセス記述２１２で定義される配列ｂに対するメモリへの読み込み関数をｒｅａｄ＿ｍｅｍ＿ｂ（）と仮定すると、上記データ参照は、アルゴリズム動作記述では以下のように記述される。
ａ＝ｒｅａｄ＿ｍｅｍ＿ｂ（３）；
【００３２】
データアクセス記述２１２では、メモリ領域５０１より、ｂ［３］を含む一つの要素または複数要素のデータを読み込み、ｂ［３］の値のみをａに返す。データ処理単位がｂの１要素である場合、ｒｅａｄ＿ｍｅｍ＿ｂ（）はメモリ領域５０１からｂ［３］のみを読み込み、データ処理単位がｂの１０要素であった場合、ｂ［３］を含むｂ［］の１０要素（例：ｂ［０］−ｂ［９］）をメモリ領域５０１から読み込む。また、データ処理単位がｂの１０要素（ｂ［０］−ｂ［９］）であり、かつ、ｒｅａｄ＿ｍｅｍ＿ｂ（３）の後、ｒｅａｄ＿ｍｅｍ＿ｂ（５）のアクセスが発生した場合、メモリ領域５０１からの読み込みをせずに、ｂ［３］をメモリ領域５０１から読み込んだ時に得ているｂ［５］の値を返す。
【００３３】
データアクセス記述２１２で定義されるｒｅａｄ＿ｍｅｍ＿ｂ（）はデータアクセスライブラリ６００に定義されるメモリ領域５０１への直接読み込み／書き出し関数を用いてメモリ領域５０１から読み込みを行う。データアクセスライブラリ６００は上述のように、データアクセス記述２１２により指定されたデータ量に合わせて、メモリ領域５０１、レジスタ領域５０２への読み込み／書き出しを行い、読み込みの場合には、メモリ領域５０１から読み込んだデータを返す。
【００３４】
以上のように、実施の形態２のアーキテクチャ検証装置によれば、複数のハードウェアモデルに共通のメモリ領域とレジスタ領域を設け、複数のハードウェアモデルがバスを介してデータ転送する場合のシミュレーションでは、共通のメモリ領域またはレジスタ領域のうち少なくともいずれか一方を用いてデータ転送するようにしたので、シミュレーション時間の短縮を可能とする効果がある。
【図面の簡単な説明】
【００３５】
【図１】この発明の実施の形態１によるアーキテクチャ検証装置を示す説明図である。
【図２】この発明の実施の形態１によるアーキテクチャ検証装置でアルゴリズム検証用Ｃプログラムをマッピングする場合の説明図である。
【図３】この発明の実施の形態２によるアーキテクチャ検証装置を示す説明図である。
【符号の説明】
【００３６】
１  アルゴリズム検証用Ｃプログラム、２００ａ，２００ｂ，２００ｃ  ハードウェアモデル、２１１  アルゴリズム動作記述、２１２  データアクセス記述、２１３  タイミング生成記述、４００  バスモデル、５０１  メモリ領域、５０２  レジスタ領域。
【図１】
2007018440.tif 000003
【図２】
2007018440.tif 000004
【図３】
2007018440.tif 000005