説明

非同期インターフェース検証装置、非同期インターフェース検証方法及びそのプログラム

【課題】RTLでの非同期インターフェースの検証を可能とする。
【解決手段】非同期インターフェース検証装置は、タイミング変更部120と、シミュレーション部121とを具備している。タイミング変更部120は、非同期インターフェースのRTL(Register Transfer Level)検証において、RTL100における非同期インターフェースの同期化部(F/F)の動作タイミングをクロックサイクルベースで変化させる。シミュレーション部121は、前記動作タイミングを変化させたRTLを用いてシミュレーションを実行し、非同期インターフェースが正常な動作をするか否かを検証する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、非同期インターフェース検証装置、非同期インターフェース検証方法及びそのプログラムに関し、特に非同期箇所を含んだ論理回路の動作をシミュレーションによって検証する非同期インターフェース検証装置、非同期インターフェース検証方法及びそのプログラムに関する。
【背景技術】
【0002】
近年、半導体集積回路のシステムの複雑化により、個々の回路を制御するクロックの数が増加している。それに伴い、あるクロック周波数で動作する回路から別のクロック周波数で動作する回路への信号の受け渡しに多くの非同期インターフェースが使われてきている。非同期インターフェースが複数ビットで1つの意味を持つ信号の受け渡しを行う場合、クロック遅延とデータ信号遅延はビット毎に異なる値を持つため、全ての複数ビットを同じタイミングで転送することを保障できない。このため、非同期インターフェースは、複数ビットの値が安定するのを待ってから信号の受け渡しを行う構成になっている。すなわち、非同期インターフェースは、複数ビットを同じタイミングで転送できなくても誤動作しない構成になっている。
【0003】
このように、非同期インターフェースは、複数ビットを同じタイミングで転送できなくても正常に動作することが必要である。設計段階において非同期インターフェースが正常な動作をするか否かの検証を行うために、従来からゲートレベルでの論理検証方法が用いられている。しかし、ゲートレベルでの論理検証では、クロック遅延とデータ信号遅延によるデータ転送タイミングズレが発生する時間が極めて短い。そのため、データ転送タイミングズレはまれにしか発生しない。従って、非同期インターフェースの検証は偶然に頼ることが大きくなり、非同期インターフェースに潜む問題を見過ごしてしまう可能性がある。さらに、ゲートレベルでの論理シミュレーションに要する時間が長いため、多数のテストベクタを実行することが難しい。そのため、限られた開発・製造期間内では十分な動作検証を行うことは困難である。
【0004】
クロック数の増加と複雑化によって非同期箇所が増加したことに伴い、検証コストの削減のためにRTL(Register Transfer Level)での非同期インターフェース検証の要求(必要性)が高まっている。
【0005】
関連する技術として特許文献1(特許第4271067号(対応米国出願公開:US2005216247(A1)))に、非同期回路検証方法及び非同期回路検証プログラムが開示されている。図1は、その特許文献1に開示された非同期回路検証システムの構成例である。この非同期回路検証システム303aは、非同期回路部(非同期インターフェース)の動作検証をRTL論理シミュレーション段階で行う。その非同期回路検証システム303aは、非同期抽出部310と制御タスク挿入部320とクロック・遅延制御部340とシミュレーション部330とを具備している。非同期抽出部310は、非同期抽出プログラムを実行して、レジスタ・トランスファ・レベルで記述された論理回路から非同期回路部を抽出する(非同期リスト312)。制御タスク挿入部320は、非同期リスト312を読み込む。そして、抽出された非同期回路部の情報及びコントロールカード321を介した設定値入力に基づき、非同期回路部で論理回路内のクロックを変調させて非同期回路部の遅延を発生するために、クロック変調タスクを論理回路に挿入する。制御タスク挿入部320は、抽出された非同期回路部の情報に基づき、非同期回路部で論理回路内の信号を遅延させるための遅延制御タスクを論理回路に挿入する。クロック・遅延制御部340は、抽出された非同期回路部に関連付けられた、クロックグループ、クロック変調値、遅延挿入箇所または信号遅延値の少なくとも1つを含む制御パラメータに基づいて、クロック変調タスクにクロック変調させて非同期回路部の遅延を発生する第1命令と遅延制御タスクに信号遅延を発生させる第2命令とを発行する。シミュレーション部330は、第1命令と第2命令とに基づいて、デバイスモデル334及びRTL331を用いて、クロック変調タスクと遅延制御タスクとが挿入された論理回路のシミュレーションを行う。クロック・遅延制御部340は、データラインに遅延を挿入する遅延制御部343とクロックラインに遅延を挿入するクロック変調部342と集計部350(ログカバレッジ部353、モニタ部354)とを備えている。
【0006】
この非同期回路部の検証では、データ転送を行うクロックエッジがクロック遅延とデータ遅延により変動する。そのため動作タイミングを期待値照合することはできない。よって、非同期回路部(非同期インターフェース)の検証においては、値のみ照合される。
【0007】
図2は、その特許文献1に開示された非同期回路検証システムの概略説明図である。非同期回路検証システム303aでは、非同期抽出プログラム311は検証対象のRTL301に基づいて、非同期リスト312(非同期パスのF/Fのリスト)を出力する。制御タスク挿入部320は、非同期リスト312に基づきRTL301に遅延を挿入するためのタスクを挿入する。さらに、制御タスク挿入部320はコントロールカード321(手修正可)と呼ぶ遅延挿入の組み合わせを記載したデータを作成する。シミュレータ333とクロック遅延制御部340は、コントロールカード321に記載した遅延挿入条件に従い、RTL301及びテストベンチ333に基づいてシミュレーションを実行する。ログ・結果351は集計部350に供給され、試験成績書352として出力される。
【0008】
図3は、その特許文献1で検証されるクロック変調による信号変化の一例である。この図では、クロック変調部342がクロック信号CLKM(クロックライン)に変調を加える様子を示している。ただし、(a1)、(b1)、及び(c1)はそれぞれクロック変調前の入力信号IN、クロック信号CLKM、及び出力信号OUTを示している。(a2)、(b2)、及び(c2)はそれぞれクロック変調後の入力信号IN、クロック信号CLKM、及び出力信号OUTを示している。
【0009】
クロック変調前では、(a1)〜(c1)に示すように、入力信号IN(a1)をクロック信号CLKM(b1)の立ち上がりエッジで取得して出力信号OUT(c1)として出力している。しかし、クロック変調後では、(a2)〜(c2)に示すように、クロック信号CLKMに遅延が付加され、入力信号INに対して遅延している。そのため、出力信号OUTの変化タイミングが、クロック信号CLKMにおける1クロック前に変わっていることがわかる。ここで、クロック信号CLKMに与えられている遅延は1クロックより小さい遅延である。
【0010】
図4は、その特許文献1で検証される信号遅延の一例である。この図では、遅延制御部343が遅延を与えたい信号S1(データライン)に変調を加える様子を示している。ただし、(a1)、及び(b1)はそれぞれ信号遅延前のクロック信号CLK、及び信号S1を示している。(a2)、及び(b2)はそれぞれ信号遅延後のクロック信号CLK、及び信号S1を示している。このように遅延を与えられた信号S1を用いて、シミュレーションが行われる。ここで、信号S1に与えられている遅延も1クロックより小さい遅延である。
【0011】
図5は、その特許文献1における遅延挿入方法の一例である。この図では、図4を実現する方法を示している。すなわち、クロック数の異なるF/F380、381(クロック信号CLKM、CLKN)間において(上図)、ビット幅を持つ信号S2(データライン)の各ビットに対して遅延挿入を行う場合を示している(下図)。具体的には、ビット幅を持つ信号(バス信号)の各ビットに対して適当な数値(Delay#1〜#5)を挿入することにより、データラインへの遅延を行う。また、クロックラインに遅延を加えたとき、F/F381の出力値が変化するので、非同期回路部の動作をRTLにおいて検証することができる。
【0012】
図6は、非同期回路検証システム(図2)のRTL論理シミュレーションによるログ・結果の一部である。この図の例では、複数ビットでのデータ受け渡しで値が変化してしまったデータは破棄され、非同期インターフェース(非同期回路部)として正常に動作している時の値のみが含まれている。すなわち、動作タイミングは期待値に含まれないことがわかる。このため、非同期インターフェースのデータ受け渡しタイミングが数クロックずれた場合にも、期待値照合により一致を確認することができる。
【0013】
図7は、一般的なバスの非同期インターフェースを示す概略図である。この非同期インターフェース290には、2つのクロック信号CLK#1とクロック信号CLK#2が供給されている。クロック信号CLK#1とクロック信号CLK#2は、周波数と位相について互いに関係のない非同期関係にあるクロック信号である。入力信号Data−In[2:0]は、クロック信号CLK#1で動作するF/F(FlipFlop)230〜232に供給される。F/F230〜232の出力信号は、それぞれクロック信号CLK#2で動作するF/F233〜235に供給される。F/F230〜232からF/F233〜235が、クロック信号CLK#1からクロック信号CLK#2への非同期インターフェースである。F/F233〜235の出力信号は、メタステーブルの伝播防止のため、それぞれクロック信号CLK#2で動作するF/F236〜238に供給された後、出力信号Data−Out[2:0]として出力される。F/F233〜235−F/F236〜238が、それぞれ同期化F/F295である。
【0014】
RTL検証においては、特に指定しない限り、この非同期インターフェース290には配線遅延はない。そのため、F/F230〜232とF/F233〜235との間のF/F間の信号遅延とクロック信号CLK#1とクロック信号CLK#2のクロックスキューは無い。従って、F/F230〜232がデータを出力するタイミングはクロック信号CLK#1の変化タイミングからずれることはない。またF/F233〜235がデータを取り込むタイミングがクロック信号CLK#2の変化タイミングからずれることもない。よって、入力信号Data−In[2:0]の値が違う値となって出力信号Data−Out[2:0]に伝播することはない。
【0015】
図8は、図7の非同期インターフェース290でのタイミングチャートの一例を示す。ただし、(a)はクロック信号CLK#1、(b)は入力信号Data−In[2:0]、(c)はクロック信号CLK#2、(d)はF/F235の出力信号、(e)はF/F234の出力信号、(f)はF/F235の出力信号、(g)はData−Out[2:0]、最下段は時間経過T1、T2、…がそれぞれ記載されている。
【0016】
Data−In[2:0]は、クロック信号CLK#1の立ち上がりエッジに同期して0x0→0x1→0x2→0x4→0x0と変化している。F/F233は、クロック信号CLK#2の立ち上がりエッジに同期して、T2で1となり、T4で0と変化する。F/F234は、クロック信号CLK#2の立ち上がりエッジに同期して、T4で1となり、T6で0となる。F/F235は、クロック信号CLK#2の立ち上がりエッジに同期して、T6で1となりT8で0となる。その結果、F/F236〜238による1クロック分の遅れを考慮して、Data−Out[2:0]は、T3で0x1に変化し、T5で0x2に変化し、T7で0x4に変化し、T9で0x0に変化している。したがって、Data−In[2:0]の値はData−Out[2:0]に正しく伝播している。
【0017】
しかし、シリコン上の半導体集積回路においては、F/F間信号遅延やクロックスキューが存在するため、出力信号Data−Out[2:0]には入力信号Data−In[2:0]とは異なる値が伝播することがある。それを示しているのが図9である。図9は、図7の非同期インターフェース290でのタイミングチャートの他の例を示す。ただし、(a)〜(g)、最下段は図17と同じである。(h)はF/F233に供給されるクロック信号CLK#2である。
【0018】
この図の例では、クロックスキューによりF/F233のクロック信号CLK#2(h)がF/F234、235のクロック信号CLK#2(c)よりも僅かに早い(約0.3クロック)場合の動作タイミングを示している。この場合、F/F233は、T3近くで1となり、T5近くで0となる。これは、図18のT2で1となり、T4で0になるという変化タイミングに対して約0.7クロック遅い。このため、Data−Out[2:0]のT5に0x3が発生する。0x3はData−In[2:0]には存在しない値である。このように、特許文献1の技術は、例えば、クロック信号を遅延させて、データが正しく伝播できていないことを再現して、非同期シミュレーションを実行している。
【先行技術文献】
【特許文献】
【0019】
【特許文献1】特許第4271067号公報(特開2005−284426号公報)
【発明の概要】
【発明が解決しようとする課題】
【0020】
上記特許文献1では、非同期インターフェースのRTLシミュレーションの速度が低下するという問題がある。その理由は、以下のとおりである。上記特許文献1では、非同期インターフェースにおける遅延を含めた動作を実現するために、データラインとクロックラインに遅延を挿入する。データラインに挿入する例としては、図5に示すようなDelay#1〜#5がある。その遅延は、例えば図3や図4に示すように、クロック信号CLKM、CLKの周期とは無関係なく設定されている。そのため、クロックエッジ以外のタイミングにデータラインの変化が発生することになる。従って、クロックエッジ以外の箇所においても更にシミュレーションを行う必要があり、シミュレーションイベントが増加してしまう。シミュレータはシミュレーションイベント毎に内部ノード値の計算を行うため、シミュレーションイベントの増加はシミュレーション演算量の増加につながる。その結果、RTLシミュレーション速度が低下してしまう。
【0021】
半導体装置の検証コストの削減が望まれている。RTL(Register Transfer Level)での非同期インターフェースの検証が望まれている。RTLシミュレーションの速度を維持しながら非同期インターフェースを検証することが求められる。
【課題を解決するための手段】
【0022】
以下に、発明を実施するための形態で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、特許請求の範囲の記載と発明を実施するための形態との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【0023】
本発明の非同期インターフェース検証装置は、タイミング変更部(120)と、シミュレーション部(121)とを具備している。タイミング変更部(120)は、非同期インターフェースのRTL(Register Transfer Level)検証において、RTL(100)における非同期インターフェースの同期化部(95)の動作タイミングをクロックサイクルベースで変化させる。シミュレーション部(121)は、前記動作タイミングを変化させたRTLを用いてシミュレーションを実行し、非同期インターフェースが正常な動作をするか否かを検証する。
【0024】
本発明の非同期インターフェース検証方法は、非同期インターフェースのRTL(Register Transfer Level)検証において、RTL(100)における非同期インターフェースの同期化部(95)の動作タイミングをクロックサイクルベースで変化させるステップ(S2、S3)と、前記動作タイミングを変化させたRTL(105)を用いてシミュレーションを実行し、非同期インターフェースが正常な動作をするか否かを検証するステップ(S4−S6)とを具備している。
【0025】
本発明のプログラムは、上記段落に記載の非同期インターフェース検証方法をコンピュータに実行させるプログラムである。
【発明の効果】
【0026】
本発明により、半導体装置の検証コストの削減が可能となる。RTLでの非同期インターフェースの検証が可能となる。RTLシミュレーションの速度を維持しながら非同期インターフェースを検証することが可能となる。
【図面の簡単な説明】
【0027】
【図1】図1は、特許文献1に開示された非同期回路検証システムの構成例である。
【図2】図2は、特許文献1に開示された非同期回路検証システムの概略説明図である。
【図3】図3は、特許文献1で検証されるクロック変調による信号変化の一例である。
【図4】図4は、特許文献1で検証される信号遅延の一例である。
【図5】図5は、特許文献1における遅延挿入方法の一例である。
【図6】図6は、非同期回路検証システムのRTL論理シミュレーションによるログ・結果である。
【図7】図7は、一般的なバスの非同期インターフェースを示す概略図である。
【図8】図8は、図7の非同期インターフェースでのタイミングチャートの一例を示す。
【図9】図9は、図7の非同期インターフェースでのタイミングチャートの他の例を示す。
【図10】図10は、本発明の第1、3の実施の形態に係る非同期インターフェース検証装置の構成を示すブロック図である。
【図11A】図11Aは、非同期パスの一例としてのバスの非同期インターフェースを示す回路図である。
【図11B】図11Bは、図11Aの非同期インターフェースにF/Fを追加した場合を示す回路図である。
【図11C】図11Cは、図11Aの非同期インターフェースにF/Fを追加した場合を示す他の回路図である。
【図11D】図11Dは、図11Aの非同期インターフェースにF/Fを追加した場合を示す更に他の回路図である。
【図12】図12は、RTL100に含まれる非同期インターフェースのRTL記述の一例を示す。
【図13】図13は、非同期パス抽出部により抽出された非同期リストの一例を示す。
【図14】図14は、非同期インターフェースの非同期検証用RTLの一例を示す。
【図15A】図15Aは、本発明の実施の形態の非同期インターフェース検証装置の動作を示すフローチャートである。
【図15B】図15Bは、本発明の実施の形態の非同期インターフェース検証装置の動作を示すフローチャートである。
【図16A】図16Aは、図11Bの非同期インターフェースでのタイミングチャートの一例を示す。
【図16B】図16Bは、図11Cの非同期インターフェースでのタイミングチャートの一例を示す。
【図16C】図16Cは、図11Dの非同期インターフェースでのタイミングチャートの一例を示す。
【図17】図17は、本発明の第2の実施の形態に係る非同期インターフェース検証装置の構成を示すブロック図である。
【図18A】図18Aは、非同期パスの一例としてのバスの非同期インターフェースを示す回路図である。
【図18B】図18Bは、図18Aの非同期インターフェースにF/Fを追加した場合を示す回路図である。
【図19A】図19Aは、非同期検証用F/Fライブラリの一例を示す。
【図19B】図19Bは、非同期インターフェースのRTLの一例を示す。
【図19C】図19Cは、非同期検証用RTLの一例を示す。
【図20】図20は、図11Aの非同期インターフェースからF/Fを削除した場合を示す回路図である。
【発明を実施するための形態】
【0028】
以下、本発明の非同期インターフェース検証装置、非同期インターフェース検証方法及びそのプログラムの実施の形態に関して、添付図面を参照して説明する。
【0029】
(第1の実施の形態)
本発明の第1の実施の形態に係る非同期インターフェース検証装置について、添付図面を参照して説明する。図10は、本発明の第1の実施の形態に係る非同期インターフェース検証装置の構成を示すブロック図である。非同期インターフェース検証装置1は、RTL記述された半導体装置の設計データにおいて非同期インターフェースを検証する。
【0030】
非同期インターフェース検証装置1は、コンピュータに例示される情報処理装置であり、図示されていないCPU(Central Processing Unit)と、記憶装置と、入力装置と、出力装置と、インターフェースとを備えている。CPU、記憶装置、入力装置、出力装置、及びインターフェースは、バスやケーブルにより互いに情報の送受信が可能に接続されている。記憶装置は、RAM(Random Access Memory)、ROM(Read Only Memory)、及びHDD(Hard Disk Drive)に例示される。入力装置は、キーボード、及びマウスに例示される。出力装置は、ディスプレイやプリンタに例示される。インターフェースは、外部のコンピュータや記憶装置や記憶媒体読取装置などと双方向通信可能に接続されている。
【0031】
CPUは、例えば記憶媒体からインターフェースを介してHDDにインストールされたコンピュータプログラムをRAMに展開する。そして、展開されたコンピュータプログラムを実行して、必要に応じて記憶装置や入力装置や出力装置のようなハードウェアを制御しながら、当該コンピュータプログラムの情報処理を実現する。記憶装置は、コンピュータプログラムを記録し、CPUが利用する情報や生成する情報を記録する。入力装置は、ユーザに操作されることにより生成される情報をCPUや記憶装置に出力する。出力装置は、CPUにより生成された情報や記憶装置の情報をユーザに認識可能に出力する。
【0032】
非同期インターフェース検証装置1は、非同期パス抽出部101と、F/F変更箇所抽出部103と、F/F変更処理部104と、非同期検証シミュレーション部106と、期待値作成シミュレーション部110と、期待値照合部108とを具備している。これらは、コンピュータプログラム(ソフトウェア)であっても良いし、コンピュータプログラムとハードウェアとの組み合わせであっても良いし、ハードウェアであっても良い。
【0033】
非同期パス抽出部101は、例えば非同期インターフェース検証装置の記憶装置から、又はネットワークを介して他の情報処理装置から、RTL100を受信する。RTL100は、RTL(Register Transfer Level)で記述された半導体装置の設計データである。非同期パス抽出部101は、RTL100から非同期パスを抽出して、非同期リスト102としてF/F変更箇所抽出部103へ出力する。
【0034】
F/F変更箇所抽出部103は、非同期リスト102から、タイミング変化用回路であるF/F(FlipFlop)を変更する箇所を抽出する。変更は、追加又は削除(後述)に例示される。F/Fを変更する箇所としては、非同期インターフェースに例示される。F/F変更箇所抽出部103は、抽出結果をF/F変更箇所のインスタンス情報としてF/F変更処理部104へ出力する。
【0035】
F/F変更処理部104は、F/F変更箇所のインスタンス情報及びRTL100に基づいて、RTL100のF/F変更箇所においてF/Fの追加(又は削除)を実行して、非同期検証用RTL105として非同期検証シミュレーション部106へ出力する。
【0036】
非同期検証シミュレーション部106は、非同期検証用RTL105について、テストベンチ109に基づいて、シミュレーションを行い、ログ・結果(F/F挿入後)107を期待値照合部108へ出力する。
【0037】
期待値作成シミュレーション部110は、RTL100について、テストベンチ109に基づいて、シミュレーションを行い、ログ・結果(期待値)を期待値照合部108へ出力する。
【0038】
期待値照合部108は、ログ・結果111とログ・結果107とを比較し、両データが同じであることを確認する。期待値照合部108は、表示装置にその照合結果を表示する。
【0039】
F/F変更箇所抽出部103及びF/F変更処理部104は、RTL100における非同期インターフェースの同期化F/Fの動作タイミングを、F/Fを挿入する(又は後述されるように削除する)ことにより、クロックサイクルベースで変化させるタイミング変更部120とみることができる。また、非同期検証シミュレーション部106及び期待値作成シミュレーション部110は、RTL100及び動作タイミングを変化させたRTL105についてシミュレーションを実行し、非同期インターフェースが正常な動作をするか否かの検証を行うシミュレーション部121とみることができる。
【0040】
図11Aは、非同期パスの一例としてのバスの非同期インターフェースを示す回路図である。この非同期インターフェース90は、非同期パス抽出部101によりRTL100から抽出された非同期パスの一つである。この非同期インターフェース90には、2つのクロック信号CLK#1とクロック信号CLK#2が供給されている。クロック信号CLK#1とクロック信号CLK#2は、周波数と位相について互いに関係のない非同期関係にあるクロック信号である。入力信号Data−In[2:0]は、クロック信号CLK#1で動作する送信側回路であるF/F130〜132に供給される。F/F130〜132の出力信号は、それぞれクロック信号CLK#2で動作する受信側回路であるF/F133〜135に供給される。F/F130〜132からF/F133〜135が、クロック信号CLK#1からクロック信号CLK#2への非同期インターフェースである。F/F133〜135の出力信号は、メタステーブルの伝播防止のため、それぞれクロック信号CLK#2で動作する受信側回路であるF/F136〜138に供給された後、出力信号Data−Out[2:0]として出力される。受信側回路であるF/F133〜135−F/F136〜138は、それぞれ同期化を行うためのF/Fとして、同期化F/F(同期化部)95とみることができる。なお、同期化部は、本実施の形態では上述のようにF/Fで構成されているが、クロック信号に同期して同期化を行う機能を有していれば上記構成に限定されるものではない。
【0041】
図11Bは、図11Aの非同期インターフェースにF/Fを追加した場合を示す回路図である。この非同期インターフェース91は、非同期インターフェース90の一つの同期化F/FにF/F150が追加されて生成されている(同期化F/F96)。すなわち、この非同期インターフェース91は、クロックスキューによりF/F133のクロック信号CLK#2が遅い場合の動作に対応している。F/F133の動作が1クロック遅れることを再現するため、図11AのF/F133のデータラインに対してF/F150を追加している。F/F変更処理部104は非同期インターフェース90を示すRTL100にF/F150を追加して、この非同期インターフェース91を示す非同期検証用RTL105を生成する。
【0042】
図11Cは、図11Aの非同期インターフェースにF/Fを追加した場合を示す他の回路図である。この非同期インターフェース92は、非同期インターフェース90の一つの同期化F/FにF/F160が追加されて生成される(同期化F/F96)。すなわち、この非同期インターフェース92は、クロックスキューによりF/F134のクロック信号CLK#2が遅い場合の動作に対応している。F/F134の動作が1クロック遅れることを再現するため、図11AのF/F134のデータラインに対してF/F160を追加している。F/F変更処理部104は非同期インターフェース90を示すRTL100にF/F160を追加して、この非同期インターフェース92を示す非同期検証用RTL105を生成する。
【0043】
図11Dは、図11Aの非同期インターフェースにF/Fを追加した場合を示す更に他の回路図である。この非同期インターフェース93は、非同期インターフェース90の一つの同期化F/FにF/F170が追加されて生成される(同期化F/F96)。すなわち、この非同期インターフェース93は、クロックスキューによりF/F135のクロック信号CLK#2が遅い場合の動作に対応している。F/F135の動作が1クロック遅れることを再現するため、図11AのF/F135のデータラインに対してF/F170を追加している。F/F変更処理部104は非同期インターフェース90を示すRTL100にF/F170を追加して、この非同期インターフェース93を示す非同期検証用RTL105を生成する。
【0044】
図12は、RTL100に含まれる非同期インターフェースのRTL記述の一例を示す。このRTL記述は、非同期インターフェース90(図11A)を示している。この非同期インターフェース90のRTL記述では、1行目〜6行目において入力データData_In[0]、Data_In[1]及びData_In[2]がF/F130、F/F131及びF/F132に入力され、8行目〜13行目においてF/F130、F/F131及びF/F132の出力がF/F133、F/F134及びF/F135に入力され、15行目〜20行目においてF/F133、F/F134及びF/F135の出力がF/F136、F/F137及びF/F138に入力され、22行目〜24行目においてF/F136、F/F137及びF/F138の出力が出力データData_Out[0]、Data_Out[1]及びData_Out[2]になることをそれぞれ示している。
【0045】
図13は、非同期パス抽出部101により抽出された非同期リスト102の一例を示す。この非同期リスト102は、非同期パスとして、非同期インターフェース90(図11A、図12)を示している。非同期インターフェース90のパス(データライン)の一つとして、非同期インターフェース90の送出側のF/Fのクロック名(2行目、“source_clock_domain:CLK#1”)とインスタンス(4行目、“from_instance:FF130_Q”)が記載されている。受け側F/Fのクロック名(3行目、“destination_clock_domain:CLK#2”)とインスタンス(5行目、“to_instance:FF133_Q”)が記載されている。また、パスの次の一つとして、非同期インターフェース90の送出側のF/Fのクロック名(7行目)とインスタンス(9行目)が記載されている。受け側F/Fのクロック名(8行目)とインスタンス(10行目)が記載されている。また、パスの更に次の一つとして、非同期インターフェース90の送出側のF/Fのクロック名(12行目)とインスタンス(14行目)が記載されている。受け側F/Fのクロック名(13行目)とインスタンス(15行目)が記載されている。F/F変更箇所抽出部103は、これらパスを1つずつ、例えば受け側F/Fのクロック名とインスタンス名との組として、順次抽出して、F/F変更処理部104に出力する。
【0046】
図14は、非同期インターフェースの非同期検証用RTL105の一例を示す。この非同期検証用RTL105は、非同期インターフェース90(図11A、図12)に対して、非同期リスト102(図13)に基づいて、F/Fを追加した非同期インターフェース91(図11B)を示している。この非同期インターフェース91の非同期検証用RTL105では、1行目〜6行目において入力データData_In[0]、Data_In[1]及びData_In[2]がF/F130、F/F131及びF/F132に入力され、8行目〜13行目においてF/F130、F/F131及びF/F132の出力がF/F133、F/F134及びF/F135に入力され、15行目〜20行目においてF/F150、F/F134及びF/F135の出力がF/F136、F/F137及びF/F138に入力され、22行目〜25行目においてF/F133の出力がF/F150に入力され、27行目〜29行目においてF/F136、F/F137及びF/F138の出力が出力データData_Out[0]、Data_Out[1]及びData_Out[2]になることをそれぞれ示している。
【0047】
このとき、F/F変更処理部104は、非同期インターフェース90のRTL記述(図12)から受け側F/Fのインスタンスが出力する信号(FF133_Q:図13の5行目)を代入する記述(図12の17行目)を検索する。そして、追加するF/Fの出力信号(FF150_Q)に書き換える(図14の17行目)。更に、非同期インターフェース90の受け側F/Fのクロック信号(CLK#2:図13の3行目)で動作するF/Fの記述を追加する(図14の27行目から29行目)。
【0048】
次に、本発明の第1の実施の形態の非同期インターフェース検証装置の動作(非同期インターフェース検証方法及びそのプログラム)について説明する。本実施の形態では、RTL検証において同期化F/F95の段数(F/Fの個数)を変化させることで出力信号Data−Out[2:0]が入力信号Data−In[2:0]と異なるという上述の動作を再現し、非同期インターフェースの検証を可能とする。図15A及び図15Bは、本発明の実施の形態の非同期インターフェース検証装置の動作(非同期インターフェース検証方法及びそのプログラム)を示すフローチャートである。図15Aは全体のフローを示し、図15Bは図15AにおけるステップS3(F/F変更箇所抽出部103)の詳細を示している。
【0049】
非同期パス抽出部101は、半導体装置(例示:図11Aに示す非同期インターフェース90を含む)の設計データであるRTL100(例示:図12に示す非同期インターフェース90のRTL記述を含む)を受信する。非同期パス抽出部101は、RTL100から非同期パスを抽出する。そして、非同期リスト102(例示:図13に示す非同期インターフェース90の非同期パスを含む)としてF/F変更箇所抽出部103へ出力する(ステップS1)。
【0050】
一方、期待値作成シミュレーション部110は、RTL100について、テストベンチ109に基づいて、シミュレーションを行い、ログ・結果(期待値)を期待値照合部108へ出力する(ステップS2)。ステップS2は、ステップS6より前であればいつ行っても良いが、期待値作成シミュレーション部110はRTL100を用いるので、同じRTL100に対して1度行えばよい。
【0051】
F/F変更箇所抽出部103は、非同期リスト102(例示:図13を含む)からF/Fを追加する箇所を抽出する。F/F変更箇所抽出部103は、抽出結果をF/F変更箇所のインスタンス情報としてF/F変更処理部104へ出力する(ステップS3)。例えば、図13の非同期リスト102では、F/F変更箇所抽出部103は、受け側のインスタンス(5、10、15行目、例示:“to_instance:FF133_Q”)を参照して、先頭(一番目)の1パス分の受け側F/Fのクロック名とインスタンス名との組(例示:CLK#2、F/F133)を抽出して、インスタンス情報としてF/F変更処理部104に出力する(ステップS3;ステップS11)。
【0052】
次に、フローチャート上L1に進み、F/F変更処理部104は、その先頭(一番目)の1パス分のインスタンス情報及びRTL100に基づいて、RTL100におけるF/F変更箇所(インスタンス情報に対応する位置)にF/F(例示:F/F150)を追加する。そして、非同期検証用RTL105(例示:図14に示すF/F150が追加された非同期インターフェース91を含む)として非同期検証シミュレーション部106へ出力する(ステップS4)。
【0053】
続いて、非同期検証シミュレーション部106は、非同期検証用RTL105について、テストベンチ109に基づいて、シミュレーションを行い、ログ・結果(F/F挿入後)107を期待値照合部108へ出力する(ステップS5)。
【0054】
期待値照合部108は、ログ・結果111とログ・結果107とを比較し、両データが同じであるか否かを確認し、確認結果を出力装置(例示:表示装置、プリンタ、記憶装置)に出力する(ステップS6)。
【0055】
続いて、フローチャート上L2に進み、F/F変更箇所抽出部103は、先頭(一番目)の1パス分のインスタンス情報に関するシミュレーション(F/F変更処理部104、非同期検証シミュレーション部106、期待値作成シミュレーション部110及び期待値照合部108の動作;ステップS4〜S6)が完了したか否かを確認する(ステップS3;ステップS12)。
【0056】
シミュレーションが完了していない場合(ステップS3;ステップS12:No)、シミュレーションが完了するまで待つ。シミュレーションが完了している場合(ステップS3;ステップS12:Yes)、F/F変更箇所抽出部103は、次のインスタンス情報が有るか否かを確認する(ステップS3;ステップS13)。次のインスタンス情報が無い場合(ステップS3;ステップS13:No)、フローチャート上L3に進み、非同期インターフェース検証装置の動作(非同期インターフェース検証方法及びそのプログラム)は終了となる。次のインスタンス情報が有る場合(ステップS3;ステップS13:Yes)、次の1パス分のインスタンス情報(受け側のF/Fのクロック名とインスタンス名との組)を抽出して、F/F変更処理部104に出力する(ステップS3;ステップS14)。例えば、次(二番目)の1パス分の受け側F/Fのクロック名とインスタンス名との組(例示:CLK#2、F/F134)を抽出して、インスタンス情報としてF/F変更処理部104に出力する。
【0057】
その後、フローチャート上L1に進み、F/F変更処理部104(ステップS4)、非同期検証シミュレーション部106(ステップS5)及び期待値照合部108(ステップS6)は、各処理を実行する。そして、ステップS3(ステップS14)〜ステップS6は、F/F変更箇所抽出部103が順番に抽出するインスタンス情報毎に、インスタンス情報が無くなるまで実施される。
【0058】
図16Aは、図11B(図14)の非同期インターフェース91でのタイミングチャートの一例を示す。既述のように、この非同期インターフェース91は、F/F133のデータラインにF/F150が追加されて生成されている。ただし、(a)はクロック信号CLK#1、(b)は入力信号Data−In[2:0]、(c)はクロック信号CLK#2、(d)はF/F135の出力信号、(e)はF/F134の出力信号、(f)はF/F150の出力信号、(g)はData−Out[2:0]、最下段は時間経過T1、T2、…がそれぞれ記載されている。
【0059】
Data−In[2:0]は、クロック信号CLK#1の立ち上がりエッジに同期して0x0→0x1→0x2→0x4→0x0と変化している。F/F133は、クロック信号CLK#2の立ち上がりエッジに同期して、T2で1となり((f)の破線)、T4で0と変化する。しかし、ここでは、F/F150を追加して、F/F150の出力をF/133の出力として実質的に取り扱う。そして、F/F150の出力は、F/133の出力と比較して1クロック遅れるため、クロック信号CLK#2の立ち上がりエッジに同期して、T3で1となり、T5で0と変化する。すなわち、F/F133の出力の変化タイミングが1クロック遅れる動作を、F/F150を挿入することで、クロックイベントに同期したタイミングのみで再現している。
【0060】
F/F134は、クロック信号CLK#2の立ち上がりエッジに同期して、T4で1となり、T6で0となる。F/F135は、クロック信号CLK#2の立ち上がりエッジに同期して、T6で1となりT8で0となる。その結果、F/F136〜138による1クロック分の遅れを考慮して、Data−Out[2:0]は、通常、T3で0x1に変化し、T5で0x2に変化し、T7で0x4に変化し、T9で0x0に変化する。しかし、F/F133の出力が1クロック遅れるため、Data−Out[2:0]は、T4で0x1に変化し、T5で0x3に変化し、T6で0x2に変化し、T7で0x4に変化し、T9で0x0に変化する。すなわち、Data−Out[2:0]のT5に0x3が発生する。0x3はData−In[2:0]には存在しない値である。このように、本実施の形態では、例えば、クロック信号を遅延させて、データが正しく伝播できていないことを再現して、非同期シミュレーションを実行できる。
【0061】
図16Bは、図11Cの非同期インターフェース92でのタイミングチャートの一例を示す。既述のように、この非同期インターフェース92は、F/F134のデータラインにF/F160が追加されて生成されている。ただし、(a)はクロック信号CLK#1、(b)は入力信号Data−In[2:0]、(c)はクロック信号CLK#2、(d)はF/F135の出力信号、(e)はF/F160の出力信号、(f)はF/F133の出力信号、(g)はData−Out[2:0]、最下段は時間経過T1、T2、…がそれぞれ記載されている。
【0062】
Data−In[2:0]は、クロック信号CLK#1の立ち上がりエッジに同期して0x0→0x1→0x2→0x4→0x0と変化している。F/F134は、クロック信号CLK#2の立ち上がりエッジに同期して、T4で1となり((e)の破線)、T6で0と変化する。しかし、ここでは、F/F160を追加して、F/F160の出力をF/134の出力として実質的に取り扱う。そして、F/F160の出力は、F/134の出力と比較して1クロック遅れるため、クロック信号CLK#2の立ち上がりエッジに同期して、T5で1となり、T7で0と変化する。すなわち、F/F134の出力の変化タイミングが1クロック遅れる動作を、F/F160を挿入することで、クロックイベントに同期したタイミングのみで再現している。
【0063】
F/F133は、クロック信号CLK#2の立ち上がりエッジに同期して、T2で1となり、T4で0となる。F/F135は、クロック信号CLK#2の立ち上がりエッジに同期して、T6で1となりT8で0となる。その結果、F/F136〜138による1クロック分の遅れを考慮して、Data−Out[2:0]は、通常、T3で0x1に変化し、T5で0x2に変化し、T7で0x4に変化し、T9で0x0に変化する。しかし、F/F134の出力が1クロック遅れるため、Data−Out[2:0]は、T3で0x1に変化し、T5で0x0に変化し、T6で0x2に変化し、T7で0x6に変化し、T8で0x4に変化し、T9で0x0に変化する。すなわち、Data−Out[2:0]のT5に0x0が発生し、T7に0x6が発生する。0x0及び0x6はData−In[2:0]には存在しない値である。このように、本実施の形態では、例えば、クロック信号を遅延させて、データが正しく伝播できていないことを再現して、非同期シミュレーションを実行できる。
【0064】
図16Cは、図11Dの非同期インターフェース93でのタイミングチャートの一例を示す。既述のように、この非同期インターフェース93は、F/F135のデータラインにF/F170が追加されて生成されている。ただし、(a)はクロック信号CLK#1、(b)は入力信号Data−In[2:0]、(c)はクロック信号CLK#2、(d)はF/F170の出力信号、(e)はF/F134の出力信号、(f)はF/F133の出力信号、(g)はData−Out[2:0]、最下段は時間経過T1、T2、…がそれぞれ記載されている。
【0065】
Data−In[2:0]は、クロック信号CLK#1の立ち上がりエッジに同期して0x0→0x1→0x2→0x4→0x0と変化している。F/F135は、クロック信号CLK#2の立ち上がりエッジに同期して、T6で1となり((d)の破線)、T8で0と変化する。しかし、ここでは、F/F170を追加して、F/F170の出力をF/135の出力として実質的に取り扱う。そして、F/F170の出力は、F/135の出力と比較して1クロック遅れるため、クロック信号CLK#2の立ち上がりエッジに同期して、T7で1となり、T9で0と変化する。すなわち、F/F135の出力の変化タイミングが1クロック遅れる動作を、F/F170を挿入することで、クロックイベントに同期したタイミングのみで再現している。
【0066】
F/F133は、クロック信号CLK#2の立ち上がりエッジに同期して、T2で1となり、T4で0となる。F/F134は、クロック信号CLK#2の立ち上がりエッジに同期して、T4で1となりT6で0となる。その結果、F/F136〜138による1クロック分の遅れを考慮して、Data−Out[2:0]は、通常、T3で0x1に変化し、T5で0x2に変化し、T7で0x4に変化し、T9で0x0に変化する。しかし、F/F135の出力が1クロック遅れるため、Data−Out[2:0]は、T3で0x1に変化し、T5で0x2に変化し、T7で0x0に変化し、T8で0x4に変化し、T10で0x0に変化する。すなわち、Data−Out[2:0]のT7に0x0が発生する。0x0はData−In[2:0]には存在しない値である。このように、本実施の形態では、例えば、クロック信号を遅延させて、データが正しく伝播できていないことを再現して、非同期シミュレーションを実行できる。
【0067】
なお、上記実施の形態では、遅延用の素子(タイミング変化用回路)として、F/Fを用いている。しかし、本実施の形態はこの例に限定されるものではなく、クロックに同期して動作する素子であって、挿入により1クロックの遅延(クロック単位の遅延)を発生させる素子であれば、他の素子であっても良い。また、上記実施の形態では、遅延用の素子(タイミング変化用回路)としてのF/Fを、例えばF/F133の後段に追加・挿入している。しかし、本実施の形態はこの例に限定されるのではなく、例えばF/F133の前段に追加・挿入してもよい。
【0068】
以上示されるように、本実施の形態により、RTLでの非同期インターフェースの検証が可能となる。また、本実施の形態により、特許文献1の方法と比較して、シミュレーション時間を著しく短縮することが出来る。その理由は、以下のとおりである。本実施の形態では、例えば、非同期インターフェース90(図11A)に、F/F133の動作を1クロック遅らせることに対応させて、F/F150を追加している(図11B)。これにより、図16Aのように非同期パスの遅延を再現させることができる。このとき、遅延素子として、クロック信号に同期して動作するF/F150を用いている。そのため、F/F133の出力(図中(f)F/F150)がT3で1となりT5で0となる動作とすることができる。この動作は、F/F150を挿入しないときの動作、すなわち、図8に示すような、F/F233の出力(f)がT2で1となりT4で0となる動作と比較して、変化タイミングが1クロック遅れる動作である。このように、本実施の形態では、非同期パスの遅延を、クロックイベントに同期したタイミングのみで再現している。非同期インターフェースによるタイミングずれがクロックイベントに同期したタイミングで行われるため、特許文献1の方法と異なり、シミュレーションイベントが増加することはない。そのため、特許文献1の方法と比較して、シミュレーション時間を著しく短縮することが出来る。その結果、半導体装置の検証コストの削減が可能となる。
【0069】
また、本実施の形態では、非同期インターフェースにF/Fのような素子を追加して遅延を発生させている。したがって、シミュレーションにおいてエラーが発生した場合に、そのエラーが、その非同期インターフェースの遅延によるエラーであるか否かを、エラーの発生箇所の素子により容易に特定することができる。それにより、デバッグにかかる時間を短縮することができる。その結果、半導体装置の検証コストの削減が可能となる。
【0070】
(第2の実施の形態)
本発明の第2の実施の形態に係る非同期インターフェース検証装置について、添付図面を参照して説明する。第1の実施の形態では、非同期インターフェースにおける複数のパスのうち、1つのパスに1つの遅延用F/F(例示:図11BのF/F150)をタイミング変化用回路として挿入している。しかし、本実施の形態では、1つの非同期インターフェースにおける複数のパスを一つの同期化F/Fモジュールとし、それに対応して、1つのパスに1つの遅延用F/Fを挿入した検証用の同期化F/Fモジュール(タイミング変化用回路)を予め準備しておく。検証の際に、同期化F/Fモジュールをその検証用の同期化F/Fモジュールに置き換えるようにしている。それにより、RTL100に対する修正量を減少させることができる。以下、詳細に説明する。
【0071】
図17は、本発明の第2の実施の形態に係る非同期インターフェース検証装置の構成を示すブロック図である。非同期インターフェース検証装置1aは、RTL記述された半導体装置の設計データにおいて非同期インターフェースを検証する。図10の非同期インターフェース検証装置1と比較して、非同期検証用F/Fライブラリ180を更に具備している。
【0072】
非同期検証用F/Fライブラリ180は、1つのパスに1つの遅延用F/Fを挿入した検証用の同期化F/Fモジュールを備えている。非同期検証用F/Fライブラリ180は、その検証用の同期化F/Fモジュールをシミュレーション用に非同期検証シミュレーション部106(ステップS5用)及び期待値作成シミュレーション部110(ステップS2用)へ出力する。
【0073】
F/F変更処理部104は、F/F変更箇所のインスタンス情報及びRTL100に基づいて、RTL100のF/F変更箇所を含む同期化F/Fモジュールを、検証用の同期化F/Fモジュールに置き換え、非同期検証用RTL105として非同期検証シミュレーション部106へ出力する。
【0074】
その他の構成については、非同期検証シミュレーション部106が更に非同期検証用F/Fライブラリ180を用いてシミュレーションを行う点、及び、期待値作成シミュレーション部110が更に非同期検証用F/Fライブラリ180を用いてシミュレーションを行う点を除いては、第1の実施の形態と同様である。
【0075】
図18Aは、非同期パスの一例としてのバスの非同期インターフェースを示す回路図である。この非同期インターフェース90aは、非同期パス抽出部101によりRTL100から抽出された非同期パスの一つである。この非同期インターフェース90には、2つのクロック信号CLK#1とクロック信号CLK#2が供給されている。クロック信号CLK#1とクロック信号CLK#2は、周波数と位相について互いに関係のない非同期関係にあるクロック信号である。入力信号Data−In[3:0]は、クロック信号CLK#1で動作する送信側回路であるFF(FlipFlop)11〜31に供給される。イネーブル信号Enableは、クロック信号CLK#1で動作するFF41に供給される。FF11〜31の出力信号は、それぞれクロック信号CLK#2で動作する受信側回路FF12〜32に供給される。FF41の出力信号は、クロック信号CLK#2で動作するFF42に供給される。FF11〜31からFF12〜32が、クロック信号CLK#1からクロック信号CLK#2への非同期インターフェースである。FF12〜32の出力信号は、メタステーブルの伝播防止のため、それぞれクロック信号CLK#2で動作する受信側回路であるFF13〜33に供給された後、出力信号Pre−Data−Out[3:0]としてFF04へ出力される。同様にFF42の出力信号は、クロック信号CLK#2で動作するFF43に供給されたのち、FF04へイネーブル信号Enableとして出力される。FF04は、イネーブル信号Enableに応答して、クロック信号CLK#2に同期して、出力信号Pre−Data−Out[3:0]を出力信号Data−Out[3:0]として出力する。受信側回路であるFF12〜42とFF13〜43とは、F/Fとして、同期化を行うためのF/Fモジュールとして、同期化F/Fモジュール(同期化モジュール)95aとみることができる。このような構成により、FF11〜FF31の出力の変化がそれぞれFF12〜32に伝播した後に、FF41の出力が変化することで、非同期パスによるデータ化けはFF04の出力には現れない。非同期インターフェースはこのような制御を行い、非同期パスによるデータ化けが後段に伝播しないようにしている。
【0076】
図18Bは、図18Aの非同期インターフェースにF/Fを追加した場合を示す回路図である。この非同期インターフェース91aは、同期化F/Fモジュール95aを同期化F/Fモジュール96aに置き換えられている。ただし、同期化F/Fモジュール96aは、同期化F/Fモジュール95aのパスの一つであるFF12とFF13との間のデータラインにFF12’が追加されて生成されている。すなわち、一つの同期化F/Fに遅延用のFF12’が挿入されている。この非同期インターフェース91aは、クロックスキューによりFF12のクロック信号CLK#2が遅い場合の動作に対応している。FF12の動作が1クロック遅れることを再現するため、図18AのFF12のデータラインに対してFF12’を追加している。F/F変更処理部104は非同期インターフェース90aを示すRTL100において、同期化F/Fモジュール95aを同期化F/Fモジュール96aに置き換えて(FF12’を追加して)、この非同期インターフェース91aを示す非同期検証用RTL105を生成する。
【0077】
図示は省略するが、以下同様に、同期化F/Fモジュール95aにおいて、他のパスの一つであるFF22とFF23との間のデータラインにFF(22’)を追加した同期化F/Fモジュール(97a)や、更に他のパスの一つであるFF32とFF33との間のデータラインにFF(32’)を追加した同期化F/Fモジュール(98a)や、更に他のパスの一つであるFF42とFF43との間のデータラインにFF(42’)を追加した同期化F/Fモジュール(99a)などを検証用の同期化F/Fとして用いることができる。
【0078】
図19A〜図19Cは、非同期検証用F/Fライブラリ180の一例、非同期インターフェースのRTL100の一例、及び非同期検証用RTL105の一例をそれぞれ示す。図19Aに示されるように、非同期検証用F/Fライブラリ180では、1行目〜11行目において、同期化F/FモジュールとしてSYNCRONIZERモジュールが定義されている。SYNCHRONIZERモジュールは、FF(FlipFlop)2段で構成されたモジュールである。これは、図18Aの同期化F/Fモジュール95aに対応する。また、13行目〜24行目において、検証用の同期化F/FモジュールとしてSYNCRONIZER2モジュールが定義されている。SYNCHRONIZER2モジュールは、FF3段で構成されたモジュールである。これは、図18Bの同期化F/Fモジュール96aに対応する。そのほか、26行目〜35行目において、F/Fモジュールが定義されている。これは、図18Aや図18BのFF11〜FF41に対応している。
【0079】
図19Bには、RTL100において、1行目〜7行目に非同期インターフェース90a(図18A)が定義されている。このRTL100では、非同期インターフェース90aの同期化F/Fモジュール95aとして、非同期検証用F/Fライブラリ180で定義されたSYNCRONIZERモジュールが用いられている(6行目)。このようなRT100に対して、F/F変更処理部104はF/F変更箇所抽出部103からF/F変更箇所のインスタンス情報を受信して、インスタンス情報に対応するSYNCHRONIZERモジュールを、非同期検証用F/Fライブラリ180で定義されたSYNCHRONIZER2モジュールに差し替える(図15AのステップS3)。これにより、非同期インターフェース90a(図18A)に遅延用のFF12’を追加することができる。このようにして生成された非同期検証用RTL105では、非同期インターフェース90aは、非同期インターフェース91a(図18B)のように変わる。それを示しているのが図19Cである。
【0080】
図19Cには、非同期検証用RTL105において、1行目〜7行目に非同期インターフェース91a(図18B)が定義されている。この非同期検証用RTL105では、非同期インターフェース91aの同期化F/Fモジュール96aとして、非同期検証用F/Fライブラリ180で定義されたSYNCRONIZER2モジュールが用いられている(6行目)。このとき、RTL100から非同期検証用RTL105への変更は、単にSYNCHRONIZERモジュールを、SYNCHRONIZER2モジュールに一行だけ差し替えることで実行可能である。
【0081】
次に、本発明の第2の実施の形態の非同期インターフェース検証装置の動作(非同期インターフェース検証方法及びそのプログラム)については、ステップS4において、F/F変更処理部104が、F/F変更箇所にF/Fを追加するのではなく、F/F変更箇所を含む同期化F/Fモジュールを、検証用の同期化F/Fモジュールに置き換える点、ステップS5において、非同期検証シミュレーション部106が更に非同期検証用F/Fライブラリ180を用いる点、ステップS2において、期待値作成シミュレーション部110が更に非同期検証用F/Fライブラリ180を用いる点、を除いては、第1の実施の形態と同様である。
【0082】
本実施の形態により、第1の実施の形態と同様の効果を得ることができる。
加えて、第1の実施の形態と比較して、RTL100に対する修正量を減らすことができる。具体的には、第1の実施の形態では、図14では、22行目から25行目の4行の追加と17行目の1行の修正を必要としている。しかし、本実施の形態では、図19Cにおいて6行目の1行の修正のみでよい。このように、RTL100の修正量が減ることで、F/F変更処理104の処理内容が簡略化され、非同期インターフェース検証装置の処理時間を短縮することができる。
【0083】
(第3の実施の形態)
本発明の第3の実施の形態に係る非同期インターフェース検証装置について、添付図面を参照して説明する。第1の実施の形態では、非同期インターフェース内の同期化F/F(例示:図11Aの同期化F/F95)のパスに1つの遅延用F/F(例示:図11BのF/F150)をタイミング変化用回路として挿入している。しかし、本実施の形態では、同期化F/Fのパスから1つのF/F(タイミング変化用回路)を削除する。このような方法によっても、出力信号Data−Out[2:0]が入力信号Data−In[2:0]と異なるという上述の動作を再現し、非同期インターフェースの検証を可能とすることができる。以下、詳細に説明する。
【0084】
本発明の第3の実施の形態に係る非同期インターフェース検証装置の構成については、第1の実施の形態(図10)と同様である。ただし、F/F変更箇所抽出部103が抽出したF/Fを追加する箇所に対して、F/F変更処理部104がF/Fを追加するのではなく、F/Fを削除するという点で、第1の実施の形態と異なっている。
【0085】
図20は、図11Aの非同期インターフェースからF/Fを削除した場合を示す回路図である。すなわち、F/Fの削除を行った場合での非同期検証用RTL105の回路構造である。この非同期インターフェース94は、非同期インターフェース90の一つの同期化F/F95からF/F136が削除されて生成されている(同期化F/F99)。すなわち、この非同期インターフェース94は、クロックスキューによりF/F133のクロック信号CLK#2が速い場合の動作に対応している。F/F133の動作が1クロック速まる(又は他のF/F134、F/F135の動作が1クロック遅くなる)ことを再現するために、図11AのF/F133のデータラインにおいてF/F136を削除している。F/F変更処理部104は非同期インターフェース90を示すRTL100からF/F136を削除して、この非同期インターフェース94を示す非同期検証用RTL105を生成する。
【0086】
次に、本発明の第3の実施の形態の非同期インターフェース検証装置の動作(非同期インターフェース検証方法及びそのプログラム)については、ステップS4において、F/F変更処理部104が、F/F変更箇所にF/Fを追加するのではなく、F/Fを削除するという点を除いては、第1の実施の形態と同様である。
【0087】
本実施の形態により、第1の実施の形態と同様の効果を得ることができる。
また、F/Fを削除するため、非同期検証用RTL105の記述量をRTL100に対して減らすことができる。非同期検証用RTL105におけるF/F数が減少することにより、第1の実施の形態と比較して、シミュレーションにおけるメモリ使用量を削減できる。
【0088】
また、本実施の形態では、非同期インターフェースにおける複数のパスのうち、1つのパスから1つのF/F(タイミング変化用回路)を削除している。しかし、第2の実施の形態と同様に考えて、1つの非同期インターフェースにおける複数のパスを一つの同期化F/Fモジュールとし、それに対応して、1つのパスから1つのF/Fを削除した検証用の同期化F/Fモジュール(タイミング変化用回路)を予め準備しておき、検証の際に、同期化F/Fモジュールをその検証用の同期化F/Fモジュールに置き換えるようにしても良い。それにより、第2の実施の形態と同様の効果を更に得ることができる。
【0089】
本発明のプログラム、データ構造は、コンピュータ読取可能な記憶媒体に記録され、その記憶媒体から情報処理装置に読み込まれても良い。
【0090】
本発明は上記各実施の形態に限定されず、本発明の技術思想の範囲内において、各実施の形態は適宜変形又は変更され得ることは明らかである。
【符号の説明】
【0091】
90、90a バスの非同期インターフェース
91〜93、91a バスの非同期インターフェース(F/F150、160、170追加)
94 バスの非同期インターフェース(F/F136削除)
95 同期化F/F
95a 同期化F/Fモジュール
96〜98 同期化F/F(F/F150、160、170追加)
96a 同期化F/Fモジュール(FF12’追加)
99 同期化F/F(F/F136削除)
100 RTL
101 非同期パス抽出部
102 非同期リスト
103 F/F変更箇所抽出部
104 F/F変更処理部
105 非同期検証用RTL
106 非同期検証用シミュレーション部
107 ログ・結果(F/F挿入後)
108 期待値照合部
109 テストベンチ
110 期待値作成シミュレーション部
111 ログ・結果(期待値)
130〜132 送信側回路F/F
133〜138 受信側回路F/F
150、160、170 追加F/F
180 非同期検証用F/Fライブラリ
FF11〜FF41 送信側回路F/F
FF12〜FF42、F13〜F43 受信側回路F/F
FF12’ 追加F/F
FF04 出力F/F
290 バスの非同期インターフェース
295 同期化F/F
230〜232 送信側回路F/F
233〜238 受信側回路F/F
303a 従来例の非同期インターフェース検証システム
301 RTL
310 非同期抽出部
311 非同期抽出プログラム
312 非同期リスト
320 制御タスク挿入部
321 コントロールカード
330 シミュレーション部
331 RTL
332 テストベンチ
333 シミュレータ
334 デバイスモデル
340 クロック・遅延制御部
341 コントロール部
342 クロック変調部
343 遅延制御部
350 集計部
351 ログ・結果
352 試験成績表
353 ログ・カバレッジ部
354 モニタ部
380、381 F/F

【特許請求の範囲】
【請求項1】
非同期インターフェースのRTL(Register Transfer Level)検証において、RTLにおける非同期インターフェースの同期化部の動作タイミングをクロックサイクルベースで変化させるタイミング変更部と、
前記動作タイミングを変化させたRTLを用いてシミュレーションを実行し、非同期インターフェースが正常な動作をするか否かを検証するシミュレーション部と
を具備する
非同期インターフェース検証装置。
【請求項2】
請求項1に記載の非同期インターフェース検証装置において、
前記タイミング変更部は、
前記RTLより抽出された前記非同期インターフェースにおけるタイミング変化用回路の変更箇所を抽出する変更箇所抽出部と、
前記RTLでの前記抽出された変更箇所の前段又は後段においてタイミング変化用回路を追加又は削除して非同期検証用RTLを生成する変更処理部と
を備え、
前記シミュレーション部は、前記非同期検証用RTLを用いてシミュレーションを実行する
非同期インターフェース検証装置。
【請求項3】
請求項2に記載の非同期インターフェース検証装置において、
前記変更箇所は、前記同期化部としての同期化F/F(FlipFlop)における初段のF/Fであり、
前記タイミング変化用回路は前記同期化部のクロックに同期して動作する
非同期インターフェース検証装置。
【請求項4】
請求項2又は3に記載の非同期インターフェース検証装置において、
前記RTLより抽出された複数の非同期インターフェースの各々について、前記変更箇所抽出部、前記変更処理部及び前記シミュレーション部は、各動作を実行する
非同期インターフェース検証装置。
【請求項5】
請求項2乃至4のいずれか一項に記載の非同期インターフェース検証装置において、
前記変更処理部は、
前記同期化部の複数のパスをまとめた同期化モジュールを、前記タイミング変化用回路を含んだタイミング変化用同期化モジュールで置き換えることにより、前記抽出された変更箇所の前段又は後段においてタイミング変化用回路を追加又は削除して非同期検証用RTLを生成する
非同期インターフェース検証装置。
【請求項6】
請求項1乃至5のいずれか一項に記載の非同期インターフェース検証装置において、
前記タイミング変化用回路は、F/Fである
非同期インターフェース検証装置。
【請求項7】
非同期インターフェースのRTL(Register Transfer Level)検証において、RTLにおける非同期インターフェースの同期化部の動作タイミングをクロックサイクルベースで変化させるステップと、
前記動作タイミングを変化させたRTLを用いてシミュレーションを実行し、非同期インターフェースが正常な動作をするか否かを検証するステップと
を具備する
非同期インターフェース検証方法。
【請求項8】
請求項7に記載の非同期インターフェース検証方法において、
前記動作タイミングをクロックサイクルベースで変化させるステップは、
前記RTLより抽出された前記非同期インターフェースにおけるタイミング変化用回路の変更箇所を抽出するステップと、
前記RTLでの前記抽出された変更箇所の前段又は後段においてタイミング変化用回路を追加又は削除して非同期検証用RTLを生成するステップと
を備え、
前記検証するステップは、前記非同期検証用RTLを用いてシミュレーションを実行するステップを備える
非同期インターフェース検証方法。
【請求項9】
請求項8に記載の非同期インターフェース検証方法において、
前記変更箇所は、前記同期化部としての同期化F/F(FlipFlop)における初段のF/Fであり、
前記タイミング変化用回路は前記同期化部のクロックに同期して動作する
非同期インターフェース検証方法。
【請求項10】
請求項8又は9に記載の非同期インターフェース検証方法において、
前記RTLより抽出された複数の非同期インターフェースの各々について、前記変更箇所を抽出するステップ、前記非同期検証用RTLを生成するステップ及び前記非同期検証用RTLを用いて前記シミュレーションを実行するステップを実行する
非同期インターフェース検証方法。
【請求項11】
請求項8乃至10のいずれか一項に記載の非同期インターフェース検証方法において、
前記非同期検証用RTLを生成するステップは、
前記同期化部の複数のパスをまとめた同期化モジュールを、前記タイミング変化用回路を含んだタイミング変化用同期化モジュールで置き換えることにより、前記抽出された変更箇所の前段又は後段においてタイミング変化用回路を追加又は削除して非同期検証用RTLを生成するステップを備える
非同期インターフェース検証方法。
【請求項12】
請求項7乃至11のいずれか一項に記載の非同期インターフェース検証方法において、
前記タイミング変化用回路は、F/Fである
非同期インターフェース検証方法。
【請求項13】
請求項7乃至12のいずれか一項に記載の非同期インターフェース検証方法をコンピュータに実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11A】
image rotate

【図11B】
image rotate

【図11C】
image rotate

【図11D】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15A】
image rotate

【図15B】
image rotate

【図16A】
image rotate

【図16B】
image rotate

【図16C】
image rotate

【図17】
image rotate

【図18A】
image rotate

【図18B】
image rotate

【図19A】
image rotate

【図19B】
image rotate

【図19C】
image rotate

【図20】
image rotate


【公開番号】特開2013−37596(P2013−37596A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2011−174518(P2011−174518)
【出願日】平成23年8月10日(2011.8.10)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】