(57)【要約】【課題】システムシミュレーション時は高速にシミュレーションができ、デバッグ時にはユーザに必要な情報を的確に通知して、高速性とデバッグ性を両立できること。【解決手段】システムシミュレータ１００は、ソフトウェア１０２に従って、ハードウェアモデルモデル１０３にアクセスし、ハードウェアモデル１０３をシミュレーション動作させるＣＰＵモデル１０１と、ユーザからの通知を受けたときにハードウェアモデル１０３の状態を算出して出力するデバッグブロック１０４とを実装し、シミュレーション中にはＣＰＵモデル１０１とのアクセス等の最低限度の動作のみを行い、デバッグ用の通知を受けたときのみ、状態を算出してそのシミュレーション時刻でのハードウェアの状態を出力するモデルを作成し、シミュレーション中はシステムに影響を与える最低限度の部分のみ動作させる。【選択図】図１
2007122346.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアの機能をシミュレーション用にモデル化したハードウェアモデルと、
供給されたソフトウェアに従って、前記ハードウェアモデルにアクセスし、該ハードウェアモデルをシミュレーション動作させるＣＰＵモデルと、
前記ハードウェアモデルの状態を算出して出力するデバッグブロックとを備え、
前記デバッグブロックは、
ユーザからのデバッグ用通知を受けるデバッグ指示手段と、
ユーザからのデバッグ用通知を受けたときに、前記ハードウェアモデルから取得した値を基に前記ハードウェアモデルの状態を算出する状態算出手段と、
算出された前記ハードウェアモデルの状態を出力する出力手段と
を備えることを特徴とするシステム検証装置。
【請求項２】
前記ハードウェアモデルは、前記ＣＰＵモデルとのアクセスの結果をレジスタ値として格納する格納手段と、
ハードウェアの機能に沿った動作を行う動作手段と、
前記デバッグブロックから通知を受けたときに、現在の前記レジスタ値を渡す通知手段とを備え、
前記デバッグブロックは、前記状態算出手段からの通知を受けて、前記ハードウェアモデルの前記通知手段にレジスタ値の取得要求を発行し、前記レジスタ値を取得する取得手段をさらに備えることを特徴とする請求項１記載のシステム検証装置。
【請求項３】
前記デバッグブロックは、シミュレーション実行中はハードウェア機能の動作はさせず、ユーザからのデバッグ用通知を受けたときに、前記ハードウェアモデルの状態を再現することを特徴とする請求項１又は請求項２に記載のシステム検証装置。
【請求項４】
前記デバッグブロックは、シミュレーション実行中はハードウェア機能の動作はさせず、ユーザからのデバッグ用通知を受けたときに、前記ハードウェアモデルの状態をユーザに通知することを特徴とする請求項１乃至請求項３のいずれかに記載のシステム検証装置。
【請求項５】
前記デバッグブロックは、シミュレーション実行中は前記ＣＰＵモデルからのアクセスを受ける前記格納手段のみを動作させることを特徴とする請求項１乃至請求項４のいずれかに記載のシステム検証装置。
【請求項６】
前記デバッグブロックは、ユーザからデバッグ用通知の指示を受けたとき、前記状態算出手段が前記ハードウェアモデルの状態を算出し、前記出力手段が算出された前記ハードウェアモデルの状態を出力することを特徴とする請求項１乃至請求項５のいずれかに記載のシステム検証装置。
【請求項７】
前記デバッグブロックは、シミュレーション実行時には、システムに影響を与える最低限度のアクセスを前記ＣＰＵモデルに実行させることを特徴とする請求項１乃至請求項６のいずれかに記載のシステム検証装置。
【請求項８】
ソフトウェアに従って、ハードウェアの機能をシミュレーション用にモデル化したハードウェアモデルをシミュレーション動作させ、前記ハードウェアモデルの状態を算出して出力するシステム検証方法であって、
ユーザからのデバッグ用通知を受けるデバッグ指示ステップと、
ユーザからのデバッグ用通知を受けたときに、前記ハードウェアモデルから取得した値を基に前記ハードウェアモデルの状態を算出する状態算出ステップと、
算出された前記ハードウェアモデルの状態を出力するステップと
を有することを特徴とするシステム検証方法。
【請求項９】
前記ハードウェアモデル側では、前記ＣＰＵモデルとのアクセスの結果をレジスタ値として格納するステップと、
ハードウェアの機能に沿った動作を行うステップと、
前記デバッグブロックから通知を受けたときに、現在の前記レジスタ値を渡す通知ステップとを実行し、
前記デバッグブロック側では、前記ハードウェアモデルにレジスタ値の取得要求を発行し、前記レジスタ値を取得するステップを実行することを特徴とする請求項８記載のシステム検証方法。
【請求項１０】
シミュレーション実行中はハードウェア機能の動作はさせず、ユーザからのデバッグ用通知を受けたときに、前記ハードウェアモデルの状態を再現することを特徴とする請求項８又は請求項９に記載のシステム検証方法。
【請求項１１】
シミュレーション実行中はハードウェア機能の動作はさせず、ユーザからのデバッグ用通知を受けたときに、前記ハードウェアモデルの状態をユーザに通知することを特徴とする請求項８乃至請求項１０のいずれかに記載のシステム検証方法。
【請求項１２】
シミュレーション実行中は前記ＣＰＵモデルからのアクセスを受ける前記格納手段のみを動作させることを特徴とする請求項８乃至請求項１１のいずれかに記載のシステム検証方法。
【請求項１３】
ユーザからデバッグ用通知の指示を受けたとき、前記ハードウェアモデルの状態を算出し、算出された前記ハードウェアモデルの状態を出力することを特徴とする請求項８乃至請求項１２のいずれかに記載のシステム検証方法。
【請求項１４】
シミュレーション実行時には、システムに影響を与える最低限度のアクセスを前記ＣＰＵモデルに実行させることを特徴とする請求項８乃至請求項１３のいずれかに記載のシステム検証方法。
【請求項１５】
前記請求項８乃至請求項１４のいずれかに記載のシステム検証方法を、コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＳＩ等の回路設計において、論理記述言語により設計した回路の論理検証を行うシステム検証装置、システム検証方法及びシステム検証プログラムに係り、特に、システムＬＳＩの動作を、Ｃ言語などを用いて抽象化したシステムシミュレーションによるシステム検証を行うデバッグ方法の改良に関する。
【背景技術】
【０００２】
従来、ＬＳＩ等の回路設計では、論理記述言語により設計した回路が正常に動作するか否かが数学的に検証される。例えば、ＲＴＬ（Register Transfer Level）のＨＤＬ（ハードウェア記述言語）記述と、ゲートレベルのＨＤＬ記述またはこれから生成されたネットリストとの２つの回路の論理比較を行い、両者の回路の機能が等価であるか否かの検出を行う。
【０００３】
従来のシステムシミュレーション用のモデルは、実際のハードウェアの機能をＣ言語等でシミュレーション用にモデル化している（例えば、非特許文献１参照）。
【０００４】
従来のシステムシミュレーションの手法について説明する。
【０００５】
図６は、従来のシステムシミュレーションを行うシステムシミュレータの構成を示す図である。
【０００６】
図６において、１０はシステムシミュレータ、１２はＣＰＵモデル１１上で動作するソフトウェアであり、システムシミュレータ１０には、ＣＰＵモデル１１、ＣＰＵモデル１１により制御される複数のハードウェアモデル１３が実装される。ハードウェアモデル１３は、ハードウェアモデル１３に実装されたレジスタ部１４、ハードウェアモデル１３に実装された動作部１５、インターフェース（Ｉ／Ｆ）１６を備える。
【０００７】
ハードウェアモデル１３は、システムシミュレータ１０に実装されたモデル化手法で開発されたハードウェアモデルである。
【０００８】
レジスタ部１４は、ＣＰＵとのアクセスを行うハードウェアに実装されたレジスタ部である。
【０００９】
動作部１５は、実際のハードウェアの機能を実装した動作部である。
【００１０】
シミュレーションの動作にあわせて、各ハードウェアのモデルが以下の動作を行う。
【００１１】
ＣＰＵモデル１１は、ソフトウェア１２に従って、ハードウェアモデル１３へアクセスを行う。ハードウェアモデル１３はレジスタ部１４によって、ＣＰＵとのアクセスを行う。動作部１５では、システムシミュレータ１０の動作タイミング毎に、ハードウェアの機能にそった動作を行う。ここでいう、動作タイミングとは、クロックの変化やＣＰＵからのアクセスによるものであり、システムシミュレータの作成方法により異なる。
【非特許文献１】「SystemＣによるシステム設計」  Thorsten Grotker，Stan Liao，Grant Martin，Stuart Swan柿本 勝，河原林 政道，長谷川 隆 監訳  丸善株式会社
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上記のシステムシミュレーションのデバッグ方法において、ハードウェアの機能をシミュレーション用にモデル化した場合、ＨＤＬによるＲＴＬで記載するような毎サイクルごとの動作やフリップフロップ（ＦＦ）の記述等は抽象化することができ、ＨＤＬによるＲＴＬに比べれば高速に動作可能なモデルとすることができる。しかし、この場合であってもハードウェアの機能を、システムシミュレーションの動作に合わせて再現するようにモデル化するので、システムシミュレーションの速度に影響を与えるものになる。
【００１３】
シミュレーションの速度に影響を与えないようにするためには、機能を省略して動作しないものとする方法をとるが、この場合、そのハードウェア部に関しての情報は一切デバッグができないものになってしまう。
【００１４】
ハードウェアの機能として、すべての機能を、従来手法によりモデル化を行うとシミュレーション速度の低下を招いてしまう。逆に、機能を省略してしまうとデバッグ性がなくなってしまうという問題がある。
【００１５】
本発明は、上記に鑑みてなされたものであり、システムシミュレーション時は高速にシミュレーションができ、デバッグ時にはユーザに必要な情報を的確に通知して、高速性とデバッグ性を両立できるシステム検証装置、システム検証方法及びシステム検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明のシステム検証装置は、ハードウェアの機能をシミュレーション用にモデル化したハードウェアモデルと、供給されたソフトウェアに従って、前記ハードウェアモデルにアクセスし、該ハードウェアモデルをシミュレーション動作させるＣＰＵモデルと、前記ハードウェアモデルの状態を算出して出力するデバッグブロックとを備え、前記デバッグブロックは、ユーザからのデバッグ用通知を受けるデバッグ指示手段と、ユーザからのデバッグ用通知を受けたときに、前記ハードウェアモデルから取得した値を基に前記ハードウェアモデルの状態を算出する状態算出手段と、算出された前記ハードウェアモデルの状態を出力する出力手段とを備える構成を採る。
【００１７】
本発明のシステム検証方法は、ソフトウェアに従って、ハードウェアの機能をシミュレーション用にモデル化したハードウェアモデルをシミュレーション動作させ、前記ハードウェアモデルの状態を算出して出力するシステム検証方法であって、ユーザからのデバッグ用通知を受けるデバッグ指示ステップと、ユーザからのデバッグ用通知を受けたときに、前記ハードウェアモデルから取得した値を基に前記ハードウェアモデルの状態を算出する状態算出ステップと、算出された前記ハードウェアモデルの状態を出力するステップとを有する。
【発明の効果】
【００１８】
本発明によれば、システムシミュレーション中は、ＣＰＵとのアクセスに最低限必要な部分のみを実行し、高速性を保ちつつも、ユーザがハードウェアの状態を確認したいときは的確にハードウェアの状態を確認することができる。これにより、高速性とデバッグ性を両立することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００２０】
図１は、本発明の一実施の形態に係るシステム検証装置の構成を示すブロック図である。
【００２１】
図１において、１００はシステムシミュレーションを行うシステムシミュレータ、１０２はＣＰＵモデル１０１上で動作するソフトウェアである。
【００２２】
システムシミュレータ１００には、供給されたソフトウェア１０２に従って、ハードウェアモデル（ＨＷ）モデル１０３にアクセスし、ハードウェアモデル１０３をシミュレーション動作させるＣＰＵモデル１０１と、ハードウェアの機能をシミュレーション用にモデル化した複数のハードウェア（ＨＷ）モデル１０３と、ユーザからの通知を受けたときにハードウェアモデル１０３の状態を算出して出力するデバッグブロック１０４とが実装される。
【００２３】
ハードウェアモデル１０３は、実装されたＣＰＵモデル１０１とのアクセスの結果をレジスタ値として格納するレジスタ部１０５と、デバッグブロック１０４から通知を受けたときに、現在のレジスタ値を渡すレジスタ通知インタフェース１０６とを備える。また、図示は省略するが、ハードウェアの機能に沿った動作を行う動作部を備える。
【００２４】
デバッグブロック１０４は、ハードウェアモデル１０３の内部として実装することも可能であるが、ここでは、ハードウェアモデル１０３の外部に設置する例として記載する。
【００２５】
デバッグブロック１０４は、ユーザからの通知を受けるデバッグレジスタ部１０７と、通知を受けたときにハードウェアモデル１０３のレジスタ部１０５のレジスタ値を基にハードウェアモデル１０３の状態を算出する状態算出部１０８と、状態算出部１０８により算出されたハードウェアモデル１０３の状態をモニタのウインドウに表示や、ファイルに出力を行う出力作成部１０９と、状態算出部１０８からの通知を受けて、ハードウェアモデル１０３のレジスタ通知インタフェース１０６にレジスタ値の取得要求を発行し、レジスタ値を取得するレジスタ値取得部１１０とを備えて構成される。
【００２６】
以下、上述のように構成されたシステムシミュレータ１００の動作を説明する。
【００２７】
ハードウェアの機能においては、シミュレーションの動作にあわせて機能を実現する必要性があまりないが、必要なデバッグの時にはそのハードウェアの状態を的確に確認したいものがある。例えば、Gated Clockを含めた、クロックジェネレータやGated Clockの設定をする回路、リセットコントローラ、外部端子制御、割込み状態等の回路がこれにあたる。
【００２８】
このような回路機能に対して、本発明では、シミュレーション中は回路としての機能を動作させない、もしくは、システムに影響を与える最低限度の部分のみ動作させるようにし、ユーザがデバッグとして回路状態を確認したい場合にのみ、レジスタ等の必要な設定値から回路状態を再現して、ユーザに通知するという手法をとる。
【００２９】
これを実現するために、従来のハードウェアのモデルを利用するのではなく、シミュレーション中にはＣＰＵとのアクセス等の最低限度の動作のみを行い、ユーザからデバッグ用の通知を受けたときのみ、状態を算出してそのシミュレーション時刻でのハードウェアの状態をユーザに通知するという機能を持つモデルを利用する。
【００３０】
まず、通常のシステムシミュレーション実行時の説明を行う。
【００３１】
図２は、通常システムシミュレーション時の動作状態を示す図である。
【００３２】
図２において、２００はレジスタ通知インタフェース１０６であるが、通常のシステムシミュレーション時には動作していないことを示している。２０１はデバッグブロック１０４であるが、通常のシステムシミュレーション時には動作していないことを示している。すなわち、２０２はデバッグレジスタ部１０７であり、２０３は状態算出部１０８であり、２０４は出力作成部１０９であり、２０５はレジスタ値取得部１１０であり、これらは通常のシステムシミュレーション時には動作していない。なお、図２で説明されていない部分においては、図１と同じものを示している。
【００３３】
通常のシステムシミュレーション時には、ＣＰＵモデル１０１（以下動作説明において、単にＣＰＵという）は実行されるソフトウェア１０２に従い、必要なハードウェアモデル１０３（以下動作説明において、単にハードウェアという）へのアクセスを行う。アクセスを受けたハードウェアは、レジスタ部１０５により、ＣＰＵからのアクセスを受け、その値を保持したり、保持している値をＣＰＵに渡したりする。この際、システムシミュレータの動作基準であるクロックやＣＰＵからのアクセスに合わせ、レジスタ部１０５は動作を行うが、通常のシステムシミュレーション時のレジスタ通知インタフェース２００、デバッグブロック２０１、デバッグレジスタ部２０２、状態算出部２０３、出力作成部２０４及びレジスタ値取得部２０５に関しては一切動作を行わない。そのため、高速にシステムシミュレーションを行うことが可能である。
【００３４】
次に、ユーザからデバッグ通知の指示を受けたときの動作について説明する。
【００３５】
ユーザからのデバッグ通知は、ここでは、ＣＰＵからのデバッグレジスタ部２０２へのアクセスによって行うものとしているが、どのようなやり方であってもよい。デバッグレジスタ部２０２へのアクセスを受けると、図３の手順に沿ってデバッグブロック２０１において動作を行う。
【００３６】
図３は、デバッグブロックの手順を示す処理フローである。図中、Ｓはフローの各ステップを示す。
【００３７】
まず、ステップＳ１でデバッグレジスタ部２０２によりデバッグ通知を取得する。次いで、ステップＳ２でハードウェアモデルに対しレジスタ値取得要求を行う。このレジスタ取得要求は、状態算出部２０３からレジスタ値取得部２０５を介し、各ハードウェアモデルにレジスタ値取得の要求を行う。この要求を受けた各ハードウェアモデルは、必要なレジスタの値をレジスタ通知インタフェース２００を介してデバッグブロックに返す。
【００３８】
ステップＳ３では、各ハードウェアモデルからレジスタ値が返ってきたか否かを確認し、レジスタ値を正しく取得できていない場合は、再度レジスタ値取得の要求を行う。
【００３９】
ステップＳ４では、取得したレジスタから出力すべきハードウェアの状態を求める。本実施の形態では、ハードウェアモデルのレジスタとしては、クロックのＯＮ（１）／ＯＦＦ（０）を設定するクロックレジスタ、ゲーティッドクロックのＯＮ（１）／ＯＦＦ（０）を設定するゲーティッドレジスタ、リセット解除（１）／リセット（０）を設定するリセットレジスタとする。
【００４０】
本実施の形態では、ユーザからのデバッグ通知を受けるために、ＣＰＵが管轄するメモリ空間にデバッグ用のレジスタを用意して、そこへのアクセスによりデバッグ通知を行う。
【００４１】
図４は、今回の算出処理で利用する設定値と、表示すべきメッセージレベル、メッセージの対応表を示す図である。
【００４２】
状態算出部１０８では、レジスタ値取得部１１０より取得した設定値を基に現在の状態を求め、それに対応したメッセージレベル、メッセージを図４に示す対応表により選択する。例えば、クロックレジスタ値は０で、ゲーティッドクロック値は０で、リセットレジスタ値が１の時は、クロックがＯＮになっていないのに、リセットを解除しているので、システムとして注意が必要であるので、メッセージレベルとしてはWarningとし、表示するメッセージとしては、“クロックＯＦＦ。ゲーティッドＯＦＦ。リセット解除状態です。”とする。
【００４３】
図３のフローに戻って、ステップＳ５では、出力データを作成しこれをユーザに通知して本フローを終了する。
【００４４】
図５は、出力作成部１０９により作成された出力例の一例を示す図である。出力作成部１０９は、状態算出部１０８により算出したメッセージとメッセージレベルから図５に示す出力例を出力する。ここでは、出力先として、システムの標準出力である端末への表示とファイル出力による出力ファイルの作成を行っている。
【００４５】
以上のように、本実施の形態によれば、システムシミュレータ１００は、供給されたソフトウェア１０２に従って、ハードウェアモデル（ＨＷ）モデル１０３にアクセスし、ハードウェアモデル１０３をシミュレーション動作させるＣＰＵモデル１０１と、ハードウェアの機能をシミュレーション用にモデル化した複数のハードウェアモデル１０３と、ユーザからの通知を受けたときにハードウェアモデル１０３の状態を算出して出力するデバッグブロック１０４とを実装し、シミュレーション中にはＣＰＵモデル１０１とのアクセス等の最低限度の動作のみを行い、デバッグ用の通知を受けたときのみ、状態を算出してそのシミュレーション時刻でのハードウェアの状態を出力するモデルを作成し、シミュレーション中はシステムに影響を与える最低限度の部分のみ動作させるようにし、ユーザがデバッグとして回路状態を確認したい場合にのみ、回路状態を再現して、ユーザに通知する。これにより、システムシミュレーション時はハードウェアの機能を抽象化することで高速にシミュレーションができ、デバッグ時にはユーザに必要な情報を的確に通知することで高速性とデバッグ性を両立できる。
【００４６】
以上の説明は本発明の好適な実施の形態の例証であり、本発明の範囲はこれに限定されることはない。
【００４７】
また、本実施の形態ではシステム検証装置及びシステム検証方法という名称を用いたが、これは説明の便宜上であり、論理検証システム及びデバッグシステム、デバッグ方法等であってもよいことは勿論である。
【００４８】
さらに、上記システム検証装置を構成する各部、例えばハードウェアモデルの種類、その数及び接続方法など、さらには出力作成部の種類などは前述した実施の形態に限られない。
【００４９】
また、以上説明したシステム検証装置及びシステム検証方法は、これらシステム検証装置及びシステム検証方法を機能させるためのプログラムでも実現される。このプログラムはコンピュータで読み取り可能な記録媒体に格納されている。
【産業上の利用可能性】
【００５０】
本発明に係るシステム検証装置及びシステム検証方法は、システムシミュレーション時はハードウェアの機能を抽象化し高速にシミュレーションができ、デバッグ時にはユーザに必要な情報を的確に通知することができるため、高速性とデバッグ性を両立でき、システムシミュレーションとシステムのデバッグを実現する、システムシミュレータの機能として有用である。
【図面の簡単な説明】
【００５１】
【図１】本発明の実施の形態に係るシステム検証装置の構成を示すブロック図
【図２】本実施の形態に係るシステム検証装置の通常システムシミュレーション時の動作状態を示す図
【図３】本実施の形態に係るシステム検証装置のデバッグブロックの手順を示す処理フロー
【図４】本実施の形態に係るシステム検証装置の算出処理で利用する設定値と、表示すべきメッセージレベル、メッセージの対応表を示す図
【図５】本実施の形態に係るシステム検証装置の出力作成部により作成された出力例の一例を示す図
【図６】従来のシステムシミュレーションを行うシステムシミュレータの構成を示す図
【符号の説明】
【００５２】
１００  システムシミュレータ
１０１  ＣＰＵモデル
１０２  ソフトウェア
１０３  ハードウェアモデル（ＨＷ）モデル
１０４  デバッグブロック
１０５  レジスタ部
１０６  通知インタフェース
１０７  デバッグレジスタ部
１０８  状態算出部
１０９  出力作成部
１１０  レジスタ値取得部
【図１】
2007122346.tif 000003
【図２】
2007122346.tif 000004
【図３】
2007122346.tif 000005
【図４】
2007122346.tif 000006
【図５】
2007122346.tif 000007
【図６】
2007122346.tif 000008