(57)【特許請求の範囲】
【請求項１】
順序素子及び組合せ回路部分を有するクロック同期のデジタル回路を検証するためのデジタル回路検証装置において、前記デジタル回路の入力状態及び前記順序素子の出力状態を保持し、それぞれについて現在の状態と比較し前記デジタル回路の内部状態を判定する状態判定回路と、前記状態判定回路の判定結果に応じて前記デジタル回路を検証するためのパターンを所定タイミングで前記デジタル回路に入力する入力信号発生回路と、を具備したことを特徴とするデジタル回路検証装置。
【請求項２】
前記デジタル回路内に周期的動作を行う回路が１つ存在する場合、前記状態判定回路が状態判定を一定期間内に終了させるためのタイムアウト時間が設定された判定期間タイムアウト回路を有することを特徴とする請求項１に記載のデジタル回路検証装置。
【請求項３】
前記デジタル回路内に周期的動作を行う回路が複数存在する場合、前記状態判定回路が状態判定を一定期間内に終了させるためのタイムアウト時間が各回路毎に設定された判定期間タイムアウト回路を有することを特徴とする請求項１に記載のデジタル回路検証装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、クロック同期のデジタル回路を検証するためのデジタル回路検証装置及び検証方法に関する。
【０００２】
【従来の技術】
現在、デジタル回路の設計において、ハードウェア記述言語（ＨＤＬ）を用いたレジスタトランスレベル（ＲＴＬ）設計が行われている。また、設計データを検証する際も、同様にＨＤＬや専用言語などでシミュレーション用パターンを作成し検証を行っている。ＨＤＬや専用言語などでシミュレーション用パターンを作成し検証を行う場合の利点は、回路内部の信号をトレースできることにある。しかし、半導体集積回路の集積度の飛躍的な増加に伴い、回路が大規模化、複雑化し、検証を行う上で後述のような問題が発生している。
【０００３】
すなわち、シミュレーション用パターンを作成するのが検証者であった場合、１．人が作成するため非常に時間がかかる、２．検証者が意図しない入力パターンが存在し検証項目漏れが発生する、３．実際のソフトウェアを作成するソフトウェア開発者と検証者が別であるためソフトウェアの設定順番と入力パターンの順番が異なり、検証もれ、さらには誤動作の原因となる場合がある、４．入力パターンのタイミングによって正常に動作できない場合がある、などの様々な課題がある。
【０００４】
また、シミュレーション用パターンを作成を自動パターン生成ツールで行った場合、５．パターンをランダムに発生しても検証ができたことにならない、６．全ての組合せを行うことは非常に時間がかかり現実的ではない、などの課題がある。
【０００５】
このように、検証者、自動パターン生成ツールのどちらでシミュレーションパターンを作成して検証したとしても、完全な検証というものは非常に難しい。しかし実際には、回路検証において全ての組合せを無限大に行う必要はなく、検証すべき部分は組合せ回路のごく一部分である。そのため、検証者がパターンを作成した方が、必要な機能検証のみを正確に行うことができる。また、検証者は設計された回路の外部仕様書の中でデジタル回路の設定順序となる入力パターンを明記することで、ソフトウェア設計者もシミュレーションパターンと同様なソフトウェアを作成することができ、検証者が意図しない入力パターンが発生することを避けることができる。
【０００６】
【発明が解決しようとする課題】
上述のように自動パターン生成ツールを利用するよりも検証者がシミュレーションパターンを作成する方に利点がある。しかし、検証者がシミュレーションパターンを作成する場合には、先に述べたように、入力パターンのタイミングによってはいくら検証しても正常に動作できない場合がある。これは検証対象となるデジタル回路（以下、ターゲット回路と記す）の内部状態を検証者が意識せずに、ターゲット回路をブラックボックス化してパターンを作成するためである。
【０００７】
そこで、本発明は検証者がシミュレーションパターンを作成する際に生じるタイミングに関する問題を解決し、ターゲット回路を確実に検証することができるデジタル回路検証装置及び検証方法を提供することを目的とする。
【０００８】
【課題を解決するための手段】
本発明は、順序素子（フリップフロップ）及び組合せ回路部分を有するクロック同期のデジタル回路の入力状態及び前記順序素子の出力状態を保持し、それぞれについて現在の状態と比較し前記デジタル回路の内部状態を判定し、判定結果に応じて前記デジタル回路を検証するためのパターンを所定タイミングで前記デジタル回路に入力する。
【０００９】
デジタル回路において、ターゲット回路の状態を考えた場合、ターゲット回路への入力信号とターゲット回路内部の順序回路によって１つの状態を表わすことができる。ターゲット回路の状態とは、ターゲット回路へクロック信号が入力され、他の入力信号が変化しない場合、ある一定時間が経過することで、状態が全く変化しない安定な状態（無変化安定状態）若しくはある周期的規則をもち、変化し続ける状態（周期的安定状態）である。
【００１０】
例えば、ポート制御回路のように、ＣＰＵからターゲット回路内部のレジスタへ設定値を書き込むことでターゲット回路から設定値を出力する場合、レジスタへ設定した後、数クロック以内に状態が全く変化しない無変化安定状態となる。また、アップカウンタ回路のように、ＣＰＵからターゲット回路内部のレジスタへアップカウンタ動作許可を設定すると、カウンタが０からカウントアップを開始し、カウンタが最大値に達すると、また、０からカウントアップを行うため、周期的規則を持ち変化する周期的安定状態となる。
【００１１】
無変化安定状態では、ターゲット回路への入力信号がどのタイミングで発生したとしても、ターゲット回路からの出力信号は入力信号のタイミングによって遅れて出力されるとしても、同じ結果を得ることができる。また、周期的安定状態では、ターゲット回路への入力信号が同じ周期に発生すれば、ターゲット回路からの出力信号は周期に合わせて遅く出力されるとしても、同じ結果を得ることができる。
【００１２】
上記理由により、無変化安定状態、周期的安定状態を検証者が知ることができれば、無変化安定状態、周期的安定状態以降に入力信号を変化させるようなタイミングの検証パターンを作ることはなくなる。
【００１３】
デジタル回路検証手法のモデル（以下、デジタル回路検証モデルと記す）として、以下の回路を必要とする。状態判定回路はターゲット回路の入力状態とターゲット回路内部の順序回路の状態を保持するために、クロック信号の立ち上がりエッジ毎に状態を保持できるフリップフロップ回路と、現在の状態と１クロック前の状態を比較するための比較回路及び入力状態とターゲット回路内部の順序回路の状態が現在の状態と1クロック前の状態に変化があるか否かを判定するための判定回路で構成され、判定回路からの出力を判定結果信号として検証のためのパターンを発生する入力信号発生回路に渡す。入力信号発生回路は実際にターゲット回路に接続されるデバイス（ホスト回路）のアクセスサイクル毎に発生できるようにパターンをタスク化し、タスクの実行条件の中に判定結果信号によってタスクの実行を許可／禁止する制御を行う。
【００１４】
【発明の実施の形態】
（第１の実施形態）
以下、本発明の第１の実施形態について図面を参照しながら説明する。
図１はデジタル回路検証モデルを示す構成図である。図１に示されるように、デジタル回路検証モデルは、ターゲット回路１１０と、ターゲット回路に入力するシミュレーションパターンを発生する入力信号発生回路１００と、ターゲット回路１１０の内部状態を判定する状態判定回路１２０とで構成される。
【００１５】
ターゲット回路１１０は無変化安定状態となるデジタル回路のみとし、ターゲット回路１１０の内部は順序回路として１系統のクロック信号で動作するフリップフロップ回路１１３、１１４、１１５と、組合せ回路１１１、１１２とで構成される。
【００１６】
入力信号発生回路１００は、クロック発生回路１０３と実行順番毎に並べたタスク１０１と、タスク１０１の実行を許可／禁止制御するタスク実行許可禁止制御回路１０２とで構成される。
【００１７】
図２はタスクの発生タイミングを示すもので、例えば、入力信号１、２、３を発生するタスクを仮定する。タスクはＨＤＬでシミュレーションを行う際、入力信号のまとまり毎に作成することができる。タスクを作成する場合、まず、外部デバイスのアクセスサイクルに合った基本となる基本タスクを作成する。タスクを利用する場合、基本タスクを呼び出し、基本タスクの中の変化する入力信号値のみを与えることで、ターゲット回路１００に対し外部デバイスと同様のタイミング入力を行うことができる。図示例のように、タスクが実行されない部分は入力信号１、２、３が全て“１”、タスクの実行期間中は入力信号１、２が“０”、入力信号３が“１”又は“０”となるような基本タスクを仮定する。
【００１８】
タスク実行許可禁止制御回路１０２は、例えば、状態判定回路１２０からの判定結果信号が“１”であればタスクの実行を許可し、次のタスクを実行するものとする。また、判定結果信号が“０”であればタスクの実行を禁止し、次のタスクの実行を待つものとする。
【００１９】
状態判定回路１２０には、入力信号発生回路１００からターゲット回路１１０への入力信号及びデジタル回路内部のフリップフロップ回路１１３、１１４、１１５からの出力信号が入力される。状態判定回路１２０は、１クロック前の状態を保持するためのフリップフロップ回路１２１と、１クロック前の状態と現在の状態を比較するための比較回路１２２と、比較回路１２２からの出力結果を入力とする判定回路１２３とで構成される。比較回路１２２は例えば排他的論理積回路（以下、ＥＸ−ＮＯＲ回路と記す）で構成することができる。ＥＸ−ＮＯＲ回路で比較回路を構成した場合、１クロック前の状態と現在の状態が一致していれば“１”が出力され、一致していなければ“０”が出力される。判定回路１２３は例えば論理積回路（以下、ＡＮＤ回路と記す）で構成することができる。ＡＮＤ回路で判定回路を構成した場合、比較回路１２２からの出力結果が全て“１”であれば“１”が出力され、１つでも“０”があれば“０”が出力される。以後、比較回路にはＥＸ−ＮＯＲ回路を用い、比較回路にはＡＮＤ回路を用いたものとして説明する。
【００２０】
図３は上記構成のデジタル回路検証モデルの動作を説明するタイミング図である。シミュレーション開始時、必ずターゲット回路１１０への入力信号とターゲット回路内部のフリップフロップ回路１１３、１１４、１１５が確定した値となるように初期設定を行う。ターゲット回路内部のフリップフロップ１１３、１１４、１１５を初期化するには通常ターゲット回路１１０への入力信号としてリセット信号を用いることで初期化できる。この初期設定により、状態判定回路１２０の比較回路１２２は確定した値を比較することができる。
【００２１】
ターゲット回路１１０が無変化安定状態の回路であれば、クロック信号のみ変化させ、ある一定時間が経過すれば、状態が全く変わらない安定状態となる。つまり、１クロック前の状態と現在の状態を比較すると全ての信号が一致し、全ての比較回路１２２からの比較結果が“１”となる。また判定回路１２３の判定結果も“１”となり、入力信号発生回路１００のタスク実行許可禁止制御回路１０２はタスク実行を許可し、これによりタスク１が実行される。
【００２２】
タスク１が実行されると、状態判定回路１２０の判定結果信号が“０”となり、タスク実行許可禁止制御回路１０２はタスク２の実行を待つ、つまりタスク実行を禁止する。タスク１が実行された後、ある一定時間が経過すれば、また無変化安定状態となり、状態判定回路１２０の判定結果信号も“１”となる。タスク実行許可禁止制御回路１０２はタスク実行を許可し、これによりタスク２が実行される。
【００２３】
タスクが全て実行され、各タスクの実行時間を記録することによって、無変化安定状態になるまでの時間を検証者は知ることができる。タイミング的に問題となる部分は各タスクの無変化安定状態になるまでの期間であるから、無変化安定状態になるまでの期間以内に次のタスクを実行するシミュレーションパターンを作成することにより問題を解決することができる。
【００２４】
（第２の実施形態）
以下、本発明の第２の実施形態について図面を参照しながら説明する。
図４はデジタル回路検証モデルを示す構成図である。図１に示されるように、デジタル回路検証モデルは、ターゲット回路４１０と、入力信号発生回路１００と、状態判定回路４２０とで構成される。先の図１に示したデジタル回路検証モデルと異なる点は、ターゲット回路４１０が周期的安定動作を行う回路を有する場合に、状態判定回路４２０が、状態判定を一定期間内に終了させるためのタイムアウト時間が設定された判定期間タイムアウト回路４２４を備える点にある。
【００２５】
第１の実施形態ではターゲット回路４１０に周期的安定状態となる回路が内蔵されている場合、ターゲット回路４１０が周期的安定状態に遷移すると、判定ターゲット回路４１０内部のフリップフロップ回路４１３、４１４、４１５のいずれか１個以上が１クロック前の状態と異なる。このため、判定結果信号が常に“０”となり、次のタスクを実行できない。
【００２６】
判定期間タイムアウト回路４２４は、アップカウンタを内蔵し、タスク実行後、“０”からカウントアップする。アップカウンタが最大値となると、判定回路４２３の結果に関わらず、判定結果信号を“１”に設定し、タスク実行を許可する。アップカウンタの最大値は、ターゲット回路４１０のフリップフロップ回路の個数をＮとすれば、２N  で示すことができる。その理由は、入力信号が変化しない場合、ターゲット回路４１０の状態はターゲット回路内部のフリップフロップ回路の個数分の状態しか存在せず、また、フリップフロップ回路は“０”又は“１”の２つの状態しか存在しないため、ターゲット回路４１０は２N個の状態しか存在しないからである。アップカウンタが２N回数えている間に必ず同じ状態が発生し、周期的安定状態になる。
【００２７】
図５は以上構成のデジタル回路検証モデルの動作を説明するためのタイミング図である。ターゲット回路４１０への入力信号とターゲット回路内部のフリップフロップ４１３、４１４、４１５が確定した値となるように初期設定を行った後、タスク１が実行され、これによりタスク実行信号がアクティブになる。タスク実行信号により、状態判定回路４２０内の判定期間タイムアウト回路４２３のカウンタがカウント動作を開始する。周期的安定回路であるターゲット回路４１０は、ターゲット回路内部のフリップフロップ回路４１３、４１４、４１５が常に変化するため、状態判定回路４２０内の比較回路４２２は必ず１つは不一致となる。判定期間タイムアウト回路４２４が最大値をカウントすると、１クロック分のタイムアウト信号がアクティブになる。これにより、判定結果信号は比較回路４２２からの信号に関わらず“１”となり、次のタスクを実行する。
【００２８】
周期的安定状態が発生しなかった場合は、ある一定期間を経過すれば無変化安定状態となるため、比較回路４２２からの比較結果信号が全て“１”となり、判定回路４２３の判定結果信号が“１”となるため、次のタスクを実行することができる。
【００２９】
タスクが全て実行され、各タスクの実行時間を記録することによって、無変化安定状態になるまでの時間を検証者は知ることができる。また、どのタスクにより、周期的安定状態になるか判断することができる。検証者は無変化安定状態又は周期的安定状態になるまでの期間以内に次のタスクを実行するシミュレーションパターンを作成することにより問題を解決することができる。
【００３０】
（第３の実施形態）
以下、本発明の第３の実施形態について図面を参照しながら説明する。
図６はデジタル回路検証モデルを示す構成図である。図６に示されるように、デジタル回路検証モデルは、ターゲット回路６１０と、入力信号発生回路６００と、状態判定回路６２０とで構成される。先の図４に示したデジタル回路検証モデルと同様に周期的安定動作を行う回路を有する場合を考慮するが、図４に示したデジタル回路検証モデルと異なる点は、ターゲット回路６１０が周期的安定動作を行う回路を複数有する場合に、状態判定回路６２０が、周期的安定動作を行う回路毎に判定状態を一定期間内に終了させるためのタイムアウト時間が設定された判定期間タイムアウト回路６２４を備える点にある。
【００３１】
具体的には、ターゲット回路６１０において、周期的安定状態となるフリップフロップ回路を周期フリップフロップ回路群６１３、６１４に分類し、分類毎に周期的安定状態を示す周期発生トリガ信号を発生するフリップフロップ回路６１５、６１６も分類する。周期フリップフロップ回路群は一方の動作が他の周期フリップフロップ回路群に影響を及ぼすことはない。
【００３２】
判定期間タイムアウト回路６２４には、予め周期フリップフロップ回路群毎に判定期間のタイムアウト時間が設定されており、周期発生トリガ信号により”０”からカウントアップする。アップカウンタが設定されたタイムアウト時間に達すると、判定回路６２３の結果に関わらず、判定結果信号を”１”に設定し、タスク実行を許可する。
【００３３】
【発明の効果】
以上のように本発明によれば、順序回路（フリップフロップ）及び組合せ回路を有するクロック同期のデジタル回路の入力状態及び前記順序回路の出力状態を保持し、それぞれについて現在の状態と比較し前記デジタル回路の内部状態を判定し、判定結果に応じて前記デジタル回路を検証するためのパターンを所定タイミングで前記デジタル回路に入力するためのデジタル回路検証モデルを構築することで、検証者がシミュレーションパターンを作成する際に生じる問題となる安定状態を認識し、安定状態にあるタイミングを外してターゲット回路にパターンを入力することができるため、ターゲット回路を確実に検証することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るデジタル回路検証モデルを示す構成図。
【図２】基本タスクとなる入力信号を示すタイミング図。
【図３】第１の実施形態に係るデジタル回路検証モデルの動作を示すタイミング図。
【図４】本発明の第２の実施形態に係るデジタル回路検証モデルを示す構成図。
【図５】第２の実施形態に係るデジタル回路検証モデルの動作を示すタイミング図。
【図６】本発明の第３の実施形態に係るデジタル回路検証モデルを示す構成図。
【符号の説明】
１００，４００，６００  入力信号発生回路
１０１，４０１，６０１  タスク
１０２，４０２，６０２  タスク実行許可禁止制御回路
１０３，４０３，６０３  クロック発生回路
１１０，４１０，６１０  ターゲット回路
１１１，１１２，４１１，４１２，６１１，６１２  組合せ回路
１１３，１１４，１１５，４１３，４１４，４１５  フリップフロップ回路（内部）
１２０，４２０，６２０  状態判定回路
１２１，４２１，６２１  フリップフロップ回路（１クロック前の状態保持）
１２２，４２２，６２２  比較回路
１２３，４２３，６２３  判定回路
４２４，６２４  判定期間タイムアウト回路
６１３  周期Aフリップフロップ回路群
６１４  周期Bフリップフロップ回路群
６１５  周期A発生トリガフリップフロップ回路
６１６  周期B発生トリガフリップフロップ回路
【図１】
0003698413.tif 000002
【図２】
0003698413.tif 000003
【図３】
0003698413.tif 000004
【図４】
0003698413.tif 000005
【図５】
0003698413.tif 000006
【図６】
0003698413.tif 000007