米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> エヌイーシーマイクロシステム株式会社

発明の名称 非同期回路の検証方法およびそのプログラム
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2003−233638(P2003−233638A)
公開日 平成15年8月22日(2003.8.22)
出願番号 特願2002−33686(P2002−33686)
出願日 平成14年2月12日(2002.2.12)
代理人 【識別番号】100109313
【弁理士】
【氏名又は名称】机 昌彦 (外2名)
【テーマコード(参考)】
5B046
5F064
【Fターム(参考)】
5B046 AA08 BA03 JA01 
5F064 BB01 HH06 HH10
発明者 山根 弘道
要約 課題
クロック信号の周期が異なる複数の順序回路の出力データが相互に順序回路の入力データとなる回路構成の動作を検証する方法を改善する。

解決手段
非同期回路を構成する順序回路に、クロック信号の1周期内のイベント時刻で発生する入力データ値を前記順序回路の内部配列要素に保持する処理S11と、クロック信号のアクティブエッジ検出時(処理S12)に入力データの値が1時刻前に内部配列要素に保持した値と異なるか否かで出力データがメタステーブル状態であると定義する処理S16と、そのメタステーブル状態を発生する処理S17と、クロック信号がアクティブな時の入力データの変化の有無により、保持した内部配列要素の任意の1時刻における入力データを出力する処理S22と、一定期間メタステーブル状態の値を出力する処理S18とを設けたタイミング検証処理ステップを備える。
特許請求の範囲
【請求項1】 検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、入力データの値を複数時刻分保持するために前記順序回路に予め設けた内部配列要素に対し、1クロック周期内におけるイベント発生時刻毎に入力データを一時記憶させ、クロック信号のアクティブエッジ検出時に前記入力データが前記アクティブエッジ検出の1時刻前の値に対して変化していればメタステーブル状態と定義してそのメタステーブル状態の値を発生して出力し、次の一時刻後に、前記イベント発生時刻毎に一時記憶した入力データのうち任意の1時刻の入力データを出力することを特徴とする非同期回路の検証方法。
【請求項2】 前記クロック信号のアクティブエッジ検出時に一定期間メタステーブル状態の値を出力するとともに、前記入力データとして取り込む値を、クロック信号の1周期内における任意の1時刻の値とする請求項1記載の非同期回路の検証方法。
【請求項3】 検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、入力データの値を複数時刻分保持するために前記順序回路予め設けた内部配列要素に対し、クロック信号の1周期内のイベント時刻で発生する入力データ値を保持させる処理と、前記クロック信号のアクティブエッジ検出時に前記入力データの値が1時刻前に前記内部配列要素に保持した値と異なる出力データのときメタステーブル状態であると定義する処理と、そのメタステーブル状態を発生する処理と、前記クロック信号がアクティブエッジの時の前記入力データの変化の有無により、保持した前記内部配列要素の任意の1時刻における入力データを出力する処理と、一定期間前記メタステーブル状態の値を出力する処理とを設けたタイミング検証処理ステップを備えることを特徴とする非同期回路の検証方法。
【請求項4】 前記タイミング検証処理ステップを、同一クロックタイミングに同期して同一データ信号が少なくとも1つの前記内部配列要素から他の複数の前記内部配列要素に共通に与えられる構成の前記順序回路に適用する請求項3記載の非同期回路の検証方法。
【請求項5】 前記内部配列要素の出力データを共通入力する他の前記内部配列要素それぞれに任意の伝達遅延時間で前記出力データを与えて、前記内部配列要素間でそれぞれの一時記憶する値を強制的に異なる状態にし、同一クロックタイミングでトリガされる前記内部配列要素に擬似的に誤動作をさせてタイミングによる不具合箇所の事前検証を行う請求項1又は2記載の非同期回路の検証方法。
【請求項6】 前記順序回路の検証動作を用いて非同期回路の検証を機能シミュレーションで行う請求項5記載の非同期回路の検証方法。
【請求項7】 検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、クロック信号の1周期内のn(n<(クロック周期のイベント数))時刻前の入力データを複数時刻分保持するために前記順序回路に予め設けた複数の内部配列要素に一時記憶する第1の処理と、前記クロック信号のアクティブエッジを検出する第2の処理と、前記アクティブエッジを検出したとき前記入力データの変化を検出する第3の処理と、前記入力データの値が1時刻前に前記内部配列要素に一時記憶した値と異なるときの出力データ状態であるメタステーブル状態を検出する第4の処理と、前記メタステーブル状態のフラグを設定する第5の処理と、任意の時刻m(mはn時刻までの任意の1時刻)における入力データを第1の変数に一時記憶させる第6の処理と、前記メタステーブル状態を示す値を第2の変数に一時記憶させるメタステーブル状態発生のための第7の処理と、前記第2の変数に記憶された前記メタステーブル状態を示す値を出力する第8の処理と、前記入力データが検出されないときの前記メタステーブル状態のフラグ設定処理後に実行する入力データを前記第1の変数に一時記憶させる第9の処理および前記クロック信号のアクティブエッジが検出されないときの前記メタステーブル状態のフラグ設定をする第10の処理それぞれの実行後、前記入力データが検出されないときに前記第1の変数に一時記憶された入力データを出力する第11の処理とを備えることを特徴とする非同期回路の検証方法。
【請求項8】 前記第2の変数に一時記憶させる前記メタステーブル状態を示す値を、一定の初期値により疑似乱数によって設定する請求項7記載の非同期回路の検証方法。
【請求項9】 前記第2の変数に一時記憶させる前記メタステーブル状態を示す値を、ユーザ指定の任意の固定値によって設定する請求項7記載の非同期回路の検証方法。
【請求項10】 ユーザが指定したクロック信号でアクティブになる順序回路の前記内部配列要素を全て抽出し対象となる前記内部配列要素をリストアップするアクティブ順序回路のリストアップ処理と、前記リストアップ処理でリストアップされた全ての前記内部配列要素に対して前記第1から前記第11までの処理を実行した後に、次の1イベント時刻に移る処理を全イベントを対象に繰り返す全イベント繰り返し処理とを備える請求項7記載の非同期回路の検証方法。
【請求項11】 非同期回路を予め階層構造化した状態で、ユーザが指定した階層下に含まれる全ての前記順序回路の前記内部配列要素を抽出する階層内抽出処理と、抽出した前記内部配列要素に対して前記リストアップ処理および前記全イベント繰り返し処理を実行して対象となる前記順序回路を階層名で選択する請求項10記載の非同期回路の検証方法。
【請求項12】 前記階層下の前記順序回路の指定は、前記階層化に含まれる全ての順序回路を対象とする請求項11記載の非同期回路の検証方法。
【請求項13】 前記階層下の前記順序回路の指定は、前記階層下を除く全ての順序回路を対象とする請求項11記載の非同期回路の検証方法。
【請求項14】 前記階層化に含まれる全ての順序回路および前記階層下を除く全ての順序回路を対象に指定して特定の階層のみの指定をする請求項11記載の非同期回路の検証方法。
【請求項15】 同一クロックタイミングに応答して同一データ信号が与えられる順序回路間で発生した入力データ信号の伝達遅延時間差により前記順序回路間で保持される値が異なる現象を、タイミングを考慮した論理シミュレーションに準ずる状態で再現して検証する請求項1〜13または14記載の非同期回路の検証方法。
【請求項16】 検証対象の順序回路で構成する非同期回路に対し言語レベルの機能シミュレーション装置を用いて行う非同期回路の検証方法において、クロック信号の1周期内のn(n<(クロック周期のイベント数))時刻前の入力データを複数時刻分保持するために前記順序回路に予め設けた内部配列要素に一時記憶する第1の処理と、前記クロック信号のアクティブエッジを検出する第2の処理と、前記アクティブエッジを検出したとき前記入力データの変化を検出する第3の処理と、前記入力データの値が1時刻前に前記内部配列要素に一時記憶した値と異なるときの出力データ状態であるメタステーブル状態を検出する第4の処理と、前記メタステーブル状態のフラグを設定する第5の処理と、任意の時刻m(mはn時刻までの任意の1時刻)における入力データを第1の変数に一時記憶させる第6の処理と、前記メタステーブル状態を示す値を第2の変数に一時記憶させるメタステーブル状態発生のための第7の処理と、前記第2の変数に記憶された前記メタステーブル状態を示す値を出力する第8の処理と、前記入力データが検出されないときの前記メタステーブル状態のフラグ設定処理後に実行する入力データを前記第1の変数に一時記憶させる第9の処理および前記クロック信号のアクティブエッジが検出されないときの前記メタステーブル状態のフラグ設定をする第10の処理それぞれの実行後、前記入力データが検出されないときに前記第1の変数に一時記憶された入力データを出力する第11の処理とを、コンピュータに実行させるプログラム。
【請求項17】 ユーザが指定したクロック信号でアクティブになる順序回路の前記内部配列要素を全て抽出し対象となる前記内部配列要素をリストアップするアクティブ順序回路のリストアップ処理と、前記リストアップ処理でリストアップされた全ての前記内部配列要素に対して前記第1から前記第11までの処理を実行した後に、次の1イベント時刻に移る処理を全イベントを対象に繰り返す全イベント繰り返し処理とを、コンピュータに実行させるプログラム。
【請求項18】 非同期回路を予め階層構造化した状態で、ユーザが指定した階層下に含まれる全ての前記順序回路の前記内部配列要素を抽出する階層内抽出処理と、抽出した前記内部配列要素に対して前記リストアップ処理および前記全イベント繰り返し処理を実行処理を、コンピュータに実行させるプログラム。
発明の詳細な説明
【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の短縮という効果が得られるものである。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013