(57)【特許請求の範囲】
【請求項１】
実際のシステムＬＳＩに、ＣＰＵ動作モデルと周辺デバイス動作モデルとを接続し、プログラムを実行することで前記ＣＰＵ動作モデル及び周辺デバイス動作モデルを制御するシミュレータを備えたシステムにおける、当該システムＬＳＩの論理検証方法であって、
前記シミュレータが、前記周辺デバイス動作モデルを起動して、該周辺デバイス動作モデルから前記システムＬＳＩに要求を発行させる工程と、
前記シミュレータが、前記ＣＰＵ動作モデルに命令を発行し、該命令を当該ＣＰＵ動作モデルに実行させて前記システムＬＳＩにトランザクションを発生させる工程と
を備えたことを特徴とするシステムＬＳＩの論理検証方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、システムＬＳＩの論理検証方法に関するものである。
【０００２】
【従来の技術】
従来、コ・ベリフィケーションを利用した検証方法は、Ｃ言語などで記述されたソフトウエアにより、ビヘイビュアモデルにＣＰＵと同様のトランザョンを発生させることで、検証対象となる回路のテストを行う。例えば以下のような方法がある。
【０００３】
（１）インストラクション・セット・シミュレーター
Ｃ言語などで記述されたソフトウエアをコンパイルし、実行形式となったオブジェクトを解析してＣＰＵのビヘイビュアモデルに入力するインストラクション・セット・シミュレータを介し、ＣＰＵと同等のトランザクションを発生する方法。
【０００４】
（２）  ソフトウエア専用インターフェースＣ言語などで記述するソフトウエアに、ビヘイビュアモデルとインターフェースを取るＣＰＵコマンドを定義し、ソフトウエアの中でＣＰＵコマンドをコールしたら、ビヘイビュアモデルとのインターフェースを介して、ＣＰＵと同等のトランザクションを発生させる方法。
【０００５】
【発明が解決しようとする課題】
しかしながら上記従来例では、ソフトウエアは本来、ＣＰＵで実行されることを前提に記述される場合が多いため、ＣＰＵからアクセス可能な回路の制御しかできない。
【０００６】
実チップ上で実行する場合、電気回路基板上に該チップが実装され、さらに周辺デバイスや周辺装置等が接続されるため、ソフトウエアはそれらの周辺デバイスや周辺装置との動作確認が可能となる。
【０００７】
しかしながら、論理検証の場合はシステムＬＳＩに接続される周辺デバイスや周辺装置が無いため、仮想動作モデルを接続してテストを行う。これらの仮想動作モデルはシステムＬＳＩの外部デバイス・周辺装置のため、ＣＰＵから設定などを行うことはできない。よって、ソフトウエアからこれらの仮想動作モデルの制御は行えないため、システムＬＳＩの実動作に基づいた回路の検証が難しい、という欠点があった。
【０００８】
本発明の目的は、ソフトウエアが実行されると共に、自動的に動作する外部デバイス・周辺装置の仮想動作モデルが動作することで、システムＬＳＩの実動作環境の元で検証が行えるようにし、さらに該ソフトウエアは実チップ上でのデバイスドライバ・チェックプロとしても使用可能とする点にある。
【０００９】
【課題を解決するための手段】
本発明によれば、実際のシステムＬＳＩに、ＣＰＵ動作モデルと周辺デバイス動作モデルとを接続し、プログラムを実行することで前記ＣＰＵ動作モデル及び周辺デバイス動作モデルを制御するシミュレータを備えたシステムにおける、当該システムＬＳＩの論理検証方法において、前記シミュレータが、前記周辺デバイス動作モデルを起動して、該周辺デバイス動作モデルから前記システムＬＳＩに要求を発行させる工程と、前記シミュレータが、前記ＣＰＵ動作モデルに命令を発行し、該命令を当該ＣＰＵ動作モデルに実行させて前記システムＬＳＩにトランザクションを発生させる工程とを備えたことを特徴とする。
【００１０】
【発明の実施の形態】
（第一の実施例）
図１は本発明の特徴を最もよく表す図である。
【００１１】
１０１はシステムＬＳＩ、１０２はシステムＬＳＩ１０１の回路を検証するソフトウエア、１０３はＣＰＵビヘイビュアモデル、１０４はソフトウエア１０２のＣＰＵ命令とＣＰＵビヘイビュアモデル１０３の間のＣＰＵインターフェース、１０５はＣＰＵビヘイビュアモデル１０３の電気的信号が接続されるＣＰＵバス、１０６はＣＰＵバス１０５のバス利用権を調停するバスアービター、１０７はＣＰＵバス１０５に接続されるメモリコントローラ、１０８はメモリコントローラ１０７により読書きされるメモリ、１０９はＣＰＵバス１０５に接続されるＤＭＡコントローラ、１１０〜１１２は周辺デバイスのビヘイビュアモデル、１１３〜１１５は各周辺デバイス１１０〜１１２を制御する周辺デバイスコントローラ、１１６は周辺デバイス１１３〜１１５を起動するプログラム、１１７は周辺デバイス起動プログラム１１６と周辺デバイスのビヘイビュアモデルとのインターフェース、１１８はテスト実行環境であるシミュレータ、１１９はシミュレータ１１７と検証ソフトウエア１０２とのインターフェース、１２０はシミュレータ１１７と周辺デバイス起動プログラム１１６とのインターフェースである。
【００１２】
ソフトウエア１０２においてＣＰＵコマンドを記述することにより、ＣＰＵコマンドはＣＰＵインターフェース１０４を介して、ＣＰＵビヘイビュアモデル１０３に命令の実行を要求する。
【００１３】
例えばソフトウエアでメモリ１０６上のアドレスＡにデータＤを書き込むＣＰＵコマンドが記述された場合、要求を受けたＣＰＵビヘイビュアモデル１０３は、バスアービター１０５にバス利用権の取得要求を出す。
【００１４】
バス調停の結果、バスアービター１０５がＣＰＵビヘイビュアモデル１０３にバス利用権を与えると、ＣＰＵビヘイビュアモデル１０３はメモリコントローラ１０７にメモリ１０８上のアドレスＡへのデータＤを書き込み要求を出す。
【００１５】
要求を受けたメモリコントローラ１０７はメモリ１０８にアクセスし、データを書き込み、ＣＰＵビヘイビュアモデル１０３には書き込み完了を通知する。するとＣＰＵビヘイビュアモデル１０３は、ＣＰＵインターフェース１０４を介して、メモリヘの書き込み要求を行ったソフトウエア１０２に書き込み完了を通知する。
【００１６】
このようにソフトウエア１０２からＣＰＵビヘイビュアモデル１０３を使用することで、システムＬＳＩ１０１内の回路の制御が可能となる。
【００１７】
しかしこの手法だけでは、外部の周辺デバイスのビヘイビュアモデル１１０〜１１２の制御は、ＣＰＵビヘイビュアモデル１０３では不可能なため、実チップ上で動作する周辺デバイス制御プログラムは実行できない。例えば、１１１がＵＳＢホストのビヘイビュアモデルで、１１４がＵＳＢホストモデル１１１のコントローラである場合、ＵＳＢホストモデル１１１からデータの転送要求を起こさせる設定や、転送エラーを発生させる設定など、ビヘイビュアモデルの設定が行えないとコントローラの仕様を満たす検証が行えない。
【００１８】
そこでこのような場合、シミュレータ１１８からソフトウエア１０２を実行する際に、ＵＳＢホストモデル１１１の制御を行うための起動プログラム１１６を設けることで、周辺デバイスのビヘイビュアモデルを様々なモードで動作させた上での検証が可能となる。特にデバイスドライバのように、周辺デバイスからの要求に従って実行されるプログラムは、変更することなく実チップ上でも実行できる。
【００１９】
図２は、本発明のアルゴリズムの例を示したものである。２０１は検証ソフトウエアの実行開始、２０２は周辺デバイスモデルの起動、２０３は周辺デバイスビヘイビュアモデルからの要求待ち、２０４はソフトウエアからＣＰＵビヘイビュアモデルヘのコマンド発行、２０５はＣＰＵビヘイビュアモデルの実行結果の応答待ち、２０６はＣＰＵビヘイビュアモデルからソフトウエアヘの応答、２０７はシミュレーションの終了確認を示している。
【００２０】
例えば、ＵＳＢコントローラを介したデバイスドライバを使用した検証の場合、ＵＳＢホストモデルからの接続要求が自動的に発行される状況を作り出す必要がある。
【００２１】
その場合、シミュレーションがテストを実行すると、２０１で検証ソフトウエアを実行すると共に、２０２でＵＳＢホストモデルが自動的に接続要求するプログラムを起動する。
【００２２】
これにより、ＵＳＢホストモデルから接続要求コマンドが発行され、ＵＳＢコントローラからの割込み要求や、その割り込みに対するソフトウエアの処理などが論理検証可能となる。
【００２３】
この手法で周辺デバイスのビヘイビュアモデルに対し、あらゆる転送要求の設定や、故意にエラーを発生させる設定などを行うことで、ソフトウエアによるシステムＬＳＩの論理検証が可能となる。
【００２４】
図３は、本発明の周辺デバイスインターフェースを利用したプログラム例を示したものである。ＵＳＢからの割込みを制御するソフトウエア３０１における、１から４行目の構造体と、ソフトウエア３０１とＣＰＵビヘイビュアモデルのインターフェース３０２の１から４行目の構造体のデータをやり取りすることで、所望の割込み要求を認識する例である。
【００２５】
実際の論理検証環境においては、ＦＬＩ等のＣプログラムと論理検証環境のインターフェースを利用することになる。この例では周辺デバイスビヘイビュアモデルの一例としてＵＳＢホストモデルを使い、検証ソフトウエアを実行すると共に、ＵＳＢホストモデルを起動する方法を紹介する。
【００２６】
ソフトウエア３０１と周辺デバイスインターフェース３０２の間で以下のことが取り決められている場合である。ｔｙｐｅが１の場合はＵＳＢコントローラの割込みが選択される。
【００２７】
まず、ソフトウエア３０１の９〜１０行目の構造体の値がセットされると、１１行目においてソフトウエアはｉｎｔｅｒｒｕｐｔの値が１になるまで待ち続ける。インターフェース３０２の７〜８行目で、ＵＳＢコントローラの割込みが選択される。
【００２８】
すると、割込みコントローラ３０３の１行目のｔａｓｋが実行され、ｔｙｐｅが１の場合はＵＳＢコントローラからの割込み要求信号が来るまで５行目で待ち続ける。一方、３０４はソフトウエア３０１が実行されると共に実行される、ＵＳＢホストモデルの起動プログラムである。
【００２９】
１行目のｓｔａｒｔ＿ｕｓｂ＿ｈｏｓｔが起動されると、３〜５行目のＵＳＢホストモデル内部の実行プログラムが起動し、ＵＳＢコントローラに対し接続要求を行う。これにより、接続要求を受けたＵＳＢコントローラから割込み信号が割込みコントローラ３０３に発行され、割込み要求を待ち続けていた５行目から制御が進む。
【００３０】
するとインターフェース３０２の８行目で待ち続けていたプログラムが９行目に進み、割込みがソフトウエア３０１に制御が渡り、１１行目で待ち続けていた割込み制御から抜け、デバイスドライバソフトウエアはＵＳＢコントローラの制御に移ることが可能となる。
【００３１】
【発明の効果】
以上説明したように、本発明によれば、システムＬＳＩの実動作環境の元での論理検証が可能となる。
【図面の簡単な説明】
【図１】  本発明の第一の実施例に係わる、システムＬＳＩの検証方式を表す図である。
【図２】  本発明の第一の実施例に係わる、アルゴリズムの例である。
【図３】  本発明の第二の実施例に係わる、本発明の周辺デバイスインターフェースを利用したプログラム例である。
【符号の説明】
１０１  システムＬＳＩ
１０２  システムＬＳＩ１０１の回路を検証するソフトウエア
１０３  ＣＰＵビヘイビュアモデル
１０４  ソフトウエア１０２のＣＰＵ命令とＣＰＵビヘイビュアモデル１０３の間のＣＰＵインターフェース
１０５  ＣＰＵビヘイビュアモデル１０３の電気的信号が接続されるＣＰＵバス
１０６  ＣＰＵバス１０５のバス利用権を調停するバスアービター
１０７  ＣＰＵバス１０５に接続されるメモリコントローラ
１０８  メモリコントローラ１０７により読書きされるメモリ
１０９  ＣＰＵバス１０５に接続されるＤＭＡコントローラ
１１０〜１１２  周辺デバイスのビヘイビュアモデル
１１３〜１１５  各周辺デバイス１１０〜１１２を制御する周辺デバイスコントローラ
１１６  周辺デバイス１１３〜１１５を起動するプログラム
１１７  周辺デバイス起動プログラム１１６と周辺デバイスのビヘイビュアモデルとのインターフェース
１１８  テスト実行環境であるシミュレータ
１１９  シミュレータ１１７と検証ソフトウエア１０２とのインターフェース
１２０  シミュレータ１１７と周辺デバイス起動プログラム１１６とのインターフェ−ス
２０１  検証ソフトウエアの実行開始
２０２  周辺デバイスモデルの起動
２０３  周辺デバイスビヘイビュアモデルからの要求待ち
２０４  ソフトウエアからＣＰＵビヘイビュアモデルヘのコマンド発行
２０５  ＣＰＵビヘイビュアモデルの実行結果の応答待ち
２０６  ＣＰＵビヘイビュアモデルからソフトウエアヘの応答
２０７  シミュレーションの終了確認
３０１  ＵＳＢコントローラ制御プログラム
３０２  ＣＰＵ割込みとソフトウエアのインターフェース
３０３  割込みコントローラ
３０４  ＵＳＢホストモデルの起動プログラム各々のソースコードの例の抜粋
である。
【図１】
0004100901.tif 000002
【図２】
0004100901.tif 000003
【図３】
0004100901.tif 000004