(57)【特許請求の範囲】
【請求項１】
回路構造に関する情報は含まれず、処理動作のみが記述された動作記述から得られたハードウェアの動作情報から該ハードウェアを複数の機能ブロックに分割し、分割した複数の機能ブロックからアクセスされる共有リソースを抽出して、該共有リソースのアクセス情報を作成するブロック分割・共有リソース抽出・アクセス情報作成手段と、
該共有リソースのアクセス情報から、アサーションにより該共有リソースへのアクセスが重複されないように制御するアクセス制御モデルを生成する共有リソースのアクセス制御モデル生成手段とを有するハードウェア検証用プログラミング記述生成装置。
【請求項２】
前記共有リソースのアクセス制御モデル生成手段は、前記アクセス制御モデルとして、サイクル精度レベルで前記ハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語の記述として生成する請求項１に記載のハードウェア検証用プログラミング記述生成装置。
【請求項３】
前記共有リソースのアクセス制御モデルは、前記複数の機能ブロックのうちの少なくとも２つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数を加算し、その加算結果をアサーション条件として前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する請求項２に記載のハードウェア検証用プログラミング記述生成装置。
【請求項４】
前記加算結果が“１”以下であるという条件を前記アサーション条件とする請求項３に記載のハードウェア検証用プログラミング記述生成装置。
【請求項５】
前記加算結果が“１”よりも大きい場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことを該報知手段によりユーザに報知する請求項３または４に記載のハードウェア検証用プログラミング記述生成装置。
【請求項６】
前記共有リソースのアクセス制御モデルは、前記共有リソースがマルチポートメモリの場合に、前記複数の機能ブロックのうちの少なくとも２つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数と、該共有リソースにそれぞれアクセスされる各アドレスを比較した結果とをアサーション条件として、前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する請求項１に記載のハードウェア検証用プログラミング記述生成装置。
【請求項７】
前記各変数が全て”１”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合を除くという条件をアサーション条件とする請求項６に記載のハードウェア検証用プログラミング記述生成装置。
【請求項８】
前記各変数が全て”１”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことをユーザに該報知手段により報知する請求項６または７に記載のハードウェア検証用プログラミング記述生成装置。
【請求項９】
前記共有リソースのアクセス制御モデルが生成されないようにアクセス制御モデル生成禁止情報を動作記述中に指定可能とする請求項１に記載のハードウェア検証用プログラミング記述生成装置。
【請求項１０】
前記共有リソースのアクセス情報は、該共有リソースにアクセスするブロック名、データ書き込みおよび読み出しのうちの少なくともいずれかのアクセスの方向、および、アクセスに使用する信号として、該ブロック名のブロックと該共有リソース間でアクセス動作を実行するタイミングを示す信号、アクセスするアドレスを示す信号および書き込みデータである請求項１に記載のハードウェア検証用プログラミング記述生成装置。
【請求項１１】
前記動作記述から構文および字句を解析処理する構文解析・字句解析手段をさらに有し、前記ブロック分割・共有リソース抽出・アクセス情報作成手段は、該動作記述から構文および字句を解析処理して得られたハードウェアの動作情報から該ハードウェアを複数の機能ブロックに分割する請求項１に記載のハードウェア検証用プログラミング記述生成装置。
【請求項１２】
前記複数の機能ブロックの各ＣＤＦＧをそれぞれ作成するＣＤＦＧ生成手段と、
該各ＣＤＦＧで回路動作を表すノードをスケジューリングおよびステート割り振りするスケジューリング・ステート割り振り手段と、
該機能ブロックの動作をサイクル精度レベルで検証可能なサイクルク精度モデルを生成する機能ブロックのサイクル精度モデル生成手段と、
前記共有リソースの動作をサイクル精度レベルで検証可能なサイクル精度モデルを生成する共有リソースのサイクル精度モデル生成手段とをさらに有する請求項１または１１に記載のハードウェア検証用プログラミング記述生成装置。
【請求項１３】
ブロック分割・共有リソース抽出・アクセス情報作成手段が、回路構造に関する情報は含まれず、処理動作のみが記述された動作記述を記憶部から読み出し、読み出された該動作記述から得られたハードウェアの動作情報から該ハードウェアを機能ブロックに分割して分割された該機能ブロックを該記憶部に記憶し、該記憶部に記憶された該分割した複数の機能ブロックを読み出して、読み出された該分割した複数の機能ブロックからアクセスされる共有リソースを抽出して抽出された共有リソースを該記憶部に記憶し、該記憶部に記憶された該共有リソースを読み出して、読み出された該共有リソースのアクセス情報を作成して、該共有リソースの該アクセス情報を該記憶部に記憶するブロック分割・共有リソース抽出・アクセス情報作成ステップと、
共有リソースのアクセス制御モデル生成手段が、該記憶部に記憶された該共有リソースの該アクセス情報を読み出して、読み出された該共有リソースのアクセス情報から、アサーションにより該共有リソースへのアクセスが重複されないように制御するアクセス制御モデルを生成して、生成された該アクセス制御モデルを該記憶部に記憶する共有リソースのアクセス制御モデル生成ステップとを有するハードウェア検証用プログラミング記述生成方法。
【請求項１４】
前記共有リソースのアクセス制御モデル生成ステップは、前記共有リソースのアクセス制御モデル生成手段が、前記アクセス制御モデルとして、サイクル精度レベルで前記ハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語の記述として生成することを含む請求項１３に記載のハードウェア検証用プログラミング記述生成方法。
【請求項１５】
前記共有リソースのアクセス制御モデル生成ステップにおいて、前記アクセス制御モデルは、前記複数の機能ブロックのうちの少なくとも２つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数を加算し、その加算結果をアサーション条件として、前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する請求項１４に記載のハードウェア検証用プログラミング記述生成方法。
【請求項１６】
前記加算結果が“１”以下であるという条件を前記アサーション条件とする請求項１５に記載のハードウェア検証用プログラミング記述生成方法。
【請求項１７】
前記加算結果が“１”よりも大きい場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことを該報知手段によりユーザに報知する請求項１５または１６に記載のハードウェア検証用プログラミング記述生成方法。
【請求項１８】
前記共有リソースのアクセス制御モデル生成ステップにおいて、該共有リソースがマルチポートメモリの場合に、前記アクセス制御モデルは、前記複数の機能ブロックのうちの少なくとも２つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数と、該共有リソースにそれぞれアクセスされる各アドレスを比較した結果とをアサーション条件として、前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する請求項１４に記載のハードウェア検証用プログラミング記述生成方法。
【請求項１９】
前記各変数が全て”１”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合を除くという条件をアサーション条件とする請求項１８に記載のハードウェア検証用プログラミング記述生成方法。
【請求項２０】
前記各変数が全て”１”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことをユーザに該報知手段により報知する請求項１８または１９に記載のハードウェア検証用プログラミング記述生成方法。
【請求項２１】
前記共有リソースのアクセス制御モデルが生成されないようにアクセス制御モデル生成禁止情報を動作記述中に指定可能とする請求項１３に記載のハードウェア検証用プログラミング記述生成方法。
【請求項２２】
前記共有リソースのアクセス情報は、該共有リソースにアクセスするブロック名、データ書き込みおよび読み出しのうちの少なくともいずれかのアクセスの方向、および、アクセスに使用する信号として、該ブロック名のブロックと該共有リソース間でアクセス動作を実行するタイミングを示す信号、アクセスするアドレスを示す信号および書き込みデータである請求項１３に記載のハードウェア検証用プログラミング記述生成方法。
【請求項２３】
構文解析・字句解析手段が、前記動作記述から構文および字句を解析処理する構文解析・字句解析ステップをさらに有し、前記ブロック分割・共有リソース抽出・アクセス情報作成ステップは、前記ブロック分割・共有リソース抽出・アクセス情報作成手段が、該動作記述から構文および字句を解析処理して得られたハードウェアの動作情報から該ハードウェアを複数の機能ブロックに分割することを含む請求項１３に記載のハードウェア検証用プログラミング記述生成方法。
【請求項２４】
ＣＤＦＧ生成手段が、前記複数の機能ブロックの各ＣＤＦＧをそれぞれ作成するＣＤＦＧ生成ステップと、
スケジューリング・ステート割り振り手段が、該各ＣＤＦＧで回路動作を表すノードをスケジューリングおよびステート割り振りするスケジューリング・ステート割り振りステップと、
機能ブロックのサイクル精度モデル生成手段が、該機能ブロックの動作をサイクル精度レベルで検証可能なサイクル精度モデルを生成する機能ブロックのサイクル精度モデル生成ステップと、
共有リソースのサイクル精度モデル生成手段が、前記共有リソースの動作をサイクル精度レベルで検証可能なサイクル精度モデルを生成する共有リソースのサイクル精度モデル生成ステップとをさらに有する請求項１３または２３に記載のハードウェア検証用プログラミング記述生成方法。
【請求項２５】
請求項１３〜２４のいずれかに記載のハードウェア検証用プログラミング記述生成方法の各ステップを計算機システムによって実行可能な処理手順が記述された制御プログラム。
【請求項２６】
請求項２５に記載の制御プログラムが記録されて前記計算機システムによって該制御プログラムを読み取り可能な可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアの動作を検証可能な汎用プログラミング記述を生成するためのハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラミング記述生成プログラムなどの制御プログラムおよびこれが記録されたコンピュータ読み取り可能な可読記録媒体に関する。
【背景技術】
【０００２】
従来、システムＬＳＩ開発において、設計されたハードウェアの論理的な動作が正しいことを検証するために、アサーション技術が用いられている。アサーションとは、設計者によって指定されたハードウェアの動作において成立すべき正しい動作条件を監視し、シミュレーションによりその条件が満たされない場合には、動作に誤りがあるとして設計者に通知するという技術である。
【０００３】
例えば、ハードウェア中に２つの論理回路ブロック（機能ブロック）と、これら２つの論理回路ブロックに共に使用される共有メモリが実装されているものとする。これら２つの論理回路ブロックから共有メモリへの書き込み動作が行われる場合に、それぞれの書き込み動作時にアクティブになる信号を信号Ａおよび信号Ｂとして、書き込み動作が同一のクロックサイクルで重複されず、信号Ａと信号Ｂは任意のクロックサイクルにおいて同時にアクティブな状態にならないものとする。この動作条件が正しい動作であるとするアサーションは、次の（１）〜（３）ように指定される。
【０００４】
即ち、（１）信号Ａが非アクティブであり、かつ信号Ｂが非アクティブである。または、（２）信号Ａがアクティブであり、かつ信号Ｂが非アクティブである。または、（３）信号Ａが非アクティブであり、かつ信号Ｂがアクティブである。
【０００５】
また、ＬＳＩ設計においては、高位合成技術が用いられている。高位合成とは、ハードウェアの構造に関する情報は含まれず、ハードウェアの処理動作のみが記述された動作記述（動作レベル記述）からＲＴＬ（レジスタ・トランスファ・レベル）の論理回路を生成するという技術である。この高位合成技術の具体的な手法は、例えば特許文献１に開示されている。
【０００６】
さらに、例えば特許文献２および特許文献３には、動作レベル記述に付加されたアサーションなどの情報を高位合成により生成されたＲＴＬ記述に反映させる手法が開示されている。
【０００７】
この特許文献２に開示されている高位合成方法では、動作記述からその動作記述に記述された回路動作を検証する第１アサーション情報を含むＣＤＦＧ（コントロールデータフローグラフ）が抽出され、そのＣＤＦＧから第１アサーション情報が抽出され、そのＣＤＦＧから第１アサーション情報を除いたＣＤＦＧのスケジューリング結果とアロケーション結果に基づいて第１アサーション情報がＲＴＬレベルで記述可能な第２アサーション情報に変換されて、その第２アサーション情報に基づいてＲＴＬレベルで記述されたアサーション記述が生成される。
【０００８】
また、特許文献３に開示されている動作合成方法では、動作記述を基にＲＴＬレベル記述が生成され、動作記述とＲＴＬレベル記述からそれらに含まれる信号、演算や記述文などの対応関係を示す情報が生成されて、その対応関係を示す情報と予め設定された変換ルールとを元に、動作記述に付加された付帯情報がＲＴＬレベル記述に付加される付帯情報に変換される。
【０００９】
ＬＳＩ検証において、汎用プログラミング言語により記述された検証モデルを用いて設計されたハードウェアの動作がサイクル精度で要求仕様を満たすか否かを検証する手法が知られている。ここで述べるサイクル精度とは、ハードウェアの動作について、そのハードウェアの状態をクロックサイクル単位で示すことが可能な精度レベルのことである。例えば、クロックの立ち上がりに同期して動作するハードウェアにおいては、そのクロックの立ち上がりエッジにおけるハードウェア中のレジスタやメモリなどの記憶装置の状態を示すレベルのことである。
【００１０】
例えば、特許文献４には、従来、サイクル精度を検証するために用いられていたＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）シミュレータの代わりに、高位合成により生成されるＣＤＦＧから、ハードウェアをサイクル精度レベルで検証可能なモデルを生成し、シミュレーションを行う手法が開示されている。この特許文献４に開示されているハードウェア検証用プログラミング言語モデル生成方法では、ハードウェアの動作記述からＣＤＦＧが生成され、ハードウェアに要求される動作周波数でＣＤＦＧがスケジューリングされてステート毎に割り振られ、ステート毎にハードウェアの動作モデル（サイクル精度モデル）が汎用プログラミング言語で表現した記述として生成される。このサイクル精度モデルは、ＣＤＦＧに含まれるノードの動作情報を用いて各ノードの動作モデルが生成され、ノードの接続情報を用いて各ノードの動作モデルを計算する際の順序付けが行われることによって、各ステートでシミュレーション可能なモデルとして生成される。
【特許文献１】特開平５−１０１１４１号公報
【特許文献２】特開２００６−１７２１１３号公報
【特許文献３】特開２００６−２８５３３３号公報
【特許文献４】特開２００６−１３９７２９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
一般的に、ハードウェアの動作を検証する際には、ＶＨＤＬなどのＲＴＬ記述言語で記述されたハードウェアの動作をシミュレーションするＨＤＬシミュレータが用いらている。このＨＤＬシミュレータにおいては、ハードウェア内の信号変化をクロック周期よりも短い時間単位で監視して、その信号変化を接続する信号に伝搬させるというイベント駆動方式によりシミュレーションが行われる。したがって、ハードウェアのサイクル精度レベルでの動作検証をＨＤＬシミュレータを用いて行う場合、冗長かつ無駄な計算が多くなり、シミュレーション時間が長くなる。
【００１２】
即ち、アサーションを用いてハードウェアの論理的動作をサイクル精度レベルで検証する際に、例えば特許文献２および特許文献３に開示されているように高位合成により生成されたＲＴＬ記述を用いる場合には、ＨＤＬシミュレータによりシミュレーションを行うために多大な時間が必要とされる。また、回路規模が大きくなり、テストパターンが長くなると、検証のために多大な時間が必要とされ、これによって、ＬＳＩの開発コストが増大する原因となる。
【００１３】
さらに、特許文献４に開示されている従来技術では、ＣＤＦＧからハードウェアをサイクル精度レベルで検証可能なモデルが生成されて、シミュレーションが行われるが、アサーションについては考慮されておらず、ハードウェアの動作において共有リソースに重複するアクセスが発生しないようにアサーションにより制御することはできない。
【００１４】
本発明は、上記従来の問題を解決するもので、サイクル精度レベルでハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語記述として自動生成することにより、高速かつ安価にハードウェアの動作を検証可能で、ＬＳＩの設計・検証期間を短縮できて、開発コストを低減できるハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラミング記述生成プログラムなどの制御プログラムおよび、この制御プログラムを記録したコンピュータ読み出し可能な可読記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明のハードウェア検証用プログラミング記述生成装置は、回路構造に関する情報は含まれず、処理動作のみが記述された動作記述から得られたハードウェアの動作情報から該ハードウェアを複数の機能ブロックに分割し、分割した複数の機能ブロックからアクセスされる共有リソースを抽出して、該共有リソースのアクセス情報を作成するブロック分割・共有リソース抽出・アクセス情報作成手段と、該共有リソースのアクセス情報から、アサーションにより該共有リソースへのアクセスが重複されないように制御するアクセス制御モデルを生成する共有リソースのアクセス制御モデル生成手段とを有するものであり、そのことにより上記目的が達成される。
【００１６】
また、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における共有リソースのアクセス制御モデル生成手段は、前記アクセス制御モデルとして、サイクル精度レベルで前記ハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語の記述として生成する。
【００１７】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における共有リソースのアクセス制御モデルは、前記複数の機能ブロックのうちの少なくとも２つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数を加算し、その加算結果をアサーション条件として前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する。
【００１８】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における加算結果が“１”以下であるという条件を前記アサーション条件とする。
【００１９】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における加算結果が“１”よりも大きい場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことを該報知手段によりユーザに報知する。
【００２０】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における共有リソースのアクセス制御モデルは、前記共有リソースがマルチポートメモリの場合に、前記複数の機能ブロックのうちの少なくとも２つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数と、該共有リソースにそれぞれアクセスされる各アドレスを比較した結果とをアサーション条件として、前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する。
【００２１】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における各変数が全て”１”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合を除くという条件をアサーション条件とする。
【００２２】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における各変数が全て”１”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことをユーザに該報知手段により報知する。
【００２３】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における共有リソースのアクセス制御モデルが生成されないようにアクセス制御モデル生成禁止情報を動作記述中に指定可能とする。
【００２４】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置における共有リソースのアクセス情報は、該共有リソースにアクセスするブロック名、データ書き込みおよび読み出しのうちの少なくともいずれかのアクセスの方向、および、アクセスに使用する信号として、該ブロック名のブロックと該共有リソース間でアクセス動作を実行するタイミングを示す信号、アクセスするアドレスを示す信号および書き込みデータである。
【００２５】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置において、前記動作記述から構文および字句を解析処理する構文解析・字句解析手段をさらに有し、前記ブロック分割・共有リソース抽出・アクセス情報作成手段は、該動作記述から構文および字句を解析処理して得られたハードウェアの動作情報から該ハードウェアを複数の機能ブロックに分割する。
【００２６】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成装置において、前記複数の機能ブロックの各ＣＤＦＧをそれぞれ作成するＣＤＦＧ生成手段と、該各ＣＤＦＧで回路動作を表すノードをスケジューリングおよびステート割り振りするスケジューリング・ステート割り振り手段と、該機能ブロックの動作をサイクル精度レベルで検証可能なサイクルク精度モデルを生成する機能ブロックのサイクル精度モデル生成手段と、前記共有リソースの動作をサイクル精度レベルで検証可能なサイクル精度モデルを生成する共有リソースのサイクル精度モデル生成手段とをさらに有する。
【００２７】
本発明のハードウェア検証用プログラミング記述生成方法は、ブロック分割・共有リソース抽出・アクセス情報作成手段が、回路構造に関する情報は含まれず、処理動作のみが記述された動作記述を記憶部から読み出し、読み出された該動作記述から得られたハードウェアの動作情報から該ハードウェアを機能ブロックに分割して分割された該機能ブロックを該記憶部に記憶し、該記憶部に記憶された該分割した複数の機能ブロックを読み出して、読み出された該分割した複数の機能ブロックからアクセスされる共有リソースを抽出して抽出された共有リソースを該記憶部に記憶し、該記憶部に記憶された該共有リソースを読み出して、読み出された該共有リソースのアクセス情報を作成して、該共有リソースの該アクセス情報を該記憶部に記憶するブロック分割・共有リソース抽出・アクセス情報作成ステップと、共有リソースのアクセス制御モデル生成手段が、該記憶部に記憶された該共有リソースの該アクセス情報を読み出して、読み出された該共有リソースのアクセス情報から、アサーションにより該共有リソースへのアクセスが重複されないように制御するアクセス制御モデルを生成して、生成された該アクセス制御モデルを該記憶部に記憶する共有リソースのアクセス制御モデル生成ステップとを有するものであり、そのことにより上記目的が達成される。
【００２８】
また、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における前記共有リソースのアクセス制御モデル生成ステップは、前記共有リソースのアクセス制御モデル生成手段が、前記アクセス制御モデルとして、サイクル精度レベルで前記ハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語の記述として生成することを含む。
【００２９】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における共有リソースのアクセス制御モデル生成ステップにおいて、前記アクセス制御モデルは、前記複数の機能ブロックのうちの少なくとも２つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数を加算し、その加算結果をアサーション条件として、前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する。
【００３０】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における加算結果が“１”以下であるという条件を前記アサーション条件とする。
【００３１】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における加算結果が“１”よりも大きい場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことを該報知手段によりユーザに報知する。
【００３２】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における共有リソースのアクセス制御モデル生成ステップにおいて、該共有リソースがマルチポートメモリの場合に、前記アクセス制御モデルは、前記複数の機能ブロックのうちの少なくとも２つの機能ブロックのアクセスタイミングを示す各信号を前記汎用プログラミング言語によりそれぞれ表現した各変数と、該共有リソースにそれぞれアクセスされる各アドレスを比較した結果とをアサーション条件として、前記ハードウェアが正しい条件で動作しているか否かを判断するように制御する。
【００３３】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における各変数が全て”１”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合を除くという条件をアサーション条件とする。
【００３４】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における各変数が全て”１”でかつ前記各アドレスを比較した結果が等しいという条件が全て成り立つ場合に、前記ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、該ハードウェアの動作が正しく実行されていないことをユーザに該報知手段により報知する。
【００３５】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における共有リソースのアクセス制御モデルが生成されないようにアクセス制御モデル生成禁止情報を動作記述中に指定可能とする。
【００３６】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法における共有リソースのアクセス情報は、該共有リソースにアクセスするブロック名、データ書き込みおよび読み出しのうちの少なくともいずれかのアクセスの方向、および、アクセスに使用する信号として、該ブロック名のブロックと該共有リソース間でアクセス動作を実行するタイミングを示す信号、アクセスするアドレスを示す信号および書き込みデータである。
【００３７】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法において、構文解析・字句解析手段が、前記動作記述から構文および字句を解析処理する構文解析・字句解析ステップをさらに有し、前記ブロック分割・共有リソース抽出・アクセス情報作成ステップは、前記ブロック分割・共有リソース抽出・アクセス情報作成手段が、該動作記述から構文および字句を解析処理して得られたハードウェアの動作情報から該ハードウェアを複数の機能ブロックに分割することを含む。
【００３８】
さらに、好ましくは、本発明のハードウェア検証用プログラミング記述生成方法において、ＣＤＦＧ生成手段が、前記複数の機能ブロックの各ＣＤＦＧをそれぞれ作成するＣＤＦＧ生成ステップと、スケジューリング・ステート割り振り手段が、該各ＣＤＦＧで回路動作を表すノードをスケジューリングおよびステート割り振りするスケジューリング・ステート割り振りステップと、機能ブロックのサイクル精度モデル生成手段が、該機能ブロックの動作をサイクル精度レベルで検証可能なサイクル精度モデルを生成する機能ブロックのサイクル精度モデル生成ステップと、共有リソースのサイクル精度モデル生成手段が、前記共有リソースの動作をサイクル精度レベルで検証可能なサイクル精度モデルを生成する共有リソースのサイクル精度モデル生成ステップとをさらに有する。
【００３９】
本発明の制御プログラムは、本発明の上記ハードウェア検証用プログラミング記述生成方法の各ステップを計算機システムによって実行可能な処理手順が記述されたものであり、そのことにより上記目的が達成される。
【００４０】
本発明の可読記録媒体は、本発明の上記制御プログラムが記録されて前記計算機システムによって該制御プログラムを読み取り可能なものであり、そのことにより上記目的が達成される。
【００４１】
上記構成により、以下に、本発明の作用について説明する。
【００４２】
本発明にあっては、ハードウェアの動作記述から、ハードウェアを機能ブロックに分割し、分割した複数の機能ブロックのうちの少なくとも２つの機能ブロックからアクセスされる共有リソース（並列動作の共有リソース）を抽出して、その共有リソースのアクセス情報を作成する。その共有リソースのアクセス情報から、アサーションにより共有リソースへのアクセスを制御するアクセス制御モデルを生成する。この共有リソースのアクセス制御モデルにより、検証時間が長いＨＤＬシミュレータを用いずに、アサーションによりハードウェアのサイクル精度での動作検証を高速に行うことが可能となる。
【００４３】
例えば、各機能ブロックからのアクセスタイミングを示す信号を汎用プログラミング言語により表現した各変数を加算し、その加算結果からハードウェアが正しい条件で動作しているか否かを判断して共有リソースへのアクセスを制御することが可能となる。また、共有リソースとしてマルチポートメモリが実装される場合に、各機能ブロックからのアクセスタイミングを示す信号を汎用プログラミング言語によりそれぞれ表現した各変数と、アクセスされる各アドレスを比較したアドレス比較結果とによって、ハードウェアが正しい条件で動作しているか否かを判断して共有リソースへのアクセスを制御することが可能となる。
【００４４】
また、機能ブロックのサイクル精度モデルと、共有リソースのサイクル精度モデルと、共有リソースのアクセス制御モデルをコンパイルしたオブジェクトをリンクすることにより、サイクル精度レベルでハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルが汎用プログラミング言語により記述された制御プログラムとしてのハードウェア検証用プログラミング記述生成プログラムが得られる。
【発明の効果】
【００４５】
以上により、本発明によれば、アクセス制御モデルとして、サイクル精度でハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語の記述として生成するため、高速でかつ安価にハードウェアの動作を検証することができて、ＬＳＩの設計および検証期間を短縮化でき、開発コストを低減することができる。
【発明を実施するための最良の形態】
【００４６】
以下に、ハードウェアの動作を検証可能な汎用プログラミング記述を生成するための本発明のハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムとしてのハードウェア検証用プログラミング記述生成プログラムおよび、この制御プログラムが格納されたコンピュータ読み出し可能な可読記録媒体をコンピュータシステム（計算機システム）に適用した本発明の実施形態について、図面を参照しながら詳細に説明する。
【００４７】
図１は、本発明の実施形態に係るハードウェア検証用プログラミング記述生成装置を実現するためのコンピュータシステムの要部構成図である。
【００４８】
図１において、本実施形態のハードウェア検証用プログラミング記述生成装置として動作するコンピュータシステム１００は、画面表示するためのモニタ装置１、各種の情報を入力可能とする入力装置２および計算機本体３を有しており、計算機本体３には、全体の制御を行う制御手段としてのＣＰＵ（中央演算処理ユニット）３１、ＣＰＵ３１の起動時に働くＲＡＭ３２および、可読記録媒体としてのＲＯＭ３３が含まれている。
【００４９】
モニタ装置１は、表示画面上に、初期画面、選択画面、ＣＰＵ３１による制御結果画面、報知画面および操作入力画面などを表示する。
【００５０】
入力装置２は、ＣＰＵ３１に対して入力指令を行うためのキーボード、マウス、項目選択用などのタッチパネルおよびペン入力装置などの操作部や、さらには通信ネットワーク（例えばインターネットやイントラネット）を介して受信入力する入力装置などである。
【００５１】
ＲＡＭ３２は、ＣＰＵ３１の起動時に制御プログラムおよびそのデータなどが読み出されて、ＣＰＵ３１による制御毎にデータを読み出し・記憶するワークメモリとして働くＩＣメモリなどの記憶部である。
【００５２】
ＲＯＭ３３は、ハードディスク（ＨＤＤ）の他、携帯自在な光ディスク、光磁気ディスク、磁気ディスクおよびＩＣメモリなどで構成されていてもよい。この制御プログラムおよびそのデータなどがＲＯＭ３３に記憶されるが、この制御プログラムおよびそのデータは、他の可読記録媒体から情報記録再生装置を介してＲＯＭ３３にダウンロードされてもよく、または、無線、有線またはインターネットなどを介してＲＯＭ３３にダウンロードされてもよい。
【００５３】
ＲＯＭ３３には、高位合成処理（高位合成プログラム）を含む本発明の実施形態に係る制御プログラムとしてのハードウェア検証用プログラミング記述生成プログラム４が記録されている。
【００５４】
高位合成処理は、例えばＲＴレベル回路を生成するために演算・レジスタ割付処理や制御器生成処理などが含まれ、さらには、各部の動作を検証するシミュレーション処理も含まれる。ハードウェア検証用プログラミング記述生成プログラム４は、本発明の実施形態に係るハードウェア検証用プログラミング記述生成方法を計算機システムであるコンピュータシステム１００によって実行可能な処理手順が記述されており、サイクル精度レベルでハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語記述として生成するために用いられる。即ち、ハードウェアの動作記述を高位合成する際に、ハードウェアの動作をサイクル精度で検証可能な動作モデルを汎用プログラミング言語で生成し、アサーションによって検証できる動作について制御モデルを自動生成する。
【００５５】
本実施形態のハードウェア検証用プログラミング記述生成プログラム４の起動時には、ＲＯＭ３３としての例えばハードディスクＨＤＤからＲＡＭ３２にハードウェア検証用プログラミング記述生成プログラム４が読み込まれて、ＣＰＵ３１によってハードウェア検証用プログラミング記述生成処理が実行されるようになっている。
【００５６】
このハードウェア検証用プログラミング記述生成プログラム４はＣＰＵ３１により実行されて、構文解析・字句解析手段４１と、ブロック分割・共有リソース抽出・アクセス情報作成手段４２と、ＣＤＦＧ生成手段４３と、スケジューリング・ステート割り振り手段４４と、機能ブロックのサイクル精度モデル生成手段４５と、共有リソースのサイクル精度モデル生成手段４６と、共有リソースのアクセス制御モデル生成手段４７との各処理機能を有している。
【００５７】
構文解析・字句解析手段４１では、回路の構造に関する情報が含まれず、処理動作のみが記述されたハードウェアの動作記述から構文および字句を解析してハードウェアの動作情報（加算および減算などの演算情報や並列動作情報など）を得る構文解析および字句解析処理が行われる。
【００５８】
ブロック分割・共有リソース抽出・アクセス情報作成手段４２では、ハードウェアの動作情報、例えば並列動作情報からハードウェアを複数の機能ブロックに分割するブロック分割処理を行い、分割された複数の機能ブロックからアクセスされる共有リソースを抽出する共有リソース抽出処理を行って、共有リソースのアクセス情報を作成するアクセス情報作成処理が行われる。
【００５９】
ＣＤＦＧ生成手段４３では、各機能ブロックのＣＤＦＧ（コントロールデータフローグラフ）を作成するＣＤＦＧ作成処理が行われる。
【００６０】
スケジューリング・ステート割り振り手段４４では、ハードウェアに与えられた動作周波数などの制約を満たすために、各ＣＤＦＧで回路動作を表すＣＤＦＧのノードをスケジューリングおよびステート割り振りするスケジューリング・ステート割り振り処理が行われる。
【００６１】
機能ブロックのサイクル精度モデル生成手段４５では、各機能ブロックの動作をサイクル精度レベルで検証可能なサイクル精度モデルが汎用プログラミング言語記述として生成される。
【００６２】
共有リソースのサイクル精度モデル生成手段４６では、ハードウェア内部の各機能ブロック、または検証対象のハードウェアに接続された外部のハードウェアなどからアクセスされる共有リソースの動作をサイクル精度レベルで検証可能なサイクル精度モデルが汎用プログラミング言語記述として生成される。
【００６３】
共有リソースのアクセス制御モデル生成手段４７では、共有リソースのアクセス情報から、アサーションにより共有リソースへのアクセスが重複されないように制御するアクセス制御モデルが汎用プログラミング言語記述として生成される。
【００６４】
なお、本実施形態において、これらの構文解析・字句解析手段４１、ＣＤＦＧ生成手段４３およびスケジューリング・ステート割り振り手段４４による処理は、高位合成技術により行われる。また、本実施形態において、ハードウェアの動作記述は、回路の機能単位でブロックに分割された形で記述可能であり、各機能ブロックを並列に動作させることを指定可能とする。さらに、本実施形態において、機能ブロックのサイクル精度モデル、共有リソースのサイクル精度モデルおよび共有リソースのアクセス制御モデルは、汎用プログラミング言語であるＣ言語で記述されるものとするが、他の言語でも同様に記述することができる。また、本実施形態において、機能ブロックのサイクル精度モデルは、ハードウェアの動作記述からＣＤＦＧが生成され、ハードウェアに要求される動作周波数でＣＤＦＧがスケジューリングされてステート毎に割り振られ、ステート毎にハードウェアの動作モデル（サイクル精度モデル）が汎用プログラミング言語で表現した記述として生成される。このサイクル精度モデルは、ＣＤＦＧに含まれるノードの動作情報を用いて各ノードの動作モデルが生成され、ノードの接続情報を用いて各ノードの動作モデルを計算する際の順序付けが行われることによって、各ステートでシミュレーション可能なモデルとして生成される。
【００６５】
ハードウェア内部の各機能ブロック、または検証対象のハードウェアに接続された外部のハードウェアなどからアクセスされる共有リソースとしては、ＬＳＩ内部に実装される組み込みメモリ、またはフリップフロップにより構成されるレジスタなどが挙げられる。
【００６６】
図２は、並列動作する複数の機能ブロックから共有リソースにデータを書き込む動作を表すハードウェア動作記述例を示す図である。
【００６７】
図２に示すように、動作記述において、“＃ｐｒａｇｍａ  ｐａｒａｌｌｅｌ”は、その後に続く“｛  ｝”で区切られた動作記述を１つの機能ブロックとして高位合成することを高位合成プログラムに指示するための手段とする。
【００６８】
また、“ｉｎｔ  ａｒｒａｙ［２］”は、Ｃ言語のデータ型“ｉｎｔ”で表され、要素数が２個の共有リソースを宣言している。この動作記述において、１つ目の“｛  ｝”で区切られた機能ブロックをブロックＡ、２つ目の“｛  ｝”で区切られた機能ブロックをブロックＢとする。ブロックＡでは、共有リソース“ａｒｒａｙ”にデータを書き込む動作が２回行われる。また、ブロックＢでは、共有リソース“ａｒｒａｙ”にデータを書き込む動作が１回行われる。
【００６９】
上記構成により、以下に、本実施形態のハードウェア検証プログラミング記述生成方法およびハードウェア検証プログラミング記述生成プログラム４の処理手順について説明する。
【００７０】
図３は、本実施形態のハードウェア検証プログラミング記述生成方法およびハードウェア検証プログラミング記述生成プログラム４の処理手順を示すフローチャートである。
【００７１】
まず、ステップＳ１では、ハードウェアの回路構造に関する情報が含まれず、処理動作のみが記述されたハードウェアの動作記述５１が、構文解析・字句解析手段４１によって、構文解析・字句解析処理されてハードウェアの動作情報（加算および減算などの演算情報や並列動作情報など）を得る。
【００７２】
続いて、ステップＳ２で、ブロック分割・共有リソース抽出・アクセス情報作成手段４２によって、解析して得られたハードウェアの動作情報、例えば並列動作情報から、ハードウェアが並列動作する機能ブロック毎に分割処理される。さらに、ブロック分割・共有リソース抽出・アクセス情報作成手段４２によって、分割された機能ブロック毎に、組み込みメモリやレジスタなどの共有リソースへのデータ書き込み動作、または共有リソースからのデータ読み出し動作があるか否かが判定されて、共有リソースが抽出されると共に共有リソースへのアクセス情報が作成される。
【００７３】
図２に示すハードウェアの動作記述では、機能ブロックＡと機能ブロックＢの双方からリソース“ａｒｒａｙ”へのデータ書き込み動作が行われるため、“ａｒｒａｙ”が共有リソースとして抽出される。この抽出された共有リソースについて、データの型などを含む共有リソースデータベース、および機能ブロックから共有リソースへのアクセス情報が作成される。
【００７４】
さらに、ステップＳ３では、ステップＳ２で分割された機能ブロックであるか（ブロックＡかブロックＢか）、共有リソースデータベースであるか、または、共有リソースのアクセス情報であるかどうかが判断される。
【００７５】
次に、ステップＳ４では、ＣＤＦＧ生成手段４３によって、ブロックＡかブロックＢかの機能ブロック毎にＣＤＦＧが生成される。ＣＤＦＧとは、ハードウェアの動作がノードとノード間を接続する枝とを用いて表現されたものである。ノードはハードウェア中で動作する演算処理などを示し、ノード間の枝はデータの流れを示している。あるノードから出力されたデータは、そのノードに接続されている枝を通り、接続先のノードの入力として用いられる。
【００７６】
その後、ステップＳ５では、ステップＳ４で生成されたＣＤＦＧがハードウェアに制約として与えられたクロック周期などで動作可能なように、スケジューリング・ステート割り振り手段４４によってスケジューリング・ステート割り振り処理が行われる。
【００７７】
図２および図３に示す事例では、ステップＳ５でスケジューリング・ステート割り振りされた各機能ブロック（ブロックＡかブロックＢか）のＣＤＦＧとして、機能ブロックＡのＣＤＦＧ５２Ａおよび機能ブロックＢのＣＤＦＧ５２Ｂが得られる。
【００７８】
さらに、ステップＳ６では、ステップＳ５で生成されたスケジューリング・ステート割り振り後の機能ブロックＡのＣＤＦＧ５２Ａおよび機能ブロックＢのＣＤＦＧ５２Ｂを用いて、機能ブロックのサイクル精度モデル生成手段４５によって、各機能ブロックのサイクル精度モデルがそれぞれ生成される。
【００７９】
図２および図３に示す事例では、各機能ブロックのサイクル精度モデルとして、ブロックＡのサイクル精度モデル５３ＡおよびブロックＢのサイクル精度モデル５３Ｂがそれぞれ得られる。機能ブロックのサイクル精度モデルは、任意のステートにおけるブロックへの入力データを用いて、そのステートにおける出力データを求める計算式として構成される。
【００８０】
次に、ステップＳ７では、ステップＳ２の共有リソース抽出・アクセス情報作成処理により得られた共有リソースデータベース５４と共有リソースアクセス情報５６とを用いて、共有リソースのサイクル精度モデル生成手段４６によって、共有リソースのサイクル精度モデル５５が生成される。共有リソースのサイクル精度モデルは、任意のクロックサイクルにおける共有リソースへの入力データから、その共有リソースに保持されるデータを更新する計算式として構成される。
【００８１】
次に、ステップＳ８では、ステップＳ２の共有リソースのアクセス情報作成処理により作成された共有リソースアクセス情報５６を用いて、共有リソースのアクセス制御モデル生成手段４７によって、共有リソースのアクセス制御モデル５７が生成される。
【００８２】
要するに、本実施形態のハードウェア検証用プログラミング記述生成方法は、ハードウェアの構造に関する情報は含まれず、処理動作のみが記述されたハードウェアの動作記述から構文および字句を解析処理する構文解析・字句解析ステップ（Ｓ１）と、ハードウェアを機能ブロックに分割し、分割した複数の機能ブロックからアクセスされる共有リソースを抽出して、共有リソースのアクセス情報を作成するブロック分割・共有リソース抽出・アクセス情報作成ステップ（Ｓ２）と、複数の機能ブロックの各ＣＤＦＧをそれぞれ作成するＣＤＦＧ生成ステップ（Ｓ４）と、各ＣＤＦＧで回路動作を表すノードをスケジューリングおよびステート割り振りするスケジューリング・ステート割り振りステップ（Ｓ５）と、各機能ブロックの各ＣＤＦＧから、各機能ブロックの動作をサイクル精度レベルで検証可能なサイクルク精度モデルを生成する機能ブロックのサイクル精度モデル生成ステップ（Ｓ６）と、共有リソースデータベース５４から、共有リソースの動作をサイクル精度レベルで検証可能なサイクル精度モデルを生成する共有リソースのサイクル精度モデル生成ステップ（Ｓ７）と  共有リソースのアクセス情報から、アサーションにより共有リソースへのアクセスが重複されないように制御するアクセス制御モデルを生成する共有リソースのアクセス制御モデル生成ステップ（Ｓ８）とを有している。
【００８３】
以上のようにして生成された機能ブロック毎のサイクル精度モデル５３Ａおよび５３Ｂ、共有リソースのサイクル精度モデル５５、および共有リソースのアクセス制御モデル５７は、汎用プログラミング言語で記述されており、これらの記述をコンパイルして作成されたオブジェクトをリンクすることによって、アサーションを用いたハードウェア検証用プログラムが得られる。このハードウェア検証用プログラムをコンピュータシステム１００上で実行することによって、ハードウェアがサイクル精度で要求された仕様を満たしているか否かを検証することができる。
【００８４】
以下に、具体的な回路例を用いて、本実施形態のハードウェア検証プログラミング記述生成方法およびハードウェア検証プログラミング記述生成プログラム４の処理手順についてさらに詳細に説明する。
【００８５】
図４は、図２に示すハードウェアの動作記述を図３に示すフローチャートの処理にしたがって高位合成して得られる回路構成例を示すブロック図である。
【００８６】
図４に示す回路構成は、ブロックＡとブロックＢの２つの機能ブロック、および１つの共有リソース（ａｒｒａｙ）から構成されている。２つの機能ブロックＡおよびＢからは、共有リソースａｒｒａｙに対してデータ書き込み動作が行われる。書き込み動作をハードウェアとして実現するため、各機能ブロックと共有リソースとの間で、書き込み動作を実行するタイミングを示す信号、書き込むアドレスを示す信号、および書き込みデータを示す信号という３種類の信号が用いられている。
【００８７】
図４に示す回路構成では、ブロックＡから共有リソースａｒｒａｙへデータを書き込むときの信号として、書き込み動作を実行するタイミングを示す信号“ｅｎＡ”、データが書き込まれるアドレスを示す信号“ａｄｄｒＡ”、および書き込みデータを示す信号“ｄａｔａＡ”が用いられる。これと同様に、ブロックＢから共有リソースａｒｒａｙにデータを書き込むときの信号として、書き込み動作を実行するタイミングを示す信号“ｅｎＢ”、データが書き込まれるアドレスを示す信号“ａｄｄｒＢ”、および書き込みデータを示す信号“ｄａｔａＢ”が用いられる。書き込みタイミングを示す信号“ｅｎＡ”および“ｅｎＢ”はハイアクティブとされ、信号が“１”の状態のときに書き込み動作が行われるものとする。
【００８８】
図５は、図４に示すブロックＡについて、図２に示すハードウェアの動作記述を図３に示すフローチャートにしたがって処理して、ブロックＡのスケジューリング・ステート割り振り処理後に得られるＣＤＦＧを示す図である。
【００８９】
図５に示すように、ブロックＡでは、共有リソースに対してデータを書き込む動作が２回行われ、１回目はデータ“１”が書き込まれ、２回目はデータ“２”が書き込まれる。
【００９０】
即ち、ブロックＡのＣＤＦＧでは、ステート“Ｓｔａｔｅ  ｍ”においてデータ“１”を作成するノード６１があり、これに続くステート“Ｓｔａｔｅ  ｍ＋１”では、ノード６１で作成されたデータを入力として共有リソースに書き込む動作を示すノード６２がある。これと同様に、ステート“Ｓｔａｔｅ  ｍ＋１”においてデータ“２”を作成するノード６３があり、これに続くステート“Ｓｔａｔｅ  ｍ＋２”においては、ノード６３で作成されたデータ“２”を入力として共有リソースに書き込む動作を示すノード６４がある。
【００９１】
図６は、図４に示すブロックＢについて、図２に示すハードウェアの動作記述を図３に示すフローチャートにしたがって処理して、ブロックＢのスケジューリング・ステート割り振り処理後に得られるＣＤＦＧを示す図である。
【００９２】
図６に示すように、ブロックＢでは、共有リソースに対してデータを書き込む動作が１回行われる。
【００９３】
即ち、ブロックＢのＣＤＦＧでは、ステート“Ｓｔａｔｅ  ｎ”においてデータ“ｘ”を作成するノード７１、およびデータ“ｙ”を作成するノード７２がある。これに続くステート“Ｓｔａｔｅ  ｎ＋１”において、ステート“Ｓｔａｔｅ  ｎ”のノード７１で作成されたデータ“ｘ”と、ノード７２で作成されたデータ“ｙ”とを入力として、両データ“ｘ”および“ｙ”を加算する動作を示すノード７３がある。これに続くステート“Ｓｔａｔｅ  ｎ＋２”において、ノード７３で演算（加算）された結果データ（ｘ＋ｙ）を入力データとして共有リソースに書き込む動作を示すノード７４がある。
【００９４】
図７は、図４のブロックＡについて、図５のブロックＡのＣＤＦＧから生成されたサイクル精度モデルをＣ言語で記述した事例を示す図である。
【００９５】
図７では、図５に示すステート“Ｓｔａｔｅ  ｍ＋１”のサイクル精度モデルをＣ言語の関数“ｓｔａｔｅ＿ｍ１”とし、ステート“Ｓｔａｔｅ  ｍ＋２”のサイクル精度モデルを関数“ｓｔａｔｅ＿ｍ２”とする。なお、図４に示す回路においてブロックＡから共有リソースに対して書き込み動作を実行するタイミングを示す信号“ｅｎＡ”は、図７に示すサイクル精度モデルにおいて“ｅＡ”というＣ言語の変数として表現されている。また、図４に示す回路においてデータが書き込まれるアドレスを示す信号“ａｄｄｒＡ”は、図７に示すサイクル精度モデルにおいて“ａＡ”というＣ言語の変数として表現されている。さらに、図４に示す回路において書き込みデータを示す信号“ｄａｔａＡ”は、図７に示すサイクル精度モデルにおいて“ｄＡ”というＣ言語の変数として表現されている。
【００９６】
図７に示すサイクル精度モデルの関数“ｓｔａｔｅ＿ｍ１”では、共有リソースのアドレス“０”にデータ“１”を書き込むため、変数“ｅＡ”に値“１”が、また、変数“ａＡ”に値“０”が、さらに、変数“ｄＡ”に値“１”が、それぞれ代入される。また、関数“ｓｔａｔｅ＿ｍ２”では、共有リソースのアドレス“１”にデータ“２”を書き込むため、変数“ｅＡ”に値“１”が、また、変数“ａＡ”に値“１”が、さらに、変数“ｄＡ”に値“２”が、それぞれ代入される。
【００９７】
図８は、図４のブロックＢについて、図６のブロックＢのＣＤＦＧから生成されたサイクル精度モデルをＣ言語で記述した事例を示す図である。
【００９８】
図８では、図７に示すステート“Ｓｔａｔｅ  ｎ＋１”のサイクル精度モデルをＣ言語の関数“Ｓｔａｔｅ＿ｎ１”とし、ステート“Ｓｔａｔｅ  ｎ＋２”のサイクル精度モデルを関数“Ｓｔａｔｅ＿ｎ２”とする。なお、図４に示す回路においてブロックＢから共有リソースに対して書き込み動作を実行するタイミングを示す信号“ｅｎＢ”は、図８に示すサイクル精度モデルにおいて“ｅＢ”というＣ言語の変数として表現されている。また、図４に示す回路においてデータが書き込まれるアドレスを示す信号“ａｄｄｒＢ”は、図８に示すサイクル精度モデルにおいて“ａＢ”というＣ言語の変数として表現されている。さらに、図４に示す回路において書き込みデータを示す信号“ｄａｔａＢ”は、図８に示すサイクル精度モデルにおいて“ｄＢ”というＣ言語の変数として表現されている。
【００９９】
図８に示すサイクル精度モデルの関数“ｓｔａｔｅ＿ｎ１”では、データ“ｘ”とデータ“ｙ”が加算されて変数“ｚ”に代入される。また、関数“ｓｔａｔｅ＿ｎ２”では、共有リソースのアドレス“０”にデータ“ｚ”を書き込むため、変数“ｅＢ”に値“１”が、また、変数“ａＢ”に値“０”が、さらに、変数“ｄＢ”に変数“ｚ”が、それぞれ代入される。
【０１００】
図９は、図４に示す回路について、共有リソースへのアクセスタイミングを示す各信号のタイミングチャートである。
【０１０１】
図９に示すように、図４に示す回路において、例えばある任意のクロックサイクル“ｔ”で、ブロックＡのＣＤＦＧのステートが図５に示すステート“Ｓｔａｔｅ  ｍ＋１”であり、かつ、ブロックＢのＣＤＦＧのステートが図６に示すステート“Ｓｔａｔｅ  ｎ＋１”であるとすると、これに続くクロックサイクル“ｔ＋１”ではブロックＡのＣＤＦＧのステートは“Ｓｔａｔｅ  ｍ＋２”となり、ブロックＢのＣＤＦＧのステートは“Ｓｔａｔｅ  ｎ＋２”となる。
【０１０２】
ブロックＡでは、ステート“Ｓｔａｔｅ  ｍ＋１”およびステート“Ｓｔａｔｅ  ｍ＋２”において共有リソースにデータを書き込むため、図９のタイミングチャートに示すように信号“ｅｎＡ”はクロックサイクル“ｔ”および“ｔ＋１”で“１”の状態になっている。
【０１０３】
一方、ブロックＢではステート“Ｓｔａｔｅ  ｎ＋２”において共有リソースにデータを書き込むため、図９のタイミングチャートに示すように信号“ｅｎＢ”はクロックサイクル“ｔ＋１”で“１”の状態になっている。
【０１０４】
これによって、クロックサイクル“ｔ＋１”において、ブロックＡから共有リソースに対する書き込み動作と、ブロックＢから共有リソースに対する書き込み動作とが同時に実行されることになる。
【０１０５】
図１０は、図４に示す共有リソースについて、図２に示すハードウェアの動作記述を図３に示すフローチャートの処理に従って処理して得られる共有リソースデータベースを示す図である。
【０１０６】
図１０に示すように、共有リソース“ａｒｒａｙ”のデータベースとして、リソース名が“ａｒｒａｙ”、データの型が“ｉｎｔ”、要素数が“２”というデータが格納されている。
【０１０７】
図１１は、図４に示す共有リソースについて、図２に示すハードウェアの動作記述を図３に示すフローチャートの処理にしたがって処理して得られる共有リソースデータベースとアクセス情報から生成された共有リソースのサイクル精度モデルを示す図である。
【０１０８】
図１１に示す共有リソースのサイクル精度モデルは、共有リソースの記憶領域がＣ言語の配列“ｓｔｏｒａｇｅ＿ａｒｒａｙ［２］”として表現されている。この共有リソースには、ブロックＡとブロックＢからデータ書き込み動作が行われる。図１１に示す共有リソースのサイクル精度モデルでは、ブロックＡからの書き込みタイミングを示す信号はＣ言語の変数“ｅＡ”と表現されており、ブロックＢからの書き込みタイミングを示す信号はＣ言語の変数“ｅＢ”と表現されている。
【０１０９】
図７に示すブロックＡのサイクル精度モデルを用いて説明したように、“ｅＡ”が“１”のときにブロックＡからアドレス“ａＡ”にデータ“ｄＡ”が書き込まれる。また、図８に示すブロックＢのサイクル精度モデルを用いて説明したように、“ｅＢ”が“１”のときにブロックＢからアドレス“ａＢ”にデータ“ｄＢ”が書き込まれる。
【０１１０】
図１１に示す共有リソースのサイクル精度モデルの事例では、ブロックＡからの書き込みがブロックＢからの書き込みよりも優先されるものとする。この優先順位を決定する方法としては、例えば、ハードウェアの制約として設計者が指定する方法、またはブロック分割処理で生成されたブロックの順番をそのまま優先順位とする方法などが考えられる。本発明において、この優先順位の決定は任意である。
【０１１１】
図１１に示す共有リソースのサイクル精度モデルにおいて、図９に示すタイミングチャートのクロックサイクル“ｔ”では、ブロックＡからの書き込みタイミングを示す“ｅＡ”が“１”であるため、配列“ｓｔｏｒａｇｅ＿ａｒｒａｙ［２］”のアドレス“ａＡ”に示される番地にデータ“ｄＡ”が代入される。
【０１１２】
次に、クロックサイクル“ｔ＋１”では、ブロックＡからの書き込みタイミングを示す“ｅＡ”が“１”であるため、クロックサイクル“ｔ”のときと同様に代入計算が行われる。クロックサイクル“ｔ＋１”のときは、ブロックＢからの書き込みタイミングを示す“ｅＢ”も“１”であるが、書き込みの優先順位からブロックＡが優先され、ブロックＢからの書き込みは実行されない。よって、ブロックＢでは正しく動作が実行されないこととなり、ハードウェアの誤動作の原因となる。
【０１１３】
本発明では、このように、ハードウェアの誤動作の原因となる共有リソースへのアクセス動作について、正しい動作が成立する条件を満たすか否かをアサーションによりチェックするため、共有リソースのアクセス情報から汎用プログラミング言語記述により共有リソースのアクセス制御モデルを生成する。
【０１１４】
図１２は、図４に示す共有リソースａｒｒａｙについて、図２に示すハードウェアの動作記述を図３に示すフローチャートの処理にしたがって得られる共有リソースのアクセス情報を示す図である。
【０１１５】
図１２に示すように、共有リソースのアクセス情報において、共有リソースａｒｒａｙへはブロックＡおよびブロックＢからアクセスが行われ、各ブロックからのアクセス方向（アクセス内容）は“書き込み”であることが示されている。各ブロックからのアクセスに使用される信号は、図４の回路構成例に示すように、ブロックＡからのアクセスには“ｅｎＡ”、“ａｄｄｒＡ”および“ｄａｔａＡ”が用いられ、ブロックＢからのアクセスには“ｅｎＢ”、“ａｄｄｒＢ”および“ｄａｔａＢ”が用いられる。
【０１１６】
即ち、共有リソースのアクセス情報としては、共有リソースにアクセスするブロック名、データ書き込みおよび読み出しの少なくともいずれかのアクセスの方向、および、アクセスに使用する信号として、ブロック名のブロックと共有リソース間でアクセス動作を実行するタイミングを示す信号“ｅｎＡ”および“ｅｎＢ”、アクセスするアドレスを示す信号“ａｄｄｒＡ”および“ａｄｄｒＢ”、および書き込みデータ“ｄａｔａＡ” および“ｄａｔａＢ”である
本実施形態では、図３に示すフローチャートにおけるステップＳ２のブロック分割・共有リソースの抽出処理により得られる共有リソースアクセス情報を用いて、アサーションにより共有リソースへのアクセスが重複されないように制御する共有リソースのアクセス制御モデルが生成される。
【０１１７】
図２に示すハードウェアの動作記述の事例では、図１２の共有リソースアクセス情報に示すように、共有リソースａｒｒａｙに対してブロックＡとブロックＢから書き込みアクセスが行われる。前述したように、ブロックＡからのアクセスには“ｅｎＡ”、“ａｄｄｒＡ”および“ｄａｔａＡ”が用いられ、ブロックＢからのアクセスには“ｅｎＢ”、“ａｄｄｒＢ”および“ｄａｔａＢ”が用いられる。これらの共有リソースアクセス情報を元に、共有リソースａｒｒａｙのアクセス制御モデルが生成される。
【０１１８】
この共有リソースのアクセス制御モデルにより、例えばブロックＡおよびＢからのアクセスタイミングを示す各信号“ｅｎＡ”および“ｅｎＢ”を汎用プログラミング言語によりそれぞれ表現した各変数“ｅＡ”および“ｅＢ”を、“ｅＡ＋ｅＢ”として加算し、その加算結果“ｅＡ＋ｅＢ”をアサーション条件としてハードウェアが正しい条件で動作しているか否かを判断するように制御することができる。この一例を図１３および図１４を用いて詳細に説明する。
【０１１９】
図１３および図１４はそれぞれ、図４に示す共有リソースへのアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをＣ言語により記述した事例である。
【０１２０】
図１３の共有リソースのアクセス制御モデルの事例は、上記加算結果“ｅＡ＋ｅＢ”が“１”以下であるという条件をアサーション条件とする場合である。
【０１２１】
即ち、ブロックＡからの書き込みタイミングを示すＣ言語の変数“ｅＡ”と、ブロックＢからの書き込みタイミングを示すＣ言語の変数“ｅＢ”を用いて、Ｃ言語の標準ライブラリ関数“ａｓｓｅｒｔ”によりハードウェアの動作が正しいか否かがチェックされる。ブロックＡとブロックＢとから同一のクロックサイクルで書き込み動作が実行されない、即ち、変数“ｅＡ”と“ｅＢ”が同一のクロックサイクルで“１”にならないという条件がハードウェアの正しい動作条件であるとすれば、条件に合致するためには、変数“ｅＡ”と“ｅＢ”を加算して“１”以下であればよい。したがって、図１３に示す共有リソースのアクセス制御モデルでは、“（ｅＡ＋ｅＢ）＜＝１”という条件がアサーション条件としてチェックされる。
【０１２２】
図１４の共有リソースのアクセス制御モデルの事例は、上記加算結果“ｅＡ＋ｅＢ”が“１”よりも大きい場合に、ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、ハードウェアの動作が正しく実行されていないことを報知手段によりユーザに報知する場合である。
【０１２３】
即ち、図１３の場合と同様に、ブロックＡからの書き込みタイミングを示すＣ言語の変数“ｅＡ”と、ブロックＢからの書き込みタイミングを示すＣ言語の変数“ｅＢ”を用いて、Ｃ言語の“if”文によりハードウェアの動作が正しいか否かがチェックされる。図１４に示す共有リソースのアクセス制御モデルでは、“ｅＡ”と“ｅＢ”を加算し、その加算結果が”１”よりも大きい場合にはハードウェアの正しい動作の条件に合致しないものとして、コンピュータシステム１００における報知手段としてのモニタ装置１の標準出力にエラー情報を表示させ、ハードウェアの動作が正しく実行されていないことを設計者（ユーザ）に通知する。なお、報知手段としてはモニタ装置１に限らず、エラー情報を音声で警報報知する報知手段であってもよいし、エラー情報をプリントアウトするプリンタであってもよい。
【０１２４】
ところで、共有リソースとして実装されるＬＳＩの組み込みメモリなどは、マルチポートメモリとして実装される場合がある。マルチポートメモリとは、アドレス線、データ線および制御線が複数設けられ、同一クロックサイクルで複数のアクセスに対応可能なメモリのことである。しかしながら、一般的には、同一アドレスに対して同一クロックサイクルに複数の書き込みアクセスが行われた場合には、メモリの動作が不定になる。例えば、２つの書き込みアクセスが同一アドレスに同一クロックサイクルで発生した場合、どちらの値が書き込まれたかが分からず、ハードウェアの誤動作の原因となる。
【０１２５】
本発明では、このようにマルチポートメモリとして実装された共有リソースへのアクセス動作についても、正しい動作が成立する条件を満たすか否かをアサーションによりチェックするため、共有リソースのアクセス情報から汎用プログラミング言語記述により共有リソースのアクセス制御モデルを生成する。
【０１２６】
この共有リソースのアクセス制御モデルにより、例えばブロックＡおよびＢからのアクセスタイミングを示す各信号“ｅｎＡ”および“ｅｎＢ”を汎用プログラミング言語によりそれぞれ表現した各変数“ｅＡ”および“ｅＢ”と、共有リソースにアクセスされるアドレスを比較した結果とをアサーション条件として、ハードウェアが正しい条件で動作しているか否かを判断するように制御することができる。この一例を図１５および図１６を用いて詳細に説明する。
【０１２７】
図１５は、マルチポートメモリとして実装された共有リソースへのアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをＣ言語により記述した事例を示す図である。
【０１２８】
図１５の共有リソースのアクセス制御モデルの事例は、上記各変数“ｅＡ”および“ｅＢ”が全て”１”でかつ、ブロックＡからの書き込みアドレスａＡとブロックＢからの書き込みアドレスａＢを比較した結果が互いに等しいという条件ａＡ＝ａＢが全て成り立つ場合を除くという条件をアサーション条件とする場合である。
【０１２９】
即ち、図２に示すハードウェアの動作記述例では、ブロックＡとブロックＢから書き込みアクセスが行われる。図１５に示す共有リソースの制御モデルでは、図１３に示すアサーションに用いられている書き込みタイミングを示すＣ言語の変数“ｅＡ”と“ｅＢ”に加えて、ブロックＡからの書き込みアドレス“ａＡ”とブロックＢからの書き込みアドレス“ａＢ”も条件に加えられている。マルチポートメモリとして実装された共有リソースに対して、同一クロックサイクルで同一アドレスに書き込む動作は正しくない動作であるので、“ｅＡ＝＝１”、“ｅＢ＝＝１”、“ａＡ＝＝ａＢ”の条件が全て成り立つときが正しくない動作であると言える。言い換えると、“ｅＡ＝＝１”、“ｅＢ＝＝１”、“ａＡ＝＝ａＢ”の全ての条件が成り立つとき以外は正しい動作である。よって、図１５に示す共有リソースのアクセス制御モデルでは、Ｃ言語の標準ライブラリ関数“ａｓｓｅｒｔ”を用いて、“！  （ｅＡ＝＝１  ＆＆  ｅＢ＝＝１  ＆＆  ａＡ  ＝＝  ａＢ）”という条件がアサーション条件としてチェックされる。
【０１３０】
図１６は、図１５の場合と同様に、マルチポートメモリとして実装された共有リソースへのアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをＣ言語により記述した他の事例を示す図である。
【０１３１】
図１６の共有リソースのアクセス制御モデルの事例は、上記各変数“ｅＡ”および“ｅＢ”が全て”１”でかつ、ブロックＡからの書き込みアドレスａＡとブロックＢからの書き込みアドレスａＢを比較した結果が互いに等しいという条件が全て成り立つ場合に、ハードウェアの正しい動作条件に合致しないものとしてエラー情報を報知手段に出力して、ハードウェアの動作が正しく実行されていないことがユーザに報知手段により報知される場合である。
【０１３２】
即ち、図１６に示す共有リソースの制御モデルでは、図１５の場合と同様に、マルチポートメモリとして実装された共有リソースに対して、ブロックＡからの書き込みタイミングを示すＣ言語の変数“ｅＡ”と書き込みアドレス“ａＡ”、およびブロックＢからの書き込みタイミングを示すＣ言語の変数“ｅＢ”と書き込みアドレス“ａＢ”とを用いて、Ｃ言語の“if”文によりハードウェアの動作が正しいか否かがチェックされる。図１６に示す共有リソースのアクセス制御モデルでは、図１５を用いて説明したように、“ｅＡ＝＝１”、“ｅＢ＝＝１”、“ａＡ＝＝ａＢ”の条件が全て成り立つときにハードウェアの正しい動作条件に合致しないものとして、コンピュータシステム１００における報知手段としてのモニタ装置１の標準出力にエラー情報を表示させ、ハードウェアの動作が正しく実行されていないことを設計者（ユーザ）に通知する。なお、報知手段としてはモニタ装置１に限らず、エラー情報を音声で警報報知する報知手段であってもよいし、エラー情報をプリントアウトするプリンタであってもよい。
【０１３３】
ハードウェアをサイクル精度レベルでシミュレーションする際には、各機能ブロックのサイクル精度モデルおよび共有リソースのサイクル精度モデルを計算した後、図１３、図１４、図１５または図１６に示す共有リソースのアクセス制御モデルを計算することによって、アサーションにより共有リソースへのアクセス動作を検証することができる。
【０１３４】
図１７は、図２に示すハードウェアの動作記述において、共有リソースのアクセス動作について、アサーションによる検証を行わないように、ハードウェア設計者が指定する方法の事例を説明するための図である。
【０１３５】
共有リソースのアクセス制御モデルが生成されないように制御モデル生成禁止情報を指定可能とする場合、図１７に示すように、アクセス制御モデル生成禁止情報として動作記述中に“＃ｐｒａｇｍａ  ｎｏ＿ａｓｓｅｒｔｉｏｎ”が指定されると、それに続いて記述された共有リソースについて、図１３〜図１６に示すような共有リソースのアクセス制御モデルが生成されず、アサーションのチェックが行われないように設定することができる。これによって、ハードウェアのサイクル精度レベルでのシミュレーションにおいて、不必要な場合に、制御モデルの計算時間を削減することができる。ただし、このような制御モデル生成禁止情報の動作記述中での指定は、ハードウェアの動作において共有リソースに重複したアクセスが発生しないことが数学的に立証されているような場合に用いることが好ましい。
【０１３６】
以上により、本実施形態によれば、ハードウェアの動作記述から構文・字句を解析する構文・字句解析手段４１と、ハードウェアを機能ブロックに分割し、複数のブロックからアクセスされる共有リソースを抽出して共有リソースアクセス情報を作成するブロック分割・共有リソース抽出・アクセス情報作成手段４２と、ＣＤＦＧ生成手段４３と、スケジューリング・ステート割り振り手段４４と、各機能ブロックの動作をサイクル精度レベルで検証可能なモデルを生成する機能ブロックのサイクル精度モデル生成手段４５と、共有リソースの動作をサイクル精度レベルで検証可能なモデルを生成する共有リソースのサイクル精度モデル生成手段４６と、共有リソースのアクセス情報から、アサーションにより共有リソースへのアクセスを制御するモデルを生成する共有リソースのサイクル制御モデル生成手段４７とによって、サイクル精度レベルでハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語記述として生成することができる。
【０１３７】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【産業上の利用可能性】
【０１３８】
本発明は、ハードウェアの動作を検証可能な汎用プログラミング記述を生成するためのハードウェア検証用プログラミング用記述生成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラミング記述生成プログラムなどの制御プログラムおよびこれが記録されたコンピュータ読み取り可能な可読記録媒体の分野において、アクセス制御モデルとして、サイクル精度でハードウェアの正しい動作が成立する条件をアサーションにより検証可能な動作モデルを汎用プログラミング言語の記述として生成することができるため、高速かつ安価にハードウェアの動作を検証できて、ＬＳＩの設計および検証期間を短縮化でき、開発コストを低減することができる。
【図面の簡単な説明】
【０１３９】
【図１】本発明の実施形態に係るハードウェア検証用プログラミング記述生成装置を実現するためのコンピュータシステムの要部構成図である。
【図２】並列動作する複数の機能ブロックから共有リソースにデータを書き込む動作を表すハードウェアの動作記述例を示す図である。
【図３】本実施形態のハードウェア検証プログラミング記述生成方法およびハードウェア検証プログラミング記述生成プログラムの処理手順を説明するためのフローチャートである。
【図４】図２に示すハードウェアの動作記述を図３に示すフローチャートの処理に従って高位合成して得られる回路構成例を示すブロック図である。
【図５】図４のブロックＡについて、図２に示すハードウェアの動作記述を図３に示すフローチャートに従って処理して、ブロックＡのスケジューリング・ステート割り振り処理後に得られるＣＤＦＧを示す図である。
【図６】図４のブロックＢについて、図２に示すハードウェアの動作記述を図３に示すフローチャートに従って処理して、ブロックＢのスケジューリング・ステート割り振り処理後に得られるＣＤＦＧを示す図である。
【図７】図４のブロックＡについて、図５のブロックＡのＣＤＦＧから生成されたサイクル精度モデルをＣ言語で記述した事例を示す図である。
【図８】図４のブロックＢについて、図６のブロックＢのＣＤＦＧから生成されたサイクル精度モデルをＣ言語で記述した事例を示す図である。
【図９】図４に示す回路について、共有リソースへのアクセスタイミングを示す各信号のタイミングチャートである。
【図１０】図４に示す共有リソースについて、図２に示すハードウェアの動作記述を図３に示すフローチャートの処理に従って処理して得られる共有リソースのデータベースを示す図である。
【図１１】図４に示す共有リソースについて、図２に示すハードウェアの動作記述を図３に示すフローチャートの処理に従って処理して得られる共有リソースのデータベースとアクセス情報から生成された共有リソースのサイクル精度モデルを示す図である。
【図１２】図４に示す共有リソースについて、図２に示すハードウェアの動作記述を図３に示すフローチャートの処理に従って得られる共有リソースのアクセス情報を示す図である。
【図１３】図４に示す共有リソースへのアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをＣ言語により記述した事例を示す図である。
【図１４】図４に示す共有リソースへのアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをＣ言語により記述した他の事例を示す図である。
【図１５】図４に示す共有リソースがマルチポートメモリとして実装されている場合のアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをＣ言語により記述した事例を示す図である。
【図１６】図４に示す共有リソースがマルチポートメモリとして実装されている場合のアクセス動作について、正しい動作が成立する条件をアサーションを用いて表現した共有リソースの制御モデルをＣ言語により記述した他の事例を示す図である。
【図１７】図２に示すハードウェアの動作記述において、共有リソースのアクセス動作について、アサーションによる検証を行わないように、ハードウェア設計者が指定する方法の事例を説明するための図である。
【符号の説明】
【０１４０】
１  モニタ装置
２  キーボードなどの入力装置
３  計算機本体
３１  ＣＰＵ（制御部）
３２  ＲＡＭ
３３  ＲＯＭ（可読記録媒体）
４  ハードウェア検証用プログラミング記述生成プログラム
４１  構文解析・字句解析手段
４２  ブロック分割・共有リソースの抽出・アクセス情報作成手段
４３  ＣＤＦＧ生成手段
４４  スケジューリング・ステート割り振り手段
４５  機能ブロックのサイクル精度モデル生成手段
４６  共有リソースのサイクル精度モデル生成手段
４７  共有リソースのアクセス制御モデル生成手段
５１  ハードウェアの動作記述
５２Ａ  ブロックＡのＣＤＦＧ
５２Ｂ  ブロックＢのＣＤＦＧ
５３Ａ  ブロックＡのサイクル精度モデル
５３Ｂ  ブロックＢのサイクル精度モデル
５４  共有リソースのデータベース
５５  共有リソースのサイクル精度モデル
５６  共有リソースのアクセス情報
５７  共有リソースのアクセス制御モデル
１００  コンピュータシステム
【図１】
0005001126.tif 000002
【図２】
0005001126.tif 000003
【図３】
0005001126.tif 000004
【図４】
0005001126.tif 000005
【図５】
0005001126.tif 000006
【図６】
0005001126.tif 000007
【図７】
0005001126.tif 000008
【図８】
0005001126.tif 000009
【図９】
0005001126.tif 000010
【図１０】
0005001126.tif 000011
【図１１】
0005001126.tif 000012
【図１２】
0005001126.tif 000013
【図１３】
0005001126.tif 000014
【図１４】
0005001126.tif 000015
【図１５】
0005001126.tif 000016
【図１６】
0005001126.tif 000017
【図１７】
0005001126.tif 000018