JP3759051B2 - Asynchronous circuit verification method and program thereof - Google Patents
Asynchronous circuit verification method and program thereof Download PDFInfo
- Publication number
- JP3759051B2 JP3759051B2 JP2002033686A JP2002033686A JP3759051B2 JP 3759051 B2 JP3759051 B2 JP 3759051B2 JP 2002033686 A JP2002033686 A JP 2002033686A JP 2002033686 A JP2002033686 A JP 2002033686A JP 3759051 B2 JP3759051 B2 JP 3759051B2
- Authority
- JP
- Japan
- Prior art keywords
- input data
- value
- time
- metastable state
- circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は非同期回路の検証方法およびそのプログラムに係わり、特に非同期回路の検証を言語レベルの機能シミュレーションで行う際に、クロック信号の周期が異なる複数の順序回路の出力データが組み合わせ回路などを介して相互に順序回路の入力データとなる回路構成の動作を検証する方法を改善した非同期回路の検証方法およびそのプログラムに関する。
【0002】
【従来の技術】
近年、半導体素子の微細化技術の進展に伴い、その半導体素子で構成する半導体装置(LSI)も大規模化しており、その半導体装置における論理回路設計時に、論理動作およびタイミング検証ツールとして言語レベルの機能シミュレーションが適用されている。
【0003】
本発明に関する非同期回路の検証方法は、クロック信号の周期が異なる複数の順序回路の出力データが組み合わせ回路などを介して相互に順序回路の入力データとなる回路構成の動作を検証するために用いられるものである。このような非同期回路の検証方法は、一般的にゲートレベルのネットリストを用いて、タイミングを考慮した論理シミュレーション、例えばイベントドリブン方式と呼ばれるシミュレーションによりセットアップやホールドタイミングを検証することで行われている。
【0004】
イベントドリブン方式は、クロック信号やデータ信号等の論理レベルに変化を回路の論理状態に影響を与えるイベントとして記憶手段に登録しておき、このイベントを順次に読み出しながらデータの内容を更新する。
【0005】
このデータを入力とする検証対象回路について演算処理を行いその出力信号に変化があれば遅延量を勘案しながら順次イベントとして登録し、シミュレーションを実行するというものである。
【0006】
一方、回路設計はHDLなどの言語で機能設計から行われるため、言語レベルの機能シミュレーションにおいて非同期検証を行うことが要求されている。
【0007】
この要求に応えるための従来の非同期回路の検証方法の一例のフローチャートを示した図9を参照すると、処理S61でクロック信号のアクティブエッジを検出後、処理S62で入力データ変化を検出し、さらに処理S63でメタステーブル状態の検出を行い、それらの条件にしたがって検出されたら処理S64でメタステーブルフラグをfalseに設定し、処理S65で入力データの保持、処理S66でメタステーブル状態を発生し、処理67でメタステーブル状態を出力する。
【0008】
処理63でメタステーブル状態が検出されなければ処理S68でメタステーブル状態のフラグをtrueに設定し、処理S62で入力データの変化が検出されなければ処理S69でメタステーブル状態フラグをfalseに設定し、処理S70で入力データを保持し、処理S71で保持データを出力する。
【0009】
処理S61でクロック信号のアクティブエッジを検出しなければ処理S72でメタステーブル状態フラグをfalseに設定し、処理S71へ進む。
【0010】
これらの処理を行うことで、順序回路の動作において、クロック信号がアクティブな時の入力データが変化したか否かによりメタステーブルを定義する処理と一定期間メタステーブル状態の値を出力する処理を行っている。
【0011】
上述した処理により、順序回路に対してクロック信号のアクティブエッジ検出毎に強制的にメタステーブル状態を一時刻発生させることで、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更すること無く、タイミングを考慮したシミュレーション同様に再現することにより検証できる。
【0012】
なお、メタステーブル(meta−stable)状態とは、ラッチやフリップフロップの入力信号において、セットアップ時間やホールド時間が守られなかった場合に出力信号が不安定な状態になることであり、外部からの非同期信号をフリップフロップで同期化するような場合には、入力信号はどこで変化するかわからないので、メタステーブルの発生を防ぐことはできない。しかし、メタステーブルの発生現象を見れば、メタステーブルが発生しても構わない回路構成にすることは可能である。
【0013】
【発明が解決しようとする課題】
上述した従来の検証方法では以下のような欠点がある。すなわち、後述する本発明の検証方法を適用する一例の回路図を示した図3のような回路構成の場合、順序回路を構成する内部配列要素であるフリップフロップFF1の出力値を、同じクロック信号(CLK2)でトリガされた同一データ信号とする順序回路間(FF2とFF3の関係)では、ゲートレベルのネットリストを用いたタイミングを考慮したシミュレーションにおけるFF1の出力Q1からそれぞれのデータ入力D2、D3までは信号伝達の遅延時間差を設けてある。
【0014】
その遅延時間差による、FF2とFF3との順序回路間で発生する入力データ信号とクロック信号(CLK2)とのタイミング問題、すなわち、FF2とFF3の順序回路で保持される値が異なるという不具合が、非同期回路における順序回路の不具合動作として発生する。
【0015】
前述した図9の従来技術の検証方法では、FF2とFF3の順序回路にはFF1の出力Q1として、必ず同一データ信号の値が保持されるため、FF2とFF3の順序回路間の不具合動作が検出出来ない欠点があった。
【0016】
本発明の目的は、上述した従来の欠点に鑑みなされたものであり、非同期回路の順序回路を構成する内部配列要素のフリップフロップFF1の出力値を、同じクロック信号(CLK2)でトリガされた同一データ信号とする順序回路間で発生する入力データ信号とクロック信号(CLK2)との信号伝達の遅延時間差によるタイミング問題、すなわち、FF2とFF3の順序回路で保持される値が異なるという不具合動作を検出出来る検証方法を提供することにある。
【0017】
【課題を解決するための手段】
本発明の非同期回路の検証の特徴は、検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、入力データの値を複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた内部配列要素に対し、1クロック周期内におけるイベント発生時刻毎に入力データを一時記憶させ、クロック信号のアクティブエッジ検出時に前記入力データが前記アクティブエッジ検出の1時刻前の値に対して変化していればメタステーブル状態と定義してそのメタステーブル状態の値を発生して出力し、次の一時刻後に、前記イベント発生時刻毎に一時記憶した入力データのうち任意の1時刻の入力データを出力することにある。
【0018】
また、前記クロック信号のアクティブエッジ検出時に一定期間メタステーブル状態の値を出力するとともに、前記入力データとして取り込む値を、クロック信号の1周期内における任意の1時刻の値とする。
【0019】
本発明の非同期回路の検証方法の他の特徴は、検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、入力データの値を複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた内部配列要素に対し、クロック信号の1周期内のイベント時刻で発生する入力データ値を保持させる処理と、前記クロック信号のアクティブエッジ検出時に前記入力データの値が1時刻前に前記内部配列要素に保持した値と異なる出力データのときメタステーブル状態であると定義する処理と、そのメタステーブル状態を発生する処理と、前記クロック信号がアクティブエッジの時の前記入力データの変化の有無により、保持した前記内部配列要素の任意の1時刻における入力データを出力する処理と、一定期間前記メタステーブル状態の値を出力する処理とを設けたタイミング検証処理ステップを備えることにある。
【0020】
また、前記タイミング検証処理ステップを、同一クロックタイミングに同期して同一データ信号が少なくとも1つの前記内部配列要素から他の複数の前記内部配列要素に共通に与えられる構成の前記順序回路に適用することができる。
【0021】
さらに、前記内部配列要素の出力データを共通入力する他の複数の前記内部配列要素それぞれに異なる伝達遅延時間で前記出力データを与えて、複数の前記内部配列要素間でそれぞれの一時記憶する値を強制的に異なる状態にし、同一クロックタイミングでトリガされる前記内部配列要素に擬似的に誤動作をさせてタイミングによる不具合箇所の事前検証を行うこともできる。
【0022】
さらにまた、前記順序回路の検証動作を用いた非同期回路の検証を機能シミュレーションで行うこともできる。
【0023】
本発明の非同期回路の検証方法の更に他の特徴は、検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、クロック信号の1周期内のn(n<(クロック周期のイベント数))時刻前の入力データを複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた複数の内部配列要素に一時記憶する第1の処理と、前記クロック信号のアクティブエッジを検出する第2の処理と、前記アクティブエッジを検出したとき前記入力データの変化を検出する第3の処理と、前記入力データの値が1時刻前に前記内部配列要素に一時記憶した値と異なるときの出力データ状態であるメタステーブル状態を検出する第4の処理と、前記メタステーブル状態のフラグを設定する第5の処理と、任意の時刻m(mはn時刻までの任意の1時刻)における入力データを前記記憶手段に設けた第1の変数に一時記憶させる第6の処理と、前記メタステーブル状態を示す値を前記記憶手段に設けた第2の変数に一時記憶させるメタステーブル状態発生のための第7の処理と、前記第2の変数に記憶された前記メタステーブル状態を示す値を出力する第8の処理と、前記入力データが検出されないときの前記メタステーブル状態のフラグ設定処理後に実行する入力データを前記第1の変数に一時記憶させる第9の処理および前記クロック信号のアクティブエッジが検出されないときの前記メタステーブル状態のフラグ設定をする第10の処理それぞれの実行後、前記入力データが検出されないときに前記第1の変数に一時記憶された入力データを出力する第11の処理とを備えることにある。
【0024】
また、前記第2の変数に一時記憶させる前記メタステーブル状態を示す値を、一定の初期値により疑似乱数によって設定することができる。
【0025】
さらに、前記第2の変数に一時記憶させる前記メタステーブル状態を示す値を、ユーザ指定の任意の固定値によって設定することもできる。
【0026】
さらにまた、ユーザが指定したクロック信号でアクティブになる順序回路の前記内部配列要素を全て抽出し対象となる前記内部配列要素をリストアップするアクティブ順序回路のリストアップ処理と、前記リストアップ処理でリストアップされた全ての前記内部配列要素に対して前記第1から前記第11までの処理を実行した後に、次の1イベント時刻に移る処理を全イベントを対象に繰り返す全イベント繰り返し処理とを備えることもできる。
【0027】
また、非同期回路を予め階層構造化した状態で、ユーザが指定した階層下に含まれる全ての前記順序回路の前記内部配列要素を抽出する階層内抽出処理と、抽出した前記内部配列要素に対して前記リストアップ処理および前記全イベント繰り返し処理を実行して対象となる前記順序回路を階層名で選択してもよい。
【0028】
さらに、前記階層下の前記順序回路の指定は、前記階層化に含まれる全ての順序回路を対象としてもよい。
【0029】
さらにまた、前記階層下の前記順序回路の指定は、前記階層下を除く全ての順序回路を対象としてもよい。
【0030】
また、前記階層化に含まれる全ての順序回路および前記階層下を除く全ての順序回路を対象に指定して特定の階層のみの指定をしてもよい。
【0031】
また、同一クロックタイミングに応答して同一データ信号が与えられる順序回路間で発生した入力データ信号の伝達遅延時間差により前記順序回路間で保持される値が異なる現象を、タイミングを考慮した論理シミュレーションに準ずる状態で再現して検証してもよい。
【0032】
【発明の実施の形態】
まず、本発明の概要を述べる。本発明による非同期回路の検証方法およびそのプログラムは、非同期回路を構成する順序回路の機能シミュレーション上における動作として次のような処理を設けている。
【0033】
すなわち、クロック信号の1周期内のイベント時刻で発生する入力データ値を内部配列要素に一時記憶する処理と、メタステーブル状態を発生する処理を設けてクロック信号の1周期内のイベント時刻で発生する入力データ値を内部配列要素に一時記憶する処理と、クロック信号がアクティブな時の入力データ変化の有無により、内部配列要素に保持したイベント時刻の入力データのうち任意の1時刻における入力データを出力する処理と、メタステーブル状態を定義する処理と、一定期間メタステーブル状態の値を出力する処理である。
【0034】
ここでの内部配列要素とは、順序回路を構成するFF1,FF2,FF3のそれぞれが持つD[m]の配列要素のことであり、各FFの入力データDinの値をm時刻分保持するための配列である。ただし、mは0〜n時刻の任意の1時刻を指す。すなわち、FF一つに付き記憶変数一つを持ち、その一つの変数に入る値は任意の数値(英文字も含み、2、4、8・・・進数の場合もある)である。
【0035】
また、FF1、FF2,FF3の動作は全て同じで図1の処理フローになり、S0〜9、B1〜B3の各処理の事象は独立である。
【0036】
上述した順序回路の処理動作は、クロック信号の1周期内のイベント時刻毎に入力データを順序回路を構成するフリップフロップに予め設定した内部配列要素に一時的に保持し、クロック信号のアクティブエッジ検出時に入力データの値が一時刻前の値に対して変化している場合、すなわち前述したように、ラッチやフリップフロップの入力信号において、セットアップ時間やホールド時間が守られなかった場合に出力信号が不安定な状態になるメタステーブル状態と定義し、メタステーブル状態の値を発生して出力する。
【0037】
そして、次の一時刻後に先に内部配列要素に保持した入力データのうち、任意の1時刻の入力データを出力する。
【0038】
上述した処理により、順序回路に対してクロック信号のアクティブエッジ検出毎に、強制的にメタステーブル状態を一時刻間発生させるという従来の動作に加え、入力データとして取り込む値を、クロック信号の1周期内における任意の1時刻の値とする動作を行う。
【0039】
従って、前述した順序回路の動作を用いて非同期回路の検証を機能シミュレーションで行うことにより、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更することなく、タイミングを考慮したシミュレーション同様に再現する。
【0040】
また、同じクロック信号をトリガとして同一データ信号が入力される順序回路間において発生する、入力データ信号の伝達遅延時間差によるタイミング問題、すなわち、それらの順序回路間で保持される値が異なる現象もタイミングを考慮したシミュレーション同様に再現することにより検証が出来る。
【0041】
これにより、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証TATの短縮という効果が得られるものである。
【0042】
以下、本発明の第1の実施の形態を、本発明の順序回路の動作フローチャートを示した図1と、本発明を実施するための一般的な機能シミュレータの主要構成図を示した図2と、本発明の順序回路の検証方法を適用する順序回路の一例を示した図3と併せて参照しながらさらに詳細に説明する。
【0043】
図1に示したフローチャートは、前述した図9に示す従来の順序回路の処理動作にさらに本発明の動作を付加したものであり、図1において処理S11と処理S16が新たに付加した処理動作である。
【0044】
すなわち、本発明の順序回路の検証方法は、クロック信号の1周期内のn時刻前の入力データを一時記憶する入力データ保持処理S11と、クロック信号のアクティブエッジ検出処理S12と、アクティブエッジが検出された状態で、入力データが変化したかを検出する入力データの変化検出処理S13と、入力データの変化が検出された状態で、メタステーブル状態が検出されたか否かを検出するメタステーブル状態の検出処理S14と、メタステーブル状態が検出されたときに、メタステーブル状態のフラグを設定するメタステーブル状態フラグの設定処理S15と、任意の時刻m(但し、mはn時刻までの任意の1時刻)における入力データを一時記憶(入力データを変数dに保持)する処理S16と、メタステーブル状態を変数metaに保持するメタステーブル状態の発生処理と、変数metaの内容を変数Qoutに移すメタステーブル状態の出力処理S18と、メタステーブル状態の検出処理S14においてメタステーブル状態が検出されなかった場合、メタステーブル状態フラグをtrueに変更するメタステーブル状態の設定処理S19と、入力データの変化検出処理S13において入力データが検出されなかった場合、メタステーブル状態フラグをfalseに変更するメタステーブル状態の設定処理S20と、処理S20でメタステーブル状態フラグをfalseに変更したあと、入力データを変数dに保持する入力データの保持処理S21と、変数dに保持された入力データをQoutに出力する保持データの出力処理S22と、アクティブエッジ検出処理S12においてアクティブエッジが検出されなかった場合、メタステーブル状態フラグをfalseに変更して処理S21へ進むメタステーブル状態の設定処理S23とを有する。
【0045】
上述したフローチャートを適用する公知の機能シミュレータの構成は、コンピュータ10と、検査対象装置20を有し、コンピュータ10は、検査対象装置からの要求されたデータまたは演算を開始するときにレディ信号をアクティブにし、データの供給準備が終了し、データが検証システムへ供給した後、レディ信号を非アクティブにするとともに、所定の検証の実行を制御する。
【0046】
次に、第1の実施の形態の動作を説明する。
【0047】
図1および図3を参照すると、図1における順序回路の動作説明のために、非同期回路の回路図を図3で示している。この回路図は、順序回路としてFF1、FF2、FF3および加算器ALU1から構成される。
【0048】
FF1の入力データD1は、FF1の出力データQ1に加算器ALU1で+1された値が入力され、FF2の入力データD2とFF3の入力データD3にはFF1の出力データQ1が入力される。また、FF1にはクロック信号CLK1が供給され、FF2、FF3にはクロック信号CLK2が供給される。
【0049】
順序回路のFF1の入出力信号は、クロック信号CLK1と、入力データD1と、出力データQ1とし、順序回路のFF2、FF3の入出力信号は、クロック信号CLK2、FF2への入力データD2、出力データQ2、FF3への入力データD3、出力データQ3とする。
【0050】
また、FF1のメタステーブル状態フラグMF1、FF2のメタステーブル状態フラグMF2、FF3のメタステーブル状態フラグMF3とする。
【0051】
この第1の実施の形態における検証動作は、まず入力データ保持処理S11で現時刻の入力データの値Dinを内部配列要素D[0]に保持する。内部配列要素D[n]は、n(nは整数)個の配列要素があり、nは機能シミュレーションで用いる1クロック周期内のイベント数よりも小さい値とする。
【0052】
また、内部配列要素にFF1,FF2,FF3への入力データ値を保持させる場合、時刻の経過とともにD[0]の値はD[1]へ、D[1]の値はD[2]へ、D[n−1]の値はD[n]へとn時刻分の値を保持する。
【0053】
次に、クロック信号のアクティブエッジ検出処理S12で、順序回路に入力されるクロック信号のエッジ検出を行い、エッジが検出された場合(Yes)は次の入力データの変化検出処理S13に移り、検出されない場合(No)はメタステーブル状態フラグの設定処理S23を行った後、保持データの出力処理S22を行う。
【0054】
入力データの変化検出処理S13では、順序回路への入力データ信号の変化を検出し、変化が検出された場合(Yes)は次段のメタステーブル状態検出処理S14に移り、検出されない場合(No)はメタステーブル状態フラグの設定処理S20でメタステーブル状態フラグをfalseに変更する。続いて入力データの保持処理S21で入力データの値D[0]を変数dに移し、次の保持データの出力処理S22において変数dに保持された入力データの値を出力する。
【0055】
次に、メタステーブル状態の検出処理S14では、順序回路内で保持されているメタステーブル状態フラグの値をチェックし、メタステーブル状態である場合(true)、次段の処理S15でメタステーブル状態フラグをfalseに設定する。
【0056】
次に、処理S15でメタステーブル状態フラグをfalseに設定した後、処理S16では、入力データとして前述のS11で保持した内部配列要素D[m]の任意要素mの値を変数dに保持し、処理S17で乱数を用いてメタステーブル状態の値を発生して変数metaに保持する。
【0057】
そして最後に処理S18で変数metaのメタステーブル状態の値を順序回路の出力Qoutに出力する。また、メタステーブル状態フラグの値がメタステーブル状態でない場合(false)、処理S19でメタステーブル状態フラグをtrueに設定した後、前述同様の処理S16、処理S17、処理S18の処理を順次行う。
【0058】
処理S20、処理S23の処理は、前述の処理S15同様に、メタステーブル状態フラグの値をメタステーブル状態でない場合(false)に設定するもので、処理S21の処理は、前述の処理S16同様に、順序回路への入力データDinの値を変数dに保持する。処理S22での処理は、変数dに保持された値を順序回路の出力Qoutに出力する。
【0059】
これにより、処理S14のメタステーブル状態検出処理後に、処理S16では、本発明の特徴である、同じクロック信号でトリガされる同一データ信号を入力データとする順序回路間に、互いに異なった入力データを保持する動作を実現する。処理S17、処理S18の一連の処理では、従来例の特徴であるクロック信号がアクティブな状態で入力データの値が一時刻前の値に対して変化がある場合のメタステーブル状態の値を出力する動作を行う。
【0060】
また、処理S13の入力データ変化検出処理後の処理S20、処理S21、処理S22の一連の処理によりクロック信号がアクティブな場合で入力データの値が一時刻前の値に対して変化がない場合の動作を行い、処理S12のクロック信号アクティブエッジ検出処理後の処理S23、処理S22の一連の処理によりクロック信号が非アクティブな場合の動作を行うことで、メタステーブル状態の値を出力した後、次の一時刻後に内部配列要素から保持された入力データの出力動作を行う。
【0061】
次に、図3の非同期回路の回路図に図1の順序回路の検証方法を適用した場合の動作を図4のタイミングチャートを用いて説明する。
【0062】
図4に示すように、順序回路のFF1へのクロック信号CLK1が3時刻毎に変化し、順序回路FF2へのクロック信号CLK2が4時刻毎に変化するものとする。
【0063】
すなわち、保持する時刻の幅は、それぞれのCLKの1周期(CLK1では6時刻分、CLK2では8時刻分)-1、以下で無ければ、シミュレーションが成り立たないためである。1周期を超えると、1クロック前の値も取り込むことになり正常な動作シミュレーションでなくなってしまうことになる。
【0064】
実際には、この保持する幅は、遅延を考慮したシミュレーションでの配線負荷などによる遅延を擬似的にモデルしており、メタステーブル状態の幅(図4では1時刻)は、FFのSETUP/HOLDのスペックを擬似的にモデルしている。
【0065】
なお、以下の説明では、説明を容易にするため、図1の処理が一巡してメタステーブルフラグMF1,MF2,MF3がアクティブになっている状態とする。
【0066】
この場合、順序回路のFF1は、FF1のQoutの出力Q1に加算器ALU1で+1した値を入力データD1として入力し、その3時刻間の値、つまり時刻0の値(=1)、時刻1の値(=1)、時刻2の値(=1)を内部配列要素に保持し(処理S11)、時刻3のCLK1の立ち上がりエッジを検出するとその立ち上がりタイミングで(処理S12)、FF1の内部配列要素における任意時刻(=時刻2)の値(=1)を通常値として選択した後、後述するように次の一時刻である時刻4でQoutから出力Q1の値(=1)として出力される(処理S22)。
【0067】
この時、時刻3において、FF1のメタステーブル状態フラグMF1の値は、CLK1の立ち上がりエッジがアクティブな状態、つまりアクティブエッジで(処理S12)かつ入力データD1の値が一時刻前の値、すなわち、FF1の初期状態の値(=0)に対して変化(=1)があるが(処理S13)、初期状態では、MF1の値はfalseのため、処理S14でメタステーブル状態検出は「No」(falseを検出)することになり、処理S19でtrue(=1)になり、FF1の出力端Qoutから出力Q1にメタステーブル状態の値(=6)を出力する(処理S18)。
【0068】
時刻4ではCLK1の立ち上がりエッジではない非アクティブな状態になるため(処理S12)、メタステーブル状態フラグMF1をfalse(=0)に変更し(処理S23)、前述したように出力Q1として、内部配列要素で選択された任意時刻(=時刻2)の値(=1)を出力する(処理S22)。
【0069】
同様に、時刻9、10、および時刻15、16、時刻21、22において1クロック周期間にメタステーブル状態フラグMF1の値はtrue(=1)になり(処理S19)、FF1の出力端Qoutの出力Q1においてメタステーブル状態の値、例えばここでは「6」を出力後、内部配列要素に保持された3時刻間のうち、任意の一時刻の値を通常値として出力する(処理S22)。
【0070】
なお、このタイミングチャートの例では示していないが、処理S12,処理S13および処理S14でいずれもYesを選択した場合は、処理S15においてメタステーブル状態フラグMF1の値はfalse(=0)になる。
【0071】
次に、順序回路の内部配列素子FF2においてもFF1と同様に、FF1の出力Q1と同じ値である入力データD2の3時刻間の値、つまり時刻1の値(=0)、時刻2の値(=0)、時刻3の値(=6)を内部配列要素に保持し(処理S11)、時刻4のCLK2の立ち上がりエッジを検出するとその立ち上がりタイミングで(処理S12)FF2の内部配列要素における任意時刻(=時刻1)の値(=0)を通常値として選択した後、次の一時刻である時刻5でFF2の出力端Qoutから出力Q2の値(=0)として出力される(処理S22)。
【0072】
この時、前述のFF1同様に、時刻4においてFF2のメタステーブル状態フラグMF2の値は、CLK2の立ち上がりエッジがアクティブな状態で(処理S12)かつ、入力データD2の値が一時刻前の値、すなわち、FF2の初期状態(=0)の値に対して変化(=6)があるため(処理S13)、true(=1)になり(処理S14および処理S19)、処理S16,処理S17を経てFF2の出力端Qoutから出力Q2にメタステーブル状態の値(=3)を出力する(処理S18)。
【0073】
時刻5では、CLK2の立ち上がりエッジではない非アクティブ状態になるため(処理S12)、Q2として、メタステーブル状態フラグMF2をfalse(=0)に変更し(処理S23)、内部配列要素で選択された任意時刻(=時刻1)の値(=0)を出力する(処理S22)。
【0074】
時刻12、13、および時刻20、21においては、CLK2が立ち上がるアクティブな状態の時にD2の値に変化がないため(処理S13)、1クロック周期間にメタステーブル状態フラグMF2の値はfalse(=0)になり(処理S20)、Qoutの出力Q2において、内部配列要素に保持(処理S21)された3時刻間(時刻9,10,11)のうち、最後に保持された時刻(=11)の値を通常値として出力する(処理S22)。
【0075】
最後に、順序回路FF3においても、前述のFF1、FF2同様な動作を行い、FF1の出力Q1と同じ値である入力データD3の3時刻間の値を内部配列要素に保持し(処理S11)、時刻4のCLK2の立ち上がりエッジを検出するとその立ち上がりタイミングで(処理S12)FF3の内部配列要素における任意時刻(=時刻3)の値(=6)を通常値として選択した後、次の一時刻である時刻5でQoutから出力Q3の値(=6)として出力される(処理S22)。
【0076】
また、前述のFF2と同様に、時刻4においてFF3のメタステーブル状態フラグMF3の値は、CLK2の立ち上がりエッジがアクティブな状態で(処理S12)かつ、D3の値が一時刻前の値、すなわちFF3の初期状態の値に対して変化(=6)があるため(処理S13)、true(=1)になり(処理S19)、処理S16および処理S17を経てQoutからQ3にメタステーブル状態の値(=7)を出力する(処理S18)。
【0077】
そして時刻5でCLK2が立ち上がりエッジではない非アクティブ状態になるため(処理S12)、Q3として、メタステーブル状態フラグMF2をfalse(=0)に変更し(処理S23)、後述する理由から、時刻1の値(=1)ではなく、内部配列要素で選択された任意時刻(=時刻3)の値(=6)を出力する(処理S22)
すなわち、時刻4における順序回路FF2とFF3は、CLK2の立ち上がりエッジにより同一データ信号であるFF1の出力Q1の値を入力データD2、D3として取り込むが、それぞれ3時刻間の値として保持された内部配列要素から任意時刻で選択された値は、FF2においては時刻1の値(=0)、FF3においては時刻3の値(=6)のように異なる値であるため、FF2とFF3の順序回路間で保持される値が異なる現象を起こしたことになる。
【0078】
このことは、時刻4のタイミングでFF2への入力データD2の信号伝播遅延とFF3への入力データD3の信号伝播遅延での時間差をシミュレーションし、同じクロック信号でトリガされる同一データ信号が入力される順序回路間においてタイミング問題による不具合動作が起こることを示している。
【0079】
また、FF3が通常値として選択したD3の値(=6)は、順序回路FF1で発生したメタステーブル状態の値であるため、FF3には本来の期待される入力データ、すなわち時刻4における出力Q1の値(=1)と異なり、時刻5から時刻12までこの非同期回路は不具合動作を起こしたことになり、時刻3のCLK1の変化と、時刻4のCLK2の変化はこの非同期回路において不具合動作が起こるタイミングであることを示し、従来技術の検証方法の動作も問題無く実現されている。
【0080】
上述したメタステーブル状態に値は、任意の固定値であり、後述する第3の実施の形態(図6)のように固定値“X”でもよい。
【0081】
実際には、データDinが取りうる範囲の値のうちの任意の値になるが、それには限定されず、また本発明の効果も変わらない。
【0082】
例えば、FFが1bitの順序回路とすれば、取りうる値は0,1になるということであり、現実に実装するシミュレータの制限として2以上の値は定義できない場合が多い。ただし、1つの順序回路が4bitのデータ長を処理する場合は、0〜15の値を取ることになる。
【0083】
上述したように、順序回路の動作として、クロック信号の1周期間の入力データ信号を保持し、1周期内の任意の1時刻の値を選択して出力することにより、同じクロック信号でトリガされる順序回路間に擬似的に入力データ信号の伝達遅延時間差によるタイミング問題を考慮した動作を行う。
【0084】
また、従来例の動作として、アクティブエッジ検出時に入力データの値が、一時刻前の値に対して変化している場合、メタステーブル状態と定義し、メタステーブル状態の値を発生して出力し、次の一時刻後に前述の動作により入力データを出力して順序回路に対してクロック信号のアクティブエッジ毎に強制的にメタステーブル状態を一時刻間発生させるという動作を行う。
【0085】
従って、この順序回路の動作を用いて非同期回路の検証を機能シミュレーションで行うことにより、同じクロック信号でトリガされる順序回路間において発生する、入力データ信号の伝達遅延時間差によるタイミング問題を含む回路構成に対しても、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更して動作を確認することで検証することなく、タイミングを考慮したシミュレーション同様に不具合動作を再現することにより検証が出来る。
【0086】
これにより、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証TATの短縮という効果が得られる。
【0087】
なお、上述した実施の形態では、クロック信号のアクティブエッジとして立ち上がり変化としているが、立ち下がりの変化の場合も同様である。
【0088】
また、非同期回路の構成として、クロック信号のアクティブエッジが、立ち上がり変化のものと立ち下がり変化の順序回路が混在しても、上述した実施の形態と同様な非同期回路の検証の効果が得られる。
【0089】
次に、本発明の第2の実施の形態を説明する。
【0090】
この第2の実施の形態において、その基本的構成は第1の実施の形態と同様である。すなわち、図1に示す本発明の順序回路の検証フローチャートにおいて、メタステーブル状態の発生処理S17におけるメタステーブル状態の発生についてさらに工夫したものである。
【0091】
その構成を示した図5を参照すると、メタステーブル状態の発生処理S17は、メタステーブル状態の値を一定の初期値による擬似乱数にて設定し、変数metaに保持する機能を追加したものである。
【0092】
一定の初期値による擬似乱数は、一般的に乱数値が周期的なパターンを持つため、本発明の順序回路に用いると、メタステーブル状態の値は、検証対象である非同期回路動作、すなわち、適用すると、回路内の順序回路の個数や動作する順番が変わらない限り同じ値になる。
【0093】
この第2の実施の形態による非同期回路の検証を実施した場合、対象となる非同期回路や動作のためのシミュレーションパターンが同じであれば、何度実行しても機能シミュレーション結果が同じになるため、再現性を必要とする検証作業において効果がある。
【0094】
従って、前述の順序回路の動作を用いて非同期回路の検証を機能シミュレーションで行うことにより、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更することなく、タイミングを考慮したシミュレーション同様に再現する。
【0095】
また、同じクロック信号をトリガとして同一データ信号が入力される順序回路間において発生する入力データ信号の伝達遅延時間差によるタイミング問題、すなわち、それらの順序回路間で保持される値が異なる現象もタイミングを考慮したシミュレーション同様に再現することにより検証が出来る。
【0096】
これにより、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証TATの短縮という効果が得られるものである。
【0097】
次に、本発明の第3の実施の形態を説明する。
【0098】
上述した第2の実施の形態では、メタステーブル状態の値を乱数値にて設定することにより、メタステーブル状態の値が伝播することによる非同期回路の動作の不具合検証の網羅性を高める効果を得ているが、この値をユーザ任意の固定値とすることで、機能シュミレーション結果に非同期回路の動作不具合をマーキングすることも可能である。
【0099】
そのための第3の実施の形態の構成を示した図5を参照すると、メタステーブル状態の発生処理S17は、メタステーブル状態の値を、ユーザ指定の任意の固定値による擬似乱数にて設定し、変数metaに保持する機能を追加したものである。
【0100】
つまり、メタステーブル状態の発生としてユーザ指定の任意の固定値を設定している。これにより対象の非同期回路内の順序回路に対して、メタステーブル状態が発生する時刻や発生した順序回路の特定が可能になり、非同期回路の動作不具合の作り込みの解析が容易に行える効果がある。
【0101】
この実施の形態においても、前述の順序回路の動作を用いて非同期回路の検証を機能シミュレーションで行うことにより、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更することなく、タイミングを考慮したシミュレーション同様に再現する。
【0102】
また、同じクロック信号をトリガとして同一データ信号が入力される順序回路間において、それらの順序回路間で保持される値が異なる現象もタイミングを考慮したシミュレーション同様に再現することにより検証が出来る。
【0103】
これにより、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証TATの短縮という効果が得られるものである。
【0104】
次に、本発明の第4の実施の形態を説明する。
【0105】
この第4の実施の形態では、本発明の順序回路の検証方法を適用する非同期回路に対して、回路内の対象となる順序回路を選択する処理を追加したものである。すなわち、本発明の特徴としてクロック信号の1周期内のイベント時刻で発生する入力データ値を、内部配列要素に保持する機能を有するが、これにより、検証の対象となる非同期回路の規模が大きくなると、機能シミュレータの内部に保持する状態値が膨大になることが予想され、そのため機能シミュレーション速度の著しい低下やシミュレータ動作のためのリソース不足により実行不可能に陥る危険性が予測される。
【0106】
第4の実施の形態のフローチャートを示した図7を参照すると、処理の最初に新規に追加した処理であり、ユーザが指定したクロック信号でアクティブになる順序回路を全て抽出し、対象となる順序回路をリストアップする順序回路の抽出処理S41と、FF[i]をi=0にクリアする処理S42と、FF[i]に対して図1の検証フローを実施する処理S43と、FF[i]をi=i+1で1個ずつカウントアップし次のFF[i]に順次検証フローを実施し、i=kに達するまで繰り返えす処理S45と、i=kになり、全イベントが終了するまで処理S42から繰り返す処理S46を有する。
【0107】
すなわち、本実施の形態の処理は、機能シミュレータの1イベント時刻毎に処理S43〜処理S45のループ処理にて、リストアップされた順序回路全てに対し図1の動作フローを行い、全ての順序回路の処理が完了したら次の1イベント時刻に移る。
【0108】
これにより、本発明の順序回路の適用をユーザ指定のクロック信号ラインのものに限定することが出来ので、本発明で生じる機能シミュレータの内部に保持する状態値を低減する効果が得られる。
【0109】
また、検証対象の非同期回路部分は、クロック信号ライン単位で容易にユーザ指定出来るため、本発明本来のテストベンチの記述や検証作業の単純化を損なうことがない。
【0110】
この実施の形態においても、前述の順序回路の動作を用いて非同期回路の検証を機能シミュレーションで行うことにより、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更することなく、タイミングを考慮したシミュレーション同様に再現する。
【0111】
また、同じクロック信号をトリガとして同一データ信号が入力される順序回路間において、それらの順序回路間で保持される値が異なる現象もタイミングを考慮したシミュレーション同様に再現することにより検証が出来る。
【0112】
これにより、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証TATの短縮という効果が得られるものである。
【0113】
次に、本発明の第5の実施の形態を説明する。
【0114】
本発明の第5の実施の形態の構成例を示した図8を参照するとす。本実施の形態は、前述した第4の実施の形態にさらに回路内の対象となる順序回路を選択する処理として、階層名による処理S51を追加した検証フローチャートである。
【0115】
処理S51において、ユーザが指定した階層下にある順序回路を全て抽出し、対象となる順序回路をリストアップし、次に前述した第4の実施の形態で示した図7の処理S41〜S46を行う。
【0116】
この階層下の順序回路の指定方法は、その階層下に含まれる全ての順序回路を対象にする方法と、その階層下を除く全ての順序回路を対象にする方法をそれぞれ行うことで、適用する非同期回路の階層構造が複雑な場合でも、特定の階層のみの指定が出来るようになる。
【0117】
これにより、クロック信号で対象となる順序回路を指定しても、まだ対象となる順序回路の数が多い場合、適用する非同期回路の設計を階層構造化することで、検証範囲を階層単位で絞り込むことが出来るので、さらなる機能シミュレータの内部に保持する状態値の低減と、検証範囲を絞り込むことにより検証作業が容易になるという効果がある。
【0118】
この実施の形態においても、前述の順序回路の動作を用いて非同期回路の検証を機能シミュレーションで行うことにより、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更することなく、タイミングを考慮したシミュレーション同様に再現する。
【0119】
また、同じクロック信号をトリガとして同一データ信号が入力される順序回路間において、それらの順序回路間で保持される値が異なる現象もタイミングを考慮したシミュレーション同様に再現することにより検証が出来る。
【0120】
これにより、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証TATの短縮という効果が得られるものである。
【0121】
【発明の効果】
上述したように、本発明の検証方法を適用することにより、機能シミュレーション時に、非同期回路で発生する順序回路の不具合動作を各クロック信号の周期や位相の条件を様々に変更することなく、タイミングを考慮したシミュレーション同様に再現する。
【0122】
また、同じクロック信号をトリガとして同一データ信号が入力される順序回路間において、それらの順序回路間で保持される値が異なる現象もタイミングを考慮したシミュレーション同様に再現することにより検証が出来る。
【0123】
したがって、シミュレーション時に必要なテストベンチの記述や検証作業の単純化や、検証TATの短縮という効果が得られるものである。
【図面の簡単な説明】
【図1】本発明の第1の実施形態における順序回路の動作フローチャートである。
【図2】本実施形態を適用する一般的な機能シミュレータの構成図である。
【図3】本発明の動作説明のための非同期回路の回路図である。
【図4】本発明の動作説明のためのタイミングチャートである。
【図5】本発明の第2の実施形態におけるメタステーブル状態の発生フローチャートである。
【図6】本発明の第3の実施形態におけるメタステーブル状態の発生フローチャートである。
【図7】本発明の第4の実施形態における動作フローチャートである。
【図8】本発明の第5の実施形態における動作フローチャートである。
【図9】従来の順序回路の一例の動作フローチャートである。
【符号の説明】
ALU1 加算器
FF1,FF2,FF3 内部配列要素
CLK1,CLK2 クロック信号
D1,D2,D3 入力データ[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a method for verifying an asynchronous circuit and a program thereof, and in particular, when performing verification of an asynchronous circuit by language-level functional simulation, output data of a plurality of sequential circuits having different clock signal cycles are transmitted via a combinational circuit or the like. The present invention relates to a method for verifying an asynchronous circuit and a program for improving the method of verifying the operation of a circuit configuration that is mutually input data of sequential circuits.
[0002]
[Prior art]
In recent years, with the advancement of semiconductor element miniaturization technology, semiconductor devices (LSIs) composed of the semiconductor elements are also increasing in scale, and at the logic level as a logic operation and timing verification tool when designing logic circuits in the semiconductor devices. Functional simulation is applied.
[0003]
The method for verifying an asynchronous circuit according to the present invention is used to verify the operation of a circuit configuration in which output data of a plurality of sequential circuits having different clock signal cycles become input data of the sequential circuit via a combinational circuit or the like. Is. Such an asynchronous circuit verification method is generally performed by using a gate-level netlist and verifying the setup and hold timing by a logic simulation in consideration of timing, for example, a simulation called an event-driven method. .
[0004]
In the event-driven method, a change in the logic level of a clock signal, a data signal, or the like is registered in the storage means as an event that affects the logic state of the circuit, and the contents of the data are updated while sequentially reading these events.
[0005]
An arithmetic process is performed on the circuit to be verified with this data as an input, and if there is a change in the output signal, it is sequentially registered as an event in consideration of the delay amount, and a simulation is executed.
[0006]
On the other hand, since circuit design is performed from functional design in a language such as HDL, it is required to perform asynchronous verification in language level functional simulation.
[0007]
Referring to FIG. 9 showing a flowchart of an example of a conventional asynchronous circuit verification method for meeting this requirement, after detecting an active edge of the clock signal in step S61, a change in input data is detected in step S62, and further processing is performed. In step S63, the metastable state is detected. If the metastable state is detected, the metastable flag is set to false in step S64, the input data is held in step S65, and the metastable state is generated in step S66. To output metastable status.
[0008]
If the metastable state is not detected in step 63, the metastable state flag is set to true in step S68. If no change in input data is detected in step S62, the metastable state flag is set to false in step S69. In step S70, the input data is held, and in step S71, the held data is output.
[0009]
If the active edge of the clock signal is not detected in process S61, the metastable state flag is set to false in process S72, and the process proceeds to process S71.
[0010]
By performing these processes, in the operation of the sequential circuit, the process of defining the metastable and the process of outputting the value of the metastable state for a certain period depending on whether the input data when the clock signal is active or not are performed. ing.
[0011]
By the above-described processing, the sequential circuit is forced to generate a metastable state every time the active edge of the clock signal is detected, so that the malfunction of the sequential circuit that occurs in the asynchronous circuit can be detected by the cycle and phase of each clock signal. This can be verified by reproducing in the same manner as the simulation considering the timing without changing the conditions of the above.
[0012]
The meta-stable state means that the output signal becomes unstable when the setup time and hold time are not observed in the input signal of the latch or flip-flop. When an asynchronous signal is synchronized by a flip-flop, it is not possible to prevent the occurrence of metastable because the input signal does not know where it changes. However, in view of the occurrence phenomenon of metastable, it is possible to make a circuit configuration in which metastable may occur.
[0013]
[Problems to be solved by the invention]
The conventional verification method described above has the following drawbacks. That is, in the case of a circuit configuration as shown in FIG. 3 showing an example circuit diagram to which the verification method of the present invention to be described later is applied, the output value of the flip-flop FF1, which is an internal array element constituting the sequential circuit, is set to the same clock signal. Between sequential circuits (relationship between FF2 and FF3) that are the same data signals triggered by (CLK2) (relationship between FF2 and FF3), the respective data inputs D2 and D3 from the output Q1 of the FF1 in the simulation considering the timing using the gate level netlist. Up to this point, a delay time difference in signal transmission is provided.
[0014]
The timing problem between the input data signal and the clock signal (CLK2) generated between the sequential circuits of FF2 and FF3 due to the delay time difference, that is, the problem that the values held in the sequential circuits of FF2 and FF3 are different is asynchronous. This occurs as a malfunction of the sequential circuit in the circuit.
[0015]
In the prior art verification method of FIG. 9, the sequential circuit of FF2 and FF3 always holds the value of the same data signal as the output Q1 of FF1, so that a malfunction operation between the sequential circuits of FF2 and FF3 is detected. There was a fault that could not be done.
[0016]
The object of the present invention has been made in view of the above-mentioned conventional drawbacks, and the output value of the flip-flop FF1 of the internal array element constituting the sequential circuit of the asynchronous circuit is the same triggered by the same clock signal (CLK2). A timing problem due to a signal transmission delay time difference between the input data signal and the clock signal (CLK2) generated between the sequential circuits as data signals, that is, a malfunction in which the values held in the sequential circuits of FF2 and FF3 are different is detected. The purpose is to provide a verification method.
[0017]
[Means for Solving the Problems]
The feature of the asynchronous circuit verification of the present invention is that a value of input data is held for a plurality of times in an asynchronous circuit verification method performed using a language-level functional simulation apparatus for an asynchronous circuit configured by a sequential circuit to be verified. In order to the sequential circuit Correspondingly to the storage means of the functional simulation device Input data is temporarily stored for each event occurrence time within one clock cycle for the internal array element provided in advance, and when the active edge of the clock signal is detected, the input data is compared to the value one time before the active edge detection. If it has changed, it is defined as a metastable state, and the value of the metastable state is generated and output. After the next time, input at any one time among the input data temporarily stored at each event occurrence time It is to output data.
[0018]
Further, a value of the metastable state is output for a certain period when the active edge of the clock signal is detected, and a value taken in as the input data is set to a value at an arbitrary time within one cycle of the clock signal.
[0019]
Another feature of the asynchronous circuit verification method of the present invention is that, in the asynchronous circuit verification method using a language-level function simulation device for an asynchronous circuit configured by a sequential circuit to be verified, the value of input data is set at a plurality of times. Said sequential circuit to hold minutes Corresponding to the storage means of the functional simulation device A process for holding an input data value generated at an event time within one cycle of a clock signal for an internal array element provided in advance, and the input data value is A process that defines a metastable state when the output data is different from the value held in the array element, a process that generates the metastable state, and whether or not the input data changes when the clock signal is an active edge And a timing verification processing step including a process of outputting input data of the held internal array element at an arbitrary time and a process of outputting the value of the metastable state for a certain period.
[0020]
Further, the timing verification processing step is applied to the sequential circuit having a configuration in which the same data signal is commonly given from at least one internal array element to the other plurality of internal array elements in synchronization with the same clock timing. Can do.
[0021]
Further, the output data is given to each of a plurality of other internal array elements that commonly input the output data of the internal array elements with different transmission delay times, and values temporarily stored between the plurality of internal array elements are respectively stored. It is also possible to forcibly make a different state and to cause the internal array element triggered at the same clock timing to malfunction in a pseudo manner, and to perform preliminary verification of the defective portion based on the timing.
[0022]
Furthermore, verification of the asynchronous circuit using the verification operation of the sequential circuit can be performed by functional simulation.
[0023]
Still another feature of the asynchronous circuit verification method of the present invention is that the asynchronous circuit verification method is performed using a language-level function simulation apparatus for an asynchronous circuit configured by a sequential circuit to be verified, and within one cycle of a clock signal. N (n <(number of events in the clock cycle)) time in order to hold the input data for a plurality of times in the sequential circuit Correspondingly to the storage means of the functional simulation device A first process for temporarily storing in a plurality of internal array elements provided in advance; a second process for detecting an active edge of the clock signal; and a third process for detecting a change in the input data when the active edge is detected. , A fourth process for detecting a metastable state that is an output data state when the value of the input data is different from a value temporarily stored in the internal array element one time ago, and a flag for the metastable state And the input data at any time m (m is any time up to n time) Provided in the storage means A sixth process for temporarily storing the first variable and a value indicating the metastable state; Provided in the storage means A seventh process for generating a metastable state temporarily stored in a second variable; an eighth process for outputting a value indicating the metastable state stored in the second variable; and Ninth processing for temporarily storing input data after the flag setting processing of the metastable state when not detected in the first variable, and flag setting of the metastable state when an active edge of the clock signal is not detected And an eleventh process for outputting the input data temporarily stored in the first variable when the input data is not detected after each of the tenth processes is performed.
[0024]
In addition, a value indicating the metastable state temporarily stored in the second variable can be set by a pseudo random number with a certain initial value.
[0025]
Furthermore, the value indicating the metastable state temporarily stored in the second variable can be set by an arbitrary fixed value designated by the user.
[0026]
Still further, a list processing of the active sequential circuit that extracts all the internal array elements of the sequential circuit that is activated by a clock signal specified by the user and lists the target internal array elements, and a list by the list processing. All event repetition processing that repeats the processing to move to the next one event time for all events after executing the first to eleventh processing for all the internal array elements that have been uploaded You can also.
[0027]
In addition, in the state where the asynchronous circuit is hierarchically structured in advance, in-layer extraction processing for extracting the internal array elements of all the sequential circuits included under the hierarchy specified by the user, and for the extracted internal array elements The list processing and the all event repetition processing may be executed to select the target sequential circuit by hierarchical name.
[0028]
Furthermore, the designation of the sequential circuit below the hierarchy may be performed on all sequential circuits included in the hierarchy.
[0029]
Furthermore, the designation of the sequential circuit below the hierarchy may target all sequential circuits except the hierarchy below.
[0030]
Alternatively, all the sequential circuits included in the hierarchization and all the sequential circuits excluding the lower hierarchy may be specified for the specific hierarchy only.
[0031]
In addition, a logic simulation considering timing is a phenomenon in which values held between sequential circuits differ due to a transmission delay time difference of input data signals generated between sequential circuits to which the same data signal is given in response to the same clock timing. You may reproduce and verify in a similar state.
[0032]
DETAILED DESCRIPTION OF THE INVENTION
First, the outline of the present invention will be described. The asynchronous circuit verification method and the program according to the present invention provide the following processing as an operation in the functional simulation of the sequential circuit constituting the asynchronous circuit.
[0033]
That is, a process for temporarily storing an input data value generated at an event time within one cycle of the clock signal and a process for generating a metastable state are provided to generate the event at an event time within one cycle of the clock signal. Depending on the process of temporarily storing the input data value in the internal array element and the presence or absence of input data change when the clock signal is active, the input data at any one of the input data at the event time held in the internal array element is output. A process for defining a metastable state, and a process for outputting a metastable state value for a certain period of time.
[0034]
The internal array element here is an array element of D [m] possessed by each of FF1, FF2, and FF3 constituting the sequential circuit, and holds the value of the input data Din of each FF for m times. Is an array of Here, m indicates an arbitrary time from 0 to n. That is, there is one storage variable for each FF, and the value that goes into that variable is an arbitrary numerical value (including English characters, which may be 2, 4, 8,...).
[0035]
Further, the operations of FF1, FF2, and FF3 are all the same, and the processing flow of FIG. 1 is obtained, and the events of each process of S0-9 and B1 to B3 are independent.
[0036]
In the processing operation of the sequential circuit described above, the input data is temporarily held in the internal array elements preset in the flip-flops constituting the sequential circuit at every event time within one cycle of the clock signal, and the active edge of the clock signal is detected. Sometimes when the value of the input data changes with respect to the value one hour before, that is, as described above, the output signal is output when the setup time or hold time is not observed in the input signal of the latch or flip-flop. It is defined as a metastable state that becomes unstable, and a metastable state value is generated and output.
[0037]
Then, the input data at an arbitrary time is output among the input data previously held in the internal array element after the next one time.
[0038]
In addition to the conventional operation of forcing the sequential circuit to generate a metastable state for one time each time an active edge of the clock signal is detected by the above-described processing, a value to be acquired as input data is set to one cycle of the clock signal. The operation of setting an arbitrary value at one time is performed.
[0039]
Therefore, the asynchronous circuit is verified by the functional simulation using the operation of the sequential circuit described above, so that the malfunction of the sequential circuit generated in the asynchronous circuit can be changed without changing the cycle and phase conditions of each clock signal. Reproduce in the same way as the simulation considering the timing.
[0040]
In addition, timing problems caused by differences in the transmission delay time of input data signals that occur between sequential circuits that receive the same data signal triggered by the same clock signal, that is, a phenomenon in which the values held between these sequential circuits differ This can be verified by reproducing the simulation in the same manner as the simulation.
[0041]
As a result, it is possible to obtain the effects of simplifying the test bench description and verification work necessary for the simulation and shortening the verification TAT.
[0042]
Hereinafter, the first embodiment of the present invention will be described with reference to FIG. 1 showing an operation flowchart of the sequential circuit of the present invention and FIG. 2 showing a main configuration diagram of a general functional simulator for carrying out the present invention. This will be described in more detail with reference to FIG. 3 showing an example of a sequential circuit to which the sequential circuit verification method of the present invention is applied.
[0043]
The flowchart shown in FIG. 1 is obtained by further adding the operation of the present invention to the processing operation of the conventional sequential circuit shown in FIG. 9 described above, and is a processing operation in which processing S11 and processing S16 are newly added in FIG. is there.
[0044]
That is, in the sequential circuit verification method of the present invention, the input data holding process S11 for temporarily storing the input data n times before in one cycle of the clock signal, the active edge detection process S12 for the clock signal, and the active edge detection The input data change detection process S13 for detecting whether or not the input data has changed in the generated state, and the metastable state for detecting whether or not the metastable state has been detected in the state where the input data change has been detected. A detection process S14, a metastable state flag setting process S15 for setting a metastable state flag when a metastable state is detected, and an arbitrary time m (where m is an arbitrary time up to the n time) ) For temporarily storing the input data (holding the input data in the variable d) and the metastable state in the variable me When the metastable state is not detected in the generation process of the metastable state held in a, the output process S18 of the metastable state that moves the contents of the variable meta to the variable Qout, and the detection process S14 of the metastable state, A metastable state setting process S19 for changing the status flag to true, and a metastable state setting process S20 for changing the metastable state flag to false when no input data is detected in the input data change detection process S13. After the metastable state flag is changed to false in process S20, input data holding process S21 for holding input data in variable d, and held data output process S22 for outputting input data held in variable d to Qout And active edge detection If the active edge is not detected in S12, and a process of setting the metastable state S23 proceeding meta table status flag is changed to false processing S21.
[0045]
The configuration of a known functional simulator to which the above-described flowchart is applied includes a
[0046]
Next, the operation of the first embodiment will be described.
[0047]
Referring to FIGS. 1 and 3, for explaining the operation of the sequential circuit in FIG. 1, a circuit diagram of an asynchronous circuit is shown in FIG. This circuit diagram includes FF1, FF2, FF3 and an adder ALU1 as a sequential circuit.
[0048]
As the input data D1 of FF1, a value obtained by adding +1 to the output data Q1 of FF1 by the adder ALU1 is input, and the output data Q1 of FF1 is input to the input data D2 of FF2 and the input data D3 of FF3. The clock signal CLK1 is supplied to FF1, and the clock signal CLK2 is supplied to FF2 and FF3.
[0049]
The input / output signals of the sequential circuit FF1 are the clock signal CLK1, the input data D1, and the output data Q1, and the input / output signals of the sequential circuits FF2 and FF3 are the input data D2 and output data to the clock signals CLK2 and FF2. Input data D3 and output data Q3 to Q2 and FF3.
[0050]
Further, the metastable state flag MF1 of FF1, the metastable state flag MF2 of FF2, and the metastable state flag MF3 of FF3 are used.
[0051]
In the verification operation in the first embodiment, first, the input data value Din at the current time is held in the internal array element D [0] in the input data holding process S11. The internal array element D [n] has n (n is an integer) array elements, and n is a value smaller than the number of events in one clock cycle used in the function simulation.
[0052]
When the internal array element holds the input data values to FF1, FF2, and FF3, the value of D [0] changes to D [1] and the value of D [1] changes to D [2] as time passes. , D [n−1] holds values for n times to D [n].
[0053]
Next, in the active edge detection process S12 of the clock signal, the edge of the clock signal input to the sequential circuit is detected. If an edge is detected (Yes), the process proceeds to the next input data change detection process S13. If not (No), after performing the metastable state flag setting process S23, the retained data output process S22 is performed.
[0054]
In the input data change detection process S13, a change in the input data signal to the sequential circuit is detected. If the change is detected (Yes), the process proceeds to the metastable state detection process S14 in the next stage, and the change is not detected (No). Changes the metastable state flag to false in the metastable state flag setting process S20. Subsequently, the input data value D [0] is moved to the variable d in the input data holding process S21, and the value of the input data held in the variable d is output in the next held data output process S22.
[0055]
Next, in the metastable state detection process S14, the value of the metastable state flag held in the sequential circuit is checked. If the metastable state is true (true), the metastable state flag is processed in the next step S15. Is set to false.
[0056]
Next, after setting the metastable state flag to false in process S15, in process S16, the value of the arbitrary element m of the internal array element D [m] held in S11 described above is held in the variable d as input data. In step S17, a random value is used to generate a metastable state value and hold it in the variable meta.
[0057]
Finally, in step S18, the value of the metastable state of the variable meta is output to the output Qout of the sequential circuit. If the value of the metastable state flag is not the metastable state (false), after setting the metastable state flag to true in step S19, the same processes S16, S17, and S18 as described above are sequentially performed.
[0058]
The process S20 and the process S23 set the value of the metastable state flag to the case where the metastable state is not in the false state (false) as in the above-described process S15. The process of the process S21 is similar to the process S16 described above. The value of the input data Din to the sequential circuit is held in the variable d. In the processing in step S22, the value held in the variable d is output to the output Qout of the sequential circuit.
[0059]
As a result, after the metastable state detection process of process S14, in process S16, different input data is transferred between sequential circuits having the same data signal triggered by the same clock signal as input data, which is a feature of the present invention. Realize holding action. In the series of processing of processing S17 and processing S18, the value of the metastable state is output when the value of the input data is changed with respect to the value of one hour before the clock signal, which is a feature of the conventional example, is active. Perform the action.
[0060]
Further, when the clock signal is active by the series of processing S20, processing S21, and processing S22 after the input data change detection processing of processing S13, the value of the input data is not changed from the value one time before. After the clock signal is inactive by performing a series of processes S23 and S22 after the clock signal active edge detection process of process S12, the metastable state value is output, The output operation of the input data held from the internal array element is performed one hour later.
[0061]
Next, the operation when the sequential circuit verification method of FIG. 1 is applied to the circuit diagram of the asynchronous circuit of FIG. 3 will be described with reference to the timing chart of FIG.
[0062]
As shown in FIG. 4, it is assumed that the clock signal CLK1 to the FF1 of the sequential circuit changes every three times and the clock signal CLK2 to the sequential circuit FF2 changes every four times.
[0063]
In other words, the simulation does not work unless the width of the time to be held is one cycle of each CLK (6 times for CLK1 and 8 times for CLK2) -1 or less. If one period is exceeded, the value one clock before is also taken in, and the normal operation simulation is lost.
[0064]
Actually, the held width simulates a delay due to a wiring load in a simulation considering the delay, and the width of the metastable state (one time in FIG. 4) is the FF SETUP / HOLD. The model of the model is simulated.
[0065]
In the following description, for ease of explanation, it is assumed that the process of FIG. 1 is completed and the metastable flags MF1, MF2, and MF3 are active.
[0066]
In this case, the FF1 of the sequential circuit inputs, as input data D1, a value obtained by adding +1 by the adder ALU1 to the output Q1 of the Qout of the FF1, and the value between the three times, that is, the value of time 0 (= 1),
[0067]
At this time, the value of the metastable state flag MF1 of FF1 is the state in which the rising edge of CLK1 is active, that is, the active edge (processing S12), and the value of the input data D1 is the value one time before, that is, Although there is a change (= 1) with respect to the initial state value (= 0) of FF1 (processing S13), since the value of MF1 is false in the initial state, the metastable state detection is “No” in processing S14. false (detected false), and true (= 1) in process S19, and the metastable state value (= 6) is output from the output terminal Qout of FF1 to the output Q1 (process S18).
[0068]
Since it is in an inactive state that is not the rising edge of CLK1 at time 4 (process S12), the metastable state flag MF1 is changed to false (= 0) (process S23), and the internal array is used as the output Q1 as described above. The value (= 1) of the arbitrary time (= time 2) selected by the element is output (processing S22).
[0069]
Similarly, at
[0070]
Although not shown in the example of the timing chart, when all of the processes S12, S13, and S14 select Yes, the value of the metastable state flag MF1 is false (= 0) in process S15.
[0071]
Next, in the internal array element FF2 of the sequential circuit, similarly to FF1, the value of the input data D2 that is the same value as the output Q1 of FF1 for three times, that is, the value of time 1 (= 0), the value of time 2 (= 0), the value of time 3 (= 6) is held in the internal array element (process S11), and when the rising edge of CLK2 at time 4 is detected (process S12), the arbitrary value in the internal array element of FF2 After selecting the value (= 0) of the time (= time 1) as a normal value, the value is output as the value (= 0) of the output Q2 from the output terminal Qout of the FF2 at time 5, which is the next time (processing S22). ).
[0072]
At this time, similarly to the above-described FF1, the value of the metastable state flag MF2 of FF2 at time 4 is a value in which the rising edge of CLK2 is active (processing S12), and the value of the input data D2 is the value one time before, That is, since there is a change (= 6) with respect to the value of the initial state (= 0) of FF2 (process S13), it becomes true (= 1) (process S14 and process S19), and passes through processes S16 and S17. The metastable state value (= 3) is output from the output terminal Qout of the FF2 to the output Q2 (processing S18).
[0073]
At time 5, since it becomes an inactive state that is not the rising edge of CLK2 (process S12), the metastable state flag MF2 is changed to false (= 0) as Q2 (process S23), and is selected by the internal array element The value (= 0) of the arbitrary time (= time 1) is output (process S22).
[0074]
At
[0075]
Finally, the sequential circuit FF3 also performs the same operation as the above-described FF1 and FF2, and holds the value for three times of the input data D3 that is the same value as the output Q1 of the FF1 in the internal array element (processing S11). When the rising edge of CLK2 at time 4 is detected (processing S12), an arbitrary time (= time 3) value (= 6) in the internal array element of FF3 is selected as a normal value at the rising timing, and at the next one time At a certain time 5, it is output from Qout as the value of output Q3 (= 6) (process S22).
[0076]
Similarly to the above-described FF2, the value of the metastable state flag MF3 of the FF3 at the time 4 is a state in which the rising edge of the CLK2 is active (processing S12), and the value of the D3 is a value one time before, that is, the FF3. Since there is a change (= 6) with respect to the value of the initial state (process S13), it becomes true (= 1) (process S19), and the value of the metastable state (from Qout to Q3 through process S16 and process S17) ( = 7) is output (process S18).
[0077]
At time 5, CLK2 is in an inactive state that is not a rising edge (process S12). As Q3, the metastable state flag MF2 is changed to false (= 0) (process S23). The value (= 6) of the arbitrary time (= time 3) selected by the internal array element is output instead of the value of (= 1) (process S22)
That is, the sequential circuits FF2 and FF3 at time 4 take in the value of the output Q1 of the FF1, which is the same data signal, as input data D2 and D3 at the rising edge of CLK2, but each is an internal array held as a value for three times. Since the value selected at an arbitrary time from the elements is a different value such as the value of time 1 (= 0) in FF2 and the value of time 3 (= 6) in FF3, it is between the sequential circuits of FF2 and FF3. This means that the value held in is different.
[0078]
This simulates the time difference between the signal propagation delay of the input data D2 to the FF2 and the signal propagation delay of the input data D3 to the FF3 at the timing of time 4, and the same data signal triggered by the same clock signal is input. This shows that a malfunction occurs due to a timing problem between sequential circuits.
[0079]
Further, since the value of D3 (= 6) selected by FF3 as the normal value is the value of the metastable state generated in the sequential circuit FF1, the original expected input data, that is, the output Q1 at time 4 is stored in FF3. Unlike the value of = 1 (= 1), this asynchronous circuit caused a malfunction from time 5 to
[0080]
The value in the metastable state described above is an arbitrary fixed value, and may be a fixed value “X” as in a third embodiment (FIG. 6) described later.
[0081]
Actually, the value is an arbitrary value within the range that the data Din can take, but is not limited thereto, and the effect of the present invention does not change.
[0082]
For example, if the FF is a 1-bit sequential circuit, the possible values are 0 and 1. In many cases, a value of 2 or more cannot be defined as a limitation of a simulator that is actually mounted. However, when one sequential circuit processes a 4-bit data length, it takes a value of 0 to 15.
[0083]
As described above, the operation of the sequential circuit is triggered by the same clock signal by holding the input data signal for one cycle of the clock signal and selecting and outputting a value at any one time within one cycle. The operation is performed in consideration of the timing problem due to the difference in the transmission delay time of the input data signal between the sequential circuits.
[0084]
Also, as the operation of the conventional example, when the value of input data changes with respect to the value one hour before when active edge is detected, it is defined as a metastable state, and a metastable state value is generated and output. Then, after the next one time, the input data is output by the above-described operation and the sequential circuit is forced to generate a metastable state for one time every active edge of the clock signal.
[0085]
Therefore, a circuit configuration including a timing problem due to a difference in transmission delay time of an input data signal generated between sequential circuits triggered by the same clock signal by performing verification of an asynchronous circuit using the operation of the sequential circuit by a functional simulation. However, the failure of the sequential circuit that occurs in the asynchronous circuit is not verified by checking the operation by changing the cycle and phase conditions of each clock signal in various ways. It can be verified by reproducing the operation.
[0086]
As a result, it is possible to obtain the effects of simplifying the test bench description and verification work necessary for the simulation and shortening the verification TAT.
[0087]
In the above-described embodiment, the rising change is used as the active edge of the clock signal, but the same applies to the falling change.
[0088]
Further, even if the active edge of the clock signal has a rising change and a falling change sequential circuit as a configuration of the asynchronous circuit, the same asynchronous circuit verification effect as that of the above-described embodiment can be obtained.
[0089]
Next, a second embodiment of the present invention will be described.
[0090]
The basic configuration of the second embodiment is the same as that of the first embodiment. That is, the generation of the metastable state in the metastable state generation process S17 in the sequential circuit verification flowchart of the present invention shown in FIG. 1 is further devised.
[0091]
Referring to FIG. 5 showing the configuration, the metastable state generation process S17 is a function in which the value of the metastable state is set as a pseudo-random number with a constant initial value and added to the variable meta. .
[0092]
A pseudo-random number with a constant initial value generally has a periodic pattern, and when used in the sequential circuit of the present invention, the value of the metastable state is an asynchronous circuit operation to be verified, that is, applied. Then, the value is the same as long as the number of sequential circuits in the circuit and the order of operation are not changed.
[0093]
When the verification of the asynchronous circuit according to the second embodiment is performed, if the target asynchronous circuit and the simulation pattern for the operation are the same, the function simulation result is the same no matter how many times it is executed. Effective in verification work that requires reproducibility.
[0094]
Therefore, the asynchronous circuit is verified by the functional simulation using the operation of the sequential circuit described above, so that the malfunction of the sequential circuit generated in the asynchronous circuit can be changed without changing the cycle and phase conditions of each clock signal. Reproduce in the same way as the simulation considering timing.
[0095]
In addition, the timing problem due to the transmission delay time difference between the input data signals generated between the sequential circuits to which the same data signal is input with the same clock signal as a trigger, that is, the phenomenon in which the value held between the sequential circuits is different is also determined. It can be verified by reproducing it in the same way as the simulation considered.
[0096]
As a result, it is possible to obtain the effects of simplifying the test bench description and verification work necessary for the simulation and shortening the verification TAT.
[0097]
Next, a third embodiment of the present invention will be described.
[0098]
In the second embodiment described above, by setting the metastable state value as a random number value, an effect of improving the comprehensiveness of the malfunction verification of the operation of the asynchronous circuit due to the propagation of the metastable state value is obtained. However, by setting this value as an arbitrary fixed value by the user, it is possible to mark the malfunction of the asynchronous circuit in the function simulation result.
[0099]
Referring to FIG. 5 showing the configuration of the third embodiment for that purpose, the metastable state generation process S17 sets the value of the metastable state with a pseudo-random number with an arbitrary fixed value specified by the user, A function to be held in the variable meta is added.
[0100]
That is, an arbitrary fixed value specified by the user is set as the occurrence of the metastable state. This makes it possible to identify the time at which the metastable state occurs and the sequential circuit that has occurred for the sequential circuit in the target asynchronous circuit, and can easily analyze the creation of malfunctions in the asynchronous circuit. .
[0101]
Also in this embodiment, the asynchronous circuit is verified by functional simulation using the operation of the sequential circuit described above, so that the malfunction of the sequential circuit generated in the asynchronous circuit can be changed in various cycle and phase conditions. It is reproduced in the same way as the simulation considering the timing without changing to.
[0102]
In addition, a phenomenon in which values held between sequential circuits that are input with the same data signal using the same clock signal as a trigger can be verified by reproducing the phenomenon in the same manner as a simulation considering timing.
[0103]
As a result, it is possible to obtain the effects of simplifying the test bench description and verification work necessary for the simulation and shortening the verification TAT.
[0104]
Next, a fourth embodiment of the present invention will be described.
[0105]
In the fourth embodiment, processing for selecting a target sequential circuit in a circuit is added to an asynchronous circuit to which the sequential circuit verification method of the present invention is applied. That is, as a feature of the present invention, it has a function of holding the input data value generated at the event time within one cycle of the clock signal in the internal array element, but this increases the scale of the asynchronous circuit to be verified. Therefore, it is expected that the state values held in the function simulator will be enormous, and therefore, there is a risk that the function simulation speed will be significantly lowered and the risk of being unable to execute due to a shortage of resources for simulator operation.
[0106]
Referring to FIG. 7 showing the flowchart of the fourth embodiment, all the sequential circuits that are newly added at the beginning of the process and are activated by the clock signal specified by the user are extracted, and the target order is extracted. A sequential circuit extraction process S41 for listing circuits, a process S42 for clearing FF [i] to i = 0, a process S43 for performing the verification flow of FIG. 1 on FF [i], and FF [i ] Is incremented one by one at i = i + 1, the verification flow is sequentially performed on the next FF [i], and repeated until i = k, i = k, and all events are completed. Step S46 is repeated from Step S42.
[0107]
That is, the processing of this embodiment performs the operation flow of FIG. 1 for all the listed sequential circuits in the loop processing of processing S43 to processing S45 for each event time of the function simulator, and all the sequential circuits are processed. When the above process is completed, the process proceeds to the next one event time.
[0108]
As a result, the application of the sequential circuit of the present invention can be limited to that of a clock signal line designated by the user, so that the effect of reducing the state value held in the function simulator generated in the present invention can be obtained.
[0109]
Further, since the asynchronous circuit portion to be verified can be easily specified by the user in units of clock signal lines, the description of the test bench and the simplification of the verification work inherent in the present invention are not impaired.
[0110]
Also in this embodiment, the asynchronous circuit is verified by functional simulation using the operation of the sequential circuit described above, so that the malfunction of the sequential circuit generated in the asynchronous circuit can be changed in various cycle and phase conditions. It is reproduced in the same way as the simulation considering the timing without changing to.
[0111]
In addition, a phenomenon in which values held between sequential circuits that are input with the same data signal using the same clock signal as a trigger can be verified by reproducing the phenomenon in the same manner as a simulation considering timing.
[0112]
As a result, it is possible to obtain the effects of simplifying the test bench description and verification work necessary for the simulation and shortening the verification TAT.
[0113]
Next, a fifth embodiment of the present invention will be described.
[0114]
Referring to FIG. 8 showing a configuration example of the fifth embodiment of the present invention. The present embodiment is a verification flowchart in which a process S51 based on a hierarchical name is added as a process of selecting a sequential circuit as a target in a circuit in addition to the above-described fourth embodiment.
[0115]
In the process S51, all the sequential circuits under the hierarchy designated by the user are extracted, the target sequential circuits are listed, and the processes S41 to S46 of FIG. 7 described in the fourth embodiment are then performed. Do.
[0116]
This sequential circuit designation method is applied by performing a method that targets all sequential circuits included under the hierarchy and a method that targets all sequential circuits except the hierarchical level. Even when the hierarchical structure of the asynchronous circuit is complicated, only a specific hierarchy can be specified.
[0117]
As a result, even if the target sequential circuit is specified by the clock signal, if the number of target sequential circuits is still large, the design of the asynchronous circuit to be applied is hierarchically structured to narrow down the verification range in units of hierarchy. Therefore, there is an effect that the verification operation is facilitated by further reducing the state value held inside the function simulator and narrowing down the verification range.
[0118]
Also in this embodiment, the asynchronous circuit is verified by functional simulation using the operation of the sequential circuit described above, so that the malfunction of the sequential circuit generated in the asynchronous circuit can be changed in various cycle and phase conditions. It is reproduced in the same way as the simulation considering the timing without changing to.
[0119]
In addition, a phenomenon in which values held between sequential circuits that are input with the same data signal using the same clock signal as a trigger can be verified by reproducing the phenomenon in the same manner as a simulation considering timing.
[0120]
As a result, it is possible to obtain the effects of simplifying the test bench description and verification work necessary for the simulation and shortening the verification TAT.
[0121]
【The invention's effect】
As described above, by applying the verification method of the present invention, the malfunction of the sequential circuit occurring in the asynchronous circuit can be adjusted during functional simulation without changing the cycle and phase conditions of each clock signal in various ways. Reproduce in the same way as the simulation considered.
[0122]
In addition, a phenomenon in which values held between sequential circuits that are input with the same data signal using the same clock signal as a trigger can be verified by reproducing the phenomenon in the same manner as a simulation considering timing.
[0123]
Therefore, it is possible to obtain the effects of simplifying the test bench description and verification work necessary for the simulation and shortening the verification TAT.
[Brief description of the drawings]
FIG. 1 is an operation flowchart of a sequential circuit according to a first embodiment of the present invention.
FIG. 2 is a configuration diagram of a general functional simulator to which the present embodiment is applied.
FIG. 3 is a circuit diagram of an asynchronous circuit for explaining the operation of the present invention.
FIG. 4 is a timing chart for explaining the operation of the present invention.
FIG. 5 is a flowchart of occurrence of a metastable state in the second embodiment of the present invention.
FIG. 6 is a flowchart of metastable state generation according to the third embodiment of the present invention.
FIG. 7 is an operation flowchart according to the fourth embodiment of the present invention.
FIG. 8 is an operation flowchart according to the fifth embodiment of the present invention.
FIG. 9 is an operation flowchart of an example of a conventional sequential circuit.
[Explanation of symbols]
ALU1 adder
FF1, FF2, FF3 internal array elements
CLK1, CLK2 clock signal
D1, D2, D3 input data
Claims (18)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002033686A JP3759051B2 (en) | 2002-02-12 | 2002-02-12 | Asynchronous circuit verification method and program thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002033686A JP3759051B2 (en) | 2002-02-12 | 2002-02-12 | Asynchronous circuit verification method and program thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003233638A JP2003233638A (en) | 2003-08-22 |
JP3759051B2 true JP3759051B2 (en) | 2006-03-22 |
Family
ID=27776405
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002033686A Expired - Fee Related JP3759051B2 (en) | 2002-02-12 | 2002-02-12 | Asynchronous circuit verification method and program thereof |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3759051B2 (en) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100803254B1 (en) | 2005-01-19 | 2008-02-13 | 세이코 엡슨 가부시키가이샤 | Computer readable recording medium for storing computer program |
JP2007052640A (en) | 2005-08-18 | 2007-03-01 | Nec Electronics Corp | Apparatus and method for verifying asynchronous circuit and verification program thereof |
JP5104356B2 (en) * | 2008-02-04 | 2012-12-19 | 富士通株式会社 | Verification support program, verification support apparatus, and verification support method |
JP5239747B2 (en) | 2008-10-29 | 2013-07-17 | 富士通株式会社 | Logic simulation program, logic simulation apparatus, and logic simulation method |
US8281227B2 (en) | 2009-05-18 | 2012-10-02 | Fusion-10, Inc. | Apparatus, system, and method to increase data integrity in a redundant storage system |
US8307258B2 (en) | 2009-05-18 | 2012-11-06 | Fusion-10, Inc | Apparatus, system, and method for reconfiguring an array to operate with less storage elements |
-
2002
- 2002-02-12 JP JP2002033686A patent/JP3759051B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003233638A (en) | 2003-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8468475B2 (en) | Conversion of circuit description to an abstract model of the circuit | |
US6922665B1 (en) | Method and system for device-level simulation of a circuit design for a programmable logic device | |
KR102049665B1 (en) | Device and method for detecting points of failures | |
Breuer | The effects of races, delays, and delay faults on test generation | |
US7254793B2 (en) | Latch modeling technique for formal verification | |
US20020147576A1 (en) | System for characterizing simulated circuit logic and behavior | |
CN113642285A (en) | Determining and verifying metastability in clock domain crossings | |
JP3759051B2 (en) | Asynchronous circuit verification method and program thereof | |
US7571086B2 (en) | Incremental circuit re-simulation system | |
Pomeranz | Skewed-load tests for transition and stuck-at faults | |
US7949510B2 (en) | Distributed simultaneous simulation | |
US7328117B2 (en) | Apparatus, method and program for verifying asynchronous circuit | |
US20050144580A1 (en) | Method and system for testing a logic design | |
US6237117B1 (en) | Method for testing circuit design using exhaustive test vector sequence | |
US20080300806A1 (en) | Power consumption calculating method | |
US20220198120A1 (en) | Clock aware simulation vector processor | |
US11231462B1 (en) | Augmenting an integrated circuit (IC) design simulation model to improve performance during verification | |
US20220327269A1 (en) | Computing device and method for detecting clock domain crossing violation in design of memory device | |
US11334698B2 (en) | Cell-aware defect characterization by considering inter-cell timing | |
JP2006318121A (en) | Delay added rtl logic simulation method and device | |
Schneider et al. | SWIFT: Switch-Level Fault Simulation on GPUs | |
US20030018462A1 (en) | Multi-clock system simulation | |
JP3953250B2 (en) | Asynchronous circuit verification method | |
CN113536726A (en) | Vector generation for maximum instantaneous peak power | |
US7013252B1 (en) | Simulated circuit node initializing and monitoring |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050808 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050823 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051024 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20051129 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051227 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100113 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |