"入力されるテストシナリオに従いスティミュラスを生成するスティミュラス生成部と、前記スティミュラスが検証対象の論理回路に入力され所定の動作が実行されることにより得られる出力値と、前記スティミュラスが前記検証対象の論理回路に入力され所定の動作が実行された場合に得られるであろうと予想される期待値とを比較し、前記出力値と前記期待値とが一致するか否かを判定する結果判定部と、前記結果判定部において前記出力値と前記期待値が不一致であると判定された場合に、少なくとも前記スティミュラスと前記期待値と前記出力値とを含む不一致情報をログとして出力するフェイルログ生成部と、前記スティミュラスが生成されてから前記検証対象の論理回路に入力されるまでの任意の時点において、前記検証対象の論理回路内の全ての信号レジスタ記憶素子の値を論理回路状態情報として記憶装置に保存させる状態ダンプ部と、前記記憶部に保存されている前記論理回路状態情報を前記検証対象の論理回路にロードさせる状態ロード部と、を備えており、前記状態ロード部は、前記結果判定部において前記出力値と前記期待値が不一致であると判定された場合にのみ、前記論理回路状態情報を前記検証対象の論理回路にロードさせて、前記検証対象の論理回路を前記スティミュラスが前記検証対象の論理回路に入力され実行される前の状態に戻し、また、前記スティミュラス生成部は、前記論理回路状態情報が前記検証対象の論理回路にロードされた後に、前記スティミュラスと異なる第2のスティミュラスを生成して前記検証対象の論理回路に入力することを特徴とする、半導体集積回路の機能検証装置。入力されるテストシナリオに従いスティミュラスを生成するスティミュラス生成部と、前記スティミュラスが検証対象の論理回路に入力され所定の動作が実行されることにより得られる出力値と、前記スティミュラスが前記検証対象の論理回路に入力され所定の動作が実行された場合に得られるであろうと予想される期待値とを比較し、前記出力値と前記期待値とが一致するか否かを判定する結果判定部と、前記結果判定部において前記出力値と前記期待値が不一致であると判定された場合に、少なくとも前記スティミュラスと前記期待値と前記出力値とを含む不一致情報をログとして出力するフェイルログ生成部と、前記スティミュラスが生成されてから前記検証対象の論理回路に入力されるまでの任意の時点において、前記検証対象の論理回路内の全ての信号レジスタ記憶素子の値を論理回路状態情報として記憶装置に保存させる状態ダンプ部と、前記記憶部に保存されている前記論理回路状態情報を前記検証対象の論理回路にロードさせる状態ロード部と、を備えており、前記状態ロード部は、前記結果判定部において前記出力値と前記期待値が不一致であると判定された場合にのみ、前記論理回路状態情報を前記検証対象の論理回路にロードさせることを特徴とする、半導体集積回路の機能検証装置。前記テストシナリオに従うスティミュラスを構成する1種類以上のパラメータ及び前記パラメータのとりうる値もしくは範囲を決定し、前記パラメータを軸とし前記パラメータの値もしくは範囲の組み合わせを要素とするパラメータテーブルを生成及び保持するスティミュラス生成制御部を更に備えており、スティミュラス生成制御部は、前記スティミュラスを前記検証対象の論理回路に入力して前記結果判定部において得られる判定結果を、前記スティミュラスの生成に用いられた前記パラメータテーブルにおける前記要素に登録し、設定された特定の時点において前記判定結果が登録された要素を境界として前記パラメータテーブルを複数の領域に分割することを特徴とする、請求項2に記載の半導体集積回路の機能検証装置。前記スティミュラス生成制御部は、前記パラメータテーブルの分割された複数の前記領域から特定の条件に当てはまる前記領域を抽出し、それ以降の検証に用いる前記スティミュラスの生成に用いられる前記パラメータの値を前記抽出された領域に含まれる値とすることを特徴とする、請求項3に記載の半導体集積回路の機能検証装置。前記スティミュラス生成制御部は、前記パラメータテーブルの分割された複数の前記領域のそれぞれについて、前記判定結果が未登録である前記要素の数が最も多かった前記領域を第1のタイプ、前記出力値と前記期待値が不一致であるという前記判定結果が登録されている前記要素の数が最も多かった前記領域を第2のタイプ、前記出力値と前記期待値が一致しているという前記判定結果が登録されている前記要素の数が最も多かった前記領域を第3のタイプ、といずれかのタイプに分類し、前記第1から第3のタイプの中の特定のタイプに分類されていることを前記特定の条件として前記領域を抽出することを特徴とする、請求項4に記載の半導体集積回路の機能検証装置。そこで、本実施形態は、以上の点に鑑みてなされたもので、開発期間や開発コストを低減することができる、半導体集積回路の機能検証装置を提供することを目的とする。本実施形態の半導体集積回路の機能検証装置は、入力されるテストシナリオに従いスティミュラスを生成するスティミュラス生成部と、前記スティミュラスが検証対象の論理回路に入力され所定の動作が実行されることにより得られる出力値と、前記スティミュラスが前記検証対象の論理回路に入力され所定の動作が実行された場合に得られるであろうと予想される期待値とを比較し、前記出力値と前記期待値とが一致するか否かを判定する結果判定部と、前記結果判定部において前記出力値と前記期待値が不一致であると判定された場合に、少なくとも前記スティミュラスと前記期待値と前記出力値とを含む不一致情報をログとして出力するフェイルログ生成部と、前記スティミュラスが生成されてから前記検証対象の論理回路に入力されるまでの任意の時点において、前記検証対象の論理回路内の全ての信号レジスタ記憶素子の値を論理回路状態情報として記憶装置に保存させる状態ダンプ部と、前記記憶部に保存されている前記論理回路状態情報を前記検証対象の論理回路にロードさせる状態ロード部と、を備えており、前記状態ロード部は、前記結果判定部において前記出力値と前記期待値が不一致であると判定された場合にのみ、前記論理回路状態情報を前記検証対象の論理回路にロードさせることを特徴とする。以下、図面を参照して実施形態を説明する。第1の実施形態まず、図1を参照して、本実施形態の半導体集積回路の機能検証装置の構成を説明する。図1は、第1の実施形態に係わる半導体集積回路の機能検証装置の構成の一例を説明する図である。半導体集積回路の機能検証装置1は、各種ソフトウエアプログラムを実行する中央処理装置以下、CPUという2aを有する本体装置2と、本体装置2と接続され各種ソフトウエアプログラム等を記憶する記憶部3と、本体装置2と接続された表示部4と有して構成されている。なお、図示しないが、ユーザが、各種プログラムを実行させるための指示を与えるための、キーボード、マウス等の入力装置が、本体装置2には接続されている。記憶部3には、各種ソフトウエアプログラムとして、半導体集積回路、特に論理回路の機能検証を行うシミュレーションプログラム以下、シミュレータという32が記憶されている。また、記憶部3には、シミュレータ32を実行する際に用いられるテスト全体の構成が記述されているテストシナリオ31も格納されている。本体装置2のCPU2aは、記憶部3に記憶されたこれらのプログラム等を実行あるいは読み出すことができる。次に、シミュレータ32の構成について説明する。図2は、シミュレータ32の構成の一例を説明する構成図である。図2に示すように、シミュレータ32は、テストシナリオ31に従ってランダムなスティミュラスを生成するスティミュラス生成部321と、検証結果を判定する結果判定部323と、検証結果がFailであった場合にFailログ34を生成させるFailログ生成部326とを含む。なお、Failログ34には、Failが発生したときのスティミュラスの内容例えばどのアドレスに対してどんなコマンドを与えたのか、など、出力値、出力値と期待値との相違もしくは期待値、シミュレーション時間など、Failが発生したときの状況が識別できる情報が記述される。なお、Failログ34は表示部4に表示させたり紙などに印刷させたり他の記憶媒体にコピーさせたりすることが可能である。また、シミュレータ32は、シミュレーションの任意のタイミングにおける論理回路322内の全ての信号レジスタ記憶素子の値以下、論理回路状態情報と示すを論理回路状態情報記憶部33に保存させる状態ダンプ部324と、論理回路状態情報記憶部33に保存されている論理回路状態情報を論理回路322にロードさせる状態ロード部325とを含む。次に、本実施形態における半導体集積回路の機能検証装置1の動作について説明する。図3は、第1の実施形態の機能検証装置1による論理回路322の機能検証の具体的な手順を説明するフローチャートである。ここでは、例えばRTLで記述された論理回路322のランダム機能検証を行う場合を一例にあげて説明する。まず、ステップS1において、テストシナリオ31をシミュレータ32のスティミュラス生成部321に読み込む。スティミュラス生成部321は、読み込まれたテストシナリオ31に従ってランダムなスティミュラスを生成するステップS2。スティミュラスを生成すると、スティミュラス生成部321は状態ダンプ部324に対して論理回路322の状態論理回路状態情報をダンプするよう状態ダンプ部324に対して指示する。状態ダンプ部324は、スティミュラス生成部321からのダンプ指示を受信すると、その時点における論理回路322の論理回路状態情報を論理回路状態情報記憶部33にダンプするステップS3。次に、ステップS2で生成されたスティミュラスが、スティミュラス生成部321から論理回路322と結果判定部323とに入力されるステップS4。スティミュラスの内容に従って論理回路322が動作し、結果判定部323に出力値が送信される。結果判定部323では、論理回路322からの出力値と、スティミュラス生成部321から送信されたスティミュラスから生成された期待値とが比較され、検証結果がPassであるかFailであるかが判定されるステップS5。ステップS6において、論理回路322からの出力値が期待値と異なる、すなわち検証結果がFailであると判定された場合、ステップS7へ進む。ステップS7において、結果判定部323はFailログ生成部326に対してFailログ34の生成を指示する。Failログ生成部326は、Failが発生したときの状況が識別できる情報Failが発生したときのスティミュラスの内容どのアドレスに対してどんなコマンドを与えたのか、出力値、期待値もしくは出力値と期待値との相違、シミュレーション時間などをFailログ34に記述する。次にステップS8に進み、結果判定部323は状態ロード部325に対して論理回路状態情報のロードを指示する。状態ロード部325は、論理回路状態情報記憶部33に記憶されている論理回路状態情報を論理回路322にロードする。すなわち、この手順によって、論理回路322の状態がそのFailが発生する原因となったスティミュラスが入力される前の状態にもどされる。なお、ステップS6において、論理回路322からの出力値が期待値と等しい、すなわち検証結果がPassであると判定された場合、Failログ34の生成ステップS7と論理回路状態情報のロードステップS8とは実行されずにステップS9に進む。テストシナリオ31に基づき生成されるスティミュラスのうち未実行のものがある場合ステップS9、No、ステップS2に戻り、スティミュラス生成部321において未実行の新しいスティミュラスが生成される。生成された新しいスティミュラスを用い、上述したステップS3からステップS8の手順が実行されて、論理回路322の機能検証が継続的に実行される。一方、テストシナリオ31に基づき生成される全てのスティミュラスが実行済みである場合、論理回路322の検証を終了するステップS9、Yes。このように、本実施形態においては、スティミュラスの実行結果がFailであっても、論理回路322の状態を該スティミュラスが入力される前の状態に戻してシミュレーションを継続実行させる。従って、一度のシミュレーションで、発生確率が高いバグだけでなく発生確率の低いその他のバグまで探索及び検出することができる。また、Failログ34にFailが発生したときの状況が識別できる情報が記述されているので、Failログ34を解析することで重要度の高いバグを識別したり修正方法を検討したりすることが可能となる。従来は、バグが発見される都度シミュレーションが停止され、発見されたバグを修正してから再度シミュレーションを再開する必要があった。このため、発見確率は低いが重要度の高いバグ論理回路の重要な部分の構造設計に大きな変更が必要となるようなバグが存在する場合には、このようなバグを発見する以前に論理回路に施した、発生確率が高いバグに起因する修正が無駄になってしまっていた。しかしながら、本実施形態においては一度のシミュレーションで種々のバグを検出することができ、重要度の高いバグから修正を行うことができるため、開発期間や開発コストを低減することができる。第2の実施形態上述した第1の実施形態の半導体集積回路の機能検証装置は、与えられたテストシナリオ31に従って生成される全てのスティミュラスについてシミュレーションを実行しているが、本実施形態においてはシミュレーションの途中で実行結果を解析し、生成するスティミュラスの範囲を自動的に更新していく点が異なっている。第1の実施形態の構成要素と同じ構成要素は、同じ符号を付して説明は省略する。図4は、第2の実施形態に係わるシミュレータ32 ́の構成の一例を説明する構成図である。シミュレータ32 ́はテストシナリオ31から入力される情報と、結果判定部323 ́から入力される検証結果とに基づきスティミュラスの生成を制御するスティミュラス制御部320を備えている。スティミュラス制御部320では、読み込まれたテストシナリオ31に従って、制御の対象となる1種類以上のパラメータと、それぞれのパラメータがとりうる値とが決定される。なお、パラメータとはスティミュラスを構成する要素であり、具体的には例えばバスオペレーションなどのコマンド、アドレス、発生のタイミングなどである。また、個々のパラメータを要素とするマトリクスが生成され、パラメータテーブル327として保持される。パラメータテーブル327は、スティミュラス制御部320からアクセスされ、検証結果を分析してスティミュラスの生成範囲を決定するために用いられる。図5はパラメータテーブル327の一例を示す図である。図5には、パラメータが2種類の場合に生成される2次元のパラメータテーブル327の一例を示している。図5において、行方向に配置されているパラメータAはバスオペレーションのコマンドであり、1はRead、2はWrite、...と、各数字は個別のコマンドに対応している。また、図5において列方向に配置されているパラメータBはアドレスを示している。図5の一例においては、パラメータBであるアドレスが0~99、100~199、200~299、300~399、400~499の5つの範囲に分割されている。一方、パラメータAには4つのコマンドが用いられている。従って、パラメータAの各コマンドと、パラメータBの分割されたそれぞれの範囲との組み合わせは4×5=20通りとなる。なお、パラメータテーブル327の一部のセルに書きこまれているPassまたはFailは、シミュレーション途中のある時点での、各スティミュラスの検証結果を示している。例えば、一行目かつ一列目のセル一番左上のセル、以下、セル1,1と示すのPassは、パラメータAが1、かつパラメータBが0~99の範囲を条件として生成されたスティミュラスを入力した場合の論理回路322の検証結果がPassであることを示している。空欄のセルは検証が未実行であることを示している。例えば、セル1,5一番右上のセルは、パラメータAが1、かつパラメータBが400~499の範囲については論理回路322の検証が未実施であることを示している。なお、パラメータテーブル327は、図5に示すようにパラメータが2種類の場合は2次元のテーブル形式で表現されるが、パラメータが3種類の場合は3次元、n種類の場合はn次元のマトリクスで表現される。また、パラメータテーブル327は、スティミュラス制御部320からのみアクセス可能になされているだけでなく、モニタなどに表示させたり印刷させたりするなどその内容が可視可能になされてもよい。次に、本実施形態における半導体集積回路の機能検証装置1の動作について説明する。図6は、第2実施形態の機能検証装置1による論理回路322の機能検証の具体的な手順を説明するフローチャートである。なお、図3で示す第1の実施形態の手順と同様の手順にはステップ番号を付している。まず、ステップS1 ́において、テストシナリオ31がシミュレータ32のスティミュラス制御部320に読み込まれる。スティミュラス制御部320では、読み込まれたテストシナリオ31に従って、制御の対象となる1種類以上のパラメータと、それぞれのパラメータがとりうる値とが決定される。また、個々のパラメータを要素とするマトリクスが生成され、パラメータテーブル327として保持される。次に、ステップS2 ́に進み、スティミュラス制御部320からスティミュラス生成部321 ́に対してスティミュラスの生成指示が入力される。スティミュラス生成部321 ́では指示内容に従ってパラメータが決定され、スティミュラスが生成される。続いて、論理回路322の状態論理回路状態情報が論理回路状態情報記憶部33にダンプされるステップS3。次に、ステップS2 ́で生成されたスティミュラスが、スティミュラス生成部321 ́から論理回路322と結果判定部323 ́とに入力されるステップS4。スティミュラスの内容に従って論理回路322の信号、レジスタ、記憶素子の値が変化し、結果判定部323 ́に出力値が送信される。結果判定部323 ́では、論理回路322からの出力値と、スティミュラス生成部321 ́から送信されたスティミュラスから生成された期待値とが比較され、検証結果がPassであるかFailであるかが判定されるステップS5。結果判定部323 ́での判定結果とスティミュラスの内容とはスティミュラス制御部320に出力され、パラメータテーブル327の該当するセルに書きこまれるステップS51。なお、検証結果が書き込まれるセルは、ステップS2 ́において、スティミュラス生成部321 ́で生成されたスティミュラスのパラメータの値に対応するセルとなる。例えば、ステップS2 ́において、スティミュラス生成部321でパラメータAの値が2、パラメータBの値が150と決定され、スティミュラスが生成された場合、図5のパラメータテーブル327では、セル2,2に検証結果が書き込まれる。図5において、パラメータAの2は2行目に該当し、パラメータBの150は100~199に含まれるので2列目に該当する。例えば判定結果がPassの場合、セル2,2にはPassと書き込まれる。続くステップS6において、論理回路322からの出力値が期待値と異なる、すなわち検証結果がFailであると判定された場合、ステップS7へ進む。ステップS7において、結果判定部323 ́はFailログ生成部326に対してFailログの生成を指示する。Failログ生成部326は、Failが発生したときの状況が識別できる情報をFailログ34に記載する。また、結果判定部323 ́は状態ロード部325に対して論理回路状態情報のロードを指示する。状態ロード部325は、論理回路状態情報記憶部33に記憶されている論理回路状態情報を論理回路322にロードする。すなわち、この手順によって、論理回路322の状態がそのFailが発生する原因となったスティミュラスが入力される前の状態にもどされる。次に、ステップS81に進み、パラメータテーブル327に入力されているFailの個数と、予め設定されている閾値とが比較される。なお、閾値は次のステップにおけるスティミュラスの生成範囲の変更を行うトリガーとして設定される値であり、機能検証に先んじてスティミュラス制御部320に予め設定されている。閾値は固定値であってもよいし、必要に応じて外部から書き換えを行ってもよい。ステップS81において、Failの個数が閾値と等しいと判定された場合、ステップS82に進み、以降に生成するスティミュラスの範囲スティミュラスの生成に用いる各パラメータの値がとりうる値の範囲を変更する。スティミュラスの範囲を変更する方法について、図7及び図8を用いて説明する。図7は、シミュレーションの一時点におけるパラメータテーブル327の一例を示す図である。また、図8はスティミュラスの範囲を変更する手順の一例を説明するフローチャートである。すなわち、図8に示す手順は、図6のフローチャートのステップS82における具体的な手順の一例を示している。図7は、10個のスティミュラスが生成されて検証が行われ、結果が書き込まれた時点におけるパラメータテーブル327を示している。10個のスティミュラスのうち、7個のスティミュラスによる検証結果がPassであり、3個のスティミュラスによる検証結果がFailである。パラメータAが2、パラメータBが350の条件で生成されたスティミュラスにより検証を行った結果、3回目のFailが発生したとする。すなわち、セル2,4に書きこまれたFailが、パラメータテーブル327に書きこまれた3個目のFailであるとする。閾値が3である場合、このセル2,4がスティミュラス生成範囲を変更するための原点セルCoとなるステップS821。この原点セルCoを境界として、パラメータAとパラメータBのそれぞれの範囲を分割するステップS822。すなわち、パラメータAについては12と34とに分割される。また、パラメータBについては0~99100~199200~299の範囲と300~399400~499の範囲とに分割される。パラメータAとパラメータBとがそれぞれ2分割されることにより、パラメータテーブル327は22=4つのエリアに分割される。すなわち、パラメータAが1または2であり、パラメータBが0~99100~199200~299であるエリアエリアA、パラメータAが3または4であり、パラメータBが0~99100~199200~299であるエリアエリアB、パラメータAが1または2であり、パラメータBが300~399400~499であるエリアエリアC、パラメータAが3または4であり、パラメータBが300~399400~499であるエリアエリアDの4つのエリアに分割される。なお、図7に示す一例ではパラメータが2個の場合について説明しているが、n個のパラメータを持つ場合、パラメータテーブル327は2n個のエリアに分割される。分割された各エリアについて、エリア内のセルに書きこまれたPassとFailの個数、及び書き込みがないセルの個数をそれぞれカウントするステップS823。例えばエリアAは、Passが3個、Failが0個、未記入が3個となり、エリアBは、Passが1個、Failが0個、未記入が5個となる。また、エリアCは、Passが1個、Failが2個、未記入が1個となり、エリアDは、Passが2個、Failが1個、未記入が1個となる。上記の結果をふまえ、それぞれのエリアを、タイプAPassの結果が多いエリア、タイプBFailの結果が多いエリア、タイプC未記入が多く検証が進んでいないエリア、の3つのタイプに分類するステップS824。図7に示す例の場合、エリアAとエリアDはタイプA、エリアBはタイプC、エリアCはタイプBに分類される。最後に、これ以降の機能検証の目的に応じて対象とするタイプを選択し、同タイプに分類されたエリアをスティミュラスの生成範囲として変更するステップS825。例えば、それぞれのタイプを限定的に選択することによって、以下のような効果が期待される。すなわち、タイプAのエリアを限定的に選択して以降の機能検証を行えば、まだ検出されていない発生確率の低いバグを効率的に探索できる可能性が大きくなる。また、タイプBのエリアを限定的に選択すれば、すでに検出されている発生確率の高いバグの周辺を詳細に検証することができる。さらに、タイプCのエリアを限定的に選択すれば、検証空間の全領域をまんべんなく検証できる。なお、タイプの選択は、機能検証に先だって予め設定してもよいし、図7に示す、機能検証の途中結果が記入されたパラメータテーブル327を参照しながら都度選択してもよい。また、場合によっては複数のタイプを選択してもよい。ステップS81において、Failの個数が閾値と等しくないと判定された場合、ステップS82の手順は実行されずにステップS9 ́に進む。すなわち、スティミュラス生成範囲は変更せずに、以降の機能検証においてもそれまでの検証と同様の範囲を対象としてスティミュラスを生成する。なお、ステップS6において、論理回路322からの出力値が期待値と等しい、すなわち検証結果がPassであると判定された場合、Failログの生成ステップS7からスティミュラス生成範囲の変更ステップS82までの手順は実行されずにステップS9 ́に進む。テストシナリオ31に基づき生成されるスティミュラスのうち未実行のものがある場合ステップS9 ́、No、ステップS2 ́に戻り、スティミュラス生成部321において未実行の新しいスティミュラスが生成される。なお、ステップS82においてスティミュラスの生成範囲が変更されている場合、ステップS9 ́では同変更された範囲における全てのスティミュラスが実行されたか否かが判定される。また、ステップS82においてスティミュラスの生成範囲が変更されている場合、ステップS2 ́では変更された場合においてのみスティミュラスの生成が行われる。ステップS2 ́で生成された新しいスティミュラスを用い、上述したステップS3からステップS82の手順が実行されて論理回路322の機能検証が継続的に実行される。一方、テストシナリオ31に基づき生成されるスティミュラスが実行済みである場合、論理回路322の検証を終了するステップS9 ́、Yes。このように、本実施形態においては、機能検証の過程において途中結果PassFailの分布や、検証実施範囲の偏り度合いを参照し、スティミュラスの生成範囲を変更し、特定のエリアに限定して以降の検証を行うので、目的に応じた効率的なバグの検出を行うことができ、開発期間やコストを更に低減することができる。なお、上述した実施形態においては、Failが指定した個数検出された時点でスティミュラスの生成範囲を見直している限定しているが、例えばスティミュラスの生成個数が特定の個数に達した場合に見直すようにしてもよい。また、見直し限定の回数も1回でなく、例えばスティミュラスの生成個数が10の倍数に達した時点など、複数回行うようにしてもよい。また、図5に示す例では、パラメータBのとりうる値の範囲0~499を5つの領域に分割してスティミュラスの生成や検証結果の書き込みを行っているが、検証の目的や精度などに応じて自由に変えることができる。従って、これ以上の領域例えば10個の領域などに分割してもよいし、これ以下の領域例えば4つの領域などに分割してもよい。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"