JP3759051B2 - Asynchronous circuit verification method and program thereof - Google Patents

Asynchronous circuit verification method and program thereof Download PDF

Info

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
Application number
JP2002033686A
Other languages
Japanese (ja)
Other versions
JP2003233638A (en
Inventor
弘道 山根
Original Assignee
Necマイクロシステム株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Necマイクロシステム株式会社 filed Critical Necマイクロシステム株式会社
Priority to JP2002033686A priority Critical patent/JP3759051B2/en
Publication of JP2003233638A publication Critical patent/JP2003233638A/en
Application granted granted Critical
Publication of JP3759051B2 publication Critical patent/JP3759051B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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 computer 10 and an inspection target device 20, and the computer 10 activates a ready signal when starting requested data or calculation from the inspection target device. After the data supply preparation is completed and the data is supplied to the verification system, the ready signal is deactivated and execution of predetermined verification is controlled.
[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), time 1 Value (= 1) and time 2 value (= 1) are held in the internal array element (process S11), and when the rising edge of CLK1 at time 3 is detected (rising timing) (process S12), the internal array of FF1 After selecting the value (= 1) of the arbitrary time (= time 2) in the element as a normal value, it is output as the value of the output Q1 (= 1) from Qout at time 4, which is the next one time, as will be described later. (Process S22).
[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 time 9, 10, and time 15, 16, and time 21, 22, the value of the metastable state flag MF1 becomes true (= 1) during one clock cycle (processing S19), and the output terminal Qout of FF1 After outputting a metastable state value, for example, “6” in the output Q1, an arbitrary one time value among the three times held in the internal array element is output as a normal value (processing S22).
[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 times 12 and 13, and at times 20 and 21, since the value of D2 does not change during the active state in which CLK2 rises (processing S13), the value of the metastable state flag MF2 is false (= 0) (process S20), and at the output Q2 of Qout, the last stored time (= 11) among the three times (time 9, 10, 11) held in the internal array element (process S21) Is output as a normal value (step S22).
[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 time 12, and the change in CLK1 at time 3 and the change in CLK2 at time 4 caused malfunction in this asynchronous circuit. The timing of the occurrence is shown, and the operation of the verification method of the prior art is also realized without any problem.
[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)

検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、入力データの値を複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた内部配列要素に対し、1クロック周期内におけるイベント発生時刻毎に入力データを一時記憶させ、クロック信号のアクティブエッジ検出時に前記入力データが前記アクティブエッジ検出の1時刻前の値に対して変化していればメタステーブル状態と定義してそのメタステーブル状態の値を発生して出力し、次の一時刻後に、前記イベント発生時刻毎に一時記憶した入力データのうち任意の1時刻の入力データを出力することを特徴とする非同期回路の検証方法。In an asynchronous circuit verification method performed using a language-level function simulation device for an asynchronous circuit configured by a sequential circuit to be verified, the function corresponds to the sequential circuit in order to hold input data values for a plurality of times. Input data is temporarily stored for each event occurrence time within one clock period for an internal array element provided in advance in the storage means of the simulation apparatus, and when the active edge of the clock signal is detected, the input data is one time of the active edge detection. If it is changed with respect to the previous value, it is defined as a metastable state, the value of the metastable state is generated and output, and after the next one time, the input data temporarily stored at each event occurrence time A method for verifying an asynchronous circuit, wherein input data at an arbitrary time is output. 前記クロック信号のアクティブエッジ検出時に一定期間メタステーブル状態の値を出力するとともに、前記入力データとして取り込む値を、クロック信号の1周期内における任意の1時刻の値とする請求項1記載の非同期回路の検証方法。  2. The asynchronous circuit according to claim 1, wherein when the active edge of the clock signal is detected, the value of the metastable state is output for a certain period, and the value taken in as the input data is a value at any one time within one cycle of the clock signal. Verification method. 検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、入力データの値を複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた内部配列要素に対し、クロック信号の1周期内のイベント時刻で発生する入力データ値を保持させる処理と、前記クロック信号のアクティブエッジ検出時に前記入力データの値が1時刻前に前記内部配列要素に保持した値と異なる出力データのときメタステーブル状態であると定義する処理と、そのメタステーブル状態を発生する処理と、前記クロック信号がアクティブエッジの時の前記入力データの変化の有無により、保持した前記内部配列要素の任意の1時刻における入力データを出力する処理と、一定期間前記メタステーブル状態の値を出力する処理とを設けたタイミング検証処理ステップを備えることを特徴とする非同期回路の検証方法。In an asynchronous circuit verification method performed using a language-level function simulation device for an asynchronous circuit configured by a sequential circuit to be verified, the function corresponds to the sequential circuit in order to hold input data values for a plurality of times. A process of holding an input data value generated at an event time within one cycle of the clock signal for an internal array element provided in advance in the storage means of the simulation apparatus, and a value of the input data when the active edge of the clock signal is detected A process for defining a metastable state when the output data is different from the value held in the internal array element one time before, a process for generating the metastable state, and the input when the clock signal is an active edge Depending on the presence or absence of data change, the stored input data at any one time of the internal array element Verification method of asynchronous circuit and outputting, characterized in that it comprises a timing verification process step in which a processing for outputting a value of a certain period the metastable state. 前記タイミング検証処理ステップを、同一クロックタイミングに同期して同一データ信号が少なくとも1つの前記内部配列要素から他の複数の前記内部配列要素に共通に与えられる構成の前記順序回路に適用する請求項3記載の非同期回路の検証方法。  4. The timing verification processing step is applied to the sequential circuit having a configuration in which the same data signal is commonly supplied from at least one of the internal array elements to the plurality of other internal array elements in synchronization with the same clock timing. A method for verifying the described asynchronous circuit. 前記内部配列要素の出力データを共通入力する他の前記内部配列要素それぞれに任意の伝達遅延時間で前記出力データを与えて、前記内部配列要素間でそれぞれの一時記憶する値を強制的に異なる状態にし、同一クロックタイミングでトリガされる前記内部配列要素に擬似的に誤動作をさせてタイミングによる不具合箇所の事前検証を行う請求項1又は2記載の非同期回路の検証方法。  A state in which the output data is given to each of the other internal array elements that commonly input the output data of the internal array elements with an arbitrary transmission delay time, and the values temporarily stored between the internal array elements are forcibly different. 3. A method for verifying an asynchronous circuit according to claim 1 or 2, wherein the internal array elements triggered at the same clock timing are made to malfunction in a pseudo manner, and a pre-verification of a defective portion based on the timing is performed. 前記順序回路の検証動作を用いて非同期回路の検証を機能シミュレーションで行う請求項5記載の非同期回路の検証方法。  6. The asynchronous circuit verification method according to claim 5, wherein verification of the asynchronous circuit is performed by functional simulation using the verification operation of the sequential circuit. 検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、クロック信号の1周期内のn(n<(クロック周期のイベント数))時刻前の入力データを複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた複数の内部配列要素に一時記憶する第1の処理と、前記クロック信号のアクティブエッジを検出する第2の処理と、前記アクティブエッジを検出したとき前記入力データの変化を検出する第3の処理と、前記入力データの値が1時刻前に前記内部配列要素に一時記憶した値と異なるときの出力データ状態であるメタステーブル状態を検出する第4の処理と、前記メタステーブル状態のフラグを設定する第5の処理と、任意の時刻m(mはn時刻までの任意の1時刻)における入力データを第1の変数に一時記憶させる第6の処理と、前記メタステーブル状態を示す値を第2の変数に一時記憶させるメタステーブル状態発生のための第7の処理と、前記第2の変数に記憶された前記メタステーブル状態を示す値を出力する第8の処理と、前記入力データが検出されないときの前記メタステーブル状態のフラグ設定処理後に実行する入力データを前記第1の変数に一時記憶させる第9の処理および前記クロック信号のアクティブエッジが検出されないときの前記メタステーブル状態のフラグ設定をする第10の処理それぞれの実行後、前記入力データが検出されないときに前記第1の変数に一時記憶された入力データを出力する第11の処理とを備えることを特徴とする非同期回路の検証方法。In an asynchronous circuit verification method performed using a language-level function simulation device for an asynchronous circuit configured with a sequential circuit to be verified, n (n <(number of events in clock cycle)) time within one cycle of the clock signal A first process of temporarily storing the input data for a plurality of times in a plurality of internal array elements provided in advance in the storage means of the functional simulation device corresponding to the sequential circuit, and an active edge of the clock signal A second process for detecting the input data, a third process for detecting a change in the input data when the active edge is detected, and a value temporarily stored in the internal array element one time before the value of the input data A fourth process for detecting a metastable state which is an output data state at a different time, and a fifth process for setting a flag of the metastable state And a sixth process for temporarily storing the input data at an arbitrary time m (m is an arbitrary one time up to the n time) in the first variable, and a value indicating the metastable state in the second variable A seventh process for generating a metastable state to be temporarily stored; an eighth process for outputting a value indicating the metastable state stored in the second variable; and the process when the input data is not detected. A ninth process for temporarily storing input data to be executed after the metastable state flag setting process in the first variable, and a tenth process for setting the metastable state flag 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 process is executed. Verification method of the asynchronous circuit characterized by and. 前記第2の変数に一時記憶させる前記メタステーブル状態を示す値を、一定の初期値により疑似乱数によって設定する請求項7記載の非同期回路の検証方法。  The asynchronous circuit verification method according to claim 7, wherein a value indicating the metastable state temporarily stored in the second variable is set by a pseudo random number with a constant initial value. 前記第2の変数に一時記憶させる前記メタステーブル状態を示す値を、ユーザ指定の任意の固定値によって設定する請求項7記載の非同期回路の検証方法。  8. The asynchronous circuit verification method according to claim 7, wherein a value indicating the metastable state temporarily stored in the second variable is set by an arbitrary fixed value designated by a user. ユーザが指定したクロック信号でアクティブになる順序回路の前記内部配列要素を全て抽出し対象となる前記内部配列要素をリストアップするアクティブ順序回路のリストアップ処理と、前記リストアップ処理でリストアップされた全ての前記内部配列要素に対して前記第1から前記第11までの処理を実行した後に、次の1イベント時刻に移る処理を全イベントを対象に繰り返す全イベント繰り返し処理とを備える請求項7記載の非同期回路の検証方法。  All the internal array elements of the sequential circuit activated by the clock signal specified by the user are extracted, and the active sequential circuit that lists the internal array elements to be listed is listed in the list processing. 8. An all-event repeating process in which a process of moving to the next one event time is repeated for all events after executing the first to eleventh processes for all the internal array elements. Asynchronous circuit verification method. 非同期回路を予め階層構造化した状態で、ユーザが指定した階層下に含まれる全ての前記順序回路の前記内部配列要素を抽出する階層内抽出処理と、抽出した前記内部配列要素に対して前記リストアップ処理および前記全イベント繰り返し処理を実行して対象となる前記順序回路を階層名で選択する請求項10記載の非同期回路の検証方法。  In a state in which asynchronous circuits are 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 the list for the extracted internal array elements The asynchronous circuit verification method according to claim 10, wherein the sequential circuit as a target is selected by a hierarchical name by executing an up process and the all event repetition process. 前記階層下の前記順序回路の指定は、前記階層化に含まれる全ての順序回路を対象とする請求項11記載の非同期回路の検証方法。  The asynchronous circuit verification method according to claim 11, wherein the designation of the sequential circuit under the hierarchy targets all the sequential circuits included in the hierarchy. 前記階層下の前記順序回路の指定は、前記階層下を除く全ての順序回路を対象とする請求項11記載の非同期回路の検証方法。  The asynchronous circuit verification method according to claim 11, wherein the designation of the sequential circuit below the hierarchy is for all sequential circuits except the hierarchy below. 前記階層化に含まれる全ての順序回路および前記階層下を除く全ての順序回路を対象に指定して特定の階層のみの指定をする請求項11記載の非同期回路の検証方法。  The asynchronous circuit verification method according to claim 11, wherein all sequential circuits included in the hierarchization and all sequential circuits excluding the lower hierarchy are specified as targets, and only a specific hierarchy is specified. 同一クロックタイミングに応答して同一データ信号が与えられる順序回路間で発生した入力データ信号の伝達遅延時間差により前記順序回路間で保持される値が異なる現象を、タイミングを考慮した論理シミュレーションに準ずる状態で再現して検証する請求項1〜13または14記載の非同期回路の検証方法。  A state in which the value held between the sequential circuits varies according to the transmission delay time difference of the input data signal generated between the sequential circuits to which the same data signal is given in response to the same clock timing, according to the logic simulation considering the timing. The method for verifying an asynchronous circuit according to claim 1, wherein the verification is performed by reproducing. 検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、クロック信号の1周期内のn(n<(クロック周期のイベント数))時刻前の入力データを複数時刻分保持するために前記順序回路に対応して前記機能シミュレーション装置の記憶手段に予め設けた内部配列要素に一時記憶する第1の処理と、前記クロック信号のアクティブエッジを検出する第2の処理と、前記アクティブエッジを検出したとき前記入力データの変化を検出する第3の処理と、前記入力データの値が1時刻前に前記内部配列要素に一時記憶した値と異なるときの出力データ状態であるメタステーブル状態を検出する第4の処理と、前記メタステーブル状態のフラグを設定する第5の処理と、任意の時刻m(mはn時刻までの任意の1時刻)における入力データを前記記憶手段に設けた第1の変数に一時記憶させる第6の処理と、前記メタステーブル状態を示す値を前記記憶手段に設けた第2の変数に一時記憶させるメタステーブル状態発生のための第7の処理と、前記第2の変数に記憶された前記メタステーブル状態を示す値を出力する第8の処理と、前記入力データが検出されないときの前記メタステーブル状態のフラグ設定処理後に実行する入力データを前記第1の変数に一時記憶させる第9の処理および前記クロック信号のアクティブエッジが検出されないときの前記メタステーブル状態のフラグ設定をする第10の処理それぞれの実行後、前記入力データが検出されないときに前記第1の変数に一時記憶された入力データを出力する第11の処理とを、コンピュータに実行させるプログラム。In an asynchronous circuit verification method performed using a language-level function simulation device for an asynchronous circuit configured with a sequential circuit to be verified, n (n <(number of events in clock cycle)) time within one cycle of the clock signal In order to hold the input data for a plurality of times, a first process for temporarily storing in an internal array element provided in advance in the storage means of the functional simulation device corresponding to the sequential circuit, and detecting an active edge of the clock signal A second process to detect, a third process to detect a change in the input data when the active edge is detected, and a value of the input data different from a value temporarily stored in the internal array element one time ago A fourth process for detecting a metastable state, which is an output data state, and a fifth process for setting a flag for the metastable state Any (m is any one time up to n times) of the time point m and a sixth process of temporarily storing the input data in the first variable provided in the storage means, said stored value indicating the metastable state A seventh process for generating a metastable state temporarily stored in a second variable provided in the means; an eighth process for outputting a value indicating the metastable state stored in the second variable; Ninth processing for temporarily storing input data to be executed in the first variable after flag setting processing of the metastable state when the input data is not detected, and the metastable when the active edge of the clock signal is not detected After each execution of the tenth process for setting the state flag, the input data temporarily stored in the first variable when the input data is not detected And processing of the 11 that outputs a program for causing a computer to execute. ユーザが指定したクロック信号でアクティブになる順序回路の前記内部配列要素を全て抽出し対象となる前記内部配列要素をリストアップするアクティブ順序回路のリストアップ処理と、前記リストアップ処理でリストアップされた全ての前記内部配列要素に対して前記第1から前記第11までの処理を実行した後に、次の1イベント時刻に移る処理を全イベントを対象に繰り返す全イベント繰り返し処理とを、コンピュータに実行させる請求項16に記載のプログラム。All the internal array elements of the sequential circuit activated by the clock signal specified by the user are extracted, and the active sequential circuit that lists the internal array elements to be listed is listed in the list processing. After executing the first to eleventh processes for all the internal array elements, the computer is caused to execute an all event repetition process that repeats the process of moving to the next one event time for all events. The program according to claim 16 . 非同期回路を予め階層構造化した状態で、ユーザが指定した階層下に含まれる全ての前記順序回路の前記内部配列要素を抽出する階層内抽出処理と、抽出した前記内部配列要素に対して前記リストアップ処理および前記全イベント繰り返し処理を実行処理を、コンピュータに実行させる請求項17に記載のプログラム。In a state in which asynchronous circuits are 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 the list for the extracted internal array elements 18. The program according to claim 17, which causes a computer to execute an up process and an execution process of the all event repetition process.
JP2002033686A 2002-02-12 2002-02-12 Asynchronous circuit verification method and program thereof Expired - Fee Related JP3759051B2 (en)

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)

* Cited by examiner, † Cited by third party
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

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