(57)【要約】【課題】本発明の課題は、複雑な条件で発生する論理回路の障害を効果的に検証する論理シミュレーション装置及び論理シミュレーション方法を提供すことを目的とする。【解決手段】上記課題は、乱数を用いて入力を決定して論理回路を検証する論理シミュレーション装置であって、シミュレーション実行中に前記論理回路の内部状態を測定してスコアで出力するスコア測定手段と、前記シミュレーション実行中に生成された前記乱数と前記スコア測定手段によって出力された前記スコアとを時刻に対応させた履歴データとして、所定記憶領域に保存する履歴データ保存手段と、前記履歴データを用いて高スコアとなる時刻を特定し、該履歴データに記録されている前記乱数を用いて入力を決定して、前記シミュレーションにおける該特定した時刻までを再現する再現手段とを有することを特徴とする論理シミュレーション装置により達成される。【選択図】図３
2009075811.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーション実行中に論理回路の内部状態を測定してスコアで出力するスコア測定手段と、
前記シミュレーション実行中に生成された乱数と前記スコア測定手段によって出力された前記スコアとを時刻に対応させた履歴データとして、所定記憶領域に保存する履歴データ保存手段と、
前記履歴データを用いて高スコアとなる時刻を特定し、該履歴データに記録されている前記乱数を用いて前記論理回路への入力を決定して、前記シミュレーションにおける該特定した時刻までを再現する再現手段と
を有することを特徴とする論理シミュレーション装置。
【請求項２】
前記乱数を生成して前記履歴データ保存手段に該生成した乱数を保存する乱数生成手段を有することを特徴とする請求項１記載の論理シミュレーション装置。
【請求項３】
前記乱数生成手段によって生成された乱数を入力とするか、前記履歴データに記録されている乱数を入力とするかを選択する乱数選択手段を有することを特徴とする請求項２記載の論理シミュレーション装置。
【請求項４】
前記スコア測定手段は、
検証対象となる前記論理回路から１又は複数の内部信号を取得して、該内部信号に基づく所定条件の成立に応じてスコアを決定することによって、該論理回路の内部状態を測定したスコアを出力するようにしたことを特徴とする請求項１乃至３のいずれか一項記載の論理シミュレーション装置。
【請求項５】
乱数を用いて論理回路への入力を決定して前記論理回路を検証する論理シミュレーション装置における論理シミュレーション方法であって、
前記論理シミュレーション装置が、
前記論理回路への入力のための前記乱数と該論理回路の内部状態を測定して障害が発生する度合いを示すスコアとを履歴データとして所定記憶領域に記録しながら、該乱数を用いたランダムシミュレーションを実行する第一実行手順と、
前記履歴データからスコアの高い状態を選択し、該履歴データに記録された前記乱数を用いて該スコアの高い状態まで再現する再現手順と、
前記再現されたスコアの高い状態から乱数を新たに発生させてランダムシミュレーションを実行する第二実行手順とを実行し、
前記障害の発生する度合いの高い状態で前記論理回路に対してシミュレーションする確率を高めるようにしたことを特徴とする論理シミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複雑な条件で発生する論理回路の障害を効果的に検証する論理シミュレーション装置及び論理シミュレーション方法に関する。
【背景技術】
【０００２】
ＣＰＵや機能ＩＰ等の論理回路は内部に複雑な状態を持っているため、入力の順序と内部の状態の組み合わせに複雑に依存して発生する障害を含むことが多い。例えば、設計ミスによる障害などがある。このような障害を検出する方法として、入力に乱数を用いたランダムシミュレーションを用いる方法がある。
【０００３】
ランダムシミュレーションは仕様で許される範囲内の様々な入力を乱数で選択して検証対象に入力し、出力が仕様どおりであるかを確認する手法である。ランダムシミュレーションを用いると、比較的少ない作業量で人間が想像できないような条件で発生する障害を多く検出できるようになり、作業工数も削減できるようになった。
【０００４】
このようなランダムシミュレーションでは、乱数を用いたテストプログラムを作成する場合、検証当初は重複したパターンが生成される確率は比較的少ないが、検証を重ねていく（生成するテストプログラム数が増加する）毎に、生成されるテストプログラムに既に検証済みのパターンが含まれる確率が増加し、検証時間が長引くといった問題があった。このような問題に対して、検証済みパターン履歴情報を用いて、テストプログラムを用いた検証を実行するか否かを判断するようにし、重複したパターンによるシミュレーションの実行を制御することが提案されている（例えば、特許文献１参照。）。
【０００５】
また、入力したテストパターンにおけるモジュール毎のカバレッジを算出し、不足しているテストパターンを自動生成しシミュレーションを行うことによって、全てのモジュールが期待のカバレッジに達するまで繰り返すことが提案されている（例えば、特許文献２参照。）。
【特許文献１】特開２００２−１４９４４０号公報
【特許文献２】特開２００４−５４５４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したような従来のランダムシミュレーションでは、入力が回路の内部状態に依存せずにランダムに与えられるため、シミュレーションの実行には長時間を要していた。つまり、回路が障害の発生する状態に至らずに、シミュレーション時間の大半が浪費されていることが原因であると考えられる。
【０００７】
よって、本発明の目的は、複雑な条件で発生する論理回路の障害を効率よく発見するために、ランダムな入力を与えた論理回路の内部状態をスコアとして測定し、スコアの高い状態のシミュレーションの確率を高めるようにした論理シミュレーション装置及び論理シミュレーション方法を提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明は、乱数を用いて入力を決定して論理回路を検証する論理シミュレーション装置であって、シミュレーション実行中に前記論理回路の内部状態を測定してスコアで出力するスコア測定手段と、前記シミュレーション実行中に生成された前記乱数と前記スコア測定手段によって出力された前記スコアとを時刻に対応させた履歴データとして、所定記憶領域に保存する履歴データ保存手段と、前記履歴データを用いて高スコアとなる時刻を特定し、該履歴データに記録されている前記乱数を用いて入力を決定して、前記シミュレーションにおける該特定した時刻までを再現する再現手段とを有するように構成される。
【０００９】
上記手段を機能としてコンピュータに実行させるためのプログラム、そのプログラムを記憶したコンピュータ読み取り可能な記憶媒体、及び、上記手段を機能としてコンピュータが処理する方法とすることもできる。
【発明の効果】
【００１０】
本願発明は、ランダムな入力を与えた論理回路の内部状態をスコアとして測定し、スコアの高い状態のシミュレーションの確率を高めるようにすることで、複雑な条件で発生する論理回路の障害を効率よく発見することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１２】
論理回路設計において、回路内部のモード切り替えやＦＩＦＯ（First-In First-Out）にデータが詰め込まれた状態など、更にその前後で他の条件が重なったときに障害が発生することが経験的に知られている。以下、このような、障害が発生し易い回路の状態を「回路にストレスがかかった状態」又は「回路のストレス状態」と言う。本発明に係る論理シミュレーション装置では、この「回路にストレスがかかった状態」がシミュレーションされる確率を高め、効率よく障害を発見するように構成される。
【００１３】
まず、本発明に係る論理シミュレーション装置によるシミュレーションの概要について、図１及び図２で説明する。図１は、スコア測定回路の接続例を示す図である。図２は、スコア測定回路によって測定されたスコアに基づくシミュレーション方法を説明するための図である。図２では、クロックに同期して動作する回路Ａ及び回路Ｂの信号のＯＮ／ＯＦＦ、及び、スコア測定回路１０によって測定されたスコアが例示されている。
【００１４】
（１）まず、設計者や検証者の経験として知られていた「回路にストレスがかかった状態」をスコアとして数値化するために、図１に示すように、検証対象回路３の回路Ａと回路Ｂとに予め用意したスコア測定回路１０を接続する。検証対象回路３が複数の回路によって構成される場合、モード切り替えやＦＩＦＯなどで特定される回路を主要な回路と定義し、１以上の主要な回路とスコア測定回路１０とを接続するようにする。
【００１５】
（２）検証対象回路３へ乱数を用いたテストパターンを入力することによりランダムシミュレーションを実行し、実行中にその入力値とスコア測定回路１０によるスコアとを所定記憶領域に保存されている履歴データに時系列に書き込んでいく。例えば、図２（Ａ）に示されるように、スコア取得のためのランダムシミュレーション（例えば、初回のシミュレーション）が実行され、シミュレーション実行中に入力値とスコアとが履歴データに保存される。
【００１６】
一方で、検証対象回路３からの出力値と期待値との比較によって、正常動作であったか又は異常動作であったかの検証がなされる。
【００１７】
（３）履歴データに保存されたスコアから高スコアとなった状態を選び、その状態までの履歴データを用いて同じ回路のストレス状態を再現し、再現した回路のストレス状態以降は、別の入力値（乱数）によってランダムシミュレーションを続行する。
【００１８】
図２（Ａ）に示す例では、スコア「１０」が高スコアとなる時点で検証対象回路３がストレス状態にあると判断できる。そして、図２（Ｂ）に示されるように、履歴データに保存された入力値を用いて、図２（Ａ）に示す同一のシミュレーションを実行し（再現シミュレーションの実行）、高スコア「１０」の「回路のストレス状態」を再現する。このストレス状態の前後で障害の発生する確率が高いと予想されるので、このストレス状態から新たに乱数を発生させて、別の入力値でランダムシミュレーションを続行する。このランダムシミュレーションの実行中も、入力値とスコア測定回路１０によるスコアとを所定記憶領域に履歴データとして時系列に書き込んでいく。
【００１９】
このように、障害が発生し易いとされる回路のストレス状態を走行する確率を高めることができ、障害を検出する可能性を高めることができる。
【００２０】
図３は、本発明に係る論理シミュレーション装置の機能構成例を示す図である。図３において、論理シミュレーション装置１００は、シミュレーション実行制御部２０と、乱数生成部２１と、乱数選択部２２と、入力生成部２３と、期待値計算部２４と、期待値比較部２５と、検証対象回路３と、スコア測定回路１０と、履歴データベース１４ａとを有する。
【００２１】
論理シミュレーション装置１００において、ランダムシミュレーションは、乱数生成部２１と、乱数選択部２２と、入力生成部２３と、期待値計算部２４と、期待値比較部２５と、検証対象回路３とによって実行され、再生シミュレーションは、乱数選択部２２と、入力生成部２３と、期待値計算部２４と、期待値比較部２５と、検証対象回路３と、スコア測定回路１４ａとによって構成される。
【００２２】
シミュレーション実行制御部２０は、ランダムシミュレーションの実行及び再現シミュレーションの実行を制御する。例えば、初回のシミュレーションの場合、ランダムシミュレーションを実行するように制御し、２回目以降のシミュレーションの場合、履歴データベース１４ａから初回のシミュレーションで高スコアとなる状態までを再現シミュレートして、再現した状態からランダムシミュレーションを実行するように制御する。
【００２３】
乱数生成部２１は、乱数を生成して、生成した乱数を乱数選択部２２へ入力し、同時にその乱数を履歴データベース１４ａに保存する。乱数は、履歴データベース１４ａで管理される、現在実行中のシミュレーションに対応する履歴データとして記録される。乱数生成部２１の処理の実行は、シミュレーション実行制御部２０によって制御され、ランダムシミュレーションの場合に行われる。
【００２４】
乱数選択部２２は、ランダムシミュレーションの場合、乱数生成部２１を選択し、乱数生成部２１から乱数を受信して入力生成部２３へ入力する。一方、再生シミュレーションの場合、履歴データベース１４ａを選択し、履歴データベース１４ａから再現すべき回路のストレス状態まで保存した乱数を順次取得して入力生成部２３へ入力する。ランダムシミュレーションか再生シミュレーションかは、シミュレーション実行制御部２０の制御に従う。
【００２５】
入力生成部２３は、乱数選択部２２から供給される入力値に基づいて、検証対象回路３の回路仕様の範囲内で許された値を選択し、検証対象回路３と期待値計算部２４とに入力信号として入力する。
【００２６】
期待値計算部２４は、入力生成部２３から入力信号を受け取り、検証対象回路３の回路仕様に基づいて出力されるべき値を計算して出力信号の期待値として期待値比較部２５に供給する。
【００２７】
期待値比較部２５は、検証対象回路３から出力される出力信号と、期待値計算部２４から供給される出力信号の期待値とを比較して、一致しなければ障害の発生と判断し、障害を示すデータを出力することによって障害を報告する。
【００２８】
検証対象回路３は、検証対象となる回路であって、回路仕様に基づいて回路構成を所定のハードウェア記述言語で記述して論理的に実現した回路である。
【００２９】
スコア測定回路１０は、検証対象回路３に接続される回路であって、検証対象回路３から内部信号を取得してスコアを算出するための回路構成を所定の回路記述言語によって論理的に実現した回路である。スコア測定回路１０は、内部信号に基づいて算出したスコアを履歴データベース１４ａに時系列に保存する。
【００３０】
図４は、論理シミュレーション装置のハードウェア構成を示す図である。図４において、論理シミュレーション装置１００は、制御ユニット１１と、入力ユニット１２と、表示ユニット１３と、データ記憶部１４と、プログラム記憶部１５とを有する。データ記憶部１４と、プログラム記憶部１５とは、夫々個別の記憶装置であっても良いし、一つの記憶装置であってもよい。
【００３１】
制御ユニット１１は、ＣＰＵ（Central Processing Unit）と、ＲＡＭ及びＲＯＭなどのメモリとを備え、論理シミュレーション装置１００全体を制御する。入力ユニット１２は、キーボード及びマウスなどを有し、ユーザによる情報入力及び操作を可能とする。表示ユニット１３は、ユーザへの情報を表示制御する。
【００３２】
データ記憶部１４は、ランダムシミュレーションの実行時に生成された乱数と、スコア測定回路１０によって算出されたスコアとを時系列に記録し管理する履歴データベース１４ａと、検証対象回路３を論理的に記述した検証対象回路記述データ３ａと、スコア測定回路１０を論理的に記述したスコア測定回路記述データ１０ａと、検証対象回路３とスコア測定回路１０との接続に係る接続情報１４ｆとを記憶するための記憶部である。
【００３３】
検証対象回路記述データ３ａと、スコア測定回路記述データ１０ａと、接続情報１４ｆとを回路記述データ用の１つのファイルで管理してもよい。
【００３４】
プログラム記憶部１５は、シミュレーション実行制御部２０として機能するためのシミュレーション実行制御部プログラム３０と、乱数生成部２１として機能するための乱数生成プログラム３１と、乱数選択部２２として機能するための乱数選択プログラム３２と、入力生成部２３として機能するための入力生成プログラム３３と、期待値計算部２４として機能するための期待値計算プログラム３４と、期待値比較部２５として機能するための期待値比較プログラム３５と、検証対象回路記述データ３ａとスコア測定回路記述データ１０ａを解釈して夫々を検証対象回路３とスコア測定回路１０として機能させる論理回路実行プログラム３６とを記憶するための記憶部である。
【００３５】
シミュレーション実行制御部２０の制御によって行われるシミュレーション全体の処理フローの例について図５及び図６で説明する。図５は、シミュレーションの第一の処理フローについて説明するための図である。
【００３６】
図５において、スコア測定回路１０が検証対象回路３に接続される（ステップＳ１１）。シミュレーション実行制御部２０は、所定時間連続して乱数生成部２１に乱数を発生させることにより、１回目のランダムシミュレーションを実行する（ステップＳ１２）。乱数生成部２１は発生させた乱数を時刻と共に履歴データベース１４ａに保存し、スコア測定回路１０は測定したスコアを履歴データベース１４ａに保存する。履歴データベース１４ａにおいて、時刻毎に乱数とスコアとが対応付けられた履歴データとして記憶され管理される。
【００３７】
１回目のランダムシミュレーションの実行後、シミュレーション実行制御部２０は、履歴データベース１４ａに保存されたスコアを参照して、スコアの高い状態を選択する（ステップＳ１３）。例えば、最も高いスコアを記録した時刻を特定し、スコアの高い状態を選択する。
【００３８】
シミュレーション実行制御部２０は、１回目のシミュレーションの開始時刻からステップＳ１３で特定した時刻までに保存された乱数を履歴データベース１４ａから乱数選択部２２へと時系列に連続して入力することによって、２回目のシミュレーションを再現シミュレーションから実行し、１回目のランダムシミュレーションと同じスコアの高い状態を再現する（ステップＳ１４）。
【００３９】
スコアの高い状態が再現されると、シミュレーション実行制御部２０は、その状態から乱数生成部２１に乱数を発生させることにより、２回目のシミュレーションにおける残りの所定時間でランダムシミュレーションを実行して（ステップＳ１５）、このランダムシミュレーションの終了によってシミュレーション全体を終了する。
【００４０】
図５に示すシミュレーションの第一の処理フローでは、シミュレーションを２回行う場合を示しているが、図６に示すシミュレーションの第二の処理フローのように、２回目以降のシミュレーションでも入力した乱数とスコアとを履歴データベース１４ａに時系列に保存し、ｎ回目のシミュレーションではｎ−１回目までのシミュレーションの履歴からスコアの高いものを選ぶようにしてもよい。
【００４１】
図６は、シミュレーションの第二の処理フローについて説明するための図である。図６中、図５に示す同一のステップには同一の符号を付し、その説明を省略する。図６に示すステップＳ１３−２、Ｓ１４−２及びＳ１５−２について説明する。
【００４２】
シミュレーション実行制御部２０は、次のｎ回目（ｎは２以上の自然数）のシミュレーションを実行する前に、１回目からｎ−１回目のシミュレーション毎に、履歴データベース１４ａに保存したｎ−１回目のシミュレーションに対応する履歴データのスコアを参照して、１回目からｎ−１回目のシミュレーションの中でスコアの高い状態を選択する（ステップＳ１３−２）。第一の処理フローと同様に、例えば、最も高いスコアを記録した時刻を特定し、スコアの高い状態を選択する。
【００４３】
シミュレーション実行制御部２０は、ステップＳ１３−２で特定したスコアの高い状態を記録したシミュレーションの履歴データを用いて、そのシミュレーションの開始時刻からステップＳ１３−２で特定した時刻までに保存された乱数を乱数選択部２２へと時系列に連続して入力することによって、ｎ回目のシミュレーションを再現シミュレーションから実行し、ｎ−１回目のランダムシミュレーションと同じスコアの高い状態を再現する（ステップＳ１４−２）。
【００４４】
スコアの高い状態が再現されると、シミュレーション実行制御部２０は、その状態から乱数生成部２１に乱数を発生させることにより、ｎ回目のシミュレーションにおける残りの所定時間でランダムシミュレーションを実行して（ステップＳ１５−２）、ｎ回目のシミュレーションが終了するとステップＳ１３−２へと戻り、上記同様の処理を繰り返す。
【００４５】
例えば、検証対象回路３内の独立な条件ＡとＢとが重なった時に発生する障害があり、どちらの条件もシミュレーション１０００回に１回の確率で発生する場合、この障害の検出を期待するためには１００００００回のシミュレーションが必要となる。
【００４６】
上述した第二の処理フローを適用した場合、条件Ａ又はＢの一方（例えば、条件Ａ）の発生が高スコアとして示された場合、１０００回のシミュレーションの設定で条件Ａの発生を期待でき、その状態からのシミュレーションを１０００回行うことでもう一方の条件Ｂの発生を期待できるため、１００００００回も行うことなく、２０００回のシミュレーションでこの障害の発生を期待できる。
【００４７】
次に、スコア測定回路の接続について説明する。先ず、設計者又は検証者の知識に基づきスコアを測定する項目を決定し、測定のための回路を接続する。図７は、他の検証対象回路の例を示す図である。図７に示す検証対象回路４では、入力インタフェース４ａによって入力ポート５から入力されたデータがＦＩＦＯ４ｂに供給され、ＦＩＦＯ４ｂから出力されたデータはバスインタフェース４ｃによってバス６へと出力される。
【００４８】
例えば、このような検証対象回路４にスコア測定回路を接続する場合、設計者又は検証者は経験によって次の２つの状態を「回路のストレス状態」として認識したとする。
【００４９】
・ＦＩＦＯ４ｂにデータが詰め込まれた状態
・バスインタフェースのアクセス先が切り替わる状態
これらの項目に対し、例えば、図８及び図９に示すようなスコア測定回路６２が検証対象回路４に接続される。図８は、図７に示す検証対象回路に接続されるスコア測定回路の例を示す図である。図９は、図８に示すスコア測定回路の回路記述例を示す図である。
【００５０】
図８において、スコア測定回路６２は、スコア条件判定回路６２ａ及び６２ｂと、セレクタ６２ｃ及び６２ｄと、加算器６２ｅとによって構成されるように回路記述言語によって記述される。
【００５１】
スコア条件判定回路６２ａは、検証対象回路４のＦＩＦＯ４ｂからＦＩＦＯ  full状態信号を受信して、スコア条件判定結果を示すスコア条件判定信号をセレクタ６２ｃに供給し、セレクタ６２ｃはスコア条件判定信号に応じて選択したスコア「０」又は「１０」を加算器６２ｅへ供給する。
【００５２】
スコア条件判定回路６２ｂは、検証対象回路４のバスインタフェース４ｃからアクセス制御信号_1とアクセス制御信号_2とを受信して、スコア条件判定結果を示すスコア条件判定信号をセレクタ６２ｄに供給し、セレクタ６２ｄはスコア条件判定信号に応じて選択したスコア「０」又は「１０」を加算器６２ｅへ供給する。
【００５３】
加算器６２ｅは、セレクタ６２ｃ及び６２ｄの各々から受信したスコアを加算する。加算器６２ｅから検証対象回路４の内部状態に基づいて計算されたスコアを示すtotal_scoreが出力される。
【００５４】
図８に示すスコア条件判定回路６２ａとセレクタ６２ｃとによる構成Ａは、図９に示す記述Ａによって、ＦＩＦＯ  full状態信号がfullの状態を示す場合にスコア「１０」を選択するように動作する。
【００５５】
図８に示すスコア条件判定回路６２ｂとセレクタ６２ｄとによる構成Ｂは、図９に示す記述Ｂによって、前のアクセスとアドレスのページが異なっていればスコア「１０」を選択するように動作する。
【００５６】
図８に示す加算器６２ｅによる構成Ｃは、図９に示す記述Ｃによって、構成Ａと構成Ｂとから出力される両方のスコアを合計するように動作する。
【００５７】
このように動作するように記述されたスコア測定回路６２は、シミュレーション中の所定時間毎に検証対象の内部状態に基づいたスコアを出力する。
【００５８】
図１０は、スコアを測定しながらシミュレーションが実行される状態を示す図である。図１０において、検証対象回路の内部信号ａはランダムシミュレーション実行中の波形を示し、スコアｄは内部信号ａによって条件が成立した際に履歴データベース１４ａに保存されるスコアが示される。検証対象回路から取得した複数の内部信号ａに対して複数の条件判定がなされ、これら複数の条件が重なる場合にスコアは加算され、設計者や検証者の意図する「回路にストレスのかかった状態」となり、その状態の前後をシミュレーションすることで障害を発見する確率を高められる。各条件判定は、１つの内部信号又は２以上の内部信号の組み合わせに対して行われる。
【００５９】
このように、ランダムシミュレーションの実行中に、検証対象回路の内部信号ａの状態に応じてスコアが測定され時系列に履歴データベース１４ａに保存される。
【００６０】
図１１は、条件毎に重み付けしてスコアを計算するスコア測定回路の例を示す図である。図１１において、スコア測定回路６３は、検証対象回路５のシミュレーション中の回路のストレス状態を測定するために接続される回路であって、１つの内部信号又は２以上の内部信号の組み合わせに対して行われる条件毎に重み付けをして合計した値を測定したスコアとして出力する。
【００６１】
スコア測定回路６３は、スコア条件判定回路６４−１、６４−２、６４−３、・・・６４−ｎと、セレクタ６５−１から６５−ｎと、加算器６６とを有する。
【００６２】
例えば、スコア条件判定回路６４−１は、検証対象回路５から取得した一の内部信号を用いて条件を判定し、条件１判定信号をセレクタ６５−１に出力し、セレクタ６５−１は、条件１判定信号に応じてスコア「０」又は条件１の重みスコアの一方を選択して加算器６６へ供給する。
【００６３】
スコア条件判定回路６４−２は、検証対象回路５から取得した２つの内部信号を用いて条件を判定し、条件２判定信号をセレクタ６５−２に出力し、セレクタ６５−２は、条件２判定信号に応じてスコア「０」又は条件２の重みスコアの一方を選択して加算器６６へ供給する。
【００６４】
スコア条件判定回路６４−３は、検証対象回路５から取得した２つの内部信号を用いて条件を判定し、条件３判定信号をセレクタ６５−３に出力し、セレクタ６５−３は、条件３判定信号に応じてスコア「０」又は条件３の重みスコアの一方を選択して加算器６６へ供給する。
【００６５】
同様に、スコア条件判定回路６４−ｎは、検証対象回路５から取得した１つの内部信号を用いて条件を判定し、条件ｎ判定信号をセレクタ６５−ｎに出力し、セレクタ６５−ｎは、条件ｎ判定信号に応じてスコア「０」又は条件ｎの重みスコアの一方を選択して加算器６６へ供給する。
【００６６】
加算器６６は、セレクタ６５−１から６５−ｎによって供給される値を合計して、測定したスコアとして出力する。
【００６７】
条件１の発生に対して条件１の重みスコア「１０」が与えられ、条件２の発生に対して条件２の重みスコア「３０」が与えられ、条件３の発生に対して条件３の重みスコア「１０」が与えられ、・・・条件ｎの発生に対して条件ｎの重みスコア「２０」が与えられるとすると、検証対象回路５から取得した内部信号と各スコアとは、例えば、図１２に示されるような対応関係を示す。
【００６８】
図１２は、図１１に示す構成における検証対象回路から取得した内部信号に基づく重み付けされたスコアの測定例を示す図である。図１２において、検証対象回路５から取得した複数の内部信号の波形に応じて、スコア条件判定回路１〜ｎによって判定された各スコアと、全スコアを合計したスコアとが例示されている。条件２と条件３とが同時に成立した場合に高スコアとなることが分かる。
【００６９】
上述したスコア測定方法では、スコアは条件の成立したサイクルのみで加算されているが、数サイクルの間持続して減衰するようにスコアを設定してもよい。図１３は、条件が成立後に数サイクルの間持続して減衰するようにスコアを設定する例を示す図である。図１３において、検証対象回路５から取得した複数の内部信号の波形に応じて、スコア条件判定回路１〜ｎによって判定された各スコアと、全スコアを合計したスコアとが例示されている。
【００７０】
例えば、条件１と条件２とが成立後、数サイクルの間持続して減衰するようにスコアが設定されているとする。条件１の成立時にはスコア「１０」、条件１成立から１サイクル後ではスコア「５」、２サイクル後ではスコア「２」、３サイクル後ではスコア「１」、その後はスコア「０」となり、条件２の成立時にはスコア「１０」、条件２成立から１サイクル後ではスコア「５」、２サイクル後ではスコア「２」、その後はスコア「０」となりとする。
【００７１】
条件１の成立から２サイクル後に条件２が成立した場合、合計のスコアは１２となり高スコアを示す。このような仕組みによって、検証対象回路５が特定の状態になったサイクルだけでなく、前後に他の条件が重なるような場合にもスコアの高さで示すことができる。
【００７２】
スコアは、設計者又は検証者が次ぎのような状態に対して設定することが考えられる。
【００７３】
（１）ＦＩＦＯ fullのような実装上の構造から発生する状態
（２）同様の設計で発生した障害と類似の状態
（３）検証対象回路で以前に修正された障害と類似の状態
（４）「Ａが発生すれば必ずＢが発生する」という形式の検証項目のうち、他の手段で検証できなかったものについてＡが発生する状態
以下は、図３に示す論理シミュレーション装置１００に基づいて説明される。図５のステップＳ１２で行われる、ランダムシミュレーション実行中における履歴データベース１４ａへの乱数の保存について図１４及び図１５で説明する。
【００７４】
図１４は、１回目のランダムシミュレーションを説明するための図である。図１４において、シミュレーション実行制御部２０は、接続情報１４ｆに基づいて検証対象回路３にスコア測定回路を接続し、例えば１００００サイクルを指定して、乱数生成部２１にクロックに同期させて１００００サイクルの間乱数を発生させる。時刻「１」が１サイクルに相当する場合、時刻「０」から時刻「９９９９」までランダムシミュレーションが実行される。
【００７５】
所定記憶領域にランダムシミュレーション又は再現シミュレーションを示す切換フラグを備えるようにし、シミュレーション実行制御部２０が、切換フラグにランダムシミュレーションを指定することによって、乱数選択部２２は、切換フラグがランダムシミュレーションを指定している場合、乱数生成部２１から乱数の入力をし、切換フラグが再現シミュレーションを指定している場合、履歴データベース１４ａから既に保存されている乱数を時系列に入力するようにすればよい。
【００７６】
図１５は、ランダムシミュレーション中に履歴データベース１４ａに保存される履歴データの例を示す図である。図１５において、検証対象回路の内部信号ａは、検証対象回路３内で発生する複数の内部信号の波形を示し、入力信号ｂは、入力生成部２３が乱数選択部２２から供給される乱数に基づいて決定して検証回路３へ入力する入力信号の波形を示し、乱数ｃは、乱数生成部２１が生成して入力生成部２３へ供給する乱数の値を示し、スコアｄは、スコア測定回路１０によって測定されたスコアを示す。
【００７７】
図１５に示す乱数ｃとスコアｄとが時刻に対応させて履歴データ１７として履歴データベース１４ａに保存される。履歴データ１７は、ランダムシミュレーション毎に生成され、実行されたどのランダムシミュレーションかを識別するシミュレーション識別情報を用いて履歴データベース１４ａで管理されるようにしてもよい。
【００７８】
図５のステップＳ１３で行われるスコアの高い状態の選択について説明する。図１６は、スコアの高い状態の選択例を示す図である。図１６において、ステップＳ１２でのランダムシミュレーションが終了すると、シミュレーション実行制御部２０は、履歴データ１７を参照し、例えば、スコアで降順又は昇順に並べ替えて高スコアとなる時刻「５０４」を特定する。
【００７９】
図５のステップＳ１４で行われるスコアの高い状態の再現について図１７及び図１８で説明する。図１７は、スコアの高い状態の再現を説明するための図である。図１７において、シミュレーション実行制御部２０が、所定記憶領域に格納されている切換フラグに再現シミュレーションを指定することによって、乱数選択部２２は、フラグが再現シミュレーションを指定している場合、乱数の入力を履歴データベース１４ａからの入力に切り替えて、履歴データベース１４ａに保存されている履歴データ１７の時刻「０」から特定した時刻「５０４」までの乱数を時系列に順次乱数を読み込んで入力する。従って、検証対象回路３の内部信号ａと、入力信号ｂと、乱数ｃと、スコアｄとは、１回目のランダムシミュレーションの走行時と同じ動作を時系列的に再現し、時刻「５０４」に到達した際には、シミュレーション実行制御部２０が選択した状態が再現される。
【００８０】
図１８は、再現シミュレーションのための機能構成を示す図である。図１８において、１回目のランダムシミュレーションにて障害が検出されなかった場合、再現シミュレーションの実行による検証対象回路３の状態を再現する過程では、期待値のチェックは不要であるので、乱数選択部２２と、入力生成部２３と、検証対象回路３と、履歴データベース１４ａとで再現シミュレーションが行われる。前述したように、乱数選択部２２は、履歴データベース１４ａで管理される１回目のランダムシミュレーション中に記録された履歴データ１７から時刻「０」から特定した時刻「５０４」までの乱数を時系列に順次乱数を読み込んで入力する。
【００８１】
図５のステップＳ１５で行われる再現した状態からのランダムシミュレーションについて図１９及び図２０で説明する。図１９は、再現した状態からのランダムシミュレーションを説明するための図である。図１９において、再現シミュレーションによって選択した状態が再現されると、シミュレーション実行制御部２０は、切換フラグにランダムシミュレーションを指定して、乱数生成部２１に乱数を発生させて乱数選択部２２に入力させ、乱数選択部２２は切換フラグを参照することによって、乱数生成部２１からの乱数の入力を選択する。
【００８２】
従って、回路のストレス状態となるスコアが高い状態の近辺を、集中的にランダムシミュレーションすることができる。
【００８３】
１回目のシミュレーションでは、ランダムシミュレーションのみが実行され、２回目以降のシミュレーションでは、時刻「０」から選択された時刻までの再現シミュレーションと再現後の状態からのランダムシミュレーションとが実行される。
【００８４】
２回以上シミュレーションを実行する場合には、再現した状態からのランダムシミュレーションの実行中においても、時刻に対応させて乱数とスコアとを履歴データ１７に時系列に保存する。
【００８５】
１回目のランダムシミュレーションにおいて時刻「５０４」で高スコアだった場合、２回目のシミュレーション後は、新たに保存された時刻「５０５」から時刻「９９９９」において時刻「５０４」のスコア「５０」より高いスコアとなる時刻を特定する。時刻「５０４」のスコア「５０」より高いスコアが存在しなかったら、再度時刻「０」から時刻「５０４」までを再現して、ランダムシミュレーションを実行する。
【００８６】
一方、時刻「５０４」のスコア「５０」より高いスコアが存在したら、その高いスコアとなった時刻を特定し、時刻「０」からその時刻までを再現して、ランダムシミュレーションを実行する。
【００８７】
図２０は、再現した状態からのランダムシミュレーションのための機能構成を示す図である。図２０において、図５のステップＳ１５にて再現した状態からランダムシミュレーションを実行する場合、シミュレーション実行制御部２０は、所定記憶領域に格納されている切換フラグにランダムシミュレーションを指定し、乱数生成部２１に乱数生成を行わせることによって、乱数選択部２２は、乱数生成部２２からの入力を選択して入力生成部２３へ乱数を供給する。
【００８８】
入力生成部２３は、検証対象回路３への入力信号を期待値計算部２４へも供給し、期待値比較部２５は、検証対象回路３からの出力信号と、期待値計算部２４からの出力信号の期待値とを比較して障害の発生を検出する。
【００８９】
図６に示す第二の処理フローの場合、スコア測定回路１０による検証対象回路３の内部信号に基づくスコア測定を行い、スコアを履歴データベース１４ａに保存するようにする。
【００９０】
上述したように、ランダムシミュレーション実行中に、検証対象回路の内部信号の状態に応じて障害の発生し易い状態となる回路のストレス状態をスコアで測定し、以降のシミュレーションにおいて、高スコアとなった状態を再現し、再現した状態からランダムシミュレーションを実行することにより、回路のストレス状態を考慮してその状態を集中的にシミュレーションすることができるため、効果的なシミュレーションを行うことができる。
【００９１】
以上の説明に関し、更に以下の項を開示する。
（付記１）
シミュレーション実行中に論理回路の内部状態を測定してスコアで出力するスコア測定手段と、
前記シミュレーション実行中に生成された乱数と前記スコア測定手段によって出力された前記スコアとを時刻に対応させた履歴データとして、所定記憶領域に保存する履歴データ保存手段と、
前記履歴データを用いて高スコアとなる時刻を特定し、該履歴データに記録されている前記乱数を用いて前記論理回路への入力を決定して、前記シミュレーションにおける該特定した時刻までを再現する再現手段と
を有することを特徴とする論理シミュレーション装置。
（付記２）
前記乱数を生成して前記履歴データ保存手段に該生成した乱数を保存する乱数生成手段を有することを特徴とする付記１記載の論理シミュレーション装置。
（付記３）
前記乱数生成手段によって生成された乱数を入力とするか、前記履歴データに記録されている乱数を入力とするかを選択する乱数選択手段を有することを特徴とする付記２記載の論理シミュレーション装置。
（付記４）
前記スコア測定手段は、
検証対象となる前記論理回路から１又は複数の内部信号を取得して、該内部信号に基づく所定条件の成立に応じてスコアを決定することによって、該論理回路の内部状態を測定したスコアを出力するようにしたことを特徴とする付記１乃至３のいずれか一項記載の論理シミュレーション装置。
（付記５）
前記再現手段によって再現された前記特定された時刻の前記論理回路の内部状態から、新たに生成された乱数を用いて入力を決定してシミュレーションを行うようにした付記１乃至３のいずれか一項記載の論理シミュレーション装置。
（付記６）
乱数を用いて論理回路への入力を決定して前記論理回路を検証する論理シミュレーション装置における論理シミュレーション方法であって、
前記論理シミュレーション装置が、
前記論理回路への入力のための前記乱数と該論理回路の内部状態を測定して障害が発生する度合いを示すスコアとを履歴データとして所定記憶領域に記録しながら、該乱数を用いたランダムシミュレーションを実行する第一実行手順と、
前記履歴データからスコアの高い状態を選択し、該履歴データに記録された前記乱数を用いて該スコアの高い状態まで再現する再現手順と、
前記再現されたスコアの高い状態から乱数を新たに発生させてランダムシミュレーションを実行する第二実行手順とを実行し、
前記障害の発生する度合いの高い状態で前記論理回路に対してシミュレーションする確率を高めるようにしたことを特徴とする論理シミュレーション方法。
（付記７）
前記第二実行手順による前記スコアの高い状態からのランダムシミュレーションの実行中において、前記新たに発生させた乱数と該論理回路の内部状態を測定したスコアとを前記履歴データとして所定記憶領域に記録するようにしたことを特徴とする付記６記載の論理シミュレーション方法。
【００９２】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【図面の簡単な説明】
【００９３】
【図１】スコア測定回路の接続例を示す図である。
【図２】スコア測定回路によって測定されたスコアに基づくシミュレーション方法を説明するための図である。
【図３】本発明に係る論理シミュレーション装置の機能構成例を示す図である。
【図４】論理シミュレーション装置のハードウェア構成を示す図である。
【図５】シミュレーションの第一の処理フローについて説明するための図である。
【図６】シミュレーションの第二の処理フローについて説明するための図である。
【図７】他の検証対象回路の例を示す図である。
【図８】図７に示す検証対象回路に接続されるスコア測定回路の例を示す図である。
【図９】図８に示すスコア測定回路の回路記述例を示す図である。
【図１０】スコアを測定しながらシミュレーションが実行される状態を示す図である。
【図１１】条件毎に重み付けしてスコアを計算するスコア測定回路の例を示す図である。
【図１２】図１１に示す構成における検証対象回路から取得した内部信号に基づく重み付けされたスコアの測定例を示す図である。
【図１３】条件が成立後に数サイクルの間持続して減衰するようにスコアを設定する例を示す図である。
【図１４】１回目のランダムシミュレーションを説明するための図である。
【図１５】ランダムシミュレーション中に履歴データベースに保存される履歴データの例を示す図である。
【図１６】スコアの高い状態の選択例を示す図である。
【図１７】スコアの高い状態の再現を説明するための図である。
【図１８】再現シミュレーションのための機能構成を示す図である。
【図１９】再現した状態からのランダムシミュレーションを説明するための図である。
【図２０】再現した状態からのランダムシミュレーションのための機能構成を示す図である。
【符号の説明】
【００９４】
３            検証対象回路
３ａ          検証対象回路記述データ
１０          スコア測定回路
１０ａ        スコア測定回路記述データ
１１          制御ユニット
１２          入力ユニット
１３          表示ユニット
１４          データ記憶部
１４ａ        履歴データベース
１４ｆ        接続情報
１５          プログラム記憶部
２０          シミュレーション実行制御部
２１          乱数生成部
２２          乱数選択部
２３          入力生成部
２４          期待値計算部
２５          期待値比較部
３０          シミュレーション実行制御部
３１          乱数生成プログラム
３２          乱数選択プログラム
３３          入力生成プログラム
３４          期待値計算プログラム
３５          期待値比較プログラム
３６          論理回路実行プログラム
１００        論理シミュレーション装置
【図１】
2009075811.tif 000003
【図２】
2009075811.tif 000004
【図３】
2009075811.tif 000005
【図４】
2009075811.tif 000006
【図５】
2009075811.tif 000007
【図６】
2009075811.tif 000008
【図７】
2009075811.tif 000009
【図８】
2009075811.tif 000010
【図９】
2009075811.tif 000011
【図１０】
2009075811.tif 000012
【図１１】
2009075811.tif 000013
【図１２】
2009075811.tif 000014
【図１３】
2009075811.tif 000015
【図１４】
2009075811.tif 000016
【図１５】
2009075811.tif 000017
【図１６】
2009075811.tif 000018
【図１７】
2009075811.tif 000019
【図１８】
2009075811.tif 000020
【図１９】
2009075811.tif 000021
【図２０】
2009075811.tif 000022