(57)【要約】【課題】半導体集積回路を対象とした実機によるレジスタ転送レベルでの動作検証にあたり、回路規模を増大させることなく回路内部の信号の観測を行う。【解決手段】信号観測回路３１０のハッシュ値保持部３２０は、観測期間の開始タイミングに応じて外部から供給される初期ハッシュ値を、現ハッシュ値の初期値として保持する。以降、信号観測回路３１０のハッシュ値算出部３１１は、観測対象回路２１０から入力される観測対象信号と現ハッシュ値を利用して次のハッシュ値を算出する。ハッシュ値保持部３２０は、保持制御部３３０の制御に応じて、ハッシュ値算出部３１１により算出されたハッシュ値を現ハッシュ値として保持する。観測期間が終了した段階において得られている現ハッシュ値Ｈｎが観測対象信号の観測結果となる。【選択図】図２
2011257211.tif 000002
【特許請求の範囲】
【請求項１】
現ハッシュ値を保持し、観測対象回路から出力される観測対象信号を観測するための観測期間が終了したときに保持していた前記現ハッシュ値を前記観測対象信号についての観測結果として出力するハッシュ値保持部と、
前記現ハッシュ値と前記観測対象信号とを入力して次のハッシュ値を算出するハッシュ値算出部と、
前記次のハッシュ値を前記現ハッシュ値として前記ハッシュ値保持部に保持させるための制御を実行する保持制御部と
を具備する信号観測装置。
【請求項２】
前記保持制御部は、前記観測対象信号に変化が生じたことを検出したタイミングに対応して前記ハッシュ値算出部が算出した前記次のハッシュ値を前記現ハッシュ値として前記ハッシュ値保持部に保持させる請求項１記載の信号観測装置。
【請求項３】
前記保持制御部は、前記観測対象信号が有効とされている期間に対応して前記ハッシュ値算出部が算出する前記次のハッシュ値を前記現ハッシュ値として前記ハッシュ値保持部に保持させる請求項１記載の信号観測装置。
【請求項４】
前記保持制御部は、前記次のハッシュ値に代えて、前記観測期間の開始に対応するタイミングで外部から入力された所定値に基づく前記現ハッシュ値の初期値を前記ハッシュ値保持部に保持させる請求項１記載の信号観測装置。
【請求項５】
前記保持制御部は、前記ハッシュ値保持部に対して、前記次のハッシュ値よりも少ないビット数による前記所定値を所定期間において順次入力させ、前記所定期間が経過したタイミングにおいて前記ハッシュ値保持部にて保持されている値を、前記次のハッシュ値に代えて前記現ハッシュ値の初期値として保持させる請求項４記載の信号観測装置。
【請求項６】
複数の前記観測対象回路のうちから選択した１つの前記観測対象回路から出力される前記観測対象信号を前記ハッシュ値算出部に入力させる選択部をさらに具備する請求項１記載の信号観測装置。
【請求項７】
入力されたＭビットの前記観測対象信号をＮビットの信号に分割して前記ハッシュ値算出部に対して順次出力する信号出力部をさらに具備し、
前記ハッシュ値保持部は、順次出力される前記Ｎビットのデータを入力して前記ハッシュ値算出部が算出した次のハッシュ値を前記現ハッシュ値として保持する
請求項１記載の信号観測装置。
【請求項８】
入力されたｎビットによる前記観測対象信号をｍビット分蓄積する信号蓄積部をさらに具備し、
前記ハッシュ値算出部は、前記信号蓄積部に蓄積された前記ｍビット分の観測対象信号を入力して前記次のハッシュ値を算出する
請求項１記載の信号観測装置。
【請求項９】
現ハッシュ値を保持し、観測対象回路から出力される観測対象信号を観測するための観測期間が終了したときに保持していた前記現ハッシュ値を前記観測対象信号についての観測結果として出力するハッシュ値保持手順と、
前記現ハッシュ値と前記観測対象信号とを入力して次のハッシュ値を算出するハッシュ値算出手順と、
前記次のハッシュ値を前記現ハッシュ値として前記ハッシュ値保持手順によって保持させるための制御を実行する保持制御手順と
を具備する信号観測方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、信号観測装置に関し、特に、半導体集積回路の開発段階での検証のために、半導体集積回路における所定部位の信号を観測する信号観測装置およびその方法に関する。
【背景技術】
【０００２】
半導体集積回路の開発においては、開発段階にある半導体集積回路の信頼性を確保するために各種の検証が行われる。このような検証のうちで、レジスタ転送レベル（ＲＴＬ：Register Transfer Level）設計と、これに対応した半導体集積回路の制御ソフトウェアについての検証は次の２つの手法に分類できる。１つの手法はレジスタ転送レベルでのシミュレーションによる検証であり、もう１つの手法は実機による検証である。
【０００３】
前者のシミュレーションによる検証であれば、回路内部の信号を観測した場合と等価のシミュレーション結果を得ることができる。すなわち、回路内部の信号観測が可能である。これに対して、後者の実機による検証の場合、そのままでは回路内部の信号観測を行うことができない。これは、例えば実機内部における制御回路およびデータパスなどが設計者の意図した通りに動作しているか否かの確認を直接行うことができないことを意味する。例えばソフトウェアの動作を伴う統合検証にあたっては、期待と異なる動作や期待値と異なる出力データが観測された場合、ソフトウェアおよび回路におけるどの箇所にその原因があるのかを特定することが必要になる。しかし、上述のように実機による検証の場合、回路内部の信号を観測することができないため、その原因の特定は容易ではない。
【０００４】
そこで、従来技術として、アサーションベース検証を実行する機能を半導体集積回路に実装するようにした構成が知られている（例えば、特許文献１参照。）。アサーションとは検証対象の設計が満たすべき性質をいう。そして、アサーションベース検証では、検証対象とアサーションの関係を検査することで、アサーションが満たされているか否かを判定する。このアサーションベース検証は、一般にはシミュレーションによる検証で使用されるが、上述の従来技術では、アサーションベース検証を行う機能を半導体集積回路に実装する。これにより、実機における回路内部の信号観測を行うというものである。
【０００５】
また、もう１つの従来技術として、半導体集積回路に組み込んだ組込み自己検査（ＢＩＳＴ：Built In Self Test）の回路を利用したバウンダリスキャンによって実機の検証を行う構成が知られている（例えば、特許文献２参照。）。これらの技術の採用により、実機による検証において回路内部の信号を観測することが可能になる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１５８６９６号公報
【特許文献２】特開２００９−２５０６３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述した従来技術のうち、アサーションベース検証を実行する機能を半導体集積回路に実装する構成は、例えば次のような問題を有している。すなわち、開発対象の半導体集積回路がプログラミング可能なハードウェアである場合には有用であるが、書換え不可能なハードウェアである場合には適さないというものである。プログラミング可能なハードウェアの場合には、検証の完了後にプログラムの書換えを行うことによって、アサーションベース検証のための回路を削除することができる。しかし、書換え不可能なハードウェアである場合には、一度書込みを行った検証のための回路のプログラムを検証完了後に削除することができない。このために、半導体集積回路の回路規模が拡大したり、開発費用が増加するという問題を生じるのである。なお、プログラミング可能なハードウェアとしては、ＦＰＧＡ（Field Programmable Gate Array）が知られている。また、製造後において書換えが不可能なハードウェアとしては、ＡＳＩＣ（Application Specific Integrated Circuit）が知られている。
【０００８】
また、後者の従来技術であるバウンダリスキャンによる検証は、素子の物理的な故障検出を目的としている。検証対象回路はこの故障検出に対応した物理構造を有して構成され、さらに、検証時には、検証対象回路に対して、バウンダリスキャンに対応して通常とは異なる動作を実行させるモードを設定することになる。このようなことから、バウンダリスキャンは、通常動作に対応した実機の状態を検証する用途には適さない。
【０００９】
本発明はこのような状況に鑑みてなされたものであり、半導体集積回路を対象として実機によるレジスタ転送レベルでの動作検証を行うにあたり、回路規模を増大させることなく回路内部の信号の観測を行うことを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、現ハッシュ値を保持し、観測対象回路から出力される観測対象信号を観測するための観測期間が終了したときに保持していた上記現ハッシュ値を上記観測対象信号についての観測結果として出力するハッシュ値保持部と、上記現ハッシュ値と上記観測対象信号とを入力して次のハッシュ値を算出するハッシュ値算出部と、上記次のハッシュ値を上記現ハッシュ値として上記ハッシュ値保持部に保持させるための制御を実行する保持制御部とを具備する信号観測装置である。これにより、観測期間において出力される観測対象信号についての観測結果を１つのハッシュ値として得るという作用をもたらす。
【００１１】
また、この第１の側面において、上記保持制御部は、上記観測対象信号に変化が生じたことを検出したタイミングに対応して上記ハッシュ値算出部が算出した上記次のハッシュ値を上記現ハッシュ値として上記ハッシュ値保持部に保持させてもよい。これにより、観測対象信号が変化するごとに、変化後の観測対象信号を入力してハッシュ値算出部が算出した次のハッシュ値により現ハッシュ値を更新するという作用をもたらす。
【００１２】
また、この第１の側面において、上記保持制御部は、上記観測対象信号が有効とされている期間に対応して上記ハッシュ値算出部が算出する上記次のハッシュ値を上記現ハッシュ値として上記ハッシュ値保持部に保持させてもよい。これにより、有効な観測対象信号を入力してハッシュ値算出部が算出した次のハッシュ値により現ハッシュ値を更新するという作用をもたらす。
【００１３】
また、この第１の側面において、上記保持制御部は、上記観測期間の開始に対応するタイミングで外部から入力された所定値を、上記次のハッシュ値に代えて、上記現ハッシュ値の初期値として上記ハッシュ値保持部に保持させてもよい。これにより、観測期間の開始に対応してハッシュ値保持部に現ハッシュ値の初期値を保持させるという作用をもたらす。
【００１４】
また、この第１の側面において、前記保持制御部は、前記次のハッシュ値よりも少ないビット数による前記所定値を前記現ハッシュ値と前記観測対象信号とに代えて入力して前記次のハッシュ値を算出する動作を前記ハッシュ値算出部に所定回数実行させて最後に算出された前記次のハッシュ値を、前記現ハッシュ値の初期値として前記ハッシュ値保持部に保持させてもよい。これにより、現ハッシュ値の初期値設定のために入力される所定値が、次のハッシュ値(現ハッシュ値）よりも少ないビット数である場合に対応して、規定のビット数による現ハッシュ値の初期値を保持させるという作用をもたらす。
【００１５】
また、この第１の側面において、複数の上記観測対象回路のうちから選択した１つの上記観測対象回路から出力される上記観測対象信号を上記ハッシュ値算出部に入力させる選択部をさらに具備してもよい。これにより、選択する観測対象回路を順次切り替えていくことで、複数の観測対象回路の観測対象信号を順次観測するという作用をもたらす。
【００１６】
また、この第１の側面において、入力されたＭビットの上記観測対象信号をＮビットの信号に分割して上記ハッシュ値算出部に対して順次出力する信号出力部をさらに具備し、上記ハッシュ値保持部は、順次出力される上記Ｎビットのデータを入力して上記ハッシュ値算出部が算出した次のハッシュ値を上記現ハッシュ値として保持してもよい。これにより、ハッシュ値算出部が対応する入力ビット数よりも多いビット数の観測対象信号をハッシュ値算出部により算出させるという作用をもたらす。
【００１７】
また、この第１の側面において、入力されたｎビットによる上記観測対象信号をｍビット分蓄積する信号蓄積部をさらに具備し、上記ハッシュ値算出部は、上記信号蓄積部に蓄積された上記ｍビット分の観測対象信号を入力して上記次のハッシュ値を算出してもよい。これにより、ハッシュ値算出部が対応する入力ビット数よりも少ないビット数による観測信号をハッシュ値算出部により算出させるという作用をもたらす。
【発明の効果】
【００１８】
本発明によれば、回路規模を増大させることなく、半導体集積回路の内部の信号を観測することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施の形態における信号観測回路３１０の機能構成例を示す図である。
【図２】第１の実施の形態における観測対象回路２１０と信号観測回路３１０の具体構成例を示す図である。
【図３】第１の実施の形態における観測対象回路２１０と信号観測回路３１０を備える検証システム１０の構成例を示す図である。
【図４】第１の実施の形態における観測対象回路２１０の状態遷移例を示す図である。
【図５】第１の実施の形態における信号観測動作例を示すタイミングチャートである。
【図６】第１の実施の形態における検証動作のための手順例を示すフローチャートである。
【図７】本発明の第２の実施の形態における信号観測回路３１０Ａの機能構成例を示す図である。
【図８】第２の実施の形態における観測対象回路２１０Ａと信号観測回路３１０Ａの具体構成例を示す図である。
【図９】第２の実施の形態における信号観測動作例を示すタイミングチャートである。
【図１０】本発明の第３の実施の形態における信号観測回路３１０の構成例を示す図である。
【図１１】本発明の第４の実施の形態における信号観測回路３１０の構成例を示す図である。
【図１２】本発明の第５の実施の形態における信号観測回路３１０の構成例を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明を実施するための形態（以下、実施の形態と称する）について説明する。本発明の実施の形態の信号観測回路は、レジスタ転送レベル（ＲＴＬ）設計における半導体集積回路を検証するために使用される。また、この検証の手法については、シミュレーションによるものと実機によるものとに分けられるが、本発明の実施の形態では、実機による検証に対応するものとなる。また、検証の対象は、制御回路、データパス、および、制御ソフトウェアによる制御に応じた回路の動作のいずれかとなる。さらに、上記制御回路、データパスおよび制御ソフトウェアを統合して検証する統合検証も行うことができる。
【００２１】
また、本発明の実施の形態の説明は以下の順序により行う。
１．第１の実施の形態（信号観測回路：制御回路の検証に対応する構成例）
２．第２の実施の形態（信号観測回路：データパスの検証に対応する構成例）
３．第３の実施の形態（信号観測回路：複数のデータパスの検証に対応する構成例）
４．第４の実施の形態（信号観測回路：制御ソフトウェアによる制御に応じたアクセス動作の検証に対応する構成例）
５．第５の実施の形態（信号観測回路：ハッシュ値算出部に適用するハッシュ関数を変更した例）
【００２２】
＜１．第１の実施の形態＞
［信号観測回路の機能構成例］
まず、第１の実施の形態としては、半導体集積回路における制御回路の検証に対応した構成を採る。図１は、本発明の第１の実施の形態における信号観測回路３１０の機能構成例を示している。また、この図においては、信号観測回路３１０とともに検証システムを形成する他の主要部位として、機能モジュール２００、観測タイミング制御部５００および検証部６００を示している。
【００２３】
機能モジュール２００は、例えば検証の対象となる半導体集積回路に相当し、設計に従った特定機能を実行する部位である。そして、この機能モジュール２００の内部において、検証のための信号観測の対象となる観測対象回路２１０が備えられる。第１の実施の形態において、観測対象回路２１０は、上述のように、例えば半導体集積回路における制御回路となる。この観測対象回路２１０内の所定部位における信号が、観測対象信号として信号観測回路３１０に対して入力される。
【００２４】
信号観測回路３１０は、観測対象信号を入力して観測し、その観測結果を出力する部位である。この信号観測回路３１０は、ハッシュ値算出部３１１、ハッシュ値保持部３２０および保持制御部３３０を備える。
【００２５】
ハッシュ値算出部３１１は、観測対象信号と、次に述べるようにして入力される現ハッシュ値Ｈｎとを利用して、所定のハッシュ関数によりハッシュ値を算出する部位である。
【００２６】
ハッシュ値保持部３２０は、保持制御部３３０の制御に応じてハッシュ値算出部３１１にて算出されたハッシュ値を保持する部位である。ハッシュ値保持部３２０は、現時刻において保持しているハッシュ値を、現ハッシュ値Ｈｎとして出力する。ハッシュ値保持部３２０が新たにハッシュ値を保持したことに応じて、現ハッシュ値Ｈｎが更新されることになる。また、信号観測を終了した段階にてハッシュ値保持部３２０にて保持されているハッシュ値は、観測結果を示す観測ハッシュ値ＨＶとして出力される。
【００２７】
第１の実施の形態における保持制御部３３０は、ハッシュ値保持部３２０に対してハッシュ値を保持するタイミングを指示する。また、保持制御部３３０には、観測タイミング制御部５００から観測開始信号ＩＮＩＴが入力される。これに応じて、保持制御部３３０は、信号観測動作の開始タイミングに対応してハッシュ値保持部３２０を初期化する。すなわち、観測タイミング制御部５００から入力される初期ハッシュ値ＩＶＡＬＵＥを、現ハッシュ値Ｈｎの初期値としてハッシュ値保持部３２０に保持させる。
【００２８】
観測タイミング制御部５００は、検証システムにおける信号観測動作の開始および終了に関する制御を実行する部位である。このために、観測タイミング制御部５００は、機能モジュール２００に対して動作制御信号を出力する。また、信号観測回路３１０の保持制御部３３０に対して、観測開始信号ＩＮＩＴを出力する。また、信号観測動作の開始を指示する旨の観測開始指示信号の出力に応じたタイミングでハッシュ値保持部３２０に対して初期ハッシュ値ＩＶＡＬＵＥを出力する。
【００２９】
検証部６００は、信号観測回路３１０の観測結果である観測ハッシュ値ＨＶを利用して検証処理を実行することで検証結果を得る部位である。検証部６００は、検証処理として、信号観測動作が終了した段階にてハッシュ値保持部３２０に保持されている現ハッシュ値Ｈｎを観測ハッシュ値ＨＶとして入力する。また、期待ハッシュ値格納部６０１に格納されている期待ハッシュ値ＥＨＶを入力する。そして、この観測ハッシュ値ＨＶと期待ハッシュ値ＥＨＶとを比較する。
【００３０】
ハッシュ関数はメッセージダイジェスト関数とも呼ばれる。ハッシュ関数ｆ（ｘ）は、あるデータが与えられた場合に、そのデータを代表する数値を求める関数であり、例えば次の性質を有する。すなわち、任意の長さおよび値のビット例ｘに対して、ハッシュ関数ｆ（ｘ）により求められるハッシュ値としてのビット列は常に固定長となる。また、（ｆ（ｘ１）＝ｆ（ｘ２））が成立する場合、高い確率で（ｘ１＝ｘ２）となる。
【００３１】
期待ハッシュ値ＥＨＶは、観測対象回路２１０が観測期間において正しく動作した場合に得られるハッシュ値であり、所定の手法によって予め求められたうえで、上述のようにして、期待ハッシュ値格納部６０１に格納されている。期待ハッシュ値ＥＨＶは、例えばＣ言語などの所定のプログラミング言語により記述した観測対象回路２１０と同一の演算を行うプログラムにより求めることができる。なお、ハッシュ値算出部３１１に適用したハッシュ関数の演算手順と初期ハッシュ値ＩＶＡＬＵＥと期待観測対象信号とを利用して机上計算によって求めることも可能である。期待観測対象信号とは、観測対象回路２１０の設計に従って観測期間において出力される正しい観測対象信号をいう。
【００３２】
観測タイミング制御部５００からの動作制御信号に応答して機能モジュール２００が信号観測に対応した所定動作を開始するのに伴い、観測対象回路２１０も動作を実行する。観測対象信号は、信号観測が行われる観測期間における観測対象回路２１０の動作に応じた変化を有する。このため、観測ハッシュ値ＨＶは、観測期間において実際に得られた観測対象信号に対応した数値を示すものとなる。
【００３３】
ここで、ハッシュ値に関して、（ｆ（ｘ１）＝ｆ（ｘ２））が成立するにも係わらず、（ｘ１＝ｘ２）が成立しないことを衝突という。３２ビット巡回冗長検査で衝突が発生する確率は２−３２となる。この程度の衝突発生確率であれば、観測ハッシュ値ＨＶと期待ハッシュ値ＥＨＶとが一致している場合には、観測対象回路２１０から実際に出力された観測対象信号と期待観測対象信号とは一致していると判断してよい。したがって、観測対象回路２１０が設計にしたがった正しい動作を行ったのであれば、観測ハッシュ値ＨＶと期待ハッシュ値ＥＨＶとは一致することになる。
【００３４】
そこで、検証部６００は、上記したように観測ハッシュ値ＨＶと期待ハッシュ値ＥＨＶとを比較して、両者が一致しているか否かについての比較結果を求める。観測ハッシュ値ＨＶと期待ハッシュ値ＥＨＶとが一致しているとの比較結果が得られた場合、観測対象回路２１０は正しく動作しているとして、正しい旨の検証結果を出力する。
これに対して、観測ハッシュ値ＨＶと期待ハッシュ値ＥＨＶとが一致していないとの比較結果が得られた場合には、観測対象回路２１０は、観測期間において正しく動作しない状態があったとして、正しくない旨の検証結果を出力する。
【００３５】
第１の実施形態において、ハッシュ値算出部３１１に適用するハッシュ関数については、３２ビット巡回冗長検査（ＣＲＣ：Cyclic Redundancy Check）を想定する。３２ビット巡回冗長検査は、入力ビット列を生成多項式により除算した余り（剰余）を求めることにより、ハッシュ値を得る。この３２ビット巡回冗長検査のハッシュ関数に対応する生成多項式の一例を次式により示す。なお、次式は、ＩＥＥＥ８０２．３標準で規定されるフレームチェックシーケンスのための生成多項式となる。
ＣＲＣ（ｘ）＝ｘ３２＋ｘ２６＋ｘ２３＋ｘ２２＋ｘ１６＋ｘ１２＋ｘ１１＋ｘ１０
＋ｘ８＋ｘ７＋ｘ５＋ｘ４＋ｘ２＋ｘ＋１
【００３６】
［信号観測回路の具体的構成例］
図２は、第１の実施の形態における観測対象回路２１０および信号観測回路３１０についての具体的な内部構成例を示している。まず、観測対象回路２１０においては、前段回路２１１、フリップフロップ２１２および後段回路２１３が示されている。前段回路２１１は、各１ビットのイベント信号ＥＶ０、ＥＶ１、ＥＶ２と、フリップフロップ２１２から帰還される２ビットの信号ＳＴの入力に応答して動作を実行することで２ビットの信号を出力する。フリップフロップ２１２は、前段回路２１１から出力される２ビットの信号を、クロックタイミングに同期してラッチして信号ＳＴとして出力する。後段回路２１３は、フリップフロップ２１２から出力される信号ＳＴに応答した動作を実行することで各１ビットの信号ＥＮ０、ＥＮ１を出力する。この図に示される観測対象回路２１０が制御回路に相当し、図４により後述するようにして有限状態機械（ＦＳＭ：Finite State Machine）として動作する。
【００３７】
そして、この図２の場合には、フリップフロップ２１２から出力される信号ＳＴを観測対象信号とする。これは、フリップフロップ２１２の出力についての、イベント信号ＥＶ０乃至ＥＶ２の入力に応じた状態の遷移を観測することを意味する。観測対象回路２１０においては、信号ＳＴを観測対象信号として信号観測回路３１０側に出力させるために、プローブ２１４および出力ポート２１５が設けられる。プローブ２１４から出力された信号ＳＴは、出力ポート２１５を介して観測対象回路２１０から出力されるようになっている。
【００３８】
この図に示される信号観測回路３１０は、信号入出力ポートとして、観測対象信号系入力ポート４０１を備える。また、制御信号系入力ポート４０２ａおよび４０２ｂを備える。また、出力ポート４０３を備える。観測対象信号系入力ポート４０１は、観測対象回路２１０側から出力される観測対象信号をはじめとする所要の信号を入力するためのポートである。この場合の観測対象信号系入力ポート４０１は、観測対象回路２１０の出力ポート２１５からの信号ＳＴを入力するポートとなる。
【００３９】
また、制御信号系入力ポート４０２は、図１の観測タイミング制御部５００から出力される観測動作制御に関連した信号を入力するポートである。制御信号系入力ポート４０２ａには、観測開始信号ＩＮＩＴが入力される。制御信号系入力ポート４０２ｂには、図１の観測タイミング制御部５００から出力される初期ハッシュ値ＩＶＡＬＵＥが入力される。
【００４０】
なお、制御信号系入力ポート４０２ａおよび４０２ｂは、図示を分かりやすくすることの便宜から、それぞれ物理的に独立したポートとして示しているが、例えば、観測タイミング制御部５００からの入力に対応した１つの論理ポートとして構成されてもよい。
【００４１】
出力ポート４０３は、観測ハッシュ値ＨＶを出力するポートである。図１の検証部６００は、この出力ポート４０３から出力された観測ハッシュ値ＨＶを入力して比較に用いる。
【００４２】
次に、信号観測回路３１０におけるハッシュ値保持部３２０は、セレクタ３２１およびフリップフロップ３２２を備える。また、保持制御部３３０は、状態変化検出部３４０および論理和ゲート３３１を備える。
【００４３】
観測対象信号系入力ポート４０１から観測対象信号として入力された２ビットの信号ＳＴは、ハッシュ値算出部３１１と保持制御部３３０における状態変化検出部３４０とに対して分岐して入力される。
【００４４】
状態変化検出部３４０は、観測対象信号系入力ポート４０１から入力される観測対象信号の状態変化の有無を検出する部位であり、例えば図示するようにしてフリップフロップ３４１と比較回路３４２を備える。フリップフロップ３４１は、入力された２ビットの観測対象信号をクロックに同期したタイミングでラッチする。比較回路３４２は、現時刻において観測対象信号系入力ポート４０１から入力される観測対象信号と、フリップフロップ３４１の出力とを比較する。そして、比較結果を示す１ビットの信号として、両者が一致しているときには「０」を出力し、一致していないときに「１」を出力する。このようにして、状態変化検出部３４０は、検出信号として、観測対象信号の状態に変化がないときに対応しては「０」を出力し、観測対象信号の状態に変化が生じたことを検出したタイミングにおいて「１」を出力する。
【００４５】
保持制御部３３０における論理和ゲート３３１は、上記状態変化検出部３４０の検出信号と観測開始信号ＩＮＩＴとの論理和を出力する。観測開始信号ＩＮＩＴは、後述するようにして、観測を開始させるべきタイミングにおいて「１」により出力される。なお、以降の説明から理解されるように、状態変化検出部３４０の検出信号と観測開始信号ＩＮＩＴとが同時に「１」となることはない。したがって、論理和ゲート３３１は、状態変化検出部３４０からの「１」の検出信号または「１」の観測開始信号ＩＮＩＴの何れかを選択して出力する機能を有するものとなる。
【００４６】
図２においては、ハッシュ値算出部３１１に対して、３２ビット巡回冗長検査のハッシュ関数を適用することとしている。これにより、ハッシュ値算出部３１１にて算出されるハッシュ値は３２ビットによるものとなる。また、これに応じて、初期ハッシュ値ＩＶＡＬＵＥも３２ビットとしている。
【００４７】
ハッシュ値保持部３２０におけるセレクタ３２１は、３２ビット幅を有し、ハッシュ値算出部３１１にて算出されたハッシュ値と初期ハッシュ値ＩＶＡＬＵＥとの何れか一方を選択してフリップフロップ３２２に入力させる。セレクタ３２１は、観測開始信号ＩＮＩＴが「１」のときに初期ハッシュ値ＩＶＡＬＵＥを選択し、「０」のときにハッシュ値算出部３１１から出力されるハッシュ値を選択する。
【００４８】
また、フリップフロップ３２２は、セレクタ３２１を介して入力されるハッシュ値を保持する部位である。フリップフロップ３２２には保持制御部３３０における論理和ゲート３３１の出力がイネーブル信号として入力される。フリップフロップ３２２は、このイネーブル信号が「１」のときに、クロックに同期したタイミングでデータ入力端子に入力されているハッシュ値を保持し、現ハッシュ値Ｈｎとして出力する。ハッシュ値算出部３１１は、この３２ビットの現ハッシュ値Ｈｎと２ビットの観測対象信号（信号ＳＴ）とを入力してハッシュ値を算出する処理を行う。また、観測期間が終了した時刻においてフリップフロップ３２２にて保持されているハッシュ値が観測ハッシュ値ＨＶとなるものであり、出力ポート４０３を介して出力される。
【００４９】
［検証システムの構成例］
図３は、上記図２の構成に対応した検証システムの構成例を示している。この図に示す検証システム１０は、半導体集積回路（ＬＳＩ：Large Scale Integration）１００、メモリ１１、制御ソフトウェア格納部１２を備える。
【００５０】
半導体集積回路１００は、所定の機能が与えられるようにして製造された半導体装置であり、その内部において検証対象となる回路を有する。この半導体集積回路１００については、例えばＳｏＣ（System-on-a-chip）により設計されたものを想定することができる。ＳｏＣとは、１つの半導体チップ上に必要とされる機能（システム）を集積する集積回路の設計手法をいう。
【００５１】
この図における半導体集積回路１００は、機能モジュール２００、観測モジュール３００、制御プロセッサ１０１およびデータバス１０２を備える。機能モジュール２００、観測モジュール３００および制御プロセッサ１０１は、データバス１０２によって接続される。また、半導体集積回路１００に対して接続されるメモリ１１および制御ソフトウェア格納部１２も、半導体集積回路１００内部においてはデータバス１０２と接続されるようになっている。
【００５２】
機能モジュール２００は、検証対象の半導体集積回路の実機に相当する部位であり、その内部に図２に示した観測対象回路２１０を備える。また、観測モジュール３００は、図２に示した信号観測回路３１０に対してバスインターフェース機能を与えて構成した部位である。なお、図示するようにして、観測対象回路２１０から出力される観測対象信号としての信号ＳＴは、データバス１０２を経由せずに、観測モジュール３００における信号観測回路３１０に対して入力するようにしている。
【００５３】
制御プロセッサ１０１は、例えば実際にはＣＰＵ（Central Processing Unit）などとされ、制御ソフトウェア格納部１２に格納される制御ソフトウェアのプログラムを実行する部位である。また、メモリ１１は、例えば半導体集積回路１００に対して外付けのＤＲＡＭ（Dynamic Random Access Memory）などとされ、制御プロセッサ１０１が作業領域として利用する部位である。
【００５４】
制御ソフトウェア格納部１２は、上記の制御プロセッサ１０１に実行させるべき制御ソフトウェアのデータを格納する部位であり、実際においては、例えばＲＯＭ（Read Only Memory）などの補助記憶装置により構成される。なお、この制御ソフトウェア格納部１２としては、例えばハードディスクドライブなどの他の記憶装置を採用することも考えられる。
【００５５】
上記制御ソフトウェア格納部１２に格納される制御ソフトウェアは、機能モジュール２００を制御するためのプログラム記述内容を有するソフトウェアである。そのうえで、検証システム１０における制御ソフトウェアとしては、検証のための信号観測に対応した記述内容が追加されている。すなわち、制御プロセッサ１０１が、機能モジュール２００における観測対象回路２１０および観測モジュール３００における信号観測回路３１０に対して信号観測に対応した制御を行うためのプログラム内容が追加されている。これにより、制御プロセッサ１０１は、機能モジュール２００に対する通常動作に対応した制御と、観測対象回路２１０および信号観測回路３１０に対する信号観測に応じた制御とを実行することができる。
【００５６】
図１に示した観測タイミング制御部５００および検証部６００は、制御プロセッサ１０１が上記の制御ソフトウェアを実行することにより実現されるものとなる。すなわち、信号観測に際して、制御プロセッサ１０１は、データバス１０２を介して機能モジュール２００に対して動作制御信号を出力することにより、観測期間内における所定動作の実行を指示する。これにより、観測期間における機能モジュール２００は、或る決まったパターンのイベント信号ＥＶ０乃至２を生成して観測対象回路２１０に入力させるように動作する。または、動作制御信号として、制御プロセッサ１０１がイベント信号ＥＶ０乃至２を生成してデータバス１０２経由で観測対象回路２１０に入力させることも考えられる。また、制御プロセッサ１０１は、観測モジュール３００に対してはデータバス１０２を介して、観測開始信号ＩＮＩＴおよび初期ハッシュ値ＩＶＡＬＵＥを出力する。
【００５７】
また、観測期間を終了した段階において信号観測回路３１０から出力される観測ハッシュ値ＨＶはデータバス１０２を介して制御プロセッサ１０１が入力する。そして、先に図１にて説明した検証部６００としての動作を実行する。なお、図３の構成において、期待ハッシュ値ＥＨＶは、制御ソフトウェア格納部１２に対して、制御ソフトウェアが利用するデータとして格納しておくこととすればよい。または、検証のために制御ソフトウェアが起動されるごとに、この制御ソフトウェアのプログラムに従って制御プロセッサ１０１が期待ハッシュ値ＥＨＶを生成し、これをメモリ１１に保持させておくこととしてもよい。このように、図１の期待ハッシュ値格納部６０１は、図３においては、制御ソフトウェア格納部１２またはメモリ１１が対応する。
【００５８】
［検証動作例］
次に、上記図２および図３に示した構成の下での検証動作例について説明する。ここでの検証動作の説明にあたり、制御回路である観測対象回路２１０は、有限状態機械として下記の図４に示す状態遷移を行うことを前提とする。
【００５９】
図４においては、４つの状態７０１乃至７０４が示されている。これらの状態７０１乃至７０４は、信号ＳＴと信号ＥＮ０およびＥＮ１の状態の組合せとなっている。状態７０１では、信号ＳＴは「０」である。また、図において状態７０１には信号ＥＮ１およびＥＮ２が示されていないが、これは、信号ＥＮ０およびＥＮ１はいずれも非活性の状態に対応する「０」であることを示している。状態７０２は、信号ＳＴが「１」、信号ＥＮ０が「１」、および、信号ＥＮ１が「０」となることを示す。状態７０３は、信号ＳＴが「２」、信号ＥＮ０が「０」、信号ＥＮ１が「１」となることを示す。状態７０４は、信号ＳＴが「３」、信号ＥＮ０が「０」、信号ＥＮ１が「０」となることを示す。
【００６０】
状態７０１では、イベント信号ＥＶ０が「０」であるかぎり、同じ状態７０１を維持する。そして、イベント信号ＥＶ０が「１」であるとの条件が満たされると、状態７０１から状態７０２に遷移する。また、状態７０２において、イベント信号ＥＶ１が「０」であるとの条件が満たされると状態７０３に遷移するが、イベント信号ＥＶ１が「１」であるとの条件が満たされれば状態７０４に遷移する。また、状態７０３のもとでは、イベント信号ＥＶ０乃至ＥＶ２の状態にかかわらず状態７０４に遷移する。状態７０４のもとでは、イベント信号ＥＶ２が「０」であるとの条件が満たされているかぎりは同じ状態７０４を維持するが、イベント信号ＥＶ２が「１」であるとの条件が満たされると状態７０１に遷移する。
【００６１】
図５のタイミングチャートは、図２の観測対象回路２１０および信号観測回路３１０の観測期間における動作例を示している。
【００６２】
この図に示すクロックＣＬＫは、観測対象回路２１０および信号観測回路３１０に対して供給される。この図において時刻ｔ０は観測期間の開始タイミングを示し、時刻ｔｎは、観測期間の終了タイミングを示す。時刻ｔ０以前において、信号ＳＴは例えば初期状態として「０」が出力されている。また、イベント信号ＥＶ０乃至２は何れも「０」の状態のままとされている。
【００６３】
図１の観測タイミング制御部５００（制御プロセッサ１０１）は、時刻ｔ０に至る直前のタイミングで、図４に示すようにして、「１」の観測開始信号ＩＮＩＴを出力すると同時に、初期ハッシュ値ＩＶＡＬＵＥを出力する。信号観測回路３１０において、セレクタ３２１には、上記のタイミングで「１」の観測開始信号ＩＮＩＴが切替え制御信号として入力される。これに応じて、セレクタ３２１は、初期ハッシュ値ＩＶＡＬＵＥを選択してフリップフロップ３２２に対して出力する。
【００６４】
また、時刻ｔ０における「１」の観測開始信号ＩＮＩＴは、論理和ゲート３３１を経由してフリップフロップ３２２のイネーブル信号として入力される。これにより、フリップフロップ３２２はイネーブル状態となって、例えばクロックＣＬＫの立ち上がりエッジに同期したタイミングで初期ハッシュ値ＩＶＡＬＵＥを入力する。そして、この入力した初期ハッシュ値ＩＶＡＬＵＥの値「Ｈ０」を保持して出力端子より出力する。このようにして保持および出力される「Ｈ０」が現ハッシュ値Ｈｎの初期値となる。このように、観測期間の開始に応じては、まず、ハッシュ値保持部３２０が保持する現ハッシュ値Ｈｎに初期値を設定するための初期設定が行われる。
【００６５】
なお、観測開始信号ＩＮＩＴは、上記のタイミングにより「１」を出力した後は「０」に反転し、時刻ｔｎに至るまでこの状態が継続される。したがって、観測開始信号ＩＮＩＴが「０」に反転してから時刻ｔｎに至るまで、セレクタ３２１は、ハッシュ値算出部３１１からのハッシュ値を選択する状態が維持される。
【００６６】
また、観測タイミング制御部５００（制御プロセッサ１０１）は、時刻ｔ０以降における或るタイミングで、機能モジュール２００に対して動作制御信号を出力することにより、信号観測に対応した所定の一連の動作を開始させる。これにより、時刻ｔ０以降において図５に示すタイミングで、観測対象回路２１０に対してイベント信号ＥＶ０乃至２が入力される。これに応じて、時刻ｔ０以降の信号ＳＴは、図示するようにして、それぞれ所定の期間を有しながら、「０」「１」「３」「０」「１」「２」「３」「０」の順で状態が変化していく。この信号ＳＴとこれに伴う信号ＥＮ０およびＥＮ１の変化は、図４との対応では、状態７０１、状態７０２、状態７０４、状態７０１、状態７０２、状態７０３、状態７０４、状態７０１の順で状態遷移が発生していることを示している。
【００６７】
この図に示される観測対象回路２１０の動作では、時刻ｔ０を経過してから或る時間を経過した時刻ｔ１に至るまでの期間において、信号ＳＴは「０」の状態を維持する。このとき、この期間においては、状態変化検出部３４０における比較回路３４２は、何れも「０」の状態の信号ＳＴとフリップフロップ３４１のラッチ出力を入力していることからその比較結果として「０」を出力している。このためにハッシュ値保持部３２０におけるフリップフロップ３２２はディスエーブル状態となっている。したがって、ハッシュ値保持部３２０におけるフリップフロップ３２２は、現ハッシュ値Ｈｎを更新することなく、先に保持した初期値である「Ｈ０」を出力している。
【００６８】
そして、図５において時刻ｔ０から３クロック周期分を経過した時刻において、これまで「０」であった信号ＳＴが「１」に変化する。これに応じて、ハッシュ値算出部３１１は、例えば１クロック周期に応じた期間により、「１」の信号ＳＴと現ハッシュ値「Ｈ０」により次のハッシュ値を新たに算出して出力する。このときに算出されたハッシュ値を、ここでは「Ｈ１」とする。
【００６９】
また、比較回路３４２は、上記のようにして「１」に変化した信号ＳＴが入力されることにより、これまで「０」を出力していた状態から「１」を出力する状態に変化する。この比較回路３４２の出力は論理和ゲート３３１を経由してハッシュ値保持部３２０のフリップフロップ３２２のイネーブル信号として入力される。これにより、フリップフロップ３２２は、イネーブル状態となる。そしてフリップフロップ３２２はイネーブル状態においてクロックＣＬＫに同期したタイミングで、セレクタ３２１を介して入力されるハッシュ値算出部３１１からのハッシュ値を入力してラッチする。これにより、フリップフロップ３２２はハッシュ値「Ｈ１」を保持し、これを現ハッシュ値Ｈｎとして出力する。すなわち、信号ＳＴの変化に応じて現ハッシュ値Ｈｎを更新する。
【００７０】
なお、図４の回路の場合には、信号ＳＴが変化した時刻を含むクロック周期から２クロック周期を経過したタイミングで現ハッシュ値Ｈｎが更新されるようになっている。このタイミングはあくまでも図４に示した回路構成に対応した一例であり、例えば他の回路構成が採られたことに応じては、上記以外のタイミングで現ハッシュ値Ｈｎが更新されてよい。
【００７１】
以降は、同様にして、信号ＳＴが変化するごとに、ハッシュ値算出部３１１においては、この変化後の信号ＳＴの値と現ハッシュ値Ｈｎとを利用して、新たに次のハッシュ値を算出する。そして、ハッシュ値保持部３２０は、この次のハッシュ値を保持することで現ハッシュ値Ｈｎの更新を行っていく。
【００７２】
機能モジュール２００は、信号観測に対応した動作を、その開始から一定時間を経過した後に終了する。この動作が終了して以降、例えばイベント信号ＥＶ０乃至ＥＶ２は「０」が継続されることで、信号ＳＴの状態が遷移しないようにされる。
【００７３】
図１の観測タイミング制御部５００（制御プロセッサ１０１）は、上記のようにして機能モジュール２００が動作を停止してから或る時間を経過した時刻ｔｎを観測期間の終了タイミングとして判定する。この時刻ｔｎは、機能モジュール２００が信号観測に対応する動作を終了してから、この信号観測に対応する動作の終了段階までの信号ＳＴの変化を反映した現ハッシュ値Ｈｎの出力が確定されたタイミングに対応するものとなる。
【００７４】
そして、上記時刻ｔｎの観測期間終了タイミングを経過すると、検証部６００は、時刻ｔｎ以降においてハッシュ値保持部３２０が保持して出力している現ハッシュ値Ｈｎを、出力ポート４０３を経由して、観測ハッシュ値ＨＶとして入力する。そして、前述のようにして、期待ハッシュ値ＥＨＶと、観測ハッシュ値ＨＶとを比較することにより検証結果を出力する。
【００７５】
上記の動作は、その内部回路の特定箇所にて現れている観測対象信号を比較的長い一定期間にわたって観測しているといえる。レジスタ転送レベル設計での実機による検証を行うにあたり、上記のようにして、一定期間の観測対象信号を観測しようとする場合には、本発明の実施の形態以外に、次のような手法を考えることができる。すなわち、上記の特定箇所から出力させた信号を観測期間にわたって記録しておき、観測期間終了後の任意のときに記録した観測対象信号を読み出して確認または解析するというものである。
【００７６】
しかし、このような手法を採用しようとすると、観測期間としての一定時間分の観測対象信号を記憶させておく必要が生じる。観測対象信号を記憶させるにあたり、そのための記憶回路を実機としての観測対象回路の内部に設けることが考えられる。この場合には、観測期間の終了後において、上記の記憶回路に記憶させた観測対象信号を読み出して解析に利用することになる。しかし、この場合には、観測対象回路の内部に対して観測期間分の観測対象信号を記憶可能なだけの容量の記憶回路を追加することになり、観測対象回路の回路規模が拡大してしまう。
【００７７】
そこで、観測対象信号を記憶する記憶装置を観測対象回路の外部に設けることが考えられる。この構成であれば、観測対象回路内に容量の大きな記憶回路を設ける必要はなくなる。しかし、この場合には、観測対象回路から外部の記憶装置に観測対象信号を伝送するための伝送路について広い帯域幅を確保しなければならない。
【００７８】
一例として、観測対象信号が８ビットで伝送周波数が２００ＭＨｚであり、観測期間は１ミリ秒間であるとする。この観測対象信号を記憶しようとすれば、記憶回路としては１．６メガビットが必要になる。また、この観測対象信号を外部に伝送しようとすれば、そのための伝送路は１．６ギガビット／秒のデータ伝送速度の条件を満足することが必要になる。このようにして、一定時間分の観測対象信号の観測のために、観測対象信号そのものを記録しようとした場合には、大容量の記憶回路または非常に帯域幅の広い伝送路を追加することが必要になる。このような大規模な回路等の追加は、例えば開発費の増加などにつながるために好ましくない。
【００７９】
これに対して、本発明の実施の形態であれば、観測期間の終了時において得られている観測ハッシュ値ＨＶを取得すればよい。これまでの説明から理解されるように、観測ハッシュ値ＨＶは、観測期間における観測対象信号（信号ＳＴ）の状態の変化が反映された値を有している。したがって、例えば観測対象回路２１０が正しく動作しているか否かを判定するにあたっては、観測ハッシュ値ＨＶは、観測期間において記憶された観測対象信号と同等のものとして扱うことができる。
【００８０】
そして、前述したように、観測ハッシュ値ＨＶは、適用されたハッシュ関数に対応して決まるビット数しか有さない。第１の実施の形態の場合であれば、３２ビット巡回冗長検査のハッシュ関数を適用しているために観測ハッシュ値ＨＶは３２ビットである。この程度のビット数であれば、観測ハッシュ値ＨＶを検証部６００に伝送するための伝送路として広い帯域幅を確保する必要はない。また、仮にこの観測ハッシュ値ＨＶを観測対象回路２１０において保持させておく構成を採ることとしても、その記憶容量は３２ビットでよいことになり、回路規模の拡大はほとんどないと考えてよい。このようにして、本発明の第１の実施の形態によっては、実機による検証において一定期間における信号観測を行う場合であっても、観測対象回路２１０に対して大規模な回路を追加する必要がない。これにより、例えば製品としての半導体集積回路の回路規模の拡大や開発コストの増加を抑えることができる。
【００８１】
また、観測期間における信号観測回路３１０の動作は、観測対象回路２１０から入力される観測対象信号に応じて現ハッシュ値を更新していくという受動的なもので、観測対象回路２１０や他の既存の回路に対して何らかの制御を行うというものではない。すなわち、本実施の形態の信号観測回路３１０の動作は、観測対象回路２１０やその他の既存回路の動作に影響を及ぼすものではなく、これにより安全に検証を行うことができる。
【００８２】
［検証動作の手順例］
次に、図６のフローチャートを参照して、制御プロセッサ１０１が実行する検証動作のための処理手順例について説明する。なお、この図に示す手順は、図１の観測タイミング制御部５００と検証部６００が適宜実行するものとしてみることができる。観測タイミング制御部５００および検証部６００としての機能は、図３の制御プロセッサ１０１に制御ソフトウェアとしてのプログラムを実行させることにより実現することができる。
【００８３】
図６において、まず、検証部６００は、信号観測に先立って期待ハッシュ値ＥＨＶを求めておき（ステップＳ９０１）、この求められた期待ハッシュ値ＥＨＶを期待ハッシュ値格納部６０１に格納する（ステップＳ９０２）。上記ステップＳ９０１のように期待ハッシュ値ＥＨＶを検証部６００により算出させることとした場合には、例えば前述のように、所定のプログラミング言語により記述した観測対象回路２１０と同一の演算を行うプログラムを実装しておくこととすればよい。検証部６００は、このプログラムに従った演算を行うことで期待ハッシュ値ＥＨＶを求めることができる。
【００８４】
上記のようにして期待ハッシュ値ＥＨＶを算出して格納した後において、観測タイミング制御部５００は、信号観測動作を開始させるための制御を実行する（ステップＳ９０３）。すなわち、図５の時刻ｔ０の直前に対応するタイミングにおいて示したように、信号観測回路３１０に対して、観測開始信号ＩＮＩＴと初期ハッシュ値ＩＶＡＬＵＥとを出力する。また、観測対象回路２１０において観測期間における所定の動作が開始されるように機能モジュール２００側に対して動作制御信号を出力する。
【００８５】
上記ステップＳ９０３の信号観測動作開始制御を実行した後においては、図５の時刻ｔ０以降として示したようにして信号観測動作が実行される。この状態のもと、観測タイミング制御部５００は、図５の時刻ｔｎに対応する観測期間の終了タイミングに至るのを待機している（ステップＳ９０４）。
【００８６】
なお、先の説明では、機能モジュール２００および観測対象回路２１０は、信号観測に対応した動作を開始してから一定時間後に終了することとしている。しかし、例えば、時刻ｔｎに対応した所定タイミングで、観測タイミング制御部５００が上記の信号観測に対応した動作を停止させるように制御する構成としてもよい。
【００８７】
そして、上記ステップＳ９０４にて、時刻ｔｎとしての観測期間の終了タイミングに至ったことが判定されたとする。これに応じて、検証部６００は、時刻ｔｎ以降において、このときにハッシュ値保持部３２０にて保持されている現ハッシュ値Ｈｎを、観測ハッシュ値ＨＶとして入力する(ステップＳ９０５）。そして、この観測ハッシュ値ＨＶと、期待ハッシュ値格納部６０１に格納されている期待ハッシュ値ＥＨＶとの比較を行う（ステップＳ９０６）。検証部６００は、このステップＳ９０６による比較処理の結果として、観測ハッシュ値ＨＶと期待ハッシュ値ＥＨＶの値が一致しているか否かについて判定する(ステップＳ９０７）。
【００８８】
上記ステップＳ９０７において一致しているとの判定結果が得られた場合には、観測対象回路２１０が設計に従って期待したとおりに正しく動作しているということになる。そこで、検証部６００は、ＯＫの検証結果を出力する（ステップＳ９０８）。これに対して、上記ステップＳ９０７において一致しているとの判定結果が得られなかった場合には、観測対象回路２１０は期待したとおりの動作が得られなかったことになる。そこで、この場合の検証部６００はＮＧの検証結果を出力する（ステップＳ９０９）。
【００８９】
本発明の第１の実施の形態においては、例えば検証対象となる半導体集積回路を制御する制御ソフトウェアを利用して検証を行うこととしている。この場合において、上記図６から理解されるように、信号観測回路３１０は、ステップＳ９０３による観測動作開始制御をトリガとしてその動作が自発的に開始されるものとなっている。すなわち、検証を行うのに対応して制御ソフトウェアを変更するにあたり、信号観測回路３１０の制御に関しては、例えば、動作開始のための観測開始信号ＩＮＩＴと初期ハッシュ値ＩＶＡＬＵＥの出力に関する記述を追加すればよい。一方、観測期間において、機能モジュール２００およびその内部の観測対象回路２１０は、例えば検証に特化した動作ではなく、通常における所定動作を実行させればよい。これにより、制御ソフトウェアについて機能モジュール２００および観測対象回路２１０を制御するための記述に関しては変更の必要がない。このようにして、本発明の実施の形態においては、検証に用いるソフトウェアなどについても、例えばその変更などに関して効率化が図られている。
【００９０】
＜第２の実施の形態＞
［信号観測回路の機能構成例］
図７は、本発明の第２の実施の形態における信号観測回路３１０Ａの構成例を示している。この図においても、信号観測回路３１０Ａとともに検証システムを形成する他の主要部位として、機能モジュール２００、観測タイミング制御部５００および検証部６００を示している。なお、図１と同一部分については同一符号を付し、ここでの説明は省略する。
【００９１】
この第２の実施の形態においては、データパスを検証対象とする。これに応じて、機能モジュール２００における観測対象回路２１０Ａは、データパスに相当する所定箇所を含むものとなる。
【００９２】
この第２の実施の形態における観測対象回路２１０Ａからは、観測対象信号および有効信号の２つの信号が信号観測回路３１０Ａに対して入力される。信号観測回路３１０Ａにおいて、観測対象信号はハッシュ値算出部３１１に対して入力される。有効信号は保持制御部３３０に対して入力される。
【００９３】
［信号観測回路の具体的構成例］
図８は、第２の実施の形態における信号観測回路３１０Ａの具体的構成についての一例を示している。なお、この図において図２と同一部分には同一符号を付している。
【００９４】
まず、この図に示される観測対象回路２１０Ａにおいては、フリップフロップ２１２Ａが示されている。このフリップフロップ２１２Ａのデータ入力端子に対しては８ビットのデータ信号ＤＡＴＡが入力される。また、イネーブル端子に対しては、イネーブル信号として有効信号ＶＡＬＩＤが入力される。フリップフロップ２１２Ａは有効信号ＶＡＬＩＤが「１」とされてイネーブル状態を示しているときに、データ入力端子に入力されている８ビットのデータ信号ＤＡＴＡをデータ出力端子から出力するように動作する。この観測対象回路２１０Ａに対する検証は、データパスの検証として、例えばフリップフロップ２１２Ａとして示される回路への入力値が正しいものであるか否かについて確認するものとなる。
【００９５】
上記データ信号ＤＡＴＡは、観測対象信号として、出力ポート２１５ａから出力され、さらに信号観測回路３１０Ａの観測対象信号系入力ポート４０１ａを経由してハッシュ値算出部３１１に対して入力される。また、有効信号ＶＡＬＩＤは、出力ポート２１５ｂから出力され、さらに信号観測回路３１０Ａのもう１つの観測対象信号系入力ポート４０１ｂを経由して、論理和ゲート３３１の一方の入力端子に対して入力される。なお、観測対象信号系入力ポート４０１ａおよび４０１ｂは、観測対象回路２１０Ａからの入力に対応した論理ポートとして１つに統合される構成とされてよい。
【００９６】
論理和ゲート３３１の他方の入力端子には、先の第１の実施の形態に対応する図２と同様に観測開始信号ＩＮＩＴが入力される。また、観測開始信号ＩＮＩＴがセレクタ３２１の選択制御信号として入力される点も図２と同様である。
【００９７】
この図に示す保持制御部３３０は、図１の保持制御部３３０における状態変化検出部３４０に相当する部位は備えず、上記した論理和ゲート３３１のみを備えて構成されるものとなっている。
【００９８】
このようにして、第２の実施の形態においては、観測対象回路２１０Ａの所定箇所において得られるデータ信号ＤＡＴＡが観測対象信号としてハッシュ値算出部３１１に対して入力されるようになっている。この場合のハッシュ値算出部３１１は、例えば８ビットのデータ信号ＤＡＴＡを入力する以外は、図２と同様にして、３２ビット巡回冗長検査のハッシュ関数によりハッシュ値を算出する。
【００９９】
なお、第２の実施の形態における検証システムとしては、図３と同様にして、機能モジュール２００、観測モジュール３００、制御プロセッサ１０１、メモリ１１および制御ソフトウェア格納部１２により構成されるものとなる。ただし、この場合の機能モジュール２００および観測モジュール３００は、それぞれ、図８に示した観測対象回路２１０Ａおよび信号観測回路３１０Ａを備えるものとなる。また、観測対象回路２１０Ａから信号観測回路３１０Ａに対しては、信号ＳＴに代えて、データ信号ＤＡＴＡが観測対象信号として入力される。また、有効信号ＶＡＬＩＤも、データ信号ＤＡＴＡと同様に、観測対象回路２１０Ａから信号観測回路３１０Ａに対して入力される。
【０１００】
［検証動作例］
続いて、上記図７および図８に示した構成の下での第２の実施の形態としての検証動作例について、図９のタイミングチャートを参照して説明する。図９においては、クロックＣＬＫが示されていないが、先の第１の実施の形態に対応する図５の場合と同様にして観測対象回路２１０Ａおよび信号観測回路３１０Ａに対して供給される。
【０１０１】
第２の実施の形態においても、観測タイミング制御部５００（制御プロセッサ１０１）は、時刻ｔ０に至る直前のタイミングで、機能モジュール２００に対して信号観測に対応した動作の開始を指示するための動作制御信号を出力する。
【０１０２】
また、同じ時刻ｔ０に至る直前のタイミングで、観測タイミング制御部５００は、図４に示すようにして、「１」の観測開始信号ＩＮＩＴを出力すると同時に、初期ハッシュ値ＩＶＡＬＵＥを出力する。これにより、信号観測回路３１０Ａのハッシュ値保持部におけるフリップフロップ３２２は、時刻ｔ０に対応するタイミングで初期ハッシュ値ＩＶＡＬＵＥが示す値である「Ｈ０」を保持する。
【０１０３】
また、時刻ｔ０にて機能モジュール２００が信号観測に対応する所定動作の実行を開始するのに応じて、時刻ｔ０以降においては、図９に示すタイミングによりデータ信号ＤＡＴＡおよび有効信号ＶＡＬＩＤがフリップフロップ２１２Ａに対して入力される。すなわち、時刻ｔ０から所定時間を経過した時刻ｔ１に至るまでの期間は、有効信号ＶＡＬＩＤは無効であることを示す「０」であるとともに、有効なデータ信号ＤＡＴＡも出力されていない。すなわち、データ停止期間となる。次に、時刻ｔ１乃至ｔ２により、有効信号ＶＡＬＩＤが有効を示す「１」となるとともに、有効なデータ信号ＤＡＴＡが入力されるデータ伝送期間となる。なお、データ信号ＤＡＴＡは、例えばクロックＣＬＫの周期タイミングに応じてその値が変化するものとなる。以降、図示するようにして、時刻ｔ２乃至ｔ６の期間において、データ停止期間とデータ伝送期間とが交互に現れる。そして、時刻ｔ６にてデータ停止期間となって所定時間が経過すると、観測期間の終了タイミングである時刻ｔｎに至る。
【０１０４】
図８の構成では、保持制御部３３０の論理和ゲート３３１は、一方の端子に有効信号ＶＡＬＩＤを入力している。このために、時刻ｔ０以降の観測期間においては、ハッシュ値保持部３２０におけるフリップフロップ３２２は、有効信号ＶＡＬＩＤが「１」のときにイネーブル状態となる。これにより、ハッシュ値算出部３１１は、各データ伝送期間（時刻ｔ１乃至ｔ２、時刻ｔ３乃至ｔ４および時刻ｔ５乃至ｔ６）において、クロックＣＬＫの周期タイミングごとに、データ信号ＤＡＴＡおよび現ハッシュ値Ｈｎを入力する。そして、これらの入力したデータを利用してハッシュ値を算出する処理を実行する。これに伴い、同じデータ伝送期間において、ハッシュ値保持部３２０におけるフリップフロップ３２２は、クロックＣＬＫの周期タイミングにより、ハッシュ値算出部３１１により算出されたハッシュ値を入力し、これを現ハッシュ値Ｈｎとして保持する。これにより、上記データ伝送期間においては、クロックＣＬＫの周期タイミングでデータ信号ＤＡＴＡが変化していくのに応じて、順次、現ハッシュ値Ｈｎが更新されていくことになる。そして、この第２の実施の形態の場合には、時刻ｔ６以降において得られている現ハッシュ値Ｈｎが観測ハッシュ値ＨＶとして、出力ポート４０３を介して検証部６００（制御プロセッサ１０１）に対して供給される。
【０１０５】
上記のようにして、第２の実施の形態においては、時刻ｔ０乃至ｔｎによる観測期間におけるデータ信号ＤＡＴＡの内容に応じた値を有する観測ハッシュ値ＨＶが得られる。この第２の実施の形態においても、検証部６００は、既知である観測期間のデータ信号ＤＡＴＡの内容に基づいて期待ハッシュ値ＥＨＶを算出し、これを期待ハッシュ値格納部６０１にて保持させている。そして、検証部６００により、この期待ハッシュ値ＥＨＶと観測ハッシュ値ＨＶとを比較した結果から、観測対象回路２１０ＡについてのＯＫまたはＮＧの検証結果が出力される。このように第２の実施の形態では、実機によりデータパスの検証を行うにあたっても観測ハッシュ値ＨＶを用いた検証を行うことができる。これにより、第２の実施の形態にあっても、第１の実施の形態と同様にして、観測対象回路２１０Ａに対して大容量の記憶装置を追加したり、観測対象信号の伝送路の帯域幅を大幅に拡大したりする必要はない。
【０１０６】
なお、第２の実施の形態における観測対象信号は、観測対象回路が備えるデータパスとしての回路におけるどの箇所において得られるものであってもよい。一例として、観測対象回路のデータ信号入力ポートを観測点として、この観測点にて得られるデータ信号を観測対象信号とした場合には、観測対象回路に入力されるデータ信号の値が正しいものであるか否かを確認できる。これは、次のような状況において有用である。例えば観測対象回路についての統合検証を行ったところ、何らかのデータの不一致が検出されたとする。この検出結果に応じて、観測対象回路のデータ信号入力ポートを観測点として第２の実施の形態による信号観測を行って検証結果を得る。この検証結果に基づけば、例えば半導体集積回路において物理的に設けられる入力ピンから、この半導体集積回路における観測対象回路の入力ポートまでの経路において問題箇所が存在するか否かを判断することができる。
【０１０７】
＜第３の実施の形態＞
［信号観測回路の構成例］
続いて、本発明の第３の実施の形態について説明する。この第３の実施の形態は、上記第２の実施の形態と同様にしてデータパスを検証対象とする。そのうえで、１つの信号観測回路によって複数の観測対象回路を検証可能なようにして構成される。
【０１０８】
図１０は、第３の実施の形態における信号観測回路３１０Ｂの内部構成例とともに、観測対象回路を示している。なお、この図において図８と同一部分には同一符号を付して説明を省略する。
【０１０９】
図１０においては、３つの観測対象回路２１０Ａ−１乃至３が示されている。これら複数の観測対象回路２１０は、図３との対応では２つの態様を取り得る。１つの態様は、同じ１つの機能モジュール２００内において、複数の観測対象回路２１０の全てが備えられるというものである。もう１つの態様は、機能モジュール２００が複数備えられているとしたうえで、これらの機能モジュール２００のそれぞれにおいて１以上の所定の観測対象回路２１０が備えられるというものである。
【０１１０】
観測対象回路２１０Ａ−１の出力ポート２１５−１は、例えば図８に示した出力ポート２１５ａおよび２１５ｂを一括して示したものである。すなわち、観測対象回路２１０Ａ−１の出力ポート２１５−１からは、観測対象回路２１０Ａ−１の内部における所定のデータパスにて出力されたデータ信号と有効信号が出力される。同様にして、観測対象回路２１０Ａ−２の出力ポート２１５−２からは、観測対象回路２１０Ａ−２の内部における所定のデータパスから出力されたデータ信号と有効信号が出力される。観測対象回路２１０Ａ−３の出力ポート２１５−３からは、観測対象回路２１０Ａ−３の内部における所定のデータパスから出力されたデータ信号と有効信号が出力される。
【０１１１】
図１０に示される信号観測回路３１０Ｂは、図示するようにしてセレクタ３６０および信号観測部３５０を備える。上記観測対象回路２１０Ａ−１乃至３の出力ポート２１５−１乃至３から出力されたデータ信号および有効信号の各組は、それぞれ、観測対象信号系入力ポート４０１−１乃至３を介してセレクタ３６０に対して入力される。観測対象信号系入力ポート４０１−１乃至３の各々は、例えば実際においては、図８の観測対象信号系入力ポート４０１ａおよび４０１ｂの組から成る。また、観測対象信号系入力ポート４０１−１乃至３は、１つの論理ポートとして構成することができる。
【０１１２】
セレクタ３６０は、これらの入力された３つの信号の組のうちから、１つの信号の組を選択して出力する。セレクタ３６０における信号の組の選択は、制御信号系入力ポート４０２ｃから入力される２ビットの選択制御信号ＳＥＬが示すビット値に応じて行われる。この選択制御信号ＳＥＬは、制御プロセッサ１０１（観測タイミング制御部５００）によってデータバス１０２経由で信号観測回路３１０Ｂに対して出力されるものである。なお、セレクタ３６０は、特許請求の範囲に記載の選択部の一例である。また、この図に示される３つの制御信号系入力ポート４０２ａ、４０２ｂ、４０２ｃは、観測タイミング制御部５００からの入力に対応する１つの論理ポートとして形成されてよい。
【０１１３】
また、信号観測部３５０は、図８に示した信号観測回路３１０Ａと同じ回路構成を有する。セレクタ３６０から出力された信号の組のうち、データ信号ＤＡＴＡは、観測対象信号として信号観測部３５０におけるハッシュ値算出部３１１に対して入力される。有効信号ＶＡＬＩＤは、信号観測部３５０における論理和ゲート３３１の一方の入力端子に対して入力される。
【０１１４】
［検証動作例］
図１０に示される第３の実施の形態の構成のもとでの検証動作は、例えば次のようになる。まず、観測タイミング制御部５００は、観測対象回路２１０Ａ−１乃至３のうちから、信号観測の対象とする観測対象回路に対応する選択制御信号ＳＥＬを出力する。例えば観測対象回路２１０Ａ−１を対象とするのであれば、この観測対象回路２１０Ａ−１に対応する選択制御信号ＳＥＬを出力する。これにより、セレクタ３６０は、観測対象回路２１０Ａ−１から入力されたデータ信号ＤＡＴＡおよび有効信号ＶＡＬＩＤの組を選択して出力する状態となる。この状態のもと、観測タイミング制御部５００は、時刻ｔ０の直前に対応するタイミングで観測開始信号ＩＮＩＴおよび初期ハッシュ値ＩＶＡＬＵＥを出力して、現ハッシュ値Ｈｎを初期化する。また、図９に示した観測期間（時刻ｔ０乃至ｔｎ）において観測対象回路２１０Ａ−１により信号観測に対応した動作が実行されるように制御する。これにより、信号観測回路３１０Ｂの信号観測部３５０は、図９の時刻ｔ０乃至ｔｎにおける場合のように、有効信号ＶＡＬＩＤが「１」の期間におけるデータ信号ＤＡＴＡの入力に応じて現ハッシュ値Ｈｎを更新しながら保持していく動作を実行する。そして、時刻ｔｎに至って観測期間が終了したとされると、検証部６００は、時刻ｔｎ以降において得られている現ハッシュ値Ｈｎを観測ハッシュ値ＨＶとして取り込み、期待ハッシュ値ＥＨＶとの比較に基づく検証処理を実行する。これにより、まず、観測対象回路２１０Ａ−１についての検証結果が得られることになる。
【０１１５】
続いて、観測タイミング制御部５００は、観測対象回路２１０Ａ−２に対応する選択制御信号ＳＥＬを出力し、セレクタ３６０にて観測対象回路２１０Ａ−２からの信号の組が選択されるようにする。この状態のもとで、上記と同様にして、観測期間（時刻ｔ０乃至ｔｎ）において、観測対象回路２１０Ａ−２と信号観測回路３１０Ｂとを動作させる。この観測期間の終了後、検証部６００は、観測ハッシュ値ＨＶを利用して観測対象回路２１０Ａ−２についての検証結果を得る。続いては、観測対象回路２１０Ａ−３に対応する選択制御信号ＳＥＬが出力されることで、セレクタ３６０にて観測対象回路２１０Ａ−３からの信号の組が選択されるようにする。そして、この状態のもとで、上記と同様にして、観測対象回路２１０Ａ−２と信号観測回路３１０Ｂとを動作させ、観測対象回路２１０Ａ−３についての検証結果を得る。
【０１１６】
このようにして、第３の実施の形態の信号観測回路３１０Ｂは、複数の観測対象回路２１０のうちから対象として選択された１つの観測対象回路２１０の信号観測が可能なようにして構成される。これにより、１つの信号観測回路により、複数の観測対象回路を検証することが可能となり、例えば、データパスにおける問題箇所を効率よく特定していくことができる。
【０１１７】
＜第４の実施の形態＞
［信号観測回路の構成例］
図１１は、第４の実施の形態における信号観測回路３１０Ｃの構成例を示している。この第４の実施の形態における信号観測回路３１０Ｃは、制御ソフトウェアの制御に応じて実行される動作について検証するための一構成例となる。なお、この図においては、観測対象回路２１０の図示は省略している。図１１の例は、制御プロセッサ１０１が実行するアクセス制御に応じた回路の動作を観測しようというものである。例えばメモリマップドＩ／Ｏ方式で制御される機能モジュールに対する検証を行おうとした場合に、この図に示す信号観測回路３１０Ｃの構成が最も有用となる。このために、信号観測回路３１０Ｃは、観測対象信号として、アドレスＡＤＤＲ、書込データＷＤＡＴＡおよび読出データＲＤＡＴＡを入力する。ここでは、アドレスＡＤＤＲ、書込データＷＤＡＴＡおよび読出データＲＤＡＴＡは、何れも３２ビットであることとしている。
【０１１８】
また、アドレスＡＤＤＲ、書込データＷＤＡＴＡおよび読出データＲＤＡＴＡの各観測対象信号に対応して、アドレス有効信号ＡＶＡＬＩＤ、書込有効信号ＷＶＡＬＩＤおよび読出有効信号ＲＶＡＬＩＤを入力する。アドレス有効信号ＡＶＡＬＩＤ、書込有効信号ＷＶＡＬＩＤおよび読出有効信号ＲＶＡＬＩＤは、各１ビットの信号であり、対応する信号について、「１」により有効であることを示し、「０」により無効であることを示す。
【０１１９】
なお、これらのアドレスＡＤＤＲ、アドレス有効信号ＡＶＡＬＩＤ、書込データＷＤＡＴＡ、書込有効信号ＷＶＡＬＩＤ、読出データＲＤＡＴＡおよび読出有効信号ＲＶＡＬＩＤについては、一括してアクセス制御信号ともいうことにする。
【０１２０】
上記アクセス制御信号は、図３に示す制御プロセッサ１０１が、制御ソフトウェア格納部１２に格納される制御ソフトウェアを実行することによって、データバス１０２を介して観測対象回路２１０に対して出力するものとなる。すなわち、図１１の構成では、制御ソフトウェアに基づいて出力される信号を観測対象としており、これにより、実機による検証として、制御ソフトウェアについての検証を行おうというものである。
【０１２１】
信号観測回路３１０Ｃは、上記アクセス制御信号を、例えばデータバス１０２を経由して制御プロセッサ１０１から入力する。または、制御プロセッサ１０１からデータバス１０２を経由して観測対象回路２１０に入力されたアクセス制御信号を、観測対象回路２１０において観測点として設けられた出力ポートから入力する。図１１においては、上記アクセス制御信号を、それぞれ、観測対象信号系入力ポート４０１ａ乃至４０１ｆ経由で入力している。なお、これら観測対象信号系入力ポート４０１ａ乃至４０１ｆも、実際においては、アクセス制御信号の入力に対応した１つの論理ポートとして構成されてよい。
【０１２２】
この図に示される信号観測回路においては、図８と同様の構成によるハッシュ値算出部３１１、ハッシュ値保持部３２０および保持制御部３３０を備える。さらに、上記の入力信号に対応して、フリップフロップ３７１乃至３７３、セレクタ３７４および観測動作制御回路３８１を備える。
【０１２３】
フリップフロップ３７１は、イネーブル端子に入力されるアドレス有効信号ＡＶＡＬＩＤが有効を示す「１」であるときに、データ入力端子に入力されるアドレスＡＤＤＲをクロックＣＬＫに同期したタイミングでラッチして出力する部位である。同様にして、フリップフロップ３７２は、イネーブル端子に入力される書込有効信号ＷＶＡＬＩＤが「１」であるときに、データ入力端子に入力される書込データＷＤＡＴＡをクロックＣＬＫに同期したタイミングでラッチして出力する部位である。フリップフロップ３７３は、イネーブル端子に入力される読出有効信号ＲＶＡＬＩＤが「１」であるときに、データ入力端子に入力される読出データＲＤＡＴＡをクロックＣＬＫに同期したタイミングでラッチして出力する部位である。
【０１２４】
セレクタ３７４は、入力される各３２ビットのアドレスＡＤＤＲ、書込データＷＤＡＴＡおよび読出データＲＤＡＴＡのうちから、選択制御信号に応じて８ビットを選択して出力する部位である。
【０１２５】
観測動作制御回路３８１は、信号観測回路３１０Ｃにおける信号観測動作の制御として、セレクタ３７４の切替え制御、および、ハッシュ値保持部３２０のフリップフロップ３２２がハッシュ値を保持するタイミングの制御を実行する部位である。このために、観測動作制御回路３８１は、アドレス有効信号ＡＶＡＬＩＤ、書込有効信号ＷＶＡＬＩＤおよび読出有効信号ＲＶＡＬＩＤを入力することとしている。そして、これらの入力信号に応じてセレクタ３７４に対して選択制御信号を出力し、論理和ゲート３３１を介してフリップフロップ３２２に対してイネーブル信号を出力する。
【０１２６】
［検証動作例］
次に、上記図１１に示した信号観測回路３１０Ｃの構成の下での検証動作例について説明する。この場合においても、観測タイミング制御部５００は、動作制御信号を出力することで、観測期間において機能モジュール２００に所定の動作を実行させる。この場合には、所定動作として、メモリに対する所定のシーケンスによるアクセス制御を実行させる。また、観測タイミング制御部５００は、観測期間の開始タイミングに応じては、「１」の観測開始信号ＩＮＩＴと初期ハッシュ値ＩＶＡＬＵＥとを信号観測回路３１０Ｃに対して出力する。これにより、信号観測回路３１０Ｃのフリップフロップ３２２は現ハッシュ値Ｈｎとして「Ｈ０」を保持する。
【０１２７】
ここで、観測期間における或るタイミングで、制御プロセッサ１０１によりデータ書込みのためのアクセス制御が実行されたとする。これに応じては、例えば１クロック周期のタイミングで、信号観測回路３１０Ｃに対してアドレス有効信号ＡＶＡＬＩＤが「１」の状態の下でアドレスＡＤＤＲ（３２ビット）が入力される。また、これと同時に、書込有効信号ＷＶＡＬＩＤが「１」とされた状態の下で書込データＷＤＡＴＡ（３２ビット）が入力される。このとき、観測動作制御回路３８１に対しては、同時に「１」に反転したアドレス有効信号ＡＶＡＬＩＤおよび書込有効信号ＷＶＡＬＩＤが入力される。これにより、観測動作制御回路３８１は、アドレスＡＤＤＲおよび書込データＷＤＡＴＡが入力されたタイミングを検出する。
【０１２８】
信号観測回路３１０Ｃに入力されたアドレス有効信号ＡＶＡＬＩＤおよび書込データＷＤＡＴＡは、それぞれフリップフロップ３７１、３７２により同じタイミングでラッチされる。フリップフロップ３７１、３７２は、ラッチ(保持）している値を継続して出力するが、このラッチ出力がセレクタ３７４に対して出力される。このときセレクタ３７４は、計６４ビットを入力することになる。
【０１２９】
ここで、例えば３２ビット巡回冗長検査のハッシュ関数においては、入力の最大ビット数が８ビットとして規定されている。これに対して、本実施の形態においてハッシュ値算出部３１１に対して入力される信号は、上記のように６４ビットであり、８ビットよりも大きい。
【０１３０】
そこで、観測動作制御回路３８１は、上記のようにして検出したアドレスＡＤＤＲおよび書込データＷＤＡＴＡの入力タイミングに基づく所定タイミングで、セレクタ３７４に対して選択制御信号を出力する。これにより、セレクタ３７４は、入力される計６４ビットのアドレス有効信号ＡＶＡＬＩＤおよび書込データＷＤＡＴＡのうちから、予め定められた順序により、１クロック周期ごとに８ビットのデータを選択して出力する。すなわち、計６４ビットのデータを８ビットに分割して、８回に分けて順次出力する。これにより、セレクタ３７４に入力された計６４ビットのアドレス有効信号ＡＶＡＬＩＤおよび書込データＷＤＡＴＡは、計８クロック周期分の期間を経てセレクタ３７４から出力されることになる。このようにして計６４ビットの信号を入力して８ビットずつ順次出力するセレクタ３７４は、特許請求の範囲に記載の信号出力部の一例である。
【０１３１】
ハッシュ値算出部３１１は、上記の８クロック周期分の期間において、１クロック周期ごとに、現ハッシュ値Ｈｎとセレクタ３７４から入力される８ビットのデータとによりハッシュ値を算出する処理を実行する。
【０１３２】
また、観測動作制御回路３８１は、セレクタ３７４からアドレス有効信号ＡＶＡＬＩＤおよび書込データＷＤＡＴＡが出力される８クロック周期分の期間に対応して、論理和ゲート３３１に対して「１」のイネーブル信号を出力する。この「１」のイネーブル信号が出力されている期間においてフリップフロップ３２２はイネーブル状態となって、ハッシュ値算出部３１１にて算出されたハッシュ値を入力して保持し、その都度、現ハッシュ値Ｈｎを更新することになる。
【０１３３】
そして、上記８クロック周期分の期間が終了した段階では、ハッシュ値算出部３１１が最後の８回目に算出したハッシュ値が、フリップフロップ３２２において現ハッシュ値Ｈｎとして保持されることになる。このときに保持されている現ハッシュ値Ｈｎが、今回のアドレスＡＤＤＲおよび書込データＷＤＡＴＡの出力までのアクセス制御に反映した値を有していることになる。
【０１３４】
なお、データ読出しのアクセス制御に応じても、上記と同様にして、例えば１クロック周期によりアドレスＡＤＤＲと読出有効信号ＲＶＡＬＩＤとによる計６４ビットが入力される。そして、これに応じて観測動作制御回路３８１が上記と同様の制御を実行することで、８クロック周期分の期間にわたってハッシュ値の算出が行われる。この場合にも、ハッシュ値算出部３１１が最後の８回目に得られている現ハッシュ値Ｈｎが、今回のアドレスＡＤＤＲおよび読出データＲＤＡＴＡを出力するまでの制御ソフトウェアのアクセス制御動作を反映したものとなる。
【０１３５】
観測期間においては、所定のシーケンスによってデータ書込みおよびデータ読出しのアクセス制御が実行され、その都度、上記のようにして現ハッシュ値Ｈｎが更新されていく。そして、観測期間が終了した段階において最終的に求められた現ハッシュ値Ｈｎは、観測期間において出力された全てのアドレスＡＤＤＲ、書込データＷＤＡＴＡおよび読出データＲＤＡＴＡが反映された値を有するものとなる。第４の実施の形態においても、検証部６００は、この最終的に求められた現ハッシュ値Ｈｎを、観測ハッシュ値ＨＶとして入力する。
【０１３６】
第４の実施の形態においては、観測期間において制御ソフトウェアにより出力させているとする既知のアドレスＡＤＤＲ、書込データＷＤＡＴＡおよび読出データＲＤＡＴＡに基づいて期待ハッシュ値ＥＨＶを求めることになる。このようにして求められた期待ハッシュ値ＥＨＶが期待ハッシュ値格納部６０１に格納される。そして、検証部６００は、検証処理として、観測ハッシュ値ＨＶと期待ハッシュ値ＥＨＶとを比較して検証結果を得る。
【０１３７】
なお、例えば制御ソフトウェアの構成によっては、上記の８クロック周期分の期間によるハッシュ値の更新が完了する以前のタイミングで次のアクセス制御が実行される場合もある。このようなアクセス制御に対応する場合には、例えば、フリップフロップ３７１乃至３７３に代えて、アクセス制御が実行される時間間隔に応じて必要なだけの容量の先入れ先出し（ＦＩＦＯ）バッファを備えることとすればよい。また、上記の説明では、アドレスＡＤＤＲ、書込データＷＤＡＴＡおよび読出データＲＤＡＴＡの３つの信号を観測対象信号としている。しかし、これらの信号における任意の１つまたは２つの信号のみを観測対象とすることも可能である。この場合には、信号観測回路３１０Ｃにおいて観測対象としない信号に対応するポートを削除すればよい。
【０１３８】
このようにして、第４の実施の形態の構成によれば、制御プロセッサ１０１により発行されるアクセスに応じた信号を観測することができる。これにより、制御ソフトウェアによるアクセス制御について、設計に従って正しく実行されているか否かについて検証することができる。具体的に、制御プロセッサ１０１のバスインターフェースを観測点とすれば、制御ソフトウェア全体の動作を検証対象とすることができる。また、特定のハードウェアモジュールのバスインターフェースを観測点とすることによっては、制御ソフトウェアにおいて、上記特定のハードウェアモジュールに対応するデバイスドライバの動作を検証することができる。
【０１３９】
＜第５の実施の形態＞
［信号観測回路の構成例］
上記第１乃至第４の実施の形態においては、信号観測回路３１０のハッシュ値算出部３１１に適用するハッシュ関数として３２ビット巡回冗長検査を想定していた。通常の検証にあたっては、３２ビット巡回冗長検査を適用して十分な精度で検証を行うことができるが、何らかの事情により、さらに衝突確率を低くしてより高い精度の検証結果を得ることが必要な場合もあると考えられる。そこで、第５の実施の形態では、ハッシュ値算出部３１１に対して、３２ビット巡回冗長検査よりも衝突確率の低いハッシュ関数を適用することとした場合の構成について説明する。
【０１４０】
上記のようなハッシュ関数については特に限定されるものではないが、以降の第５の実施の形態の説明にあたっては、セキュアハッシュアルゴリズム１（ＳＨＡ−１）といわれるハッシュ関数のアルゴリズムを適用した場合を想定する。このＳＨＡ−１は、標準規格（ＦＩＰＳ  Ｐｕｂｌｉｃａｔｉｏｎ  １８０−１）にて定義されるハッシュ関数である。この標準規格は、ＮＩＳＴ（National Institute of Standards and Technology:アメリカ国立標準技術研究所）が策定した。
【０１４１】
上記ＳＨＡ−１により算出されるハッシュ値は１６０ビットとなる。このようにしてハッシュ値としてのビット数が３２ビット巡回冗長検査よりも多くなっていることにより、衝突確率がさらに低いものとなる。
【０１４２】
図１２は、第５の実施の形態における信号観測回路３１０Ｄの構成例を示している。この信号観測回路３１０Ｄは、入力バッファ３１３、ハッシュ値算出部３１１Ａ、ハッシュ値保持部３２０Ａおよび観測動作制御回路３８１Ａを備える。
【０１４３】
図１２に示される信号観測回路３１０Ｄは、データパスの検証を行うことを想定している。これに応じて、信号観測回路３１０Ｄは、先の第２の実施の形態に対応する図８と同様に、観測対象信号系入力ポート４０１ａと４０１ｂの各々からデータ信号ＤＡＴＡ(８ビット）と有効信号ＶＡＬＩＤ(１ビット）を入力する。これらのデータ信号ＤＡＴＡおよび有効信号ＶＡＬＩＤは、例えば図８に示した観測対象回路２１０Ａから、それぞれ、出力ポート２１５ａおよび２１５ｂを介して出力されるものである。また、制御信号系入力ポート４０２ａと４０２ｂからは、観測開始信号ＩＮＩＴと初期ハッシュ値ＩＶＡＬＵＥが入力される。
【０１４４】
データ信号ＤＡＴＡは、入力バッファ３１３に入力される。有効信号ＶＡＬＩＤは、観測動作制御回路３８１Ａに入力される。また、観測開始信号ＩＮＩＴは、観測動作制御回路３８１Ａに入力される。初期ハッシュ値ＩＶＡＬＵＥは、ハッシュ値保持部３２０Ａに対して入力される。
【０１４５】
入力バッファ３１３は、８ビットのデータ信号ＤＡＴＡを入力して所定ビット数を一時的に蓄積する部位である。この場合においては、ＳＨＡ−１で規定されるデータの入力単位である５１２ビットを蓄積可能とされている。入力バッファ３１３は、特許請求の範囲に記載の信号蓄積部の一例である。
【０１４６】
ハッシュ値算出部３１１Ａは、上記したように、ＳＨＡ−１によりハッシュ値を算出する部位である。ハッシュ値算出部３１１Ａは、入力バッファ３１３にて蓄積された５１２ビットを入力するとともに、ハッシュ値保持部３２０Ａにて保持されている１６０ビットの現ハッシュ値Ｈｎとを利用して新たな１６０ビットのハッシュ値を算出する。
【０１４７】
第５の実施の形態におけるハッシュ値算出部３１１Ａは、ＳＨＡ−１が適用されることにより、３２ビット巡回冗長検査が適用される場合と比較して演算量が大幅に増加する。３２ビット巡回冗長検査が適用されたハッシュ値算出部３１１であれば、例えば組み合わせ回路の構成により、１クロック周期で１回のハッシュ値の更新を行うことができる。これに対して、ＳＨＡ−１が適用されるハッシュ値算出部３１１Ａは、２以上の所定のクロック周期数に対応する期間にわたって演算を繰り返し実行することにより１回のハッシュ値の更新を行うものとして構成される。また、このＳＨＡ−１が適用されるハッシュ値算出部３１１Ａは、例えば順序回路により構成することになる。
【０１４８】
ハッシュ値保持部３２０Ａは、上記ハッシュ値算出部３１１Ａにて算出されたハッシュ値を現ハッシュ値Ｈｎとして保持する。このハッシュ値保持部３２０Ａの内部構成については、先に図８などに示したハッシュ値保持部３２０と同様にして、セレクタ３２１およびフリップフロップ３２２を備えたものとすることができる。ただし、この場合のハッシュ値が１６０ビットであることに対応して、セレクタ３２１およびフリップフロップ３２２については、それぞれ、１６０ビットに対応するビット幅を有するようにして構成することになる。
【０１４９】
観測動作制御回路３８１Ａは、入力バッファ３１３、ハッシュ値算出部３１１Ａおよびハッシュ値保持部３２０Ａの動作を制御する部位である。ハッシュ値保持部３２０Ａに現ハッシュ値Ｈｎを保持させるための観測動作制御回路３８１Ａの制御機能は、特許請求の範囲に記載の保持制御部の一例である。
【０１５０】
［検証動作例］
次に、第５の実施の形態の信号観測回路３１０Ｄを含む検証システムの検証動作例について説明する。この第５の実施の形態においても、信号観測動作の開始に際しては、観測タイミング制御部５００が信号観測回路３１０Ｄに対して観測開始信号ＩＮＩＴおよび初期ハッシュ値ＩＶＡＬＵＥを出力する。観測開始信号ＩＮＩＴは、観測動作制御回路３８１Ａに入力される。初期ハッシュ値ＩＶＡＬＵＥは、ハッシュ値保持部３２０Ａに入力される。
【０１５１】
ここで、この図の構成では、初期ハッシュ値ＩＶＡＬＵＥについては、例えば制御ソフトウェアの汎用性、共用性などを考慮して、先に説明した各実施の形態と同様に３２ビットを想定している。したがって、第５の実施の形態においては、初期ハッシュ値ＩＶＡＬＵＥのビット数に対してハッシュ値のビット数のほうが多いことになる。具体的には、ハッシュ値が１６０ビットであるから、初期ハッシュ値ＩＶＡＬＵＥの３２ビットに対して５倍の大きさとなっている。先の各実施の形態においては、１クロック周期において入力される初期ハッシュ値ＩＶＡＬＵＥをそのままハッシュ値保持部３２０にて保持することで、同じ３２ビットの初期値「Ｈ０」を保持していた。しかし、この第５の実施の形態においては、１クロック周期のみによっては、１６０ビットの初期値「Ｈ０」を設定して保持させることはできない。
【０１５２】
そこで、観測動作制御回路３８１Ａは、例えば、以下のようにしてハッシュ値保持部３２０Ａにて初期値「Ｈ０」を保持させるための制御を実行する。まず、観測動作制御回路３８１Ａは、観測開始信号ＩＮＩＴの入力に応じて、ハッシュ値保持部３２０Ａにおけるフリップフロップ３２２を５クロック周期の期間にわたってイネーブル状態とする。第５の実施の形態においては、制御ソフトウェアにより、観測開始信号ＩＮＩＴのタイミングに対応させて上記の初期ハッシュ値ＩＶＡＬＵＥが５クロック周期にわたって出力されるようになっている。なお、ここで５クロック周期を設定しているのは、初期ハッシュ値ＩＶＡＬＵＥのビット数（３２ビット）に対してハッシュ値のビット数（１６０ビット）が５倍であることによる。これにより、上記の５クロック周期における１周期ごとに、ハッシュ値保持部３２０Ａに対して３２ビットの初期ハッシュ値ＩＶＡＬＵＥが順次入力される。これにより、５クロック周期を経過した時点でハッシュ値保持部３２０Ａには、５つの初期ハッシュ値ＩＶＡＬＵＥ（３２ビット）から成る１６０ビットが保持される。このようにしてハッシュ値保持部３２０Ａにて保持された１６０ビットを初期値「Ｈ０」とするというものである。
【０１５３】
また、上記の例では、ハッシュ値保持部３２０Ａに１６０ビット分の初期値「Ｈ０」を保持させるまでの５クロック周期の期間において、ハッシュ値算出部３１１Ａはハッシュ値を算出する処理は特に実行しないようにされている。このような構成に対して、例えば、上記の５クロック周期の期間においてハッシュ値算出部３１１Ａに対してハッシュ値の算出処理を実行させる初期値「Ｈ０」の設定動作とすることも考えられる。この場合には、ハッシュ値保持部３２０Ａは、上記５クロック周期の期間において順次入力される３２ビットの初期ハッシュ値ＩＶＡＬＵＥを蓄積しながら保持するとともに、保持した値を現ハッシュ値Ｈｎとして出力する。このとき、ハッシュ値算出部３１１Ａは、上記５クロック周期における周期ごとに現ハッシュ値Ｈｎを入力して新たなハッシュ値を算出する。すなわち、５回のハッシュ値演算を実行する。そして、ハッシュ値保持部３２０Ａは、この５回のハッシュ値演算によりハッシュ値算出部３１１Ａにて算出された１６０ビットのハッシュ値を、初期値「Ｈ０」として保持する。何れにせよ、上記の２つの例では、５クロック周期を経過した時点においてハッシュ値保持部３２０Ａにて結果的に保持されることとなる１６０ビットによる値が初期値「Ｈ０」として扱われるものである。
【０１５４】
また、上記２つの例とは異なる他の初期値設定の例として、初期ハッシュ値ＩＶＡＬＵＥをハッシュ値と同じ１６０ビット幅により入力させるようにして構成することは可能である。この場合には、ハッシュ値保持部３２０Ａにおいて１クロック周期により１６０ビットの初期値「Ｈ０」が保持される。
【０１５５】
そして、観測動作制御回路３８１Ａは、上記初期値「Ｈ０」を保持させた後の所定タイミングで、観測対象回路２１０Ａに対して観測期間に対応した動作を実行させるための動作制御信号を出力する。
【０１５６】
観測期間が開始されて以降において、信号観測回路３１０Ｄに対しては、観測対象回路２１０Ａの動作に応じた所定のタイミングで、先に図９にて示したように有効信号ＶＡＬＩＤが「１」の期間において有効なデータ信号ＤＡＴＡが入力される。このようにして入力される８ビット単位のデータ信号ＤＡＴＡは、順次、入力バッファ３１３に入力されて蓄積されていく。観測動作制御回路３８１Ａは、「１」の有効信号ＶＡＬＩＤが入力されている期間においてクロックＣＬＫに基づくタイミングでカウントを行うことで、入力バッファ３１３におけるデータ蓄積量を算出している。そして、観測動作制御回路３８１Ａは、データ蓄積量が５１２ビットとなったタイミングで、この５１２ビットのデータを、１クロック周期ごとに所定のビット数ずつハッシュ値算出部３１１に転送していく。なお、転送したデータについては入力バッファ３１３から消去すればよい。
【０１５７】
また、観測動作制御回路３８１Ａは、入力バッファ３１３からデータを転送させたタイミングに応じて、ハッシュ値算出部３１１Ａに対してハッシュ値の算出処理の実行を指示する。これにより、ハッシュ値算出部３１１Ａはハッシュ値を更新する処理を開始する。すなわち、所定のクロック周期数に対応する期間において、入力バッファ３１３から入力した所定ビット数によるデータ信号ＤＡＴＡのビット列と、ハッシュ値保持部３２０Ａにて保持されている現ハッシュ値Ｈｎとを利用して、新たなハッシュ値を算出する。
【０１５８】
観測動作制御回路３８１Ａは、ハッシュ値算出部３１１Ａに対してハッシュ値の算出を指示した時刻から１回のハッシュ値算出に要する所定のクロック周期数を経過したタイミングでハッシュ値保持部３２０Ａをイネーブル状態とする。これにより、ハッシュ値保持部３２０Ａは、ハッシュ値算出部３１１Ａにより更新されたハッシュ値を現ハッシュ値Ｈｎとして保持する。この動作が観測期間において、有効なデータ信号ＤＡＴＡが入力されるごとに実行される。そして、検証部６００は、観測期間が終了した段階において得られている現ハッシュ値Ｈｎを観測ハッシュ値ＨＶとして入力する。
【０１５９】
検証部６００による検証処理はこれまでに説明した実施の形態と同様である。ただし、この場合における期待ハッシュ値ＥＨＶは、ＳＨＡ−１により求められた１６０ビットによるものとなる。
【０１６０】
このようにして第５の実施の形態においては、ハッシュ値算出部３１１ＡにＳＨＡ−１を適用することとして、これに対応した信号観測回路３１０Ｄの構成を採ることとした。具体的には、図１２に示す構成では、ハッシュ値算出部３１１Ａのデータ入力単位が５１２ビットであるのに対して、観測対象信号であるデータ信号ＤＡＴＡはこれより少ない８ビットとなっている。そこで、ハッシュ値算出部３１１Ａの前段において入力バッファ３１３を設け、データ信号ＤＡＴＡを５１２ビット分蓄積してハッシュ値算出部３１１Ａに入力するようにしている。第５の実施の形態においては、上記のような構成により、３２ビット巡回冗長検査よりも衝突耐性が高いハッシュ関数によりハッシュ値を算出することが可能とされる。これにより、第５の実施の形態においては、例えば３２ビット巡回冗長検査を適用した場合よりも高い精度の検証結果を得ることができる。
【０１６１】
なお、第５の実施の形態として図１２に示した構成は、データパスの検証に対応する構成を採っている。しかし、第５の実施の形態としてのハッシュ関数を適用した信号観測回路を含む検証システムは、制御回路または制御ソフトウェアについての検証を行うように構成することが可能である。
【０１６２】
また、これまでの説明においては、ハッシュ関数として、３２ビット巡回冗長検査によるハッシュ関数、または、ＳＨＡ−１を適用するものとしているが、これ以外のハッシュ関数が採用されてよい。
【０１６３】
また、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１６４】
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【符号の説明】
【０１６５】
１０  検証システム
１１  メモリ
１２  制御ソフトウェア格納部
１００  半導体集積回路
１０１  制御プロセッサ
２００  機能モジュール
２１０、２１０Ａ  観測対象回路
３００  観測モジュール
３１０、３１０Ａ、３１０Ｂ、３１０Ｃ、３１０Ｄ  信号観測回路
３１１、３１１Ａ  ハッシュ値算出部
３１３  入力バッファ
３２０、３２０Ａ  ハッシュ値保持部
３３０  保持制御部
３４０  状態変化検出部
３５０  信号観測部
３６０  セレクタ
３８１、３８１Ａ  観測動作制御回路
５００  観測タイミング制御部
６００  検証部
６０１  期待ハッシュ値格納部
【図１】
2011257211.tif 000003
【図２】
2011257211.tif 000004
【図３】
2011257211.tif 000005
【図４】
2011257211.tif 000006
【図５】
2011257211.tif 000007
【図６】
2011257211.tif 000008
【図７】
2011257211.tif 000009
【図８】
2011257211.tif 000010
【図９】
2011257211.tif 000011
【図１０】
2011257211.tif 000012
【図１１】
2011257211.tif 000013
【図１２】
2011257211.tif 000014