以下、図面を参照して実施の形態の説明を行う。なお、各図面において、同一構成部分には同一符号を付し、重複した説明を省略する場合がある。また、信号を示す符号を、端子、信号線およびノードを示す符号としても使用する。
まず、クロックドメインが異なる論理回路間でのデータ信号の授受について説明する。図1は、クロックドメインが異なる検証対象回路の一例を示す回路図である。送信側のクロックドメインCD1に含まれるフリップフロップFF1は、クロックCLK1に同期してデータD1の論理値を取り込み、データD2として出力する。受信側のクロックドメインCD2に含まれるフリップフロップFF2は、クロックCLK1とは周波数が異なるクロックCLK2に同期してデータD2の論理値を取り込み、データD3として出力する。クロックCLK1,CLK2は、周波数が異なるため、互いに非同期である。
クロックCLK1は、第1クロックの一例であり、クロックCLK2は、第2クロックの一例である。フリップフロップFF1は、送信回路の一例であり、フリップフロップFF2は、受信回路の一例である。以下では、フリップフロップFF(FF1,FF2等)は、単にFF(FF1,FF2等)とも称する。
ここで、データD2の論理値は、送信側のFF1によってクロックCLK1に同期して変化するが、受信側のFF2は、クロックCLK2に同期してデータD2の論理値を取り込む。このように、送信側と受信側とでクロックCLK1,CLK2が異なる構造の回路を、非同期回路または非同期部と称する。また、クロックが異なるクロックドメイン間でのデータD2等のパスを非同期パスと称する。
非同期回路のデータ転送では、異なるクロックCLK1,CLK2によって生成されたデータのやりとりを行う。このため、正常にデータ転送が行われない場合、非同期回路の受信側のクロックドメインCD2で、誤動作が発生するなど、様々な問題が発生する可能性がある。これら問題の発生を防止するためには、論理回路の設計段階において、非同期回路の動作を検証し、正常にデータ転送が行われることを確認する必要がある。
図2は、図1の非同期回路の動作の一例を示すタイミング図である。図2に示す例では、クロックCLK1,CLK2の周波数が互いに異なるため、データD2の論理値の変化タイミングとクロックCLK2の立ち上がりタイミングとの差は一定にならない。すなわち、クロックCLK2に対するデータD2のタイミング制約であるセットアップタイムおよびホールドタイムは、制約を満足する場合と制約を満足しない場合とがある。
タイミングT1では、データD2の論理値がクロックCLK2のセットアップタイムおよびホールドタイムの範囲外で変化するため、タイミング制約は満たされ、FF2は、データD2の論理値を正常に取り込むことができる。しかし、タイミングT2では、データD2がクロックCLK2のセットアップタイムおよびホールドタイムの範囲内で変化するため、タイミング制約は満たされず、FF2がデータD2の論理値を正常に取り込むかどうかは保証されない。
この例は、タイミング制約違反により、FF2の出力(データD3)はメタステーブル状態になることを示している。メタステーブル状態が発生すると、データD3がハイレベルとロウレベルのどちらに収束するか分からないため、FF2において、データD3の論理値が確定するクロックサイクルにずれが発生する場合がある。
図3は、クロックドメインが異なる検証対象回路の別の例を示す回路図である。送信側のクロックドメインCD1に含まれるFF1,FF2は、クロックCLK1に同期してデータD1,D2の論理値をそれぞれ取り込み、データD3,D4として出力する。データD3,D4は、アンド回路A1で論理演算され、データD5として出力される。データD5の論理は、データD3,D4の論理値が両方ハイレベルのときにハイレベルになり、データD3,D4の論理値のいずれかがロウレベルのときにロウレベルになる。受信側のクロックドメインCD2に含まれるFF3は、クロックCLK2に同期してデータD5の論理値を取り込み、データD6として出力する。
クロックドメインCD1において、FF1,FF2は、共通のクロックCLK1で動作するが、FF1,FF2に供給されるクロックCLK1のスキュー(クロックスキュー)が互いに異なる場合がある。さらに、データ線D3,D4の配線長(すなわち、伝搬遅延時間)が互いに異なる場合がある。また、FF1,FF2において、データD3,D4をハイレベルに変化させる場合の遅延時間と、データD3,D4をロウレベルに変化させる場合の遅延時間とが異なる場合がある。
このような様々な伝搬遅延条件の違いによって、データD3の論理値の変化がアンド回路A1に到達するまでの時間と、データD4の論理値の変化がアンド回路A1に到達するまでの時間にずれが生じる場合がある。この時間のずれによって、アンド回路A1が出力するデータD5にグリッチが発生する可能性がある。
図4は、図3の非同期回路の動作の一例を示すタイミング図である。例えば、データD3,D4の遷移エッジのずれにより、データD5にグリッジG1,G2(ハイレベルのパルス)が発生する。図2と同様に、クロックCLK1,CLK2の周波数は互いに異なるため、グリッジG1,G2のハイレベル期間が、クロックCLK2の立ち上がりエッジタイミングと重なる場合と重ならない場合とがある。すなわち、非同期回路では、送信側のクロックCLK1と受信側のクロックCLK2との位相差によって、FF3がグリッチを取り込む場合と取り込まない場合とがある。
グリッジG1のハイレベル期間は、クロックCLK2の立ち上がりエッジと重なる。このため、FF3は、タイミングT1でのクロックCLK2の立ち上がりエッジに同期してグリッジG1を取り込み、データD6をハイレベルに変化させる。一方、グリッジG2のハイレベル期間は、クロックCLK2の立ち上がりエッジと重ならない。このため、FF3は、グリッジG2を取り込まず、データD6をロウレベルに維持する。このように、送信側のクロックドメインCD1の出力にグリッジを発生させる組合せ回路が存在する場合、受信側のクロックドメインCD2は、発生したグリッチを取り込む場合と取り込まない場合がある。
図5は、図1の非同期回路の論理シミュレーション波形の一例を示すタイミングである。上述したように、非同期回路の送信側のクロックドメインCD1の出力信号の論理値が変化するタイミングと、受信側のクロックドメインCD2のクロックの立ち上がりエッジとの時間差によってメタステーブル状態やグリッチの取り込みの有無が発生する。この場合、受信側のクロックドメインCD2において、受信したデータの論理値を確定できないことがある。データの論理値が確定できないことをエミュレートするために、不定値やランダム値が挿入される。
図5では、クロックCLK2の立ち上がりエッジに近接するタイミングT1で、データD2の論理値が変化している。このため、データD2の論理値をFF2で取り込んだ1クロックサイクルの間、データD3を不定値(X)またはランダム値に置き換えることで、メタステーブル状態やグリッチの取り込みの有無がシミューション可能になる。しかし、この手法には、以下のような問題がある。まず、ロウレベルまたはハイレベルをランダム値に置き換える手法とその課題について説明する。
図6は、受信側のクロックドメインCD2に2段構成のFF回路を設ける例を示す回路図である。送信側のクロックドメインCD1のFF1は、送信クロックに同期して信号S1の論理値を取り込み、信号S2として出力する。2段構成のFF回路に含まれるFF2,FF3は、送信クロックに同期して受信した信号S2の論理値を、送信クロックと周波数が異なる受信クロックに同期して順次取り込み、受信クロックに同期させた信号S3,S4を生成する。これにより、クロックドメインCD1、CD2間で非同期信号S2の受け渡しが行われる。以下では,2段構成のFF回路をFF2段受け構造と称する。
FF2段受け構造は、位相や周波数がそれぞれ異なるクロックドメインCD1,CD2間でのクロックの非同期状態を吸収する非同期吸収回路の一例である。非同期吸収構造により、クロックドメインCD1の送信クロックからクロックドメインCD2の受信クロックにクロックが乗り換えられる。
図7は、図6の非同期回路において、受信側のクロックドメインCD2の信号の論理値をランダム値に置き換える動作の一例を示すタイミング図である。期間P1では、信号S2の論理値の変化タイミングと受信クロックの立ち上がりエッジタイミングとが離れている(受信クロックのセットアップタイムおよびホールドタイムの範囲外)。この場合、シミュレーション装置は、メタステーブル状態が発生しないと判断して信号S3を作成する。
期間P2では、信号S2の論理値の変化タイミングと受信クロックの立ち上がりエッジタイミングとが近い(受信クロックのセットアップタイムおよびホールドタイムの範囲内)。この場合、シミュレーション装置は、メタステーブル状態が発生すると判断し、信号S2の論理値をそのまま取り込むか(S3)、信号S2の取り込んだ論理値を反転させるか(S3')をランダムで決定し、メタステーブル状態を疑似的に再現する。
しかしながら、図8および図9で説明するように、論理シミュレーションにランダム値を用いることは、検証精度の問題がある。また、図10から図13で説明するように、論理シミュレーションに不定値を用いることは、疑似エラー(誤動作)の原因になる。一方で、図14から図17で説明するように、論理シミュレーションに不定値を用いることで、回路のバグが発見しやすくなり、検証精度を向上できる場合がある。
図8は、FF2段受け構造から出力される信号S4を演算結果の出力条件として使用する例を示す回路図である。受信側のクロックドメインCD2は、図6に示したFF2段受け構造に加えて、受信クロックに同期して信号の論理値を取り込んで演算結果として出力するFF4と、信号S4の論理値に応じて、演算結果または0を出力するマルチプレクサMUXとを有する。
マルチプレクサMUXは、選択端子で論理値0の信号S4を受けた場合、入力端子0で受ける論理値0を出力し、選択端子で論理値1の信号S4を受けた場合、入力端子1で受ける演算結果を出力する。
図9は、図8の受信側のクロックドメインCD2において、ランダム値である信号S4を使用してマルチプレクサMUXを動作させる一例を示すタイミング図である。図7で説明したように、信号S3のメタステーブル状態を疑似的に再現するために、信号S3の論理値は、ロウレベルまたはハイレベルにランダムで決められる。この場合、信号S4がハイレベルに変化するタイミングは、1クロックサイクルずれる可能性がある。
信号S3のランダム値が論理値1の場合、信号S4は、タイミングT1でハイレベルに変化する。このとき、マルチプレクサMUXは、タイミングT1のクロックサイクルで演算結果3を選択して出力する。一方、信号S3のランダム値が論理値0の場合、信号S4は、タイミングT1より1クロックサイクル遅れたタイミングT2でハイレベルに変化する。このとき、マルチプレクサMUXは、タイミングT1のクロックサイクルで論理値0を選択して出力する。
この結果、信号S3のランダム値が論理値1の場合、演算結果3,4,5‥が順次出力され、信号S3のランダム値が論理値0の場合、演算結果4,5,6‥が順次出力される。例えば、論理回路の設計において、演算結果3,4,5‥が順次出力されることを意図していた場合、信号S3のランダム値が論理値0の場合は論理回路の不具合を発見できるが、信号S3のランダム値が論理値1の場合は論理回路の不具合を発見できない。このように、ランダム値を利用する場合、論理回路の不具合を発見できるかどうかは、ランダム値次第となってしまい、検証精度が低下するという問題がある。
図10は、送信側のクロックドメインCD1の出力に不定値変換回路を設ける例を示す回路図である。不定値変換回路は、FF4、比較器CMPおよびマルチプレクサMUXを有する。FF4は、送信クロックに同期して信号S2の論理値を取り込み、信号S2'として出力する。比較器CMPは、信号S2、S2'の論理値が一致する場合、論理値1を出力し、信号S2、S2'の論理値が一致しない場合、論理値0を出力する。
マルチプレクサMUXは、比較器CMPの出力が論理値1の場合、信号S2を選択して信号S3として出力し、比較器CMPの出力が論理値0の場合、論理値が0か1か不定である不定値Xを選択して信号S3として出力する。これにより、信号S2の論理値が変化したクロックサイクル(送信クロック)では、信号S2の論理値が不定値Xとして置き換えられ、信号S3としてクロックドメインCD2のFF2に出力される。不定値Xは、論理シミュレーション上で論理値0,1のいずれでもないことを示す(実際の論理回路では、論理値0、1のいずれかになる)。
図11は、送信側のクロックドメインCD1に不定値変換回路が設けられた図10の非同期回路の動作の例を示すタイミング図である。不定値変換回路は、信号S3に斜線で示すように、信号S2の論理値が変化したクロックサイクルで不定値Xを出力する。
FF2は、受信クロックに同期して不定値Xの信号S3を受信した場合、斜線で示すように不定値Xの信号S4を出力する。FF3は、受信クロックに同期して不定値Xの信号S4を受信した場合、斜線で示すように不定値Xの信号S5を出力する。このように、不定値Xは、受信側のクロックドメインCD2内を伝搬してしまう。つまり、非同期吸収構造がFF2段受け構造である場合、置き換えられた不定値XがFF2,FF3を通過して、クロックドメインCD2内に伝搬してしまう。伝搬した不定値Xによって、受信側のクロックドメインCD2内で疑似エラーが起きる可能性がある。
図12は、FF2段受け構造から出力される信号S4の立ち上がりエッジの検出する例を示す回路図である。受信側のクロックドメインCD2は、図6に示したFF2段受け構造の出力に、エッジ検出回路EDETとFF5とを有する。
エッジ検出回路EDETは、受信クロックに同期して信号S4の論理値を取り込むFF4と、信号S4の論理値とFF4の出力の論理値の反転論理との論理積を信号S5として出力するアンド回路A2とを有する。アンド回路A2の下側の入力に付した丸印は、FF4から出力される信号の論理が反転されてアンド回路A2に入力されることを示す。
エッジ検出回路EDETは、信号S4がハイレベルに変化したクロックサイクルでハイレベルの信号S5を出力する。FF5は、受信クロックに同期して信号S5の論理値を取り込み、信号S6として出力する。
図13は、図12の受信側のクロックドメインCD2において、エッジ検出回路EDETの動作の一例を示すタイミング図である。図13では、送信クロックに同期して生成された信号S2の立ち上がりエッジが、受信クロックの立ち上がりエッジとのタイミング差が所定以下となったとき、エッジが重なったと判定し、信号S3を不定値Xとする。
信号S3の不定値Xは、受信クロックに同期してFF3に取り込まれ、信号S4の不定値Xとして伝搬する。エッジ検出回路EDETは、信号S4の立ち上がりエッジを検出すると信号S5をハイレベルに設定する。しかし、信号S4の論理値は、ロウレベル、不定値X、ハイレベルと遷移するため、アンド回路A2は、信号S4の立ち上がりエッジと認識できず、信号S5は、ロウレベルのままとなってしまう。つまり、送信側のクロックドメインCD1で信号S1,S2が立ち上がっているにも関わらず、受信側のクロックドメインCD2は、信号S4の立ち上がりエッジを認識できないため、意図しない回路動作(誤動作)が発生してしまう。
図11および図13に示したように、不定値XをクロックドメインCD2内に伝搬させると、論理シミュレーションで意図しない動作の原因となる。一方、図9に示したように、ランダム値を発生させる場合、論理値が伝搬されるクロックサイクルのずれが発生するが、信号の遷移エッジは、必ず検出される。
上述したように、非同期構造によって発生し得るメタステーブル状態やグリッチの取り込みなどの現象を、ランダム値に置き換える手法では、論理回路の誤動作は発生しないが、検証精度は低下する。不定値Xに置き換える手法では、検証精度は向上するが論理回路の誤動作が発生する可能性がある。そこで、送信側のクロックドメインCD1において論理値を不定値Xに変換した場合、受信側のクロックドメインCD2で不定値Xのまま通過させるか、不定値Xを元の論理値かランダム値に変換するかを判定することを検討する。これにより、検証精度を低下させることなく論理回路の誤動作を防止して検証を行う手法を提案する。
図14は、非同期データ転送回路を受信側のクロックドメインCD2内に設ける例を示す回路図である。クロックドメインCD1は、図10のクロックドメインCD1と同様に、不定値変換回路を有し、信号S2または不定値Xを信号S3としてクロックドメインCD2に出力する。
クロックドメインCD2内に設けられる非同期データ転送回路は、2段構成のFF2,FF3によるFF2段受け構造、マルチプレクサMUX2およびFF5を有する。FF2段受け構造は、信号S3が安定している区間にハイレベルに設定される転送基準信号を受信クロックに同期して順次取り込み、受信クロックに同期してマルチプレクサMUX2の選択信号を生成する。すなわち、図14に示す非同期データ転送回路は、転送基準信号によるデータ転送型構造の一例を示す。そして、マルチプレクサMUX2は、安定している区間の信号S3を選択し、信号S4としてFF5に出力する。FF5は、受信クロックに同期して信号S4の論理値を取り込み、信号S5として出力する。これにより、クロックドメインCD1,CD2間のデータ転送を安全に行うことができる。
図15は、図14の非同期データ転送回路により送信側のクロックドメインCD1からの信号S3を受信する動作の一例を示すタイミング図である。クロックドメインCD1の不定値変換回路は、信号S2の論理値が変化したクロックサイクルで不定値Xを出力する。クロックドメインCD1は、信号S3が安定している区間に、図示しない転送基準信号を所定の期間ハイレベルに設定する。例えば、転送基準信号のハイレベル期間は、信号S9のハイレベル期間を包含する。これにより、FF2段受け構造は、信号S3が安定している区間に信号S9を生成してマルチプレクサMUX2を制御できる。
したがって、信号S9のハイレベル期間であって、信号S3が不定値Xである区間を含まない取り込み領域において、信号S3を信号S5として取り込むことができる。しかし、図16に示すように、転送基準信号のハイレベル期間が、信号S3の論理値の変化点付近に間違って設定された場合、クロックドメインCD2において不定値Xが取り込まれる場合がある。
図16は、図14の非同期回路において、転送基準信号のハイレベル期間を信号S3の論理値の変化点付近に設定した場合の動作の一例を示すタイミング図である。図16においても、転送基準信号のハイレベル期間は、信号S9のハイレベル期間を包含する。マルチプレクサMUX2が、信号S3が不定値Xである区間に信号S3を選択した場合、図14に示したFF5により不定値Xが取り込まれる可能性がある。
例えば、論理検証で発見したいバグが回路に含まれている場合、不定値Xを後段に伝搬させたほうが精度の高い検証ができる。このため、非同期転送回路を用いた転送基準信号によるデータ転送型構造の場合、データ信号に関しては不定値Xを除去しないほうがよい場合がある。
図17は、非同期データ転送回路を受信側のクロックドメインCD2内に設ける別の例を示す回路図である。クロックドメインCD1は、図6のクロックドメインCD1と同様に、送信クロックに同期して信号S1の論理値を取り込み、信号S2としてクロックドメインCD2に出力する。
クロックドメインCD2内に設けられる非同期データ転送回路は、2段構成のFF2,FF3によるFF2段受け構造、エッジ検出回路EDET、マルチプレクサMUX2およびFF5を有する。このため、マルチプレクサMUX2は、転送基準信号S5の立ち上がりエッジに基づいて生成される信号S6のハイレベル期間に、信号S2を選択して信号S3としてFF5に出力する。FF5は、受信クロックに同期して信号S4の論理値を取り込み、信号S5として出力する。
次に、上述した非同期回路等において、非同期回路の構造に応じて、不定値の挿入または不定値の挿入の解除を判定することで、論理回路の検証精度を向上する手法について説明する。
(第1の実施形態)
図18は、第1の実施形態における検証支援装置10の一例を示すブロック図である。検証支援装置10は、非同期回路の構造解析結果を記憶する記憶手段11、不定値除去判定手段12、不定値除去判定結果を記憶する記憶手段13および判定補助情報を記憶する記憶手段14を有する。
例えば、非同期回路の構造解析結果は、非同期回路の構造、非同期パスのファンアウト数、送信側および受信側のインスタンス名、送信側および受信側のセル名、送信側および受信側の信号名などのうちの1つ以上の情報を含む非同期回路の構造が分かる情報である。
ここで、送信側とは、非同期回路に含まれる送信側のクロックドメインにおいて検証対象の論理ブロックであり、受信側とは、非同期回路に含まれる受信側のクロックドメインにおいて検証対象の論理ブロックである。記憶手段11に保持される非同期回路の構造解析結果は、非同期回路の構造を示す構造情報の一例であり、記憶手段11は、非同期回路構造保持手段の一例である。
不定値除去判定手段12は、記憶手段11に記憶された非同期回路の構造解析結果である構造情報に基づいて、論理シミュレーションで発生した不定値Xを除去するかどうかを判定する。すなわち、不定値除去判定手段12は、非同期回路の構造情報に基づいて、受信回路においてクロックの非同期状態を解消するために設けられるFF2段受け構造等の非同期吸収回路に伝搬される不定値を除去するか否かを判定する。
不定値除去判定手段12は、非同期吸収回路に伝搬される不定値を除去するか否かの判定結果を不定値除去判定結果として記憶手段13に格納する。記憶手段13は、不定値除去判定結果を保持する判定結果保持手段の一例である。不定値除去判定手段12の機能は、検証支援装置10に搭載されるCPU(Central Processing Unit)等のプロセッサが、検証支援プログラムにより検証支援方法を実行することで実現される。
なお、不定値除去判定手段12は、記憶手段14に記憶された判定補助情報を利用して不定値Xを除去するかどうかを判定してもよいが、判定補助情報の利用は必須ではない。判定補助情報を保持する記憶手段14は、判定補助情報保持手段の一例である。
判定補助情報は、不定値除去判定手段12での判定を外部から指示するための情報である。例えば、判定補助情報は、受信側のクロックドメインに含まれるFF2段受け構造に対して、不定値Xを除去する指示、または、不定値Xを除去しない指示を示す。判定補助情報を利用する場合、不定値除去判定手段12は、判定補助情報が不定値Xの除去を指示している場合、不定値Xを除去すると判定し、判定補助情報が不定値Xを除去しないことを指示している場合、不定値Xを除去しないと判定する。
また、判定補助情報は、非同期構造が特定のインスタンスに含まれる場合や、受信側または送信側に特定のセルが用いられている場合などに、不定値Xを除去する指示または不定値を除去しない指示を示してもよい。不定値除去判定結果は、不定値除去判定手段12により判定された不定値Xを除去するか、除去しないかの判定結果である。
以下に、不定値除去判定手段12による不定値Xを除去するか否かの判定の方法の例を示す。
(判定方法1:非同期回路の構造が特定の構造の場合は不定値Xを除去する。それ以外は、不定値Xを除去しない。)
一般的な非同期構造は、FF2段受け構造、転送基準信号によるデータ転送型、またはそれ以外の非同期構造に分けることができる。FF2段受け構造では、挿入した不定値Xが無条件で受信側の後段回路に伝搬するため、非同期構造がFF2段受け構造の場合、挿入した不定値Xを除去したほうがよい。この場合、既存の検証手法と同様の検証精度となる。
転送基準信号によるデータ転送型の場合で、転送基準信号用のFF2段受け構造を含む非同期データ転送回路で伝搬される不定値Xは、回路の誤動作を発生させるため、除去する必要がある。しかし、転送基準信号が不定値Xの区間を避けて正しいタイミングで立ち上がる場合は、データ信号の不定値Xは後段に伝搬しない。このため、不定値Xを除去しない方が検証精度を向上させることができる。意図しないタイミングで転送基準信号が立ち上がり、不定値Xが後段回路に伝搬する場合、論理回路の誤動作や期待値の不一致が発生し、論理回路のバグを検出することができる。このため、不定値Xを除去しないことが好ましい。
また、FF2段受け構造および転送基準信号によるデータ転送型以外の構造には、様々な構造があるが、基本的には制御としてデータの変化点を用いない場合に使われる。例として、外部からパラメータを設定するクロックと、そのパラメータを使う論理回路のクロックとが異なる場合がある。
この場合、制御としてパラメータの設定タイミングと、パラメータを使って論理回路が動作するタイミングとが異なるために、非同期構造では非同期対策構造を必要としない。この場合、不定値Xを伝搬させても、正しいタイミングでパラメータが設定され、論理回路が動作すれば、その不定値Xが使われることがないために、不定値Xを除去しない方が好ましい。したがって、意図しないタイミングでパラメータが設定されたり、パラメータを使う論理回路が動作したりすると、不定値Xが後段の論理回路に伝搬し、論理回路の誤動作や期待値の不一致が発生することで、論理回路のバグを検出することができる。
このように、論理回路の構造によって不定値Xを除去する/除去しないを判定することで、既存の検証手法よりも高い検証精度で論理回路の検証を行うことができる。
(判定方法2:非同期回路の構造が判定補助情報にある構造であった場合その判定指示に従う。)
(判定方法3:非同期パスが、特定のモジュール内にある場合は不定値Xを除去する。それ以外は、不定値Xを除去しない。)
(判定方法4:非同期パスが、判定補助情報にあるモジュール内にある場合、その判定指示に従う。)
(判定方法5:非同期パスの送信側(受信側)が、特定のセルと一致したら除去する。それ以外は除去しない。)
(判定方法6:非同期パスの送信側(受信側)が、判定補助情報にあるセルと一致した場合、その判定指示に従う。)
(判定方法7:非同期パスの送信側(受信側)が、特定のあるインスタンスと一致したら除去する。それ以外は除去しない。)
(判定方法8:非同期パスの送信側(受信側)が、判定補助情報にあるインスタンスと一致した場合、その判定指示に従う。)
(判定方法9:非同期パスのファンアウト数が一定以上では不定値Xは除去しない。)
以下に判定方法2から判定方法9について説明する。
判定方法2,4,6,8は、判定補助情報に従って不定値Xを除去する/除去しないを判定する方法である。これは、論理回路の使用実績や論理回路の提供先が非同期回路の正当性を保証する場合などにより、予め、外部から不定値Xを除去するか除去しないかの判定が確立されている場合である。判定補助情報に基づいて不定値Xを除去する/除去しないを判定する場合、検証精度や回路が誤動作するかどうかは、外部で保証することになる。
判定方法3は、判定補助情報に従って不定値Xを除去する/除去しないを判定する方法と同様に、すでに実績のあるモジュールを再利用する場合など、検証精度を向上させる必要がないことがあらかじめ分かっている場合に使用される。
判定方法5は、非同期回路の構造が、特定のセルの一例であるメモリを使ったFIFO(First In, First Out),FILO(First In, Last Out)構造である場合などに対応する。この構造は基本的にメモリへの書き込み側のクロックとメモリからの読み出し側のクロックとを切り替えることで、非同期信号の受け渡しを成立させる構造であり、書き込み時も読み出し時も同期関係となる。つまり、非同期パスが存在しないため本手法の対象外となる。ただし、非同期構造解析の結果情報としてレポートされる場合があるため、判定結果を出力する必要がある。
判定方法7も、すでに実績のあるモジュールを再利用する場合など、検証精度を向上させる必要がないことがあらかじめ分かっている場合に用いることもができる。また、非同期回路の構造が、FFを使ったFIFO,FILO構造である場合などに対応する。非同期回路の構造が、FFを使ったFIFO,FILO構造である場合にもクロックを切り替えることによる非同期信号のやりとりを行うため本手法の対象外となる。ただし、非同期構造解析の結果情報としてレポートされる場合があるため、判定結果を出力する必要がある。
判定方法9に関して、一般的に安全に非同期信号の送受信を行うためには、非同期パスは1対1であるべきとされている。非同期パスに分岐がある場合、それぞれのパスによって、受信側のクロックで受け取るクロックサイクルが変わってしまう可能性があるからである。そのため、ファンアウトが2以上である場合には検証を十分に実施する必要がある。
ただし、論理回路設計の時点で十分に考慮された非同期構造である場合には、検証精度が十分に保障される場合もある。このため、論理回路の設計者が想定する以上のファンアウト数で不定値Xを除去せずに検証精度を向上させるため、不定値Xを除去しないという判定を行える機能が必要となる。
以上、第1の実施形態では、不定値除去判定手段12により、非同期回路の構造情報に基づいて、受信回路の非同期吸収回路に伝搬される不定値Xを除去するか否かを判定する。これにより、非同期回路の構造に応じて、不定値Xを挿入する検証用回路と不定値Xの挿入を解除する検証用回路とを作成することが可能になり、既存の検証手法よりも高い検証精度での論理回路の検証が可能になる。
例えば、非同期パスにおけるメタステーブル状態やグリッジを不定値に置き換える仕組みと、非同期信号同期化回路の構造によって不定値をもとの値に戻す仕組みにより、特定の同期化回路では不定値をもとの値に置き換える。それ以外の同期化回路では不定値をそのまま伝搬させることができる。これにより、受信側クロックの同期回路内へ不定値Xが伝搬することによる疑似エラーの発生を回避することができ、精度の高い非同期パスの検証を行うことができる。また、非同期対策を行っていない回路には不定値を伝搬させることで、ランダム値を用いるより、より精度の高い検証を行うことができる。
実績のある論理回路を再利用するなどで、不定値Xの挿入/除去のいずれで検証精度を高くできるかが分かっている場合、実績のある判定補助情報を記憶手段14に格納しておく。そして、不定値除去判定手段12が、判定補助情報に基づいて不定値Xの挿入/除去を判定することで、過去の検証結果を利用することができる。
(第2の実施形態)
図19は、第2の実施形態における検証支援装置10Aの一例を示すブロック図である。図18と同様の構成については、同じ符号を付し、詳細な説明を省略する。検証支援装置10Aは、図18に示した検証支援装置10に、記憶手段21、23、26、28、非同期箇所抽出手段22、非同期構造解析手段24、不定値挿入/除去回路モデル生成手段25および非同期検証用回路情報作成手段27を追加している。
不定値除去判定手段12、非同期箇所抽出手段22、非同期構造解析手段24、不定値挿入/除去回路モデル生成手段25および非同期検証用回路情報作成手段27の機能は、検証支援装置10Aに搭載されるCPU等のプロセッサにより実現される。すなわち、これらの手段は、プロセッサが検証支援プログラムにより検証支援方法を実行することで実現される。以下では、各記憶手段11、13、14、21、23、26、28が保持する情報を記憶手段の符号で示す場合がある。
記憶手段21は、検証対象回路の回路情報を保持し、検証対象回路情報保持手段の一例である。記憶手段21に記憶される検証対象回路の回路情報は、例えば、Verilog-HDL(Hardware Description Language)やVHDL(VHSIC-HDL;Very High Speed Integrated Circuit Hardware Description Language)によって記述された回路情報である。
非同期箇所抽出手段22は、記憶手段21が保持する回路情報に基づいて、検証対象回路内にある非同期箇所を抽出する。例えば、非同期箇所抽出手段22は、検証対象回路内にあるFFのファンインコーンまたはファンアウトコーンを抽出し、コーンに接続されているFFのクロックが異なる箇所を抽出することで、非同期箇所を検出する。非同期箇所抽出手段22は、抽出した非同期箇所を非同期箇所情報として記憶手段23に格納する。記憶手段23は、非同期箇所情報保持手段の一例である。
非同期構造解析手段24は、記憶手段23に記憶された非同期箇所情報を元に、非同期箇所の構造を解析する。例えば、非同期構造解析手段24は、送信クロックで動作するFFと受信クロックで動作するFFとが1対1で接続され、さらに受信側のFFの後段に受信クロックで動作するFFが1対1で接続されている場合、FF2段受け構造(図6、図10など)と判断する。
さらに、非同期構造解析手段24は、FF2段受け構造の後段にエッジ検出回路が接続され、エッジ検出回路の出力がマルチプレクサMUXのセレクト信号に接続されている場合、転送基準信号によるデータ転送型構造(図17)の可能性があると判断する。非同期構造解析手段24は、マルチプレクサMUXのデータ入力が送信クロックで動作するFFに直接接続され、マルチプレクサMUXの出力が受信クロックで動作するFFに接続されている場合、転送基準信号によるデータ転送型構造の可能性があると判断する。転送基準信号によるデータ転送型構造の例は、図14および図17に示す。非同期構造解析手段24は、解析結果を記憶手段11に格納する。
不定値挿入/除去回路モデル生成手段25は、非同期構造解析結果11と不定値除去判定結果13を元に、不定値挿入回路モデルまたは不定値除去回路モデルを作成する。不定値挿入/除去回路モデル生成手段25は、作成した回路モデルを記憶手段26に格納する。不定値挿入/除去回路モデル生成手段25は、非同期検証回路モデル生成手段の一例である。記憶手段26は、不定値挿入/除去回路モデル生成手段25が生成した回路モデルを保持する回路モデル保持手段の一例である。
非同期検証用回路情報作成手段27は、非同期箇所情報23および不定値除去判定結果13に基づいて、不定値挿入/除去回路モデル26を検証対象回路情報21に対応付けて埋め込み、非同期検証用回路情報を作成する。非同期検証用回路情報作成手段27は、作成した非同期検証用回路情報を記憶手段28に格納する。記憶手段28は、非同期検証用回路情報を保持する非同期検証用回路情報保持手段の一例である。
図20は、図19の不定値挿入/除去回路モデル生成手段25が生成する不定値Xを挿入する回路モデルM1の一例を示す回路図である。図20に示す回路モデルM1は、図10に示した不定値変換回路と同様に、フリップフロップC1、比較器C2およびセレクタC3を有する。フリップフロップC1は、クロックCLKに同期して取り込んだ信号S1を信号S2として比較器C2に出力する。
比較器C2は、入力信号S1の論理値と信号S2の論理値とを比較し、論理値が同じ場合、論理値1をセレクタC3の選択入力に出力し、論理値が異なる場合、論理値0をセレクタC3の選択入力に出力する。セレクタC3は、比較器C2から論理値1を受信した場合、入力信号S1の論理値を信号S4として出力し、比較器C2から論理値0を受信した場合、不定値Xを信号S4として出力する。
すなわち、回路モデルM1は、入力信号S1の論理値が現在のクロックサイクルと1つ前のクロックサイクルとで同じ場合、入力信号S1を外部に出力する。一方、回路モデルM1は、入力信号S1の論理値が現在のクロックサイクルと1つ前のクロックサイクルとで異なる場合、不定値Xを外部に出力する。その結果、回路モデルM1は、入力信号S1の論理値が変化した1クロックサイクルの間、不定値Xを出力するモデルになる。なお、回路モデルM1の論理は、図20に限定されるものではなく、他の論理でも同じ出力結果を得られるモデルは作成可能である。
図21は、図19の不定値挿入/除去回路モデル生成手段25が生成する不定値Xを除去する回路モデルM2の一例を示す回路図である。図21に示す回路モデルM2は、フリップフロップC1、比較器C2、セレクタC3およびフリップフロップC4を有する。フリップフロップC1は、クロックCLKに同期して取り込んだ信号S1の論理値を信号S2として比較器C2およびセレクタCに出力する。
比較器C2は、入力信号S1の論理値と信号S2の論理値と信号S4の論理値とに基づいて生成した論理値をセレクタC3の選択入力に出力する。比較器C2は、式(1)に示す論理演算に基づいて、セレクタC3の選択入力に出力する論理値を生成する。
(S1!=S4)&&(S2===X)&&(S1!==X)&&(S4!==X)‥(1)
式(1)により、現在のクロックサイクルと2クロックサイクル前との論理値が異なること、1クロックサイクル前が不定値Xであること、現在のクロックサイクルと2クロックサイクル前とが不定値Xではないことが判定される。そして、比較器C2は、判定結果を示す論理値を出力する。
セレクタC3は、比較器C2から論理値1を受信した場合、信号S2の論理値を信号S3として出力し、比較器C2から論理値0を受信した場合、信号S1の論理値を信号S3として出力する。フリップフロップC4は、クロックCLKに同期して取り込んだ信号S3の論理値を信号S4として出力する。このように、回路モデルM1は、式(1)の演算結果に応じて、セレクタC3の出力を切り替えることで不定値Xを除去するモデルである。
回路モデルM2は、図20に示した回路モデルM1が挿入した不定値Xを除去することが可能である。回路モデルM1では、信号の論理値が変化した1クロックサイクルの間、不定値Xを入れたが、回路モデルM2では、式(1)に示す条件を全て満足する場合、1クロックサイクル前の不定値Xを現在のクロックサイクルの論理値に置き換えるという処理を行う。これにより、1クロックサイクル前にある1クロックサイクル期間の不定値Xを除去している。
なお、回路モデルM2の論理は、図21に限定されるものではなく、他の論理でも同じ出力結果を得られるモデルは作成可能である。また、送信クロックと受信クロックとの周波数によっては、送信側の1クロックサイクルの不定値Xが、受信側では複数のクロックサイクルの不定値Xとなる場合があるため、不定値除去モデルの判定回路は変わることがある。
図22は、図19の非同期検証用回路情報作成手段27の動作の概要を示す説明図である。非同期検証用回路情報作成手段27は、非同期箇所情報23に基づいて、不定値挿入/除去回路モデル26を検証対象回路情報21に埋め込んで、非同期検証用回路情報28を生成する。例えば、非同期検証用回路情報作成手段27は、非同期箇所情報23の非同期パスの送信側に不定値挿入モデルを埋め込んで、送信側の非同期検証用回路情報を作成する。また、非同期検証用回路情報作成手段27は、不定値除去判定結果で不定値Xを除去すると判定された非同期パスの受信側の回路を不定値除去モデルに置き換えることで、受信側の非同期検証用回路情報を作成する。
図23は、図19の非同期検証用回路情報作成手段27が作成する非同期検証用回路情報の一例を示す説明図である。図23の矢印の上側に示す回路は、図6等に示した2段受けFF型の非同期構造である。図23の矢印の下側に示す回路は、非同期パスの送信側を不定値挿入モデルに置き換え、非同期パスの受信側を不定値除去モデルに置き換えたものである。不定値挿入モデルが挿入した不定値Xは、不定値除去モデルで除去されるため、矢印の上側の回路の出力と、矢印の下側の回路の出力とは等価である。
以上、第2の実施形態においても、第1の実施形態と同様の効果を得ることができる。例えば、非同期回路の構造に応じて、不定値Xを挿入する検証用回路と不定値Xの挿入を解除する検証用回路とを作成することが可能になり、既存の検証手法よりも高い検証精度での論理回路の検証が可能になる。
さらに、第2の実施形態では、非同期箇所抽出手段22は、記憶手段21が保持する回路情報に基づいて、検証対象回路内にある非同期箇所を抽出し、抽出した非同期箇所を非同期箇所情報として記憶手段23に格納する。これにより、非同期構造解析手段24は、記憶手段23に記憶された非同期箇所情報に基づいて非同期箇所の構造を解析することができる。
非同期構造解析手段24は、記憶手段23に記憶された非同期箇所情報を元に非同期箇所の構造を解析し、構造解析結果である構造情報を記憶手段11に格納する。これにより、不定値除去判定手段12は、記憶手段11に記憶された非同期回路の構造解析結果である構造情報に基づいて、論理シミュレーションで発生した不定値Xを除去するかどうかを判定することができる。
不定値挿入/除去回路モデル生成手段25は、非同期構造解析結果11と不定値除去判定結果13を元に、非同期検証用回路に埋め込む不定値挿入回路モデルまたは不定値除去回路モデルを作成することができる。非同期検証用回路情報作成手段27は、非同期箇所情報23および不定値除去判定結果13に基づいて、不定値挿入回路モデルまたは不定値除去回路モデルを検証対象回路情報21に対応付けて埋め込むことができる。この結果、非同期回路の構造に応じて、不定値Xを挿入する検証用回路と不定値Xの挿入を解除する検証用回路とを作成することができ、既存の検証手法よりも高い検証精度での論理回路の検証が可能になる。
図24は、図18および図19の検証支援装置10、10Aのハードウェア構成の一例を示すブロック図である。例えば、検証支援装置10、10Aは、サーバ等のコンピュータにより実現される。検証支援装置10、10Aは、実行する検証支援プログラムが異なることを除き、ハードウェア構成は同様であるため、以下では、検証支援装置10について説明する。
検証支援装置10は、CPU101とROM(Read Only Memory)102とRAM(Random Access Memory)103と外部記憶装置104とを有する。また、検証支援装置10は、入力インタフェース部105と出力インタフェース部106と入出力インタフェース部107と通信インタフェース部108とを有する。例えば、CPU101とROM102とRAM103と外部記憶装置104と入力インタフェース部105と出力インタフェース部106と入出力インタフェース部107と通信インタフェース部108とは、バスBUSを介して相互に接続される。
CPU101は、OSおよびアプリケーション等の各種プログラムを実行し、検証支援装置10の全体の動作を制御する。ROM102は、各種プログラムをCPU101により実行可能にするための基本プログラムや各種パラメータ等を保持する。RAM103は、CPU101により実行される各種プログラムや、プログラムで使用するデータを記憶する。
外部記憶装置104は、HDD(Hard Disk Drive)またはSSD(Solid State Drive)等であり、RAM103に展開する各種プログラムを記憶する。なお、各種プログラムには、検証支援プログラムが含まれる。例えば、図18および図19に示した記憶手段11、13、14、21、23、26、28は、RAM103または外部記憶装置104に割り当てられる。
入力インタフェース部105には、検証支援装置10を操作する操作者等からの入力を受け付けるキーボード、マウスやタブレット等の入力装置110が接続される。出力インタフェース部106には、CPU101が実行する各種プログラムにより生成される表示画面等を表示する表示装置やプリンタ等の出力装置120が接続される。
入出力インタフェース部107には、USB(Universal Serial Bus)メモリ等の記録媒体130が接続される。例えば、記録媒体130には、検証支援プログラム等の各種プログラムが格納されてもよい。この場合、プログラムは、入出力インタフェース部107を介して記録媒体130からRAM103に転送される。なお、記録媒体130は、CD-ROMやDVD(Digital Versatile Disc:登録商標)等でもよく、この場合、入出力インタフェース部107は、接続する記録媒体130に対応するインタフェースを有する。通信インタフェース部108は、検証支援装置10を、例えばネットワークに接続する。なお、記録媒体130は、入出力インタフェースを介してバスに接続されてもよい。
以上、各実施形態に基づき本発明の説明を行ってきたが、上記実施形態に示した要件に本発明が限定されるものではない。これらの点に関しては、本発明の主旨をそこなわない範囲で変更することができ、その応用形態に応じて適切に定めることができる。