JP4153699B2 - 機能検証記述生成装置 - Google Patents
機能検証記述生成装置 Download PDFInfo
- Publication number
- JP4153699B2 JP4153699B2 JP2002011953A JP2002011953A JP4153699B2 JP 4153699 B2 JP4153699 B2 JP 4153699B2 JP 2002011953 A JP2002011953 A JP 2002011953A JP 2002011953 A JP2002011953 A JP 2002011953A JP 4153699 B2 JP4153699 B2 JP 4153699B2
- Authority
- JP
- Japan
- Prior art keywords
- information
- verification
- signal
- timing diagram
- terminal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、機能検証装置に関し、特にハードウェア機能記述言語の形式で記述された、たとえばCPU(中央演算処理装置)やDSP(デジタル信号処理装置)などのデジタル回路全般の機能検証における機能検証記述の生成装置に適用して有効な技術に関する。
【0002】
【従来の技術】
本発明者が検討したところによれば、機能検証装置に関しては、たとえば特開平6−332971号公報に記載される技術などが挙げられる。前記特開平6−332971号公報には、端子情報と、この端子の入出力信号波形と、この入出力信号波形のタイミング制約情報を伴うタイミングダイアグラムからHDL(ハードウェア機能記述言語)形式の機能モデルを生成するHDL生成手段を有する機能モデル生成装置が開示されている。
【0003】
【発明が解決しようとする課題】
ところで、前記特開平6−332971号公報の機能モデル生成装置では、タイミングダイアグラム上に検証項目を明確に記述する手段が提供されておらず、さらに明確化された機能検証項目を検証するための機能検証記述の生成も行っていない。特に、HDL以外の検証記述言語による記述生成は行っていない。
【0004】
また、本発明者が、前記のような機能検証装置に関して検討した結果、以下のようなことが明らかとなった。
【0005】
たとえば、論理回路からなる回路素子について、近年、HDLを入力する高性能の機能シミュレータの出現に伴い、ハードウェアの機能設計をHDLで行うという設計スタイルが定着してきた。また、近年、検証すべき論理回路の大規模化に伴い、機能シミュレータを用いた機能検証を効率的に行うための検証記述言語や時相論理や時区間論理に基づいた検証記述言語を用いるモデル検査法による網羅的な機能検証技術も定着してきた。特に、論理回路の機能検証においては、設計者や検証担当者はタイミングダイアグラムを用いて回路動作の検証内容の明確化を行うが、作成したタイミングダイアグラムから直接に検証対象論理回路の検証を行うための手段が提供されず、マニュアルでHDLやHDL以外の検証記述言語による機能検証記述を整備する必要がある。
【0006】
しかしながら、機能検証記述を作成するためには、たとえば検証担当者がHDLやHDL以外の機能記述言語を記述できなければならず、そのため検証担当者はHDLやHDL以外の検証記述言語を学習しなければならず、検証担当者にとって負担が大きいという問題がある。また、HDLを学習済みの設計者がHDLで機能検証記述を作成する場合であっても、HDLで記述した機能検証記述自体の検証を行わねばならず、さらに大規模な論理回路においては機能検証項目が多いことから、同様にHDLを学習済みの設計者にとって負担が大きいという問題がある。
【0007】
そこで、本発明は、このような問題を解決するためになされたもので、検証担当者が新たにHDLやHDL以外の検証記述言語を学習しなくても、HDLを学習済みの設計者がHDL以外の検証記述言語を学習したり、HDLで記述した機能検証記述自体の検証を行わなくても、検証対象回路の機能検証項目を検証するための機能検証記述を作成可能とする機能検証記述生成装置を提供することを目的とするものである。
【0008】
また、設計者や検証担当者はタイミングダイアグラムを用いて回路動作の検証内容の明確化を行う場合、タイミングダイアグラム上に検証項目を明確に記述する手段が与えられておらず、検証項目を表現する手段が曖昧になり、設計者や検証担当者の間で正確な情報の交換ができず、人的ミスによる検証効率の低下が起こるという問題がある。
【0009】
そこで、本発明は、このような問題をも解決するためになされており、設計者や検証担当者がタイミングダイアグラムを用いて回路動作の検証内容を明確にかつ統一的に記述する記述法を提供することも目的とするものである。
【0010】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【0011】
【課題を解決するための手段】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【0012】
すなわち、本発明による機能検証装置は、タイミングダイアグラムに波形間の論理的関係と、前記論理的関係の生起情報とを入力する手段と、前記波形間の論理的関係と、前記論理的関係の生起情報とを基に検証記述をタイミングダイアグラムから生成する手段と、を有することを特徴とするものである。特に、タイミングダイアグラムの作成時に、予め用意されたオブジェクトを挿入しながら記述可能とし、かつ作成データから機能検証に用いる動作仕様チェッカHDL記述、およびモデル検査法で用いられるプロパティ言語記述を自動生成し、内部動作のチェック、外部入力信号が満たすべき信号遷移を守っているかのチェックを可能とするものである。
【0013】
具体的に、本発明による機能検証装置は、検証対象のHDL形式の設計データを読み込んで、この読み込んだ検証対象のHDL形式の設計データに備わる端子および内部ピンに関して、少なくとも端子名、内部ピン名、入出力の別、および入出力信号と内部ピン名のビット数の各端子および内部ピン情報を取得する端子情報抽出手段と、前記端子情報抽出手段に接続され、端子情報抽出手段にて取得した各端子および内部ピン情報を選択し、前記端子および内部ピンを介して入出力する信号について、この信号と波形を含みタイミングに関するタイミング制約情報、この波形間の論理的関係、およびこの論理的関係が常に成立するのか少なくとも1回は成立するのかの生起情報を入力することで、前記検証対象のHDLの設計データにおけるタイミングダイアグラムを編集するタイミングダイアグラム編集手段と、前記タイミングダイアグラム編集手段に接続され、前記タイミングダイアグラム編集手段から前記各端子および内部ピン情報、前記タイミング制約情報、前記波形間の論理的関係情報、および前記論理的関係の生起情報からなる検証対象動作情報を抽出する検証対象動作抽出手段と、前記検証対象動作抽出手段に接続され、前記検証対象動作情報に基づき検証記述言語で表現された前記検証対象動作が満足されているかの検証を目的とする機能検証記述やHDL形式の前記検証対象動作が満足されているかの検証を目的とする機能検証記述を生成する検証記述生成手段と、を備えたことを特徴とする。
【0014】
このように構成することで、設計者や検証担当者は検証対象の比較的操作可能なタイミングダイアグラム編集手段上でHDLの記述から得られた端子および内部ピン情報を選択し、タイミングダイアグラム編集手段上で、この選択後の端子や内部ピンの信号の波形、この波形間の論理的関係、およびこの論理的関係が常に成立するのか少なくとも1回は成立するのかの生起情報を入力しながら、タイミングダイアグラム編集手段上でタイミングダイアグラムを作成編集する。よって、タイミングダイアグラム編集手段は、タイミングダイアグラム上に検証項目を明確に記述することが可能となるように作用し、よって検証項目の表現の曖昧さを排除するように作用する。よって、設計者や検証担当者の間で正確な情報の交換が可能となるように作用し、人的ミスを排除するように作用する。
【0015】
さらに、検証対象動作抽出手段は、前記タイミングダイアグラム編集手段を使用し、設計者や検証担当者によって編集されたタイミングダイアグラム編集手段から送出されるタイミングダイアグラム情報から波形間の論理的関係、この論理的関係が指定された波形を含む端子や内部ピン情報、およびこの論理的関係が常に成立するのか少なくとも1回は成立するのかの生起情報などを抽出し、検証記述生成手段は前記検証対象動作抽出手段から供給される前記波形の論理的関係、この論理的関係が指定された波形を含む端子や内部ピン情報、およびこの論理的関係が常に成立するのか少なくとも1回は成立するのかの生起情報などに基づき機能検証記述を自動生成する。よって、検証記述生成手段などは、設計者や検証担当者がHDLやHDL以外の検証記述言語を知らなくとも、タイミングダイアグラム編集手段を使用してタイミングダイアグラムを編集して回路動作の検証内容の明確化を行うという設計者や検証担当者が従来より行っている操作を行うことで、機能検証記述を生成する。よって、検証記述生成手段などは、設計者や検証担当者の機能検証作業負担を軽減するように作用し、機能検証効率の向上による設計コストの低減、さらには製品の生産コストを低減するように作用する。
【0016】
なお、本発明の技術と、前記特開平6−332971号公報の技術とを比較した場合には、以下のような違いがある。前記特開平6−332971号公報の技術は、HDLにより設計記述が存在しない機能ブロックではあるが、シミュレーションによる検証を行う際に何らかのHDL記述が必要となるものに対して、HDLの動作モデル記述を生成する技術であり、本発明の技術はHDLによる設計記述が存在し、その設計データの検証を行うためのHDL記述を生成する技術である。その違いは、入力データの違いに現れていると言える。すなわち、特開平6−332971号公報の技術がタイミングダイアグラムを編集する手段から始まっているのに対して、本発明の技術が設計データの読み込み手段から始まっている。
【0017】
以下において、両者の技術の違いを図65および図66にて簡単に説明する。たとえば、メモリインターフェースのHDL記述を作成し、その検証を行おうとすると、メモリをHDLで記述する必要があるが、公報の技術(図65)によれば、メモリの動作モデルを記述したHDLがタイミングダイアグラムから生成可能である。ただし、メモリアクセスの動作が正しいかの検証はシミュレータがサポートする波形ビューワで目視による動作確認を行うか、動作が正しいかを検証するためのHDLのチェッカを記述する必要がある。
【0018】
これに対して、本発明の技術(図66)を適用すると、メモリの動作モデルが不要となるばかりでなく、動作が正しく行われているかを検証するためのHDL記述が自動生成できるため、動作が正しく行われているかの確認が自動化される。また、前記の例では、入力と出力の両方を見ているが、入力のみ、出力のみをチェックする記述を生成することも可能であり、前者は、たとえば前段の論理回路HDLが正しい出力信号を検証対象HDLに送出しているかを検証する目的で用いることができ、後者は検証対象HDLが正しい出力信号の系列を出力しているかを検証する目的で用いることができる。
【0019】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部材には同一の符号を付し、その繰り返しの説明は省略する。
【0020】
また、本発明の実施の形態では、1.機能検証記述生成装置の構成、2.オブジェクトの説明、3.検証対象動作木の構成とその変形、4.TDO2Verilog Algorithm、5.TDO2CTL Algorithm、の順に説明する。
【0021】
1.機能検証記述生成装置の構成
図1により、本発明の一実施の形態の機能検証記述生成装置の構成の一例を説明する。図1は本実施の形態の機能検証記述生成装置を示す構成図である。
【0022】
本実施の形態の機能検証記述生成装置は、大きく分類すると、端子情報抽出手段である端子情報抽出装置1と、タイミングダイアグラム編集手段であるタイミングダイアグラム編集装置2と、検証対象動作抽出手段である検証対象動作抽出装置3と、検証記述生成手段である検証記述生成装置4などからなり、検証記述生成装置4により生成された検証記述は検証記述ファイル5に格納されるような構成となっている。
【0023】
端子情報抽出装置1は、HDL読み込み装置11、このHDL読み込み装置11の出力側に接続されるHDL記憶装置12、このHDL記憶装置12の出力側に接続される端子情報抽出装置13、この端子情報抽出装置13の出力側に接続される端子情報記憶装置14から構成される。この端子情報抽出装置1は、検証対象のHDL形式の設計データを読み込んで、この読み込んだ検証対象のHDL形式の設計データに備わる端子および内部ピンに関して、少なくとも端子名、内部ピン名、入出力の別、および入出力信号と内部ピン名のビット数の各端子および内部ピン情報を取得する端子情報抽出手段である。
【0024】
タイミングダイアグラム編集装置2は、上記端子情報抽出装置1、すなわち上記端子情報記憶装置14の出力側に接続される。このタイミングダイアグラム編集装置2は、上記端子情報抽出装置1にて取得した各端子および内部ピン情報を選択し、端子および内部ピンを介して入出力する信号について、この信号と波形を含みタイミングに関するタイミング制約情報、この波形間の論理的関係、およびこの論理的関係が常に成立するのか少なくとも1回は成立するのかの生起情報を入力することで、検証対象のHDLの設計データにおけるタイミングダイアグラムを編集するタイミングダイアグラム編集手段である。
【0025】
検証対象動作抽出装置3は、上記タイミングダイアグラム編集装置2の出力側に接続されるタイミングダイアグラム記憶装置31、このタイミングダイアグラム記憶装置31の出力側に接続される検証対象動作情報抽出装置32、この検証対象動作情報抽出装置32の出力側に接続される検証対象動作情報記憶装置33から構成される。この検証対象動作抽出装置3は、タイミングダイアグラム編集装置2から各端子および内部ピン情報、タイミング制約情報、波形間の論理的関係情報、および論理的関係の生起情報からなる検証対象動作情報を抽出する検証対象動作抽出手段である。
【0026】
検証記述生成装置4は、上記検証対象動作抽出装置3、すなわち上記検証対象動作情報記憶装置33の出力側に接続される。この検証記述生成装置4は、検証対象動作情報に基づき検証記述言語で表現された検証対象動作が満足されているかの検証を目的とする機能検証記述やHDL形式の検証対象動作が満足されているかの検証を目的とする機能検証記述を生成する検証記述生成手段である。
【0027】
2.オブジェクトの説明
図2〜図5により、本実施の形態の機能検証記述生成装置において、オブジェクトの一例を説明する。図2はコンペアオブジェクトを説明するための回路例の説明図、図3はコンペアオブジェクトを説明するためのタイミングダイアグラム例の説明図、図4はウェイトオブジェクトを説明するためのタイミングダイアグラム例の説明図、図5はウェイトオブジェクトを説明するためのチェックボックス例の説明図である。
【0028】
タイミングダイアグラムに動作内容や、検証したい信号遷移を明示的に記述することを可能とする目的で、シグナルオブジェクト(signal object)、コンペアオブジェクト(compare object)、ウェイトオブジェクト(wait object)、リレーションオブジェクト(relation object)の4種類のオブジェクトを導入する。
【0029】
2−1.シグナルオブジェクト(signal object)
タイミングダイアグラムに描かれた信号波形のrelation objectの始点または終点となった所の値とその値がタイミングダイアグラム上の何サイクル目かを表す。特に、値としては、信号値と信号変化を取ることができる。また、信号変化は、特定の信号値から特定の信号値、特定の信号値からの変化、特定の信号値への変化、および特定の信号値が与えられている分けではないが信号値の変化、何れかを表現可能とする。さらに、exiを指定することで、たとえば「指定サイクルで信号変化する、ということが少なくとも1回は起こる」や「指定サイクルで信号値がある値になる、ということが少なくとも1回は起こる」などを表現可能とする。
【0030】
2−2.コンペアオブジェクト(compare object)
タイミングダイアグラムに描かれた信号波形上に設定することで、設定された信号値に対して、信号値比較などの比較演算を記述することが可能である。特に、比較を行う際に左辺にはcompare objectが指定された信号のみからなる、ビット切り出しやシフト、インクリメント、デクリメントなどの算術論理演算が記述可能である。また、右辺には、タイミングダイアグラムに描かれた任意の信号、信号:n形式にて与えられるcompare objectが指定されたサイクルからnサイクル前の信号値を表す信号、およびそれらのビット切り出しからなる算術論理演算式が記述可能である。比較演算としては、<、≦、==、≠、≧、>の何れかが記述可能である。さらに、exiを指定することで、「指定サイクルでcompare objectに設定された比較演算が成立する、ということが少なくとも1回は起こる」を表現可能とする。
【0031】
たとえば、図2に示す回路例では、マルチサイクルの加算器(レイテンシー=3サイクル)において、CLK、Valid、A[7:0]、B[7:0]の入力に対してD[8:0]を出力する場合である。機能は、Valid立ち上がりで入力データA[7:0]とB[7:0]を取り込み、3サイクル後に加算結果を出力する。正しく加算が行われているかを検証対象とする。
【0032】
この図2のマルチサイクルの加算器において、タイミングダイアグラム例は、たとえば図3に示すように、relation objectのrel_H1の始点αと終点βにおける、compare objectのcompare(D==A:3+B:3)を示している。
【0033】
2−3.ウェイトオブジェクト(wait object)
タイミングダイアグラムに描かれたクロック信号の立ち上がりエッジに対して指定可能であり、ある条件(以降、wait解除条件という)が成立するまで、その前のサイクルの信号値が繰り返し実行されることを表す。特に、wait解除条件はタイミングダイアグラム上の任意の信号、およびそのビット切り出しからなる算術論理演算式を指定可能である。また、繰り返し実行において、チェックされるべき信号名を指定可能である。特に、繰り返し実行でチェックする信号を指定しなければ、「何時かwait解除条件が成立」を表す。さらに、exiを指定することで、「何時かwait解除条件が成立する、ということが少なくとも1回は起こる」や「何時かwait解除条件が成立し、それまでは指定信号が繰り返し同じ値を取る、ということが少なくとも1回は起こる」を表現可能である。
【0034】
たとえば、複数のwait objectを設定する場合、特にobject間の順番だけが規定可能で、サイクル差を指定できない場合がある。これに対応するため、図4に示すような特殊仕様を設ける。このタイミングダイアグラム例では、A立ち上がりの1サイクル後にwait((B==C)&B&!E)が成立後、最低0サイクル経過した後、wait((B==C)&&!E)が成立し、その最低0サイクル後、wait(A==1)が成立することを意味している。なお、wait(A==1)成立後の1サイクル後にDが0から1に変化することも示している。
【0035】
また、チェックボックス例は、たとえば図5に示すように、信号名A〜Eの繰り返しとWait解除のボックスに対して、チェックでチェック対象、ノンチェックで非対象とし、またデフォルトはノンチェックとする。ただし、信号値がDon’t careの場合は、デフォルトでチェックし、ユーザによる変更不可とする。
【0036】
2−4.リレーションオブジェクト(relation object)
タイミングダイアグラムに描かれた信号波形間の論理的関係を表す。つまり、ある信号があるサイクルである値を取ったなら、ある信号があるサイクルである値を取るということを表現するためのものである。−>を”ならば”とすると、A−>Bなる命題の−>を表現するのがrelation objectの役目である。なお、relation objectの始点・終点としては、全てのobjectを取ることが可能である。また、終点が一致する場合、relation object同士の論理演算を指定可能であり、たとえば(A−>B)△(C−>B)の場合、A△C−>Bと解釈する。特に、△は論理AND、論理OR、論理EORの何れかを表す。さらに、(A−>B)−>Cは、A−>(B−>C)=A&B−>Cと解釈され、一般に、n個のrelation objectにより直列に構成される命題式は括弧の付け方によらず、
A1−>A2−>・・・An−>An+1 式(1)
と解釈され、その意味は下記で与えられる。
【0037】
A1&A2&・・・&An−>An+1
特に、A1−>A2、A2−>A3とrelation objectと指定した場合は、個別に、
A1−>A2
A2−>A3
の命題が描かれたものとして解釈を行う。すなわち、式(1)に示す命題を得るためには、必ず、relation objectを始点または終点にして描く必要がある。たとえば、
A1−>A2、(A1とA2を結ぶrelation object)−>A3
と描くと、
(A1−>A2)−>A3
となり、結局、
A1&A2−>A3
と解釈される。また、
A2−>A3、A1−>(A2とA3を結ぶrelation object)
と描くと、
A1−>(A2−>A3)=A1&A2−>A3
と解釈される。
【0038】
さらに、exiの指定は、relation objectにより構成された命題の−>に対応する部分に指定したときのみ有効であり、それ以外は無視され、指定が有効な場合、「命題が成立する、ということが少なくとも1回は起こる」と解釈される。
【0039】
3.検証対象動作木の構成とその変形
図6〜図27により、検証対象動作木の構成とその変形の一例を説明する。図6は検証対象動作木の構成とその変形を示すフロー図、図7はHDLの端子情報の格納における階層ツリーを示す説明図、図8は図7の階層ツリーに付随する端子情報を示す説明図、図9〜図19はタイミングダイアグラムの格納におけるタイミングダイアグラム例を示す説明図、図20はタイミングダイアグラム分割例を示す説明図、図21および図22はタイミングダイアグラムの記憶イメージを示す説明図、図23はタイミングダイアグラム分割手段の動作を示すフロー図、図24は検証対象動作の切り出しにおける検証対象動作情報取得手段の動作を示すフロー図、図25は検証対象動作情報の記憶イメージを示す説明図、図26および図27は検証対象動作から作成される木構造の記憶イメージを示す説明図である。
【0040】
図6に示すように、検証対象動作木の構成とその変形は、まず、入力HDLの端子情報の格納方式を述べ(ステップS101)、次いで、入力したタイミングダイアグラムをどのような形式で記憶装置に格納するかを述べ(ステップS102)、最後に、そこから検証対象動作をどのように識別して切り出し、どのような形式で記憶装置に格納するかを述べる(ステップS103)。
【0041】
3−1.HDLの端子情報の格納(図7および図8)
HDLを読み込み、解析する手段に関しては既知であるので、端子情報の記憶イメージのみを下記に示す。HDLの階層ツリーに付随して、入力・出力・入出力の別に端子の名前およびビット幅を格納する。なお、階層ツリー自体も下位階層のインスタンス名を保持する。
【0042】
前述した図1に示す、端子情報抽出装置1のHDL読み込み装置11には、たとえばHDL形式で記述された、たとえばCPUなどのデジタル回路が入力される。また、HDL読み込み装置11が送出するHDL形式のデジタル回路の情報は、図1に示すように、HDL記憶装置12に格納するようにしてもよいし、HDL読み込み装置11の出力側を端子情報抽出装置13に接続してもよい。この端子情報抽出装置13により、HDL読み込み装置11またはHDL記憶装置12から送出されるHDL形式のデジタル回路情報から、たとえば図7および図8に示す”名前”、”方向”などの端子情報が抽出され、抽出された端子情報は端子情報記憶装置14に記憶される。なお、図7および図8は端子情報が端子情報記憶装置14に記憶される際のイメージを示した図である。なお、上述したような端子情報抽出装置1は、従来より存在する、いわゆるHDLパーサが生成する記号表から容易に作成されるものであり、特に本発明の機能検証記述生成装置用に開発したものではない。
【0043】
すなわち、図7に示す階層ツリー例では、最上位階層−サブ階層(名前:pcpun,pmasn,・・・)−サブ階層(名前:DW01,YX01,・・・,DW01,・・・)・・・を示している。また、図8の端子情報例では、最上位階層−入力−出力−入出力、入力−端子1−端子2・・・、端子1−名前:CMD/ビット幅:3、端子2−名前:READ_n/ビット幅:1、出力−端子1・・・、端子1−名前:WAIT/ビット幅:1、入出力−端子1・・・、端子1−名前:DATA/ビット幅:32を示している。さらに、サブ階層についても同様に図8の通りである。
【0044】
3−2.タイミングダイアグラムの格納(図9〜図23)
前述した図1に示す、タイミングダイアグラム編集装置2は、端子情報抽出装置1に接続され、GUIなどにより端子情報抽出装置1にて取得した端子名や内部ピン名が設計者や検証担当者により選択され、ならびに各端子や内部ピンのたとえば入出力波形、セットアップ、ホールドタイムなどのタイミング制約情報、この波形間の論理的関係、およびこの論理的関係が常に成立するのか少なくとも1回は成立するのかの生起情報が設計者や検証担当者により入力される。このように被選択端子情報、およびタイミング制約情報、入出力波形、波形間の論理的関係、およびこの論理的関係の生起情報が供給されるタイミングダイアグラム編集装置2は、被選択端子情報、およびタイミング制約情報、入出力波形、波形間の論理的関係、およびこの論理的関係の生起情報に基づき、たとえば図9〜図19に示すようなタイミングダイアグラムを編集する。
【0045】
なお、図9〜図19において、たとえば”CMD[0:1]”は信号が入出力する端子名または内部ピン名およびビット数を示し、”(in)”はその端子が入力端子であることを示している。また、図9〜図19において、矢印”→”は始点と終点の論理的関係を表し、始点および終点として信号または矢印または記号”WAIT”をとることができ、この記号”WAIT”は信号が同期するクロックエッジに付加することができ、この記号”WAIT”には信号変化を監視する条件、すなわち条件成立までタイミングダイアグラムの進行を上記”WAIT”が付加されたクロックエッジで停止させるためのタイミングダイアグラムの制御条件をこの記号”WAIT”が付加された信号値を用いて設計者または検証担当者が指定することができ、上記始点および終点および上記矢印に記号”exi”を付加することができ、この記号”exi”はこの記号”exi”が付加された始点または終点または始点と終点を結ぶ矢印が表す論理的関係が少なくとも1回は起こるという生起情報を表し、矢印同士の論理演算を定義することができ、この矢印同士の論理演算は被演算矢印の表す論理的関係同士の論理的関係を表す。なお、上記論理的関係は以降の説明で明らかとなる。また、上記論理的関係は1つのタイミングダイアグラム上に複数設定可能である。
【0046】
図9において、信号”CMD[0:1]”を始点とし、信号”TAG”を終点とするrel_A1とラベルの付けられた矢印”→”は信号”CMD[0:1]”と信号”TAG”の論理的関係を表し、”CMD[0:1]が2‘b01に等しいならばTAGは1サイクル後に立ち上がる”という命題A1を表す。また、rel_A2とラベルの付けられた上記rel_A1とラベルの付けられた矢印を始点とし信号”D[0:7]”を終点とする矢印は、上記矢印”rel_A1”と信号”D[0:7]”の論理的関係を表し、”CMD[0:1]が2’b01に等しくかつ、TAGがその1サイクル後に立ち上がるならその2サイクル後にD[0:7]は8‘bxx1101xxに等しい”という命題A2を表す。
【0047】
図10において、記号”exi”が付加されたクロックサイクル1での信号”CMD[0:1]”は”少なくとも1回はCMD[0:1]が2‘b01に等しくなることがある”を表し、信号”CMD[0:1]”を始点とし信号”TAG”を終点とするrel_B1とラベルの付けられた矢印”→”は信号”CMD[0:1]”と信号”TAG”の論理的関係を表し、”少なくとも1回はCMD[0:1]が2‘b01に等しくなることがあるならTAGはその1サイクル後に立ち上がる”という命題B1を表す。また、rel_B2とラベルの付けられた上記rel_B1とラベルの付けられた矢印を始点とし信号”D[0:7]”を終点とする矢印は、上記矢印”rel_B1”と信号”D[0:7]”の論理的関係を表し、”少なくとも1回はCMD[0:1]が2’b01に等しくなる事があり、かつTAGがその1サイクル後に立ち上がるならその2サイクル後にD[0:7]は8‘bxx1101xxに等しい”という命題B2を表す。
【0048】
図11において、記号”exi”が付加されたクロックサイクル2での信号”TAG”は”少なくとも1回はTAGが立ち上がることがある”を表し、信号”CMD[0:1]”を始点とし信号”TAG”を終点とするrel_C1とラベルの付けられた矢印”→”は信号”CMD[0:1]”と信号”TAG”の論理的関係を表し、”CMD[0:1]が2‘b01に等しいならその1サイクル後に少なくとも1回はTAGが立ち上がることがある”という命題C1を表す。また、rel_C2とラベルの付けられた上記rel_C1とラベルの付けられた矢印を始点とする矢印は、上記矢印”rel_C1”と信号”D[0:7]”の論理的関係を表し、”CMD[0:1]が2’b01に等しくかつ、その1サイクル後にTAGが立ち上がる事がすくなくとも1回はあるならその2サイクル後にD[0:7]は8‘bxx1101xxに等しい”という命題C2を表す。
【0049】
図12において、記号”exi”が付加されたクロックサイクル3に同期して出力される信号”D[0:7]”は”少なくとも1回はD[0:7]が8‘bxx1101xxに等しくなることがある”を表し、信号”CMD[0:1]”を始点とし信号”TAG”を終点とするrel_D1とラベルの付けられた矢印”→”は信号”CMD[0:1]”と信号”TAG”の論理的関係を表し、”CMD[0:1]が2‘b01に等しいならTAGは1サイクル後に立ち上がる”という命題D1を表す。また、rel_D2とラベルの付けられた上記rel_D1とラベルの付けられた矢印を始点とし信号”D[0:7]”を終点とする矢印は、上記矢印”rel_D1”と信号”D[0:7]”の論理的関係を表し、”CMD[0:1]が2’b01に等しくかつ、TAGがその1サイクル後に立ち上がるならその2サイクル後に少なくとも1回はD[0:7]が8‘bxx1101xxに等しくなることがある”という命題D2を表す。
【0050】
図13において、記号”exi”が付加された信号”CMD[0:1]”を始点とし信号”TAG”を終点とするラベルrel_E1は”ラベルrel_E1が表す命題が少なくとも1回は成立することがある”を表し、信号”CMD[0:1]”を始点とし信号”TAG”を終点とする上記rel_E1とラベルの付けられた矢印”→”は信号”CMD[0:1]”と信号”TAG”の論理的関係を表し、”CMD[0:1]が2‘b01に等しいならTAGは1サイクル後に立ち上がるという命題が少なくとも1回は成立することがある”という命題E1を表す。また、rel_E2とラベルの付けられた上記rel_E1とラベルの付けられた矢印を始点とし信号”D[0:7]”を終点とする矢印は、上記矢印”rel_E1”と信号”D[0:7]”の論理的関係を表し、”CMD[0:1]が2’b01に等しくかつ、TAGがその1サイクル後に立ち上がるならその2サイクル後にD[0:7]は8‘bxx1101xxに等しい”という命題E2を表す。ここで、”exi”が無視されている事に注意したい。
【0051】
図14において、記号”exi”が付加された信号”CMD[0:1]”を始点とし信号”TAG”を終点とするrel_F1とラベルの付けられた矢印を始点とし信号”D[0:7]”を終点とするラベルrel_F2は”少なくとも1回はラベルrel_F2が表す命題が少なくとも1回は成立することがある”を表し、信号”CMD[0:1]”を始点とし信号”TAG”を終点とする上記rel_F1とラベルの付けられた矢印”→”は信号”CMD[0:1]”と信号”TAG”の論理的関係を表し、”CMD[0:1]が2‘b01に等しいならTAGは1サイクル後に立ち上がる”という命題F1を表す。また、rel_G2とラベルの付けられた上記rel_F1とラベルの付けられた矢印を始点とし信号”D[0:7]”を終点とする矢印は、上記矢印”rel_F1”と信号”D[0:7]”の論理的関係を表し、”CMD[0:1]が2’b01に等しくかつ、TAGがその1サイクル後に立ち上がるならその2サイクル後にD[0:7]は8‘bxx1101xxに等しいという命題が少なくとも1回は成立することがある”という命題F2を表す。
【0052】
図15において、信号”CMD[0:1]”を始点とし信号”TAG”を終点とするrel_G1とラベルの付けられた矢印”→”は信号”CMD[0:1]”と信号”TAG”の論理的関係を表し、”CMD[0:1]が2‘b01に等しいならTAGは1サイクル後に立ち上がる”という命題G1を表す。また、rel_G2とラベルの付けられた信号”D[0:7]”を始点とし上記rel_G1とラベルの付けられた矢印を終点とする矢印は、上記矢印”rel_G1”と信号”D[0:7]”の論理的関係を表し、”D[0:7]が8‘bxx1101xxに等しくかつ、3サイクル前にCMD[0:1]が2’b01に等しいなら、2サイクル前にTAGが立ち上がる”という命題G2を表す。
【0053】
図16において、rel_H1とラベルの付けられた矢印”→”の終点であるクロックサイクル2の信号”TAG”に付加された記号”WAIT”は”条件TAG=1‘b1が成立するまでの間クロックサイクル1からクロックサイクル2までの波形を繰り返す”、すなわち”条件TAG=1‘b1が成立するまでの間TAGが0に等しくかつD[0:7]が8‘bxx00101xxに等しい”を表し、信号”CMD[0:1]”を始点とし上記記号”WAIT”を終点とするrel_H1とラベルの付けられた矢印”→”は信号”CMD[0:1]”と上記記号”WAIT”の論理的関係を表し、”CMD[0:1]が2‘b01に等しいなら条件TAG=1‘b1が成立するまでの間TAGが0に等しくかつD[0:7]が8‘bxx00101xxに等しい”という命題H1を表す。また、rel_H2とラベルの付けられた上記rel_H1とラベルの付けられた矢印を始点とし信号”D[0:7]”を終点とする矢印は、上記矢印”rel_H1”と信号”D[0:7]”の論理的関係を表し、”CMD[0:1]が2’b01に等しくかつ、条件TAG==1’b1が成立する迄の間TAGが0に等しくかつ、D[0:7]が8’bxx00101xxに等しいならその2サイクル後にD[0:7]は8‘bxx1101xxに等しい”という命題H2を表す。
【0054】
図17において、rel_I2とラベルの付けられた矢印”→”の始点であるクロックサイクル2の信号”TAG”に付加された記号”WAIT”は”条件TAG=1‘b1が成立するまでの間クロックサイクル1からクロックサイクル2までの波形を繰り返す”、すなわち”いつかはTAGが0から1に変化しかつD[0:7]がTAGが0と等しい間8‘bxx00101xxを繰り返し保持した後それ以外の値に変化する”を表し、上記記号”WAIT”を始点とし信号”D[0:7]”を終点とするrel_I2とラベルの付けられた矢印”→”は上記記号”WAIT”と信号”D[0:7]”との論理的関係を表し、”いつかはTAGが0から1に変化しかつD[0:7]が8‘bxx00101xxからそれ以外の値に変化するならばその2サイクル後に[0:7]は8‘bxx1101xxに等しい”という命題I1を表す。また、rel_I1とラベルの付けられた信号”CMD[0:1]”を始点とし上記rel_I2とラベルの付けられた矢印を始点とする矢印は、信号”CMD[0:1]”と上記矢印”rel_I2”の論理的関係を表し、”CMD[0:1]が2‘b01に等しいなら上記命題I1が成立する”という命題I2を表す。
【0055】
図18において、rel_J2とラベルの付けられた矢印”→”の始点であるクロックサイクル2の信号”TAG”に付加された記号”WAIT”は”条件TAG=1‘b1が成立するまでの間クロックサイクル1からクロックサイクル2までの波形を繰り返す”、すなわち”いつかはTAGが0から1に変化する”を表し、上記記号”WAIT”を始点とし信号”D[0:7]”を終点とするrel_J2とラベルの付けられた矢印”→”は上記記号”WAIT”と信号”D[0:7]”との論理的関係を表し、”いつかはTAGが0から1に変化するならばその2サイクル後にD[0:7]は8‘bxx1101xxに等しい”という命題J1を表す。また、rel_J1とラベルの付けられた信号”CMD[0:1]”を始点とし上記rel_J2とラベルの付けられた矢印を始点とする矢印は、信号”CMD[0:1]”と上記矢印”rel_J2”の論理的関係を表し、”CMD[0:1]が2‘b01に等しいなら上記命題J1が成立する”という命題J2を表す。
【0056】
図19において、信号”CMD[0:1]”を始点とし信号”D[0:7]”を終点とするrel_K1とラベルの付けられた矢印”→”は信号”CMD[0:1]”と信号”D[0:7]”の論理的関係を表し、”CMD[0:1]が2‘b01に等しいならD[0:7]は4サイクル後に8‘bxx1101xxと等しくなる”という命題K1を表す。また、rel_K2とラベルの付けられた矢印”→”の始点であるクロックサイクル2の信号”TAG”に付加された記号”WAIT”は”条件TAG=1‘b1が成立するまでの間クロックサイクル1からクロックサイクル2までの波形を繰り返す”、すなわち”いつかはTAGが0から1に変化しかつD[0:7]が8‘bxx00101xxからそれ以外の値に変化する”を表し、上記記号”WAIT”を始点とし信号”D[0:7]”を終点とするrel_K2とラベルの付けられた矢印”→”は上記記号”WAIT”と信号”D[0:7]”との論理的関係を表し、”いつかはTAGが0から1に変化しかつD[0:7]がTAGが0と等しい間8‘bxx00101xxを繰り返し保持した後8‘bxx00101xxからそれ以外の値に変化するならばその2サイクル後にD[0:7]は8‘bxx1101xxに等しい”という命題K2を表す。また、rel_K3とラベルの付けられたこのラベルrel_K1とこのラベルrel_K2の論理和は、”命題K1か命題K2の何れかが成立する”という命題K3を表す。また、上記ラベルrel_K2を始点とし信号”TAG”を終点とするrel_K4とラベルの付けられた矢印”→”は上記ラベルrel_K2と信号”TAG”との論理的関係を表し、”いつかはTAGが0から1に変化し、かつTAGが0と等しい間D[0:7]が8‘bxx00101xxを繰り返し保持した後、その2サイクル後にD[0:7]が8’bxx1101xxに等しいならTAGが0から1に変化しかつD[0:7]が8‘bxx00101xxからそれ以外の値に変化した時点から1サイクル後に信号TAGが立ち下がる”という命題K4を表す。
【0057】
前述した図1に示す、タイミングダイアグラム記憶装置31は、タイミングダイアグラム編集装置2にて設計者または検証対象者が入力および編集した、たとえば前述した図9〜図19に示すようなタイミングダイアグラムの情報を記憶する。なお、図21および図22はタイミングダイアグラム編集装置2にて設計者または検証対象者が入力および編集したタイミングダイアグラム情報がタイミングダイアグラム記憶装置31に記憶される際のイメージを示した図である。
【0058】
すなわち、図21および図22に示すタイミングダイアグラムの記憶イメージ例では、端子1−端子2−端子3、端子1−名前/方向/ビット幅/対象クロック−ハイ期間/ロウ期間/立ち上がりエッジ/立ち下がりエッジ−0−0→1・・・、0−値/セットアップ値/ホールド値/出力遅延/WAIT設定/exi設定/矢印−始終点/exi設定/矢印を示している。さらに、0→1・・・、端子2、端子3についても同様に図21および図22の通りである。
【0059】
タイミングダイアグラム情報の取得においては、まず図23に示す動作フローチャートが示すタイミングダイアグラム分割手段に従い、クロックサイクルが0、0から1に変化、1などのようにタイミングダイアグラムを分割する。すなわち、以下の通りである。
【0060】
(1)ステップS201において、ダイアグラムの端子を1つ選択し、ステップS202にて端子に定義された波形の左からのスキャンを開始し、ステップS203にて変数flgを0に設定し、ステップS204にてスキャンしているこの波形が信号変化を表している所まで到達したか否かを判定し、到達している場合は処理をステップS205に移し、到達していない場合は処理をステップS206に移す。
【0061】
(2)次いで、ステップS205では上記変数flgに1を代入し、処理をステップS206へ移す。
【0062】
(3)ステップS206では、ステップS204にてスキャンしているこの波形がセットアップ、ホールドや出力遅延などのタイミング制約を設定している個所に到達したか否かを判定し、到達している場合は処理をステップS207に移し、到達していない場合は処理をステップS209に移す。
【0063】
(4)ステップS207では、タイミング制約が関連付けられている信号名および信号エッジを取得し、この端子が同期しているクロックとして識別し、ステップS208では識別したこのクロックおよびこのクロックのエッジを分割点として、ステップS204にてスキャンしているこの波形を分割し、処理をステップS209に移す。
【0064】
(5)次いで、ステップS209では、ステップS204にて行っているスキャンが終了したか否かを判定し、終了していれば処理をステップS210へ、終了していなければ処理をステップS204へ移す。
【0065】
(6)ステップS210では、上記記号flgが0に一致するか否かを判定し、一致した場合は処理をステップS211へ、一致しなかった場合は処理をステップS213へ移す。
【0066】
(7)ステップS211では、上記端子が同期すべきクロック信号とクロックエッジをユーザに問い合わせ、ユーザ情報を取得し、ステップS212にてこのユーザ情報に基づきこの端子に定義されている波形を分割し、処理をステップS216へ移す。
【0067】
(8)また、ステップS213では、上記端子に定義されている波形を信号変化の所で分割し、ステップS214でこの信号変化の所からの距離が最短のこの同期クロックエッジにより与えられた分割点でかつこの距離が半サイクル周期未満の分割点を排除し、ステップS215ではこの波形を再び左からスキャンし、隣接し合う分割区間であって互いの区間調和が1サイクル周期未満のものを併合し、処理をステップS216へ移す。
【0068】
(9)ステップS216では、再びこの波形を左からスキャンしながら上記各分割区間に対してサイクル数を割り当てる。
【0069】
(10)最後に、ステップS217にて全ての端子を処理したか否かを判定し、処理した場合は終了し、処理していない場合は処理をステップS201へ移す。
【0070】
なお、図20は上記タイミングダイアグラム分割手段により得られたタイミングダイアグラムのイメージを示した図である。すなわち、図20に示すタイミングダイアグラム分割例では、CLK(in)に同期する、CMD[0:1](in)、TAG(in)、D[0:7](out)の変化をサイクル0、サイクル1、サイクル2、サイクル3への分割を示している。
【0071】
次いで、上記タイミングダイアグラム分割手段にて得られた分割区間内での端子または内部ピンの波形情報、たとえば記号”WAIT”が設定されているかの情報、記号”WAIT”が設定されていた場合はこの分割の1つ前の分割区間内での全ての端子または内部ピンの波形情報、記号”exi”が設定されているかの情報、矢印”→”の始点または終点となっているかの情報、上記矢印の始点または終点となっていた場合はこの矢印のラベル名、この矢印には記号”exi”が設定されているかの情報、またこの矢印が別の矢印の始点または終点となっているかの情報、この端子または内部ピンの信号値、このクロックに対するセットアップ、ホールド、出力遅延などのタイミング制約情報を取得することでタイミングダイアグラム情報の取得を行う。
【0072】
また、出力端子の場合は信号変化に設定された出力遅延制約をその次の分割区間内の波形情報にも設定し、入力端子の場合は信号変化に設定されたセットアップタイミング制約を1つ前の分割区間内の波形情報にも設定する。分割区間内に端子または内部ピンの波形情報が存在しない場合は、前述した図21および図22に示すように記号”null”を取得したものとする。なお、タイミングダイアグラム情報の取得においては、信号値として0、1や2進数値以外の立ち上がり、立ち下がり、変化なども値として識別する。
【0073】
3−3.検証対象動作の切り出し(図24〜図27)
前述した図1に示す、検証対象動作情報抽出装置32は、図24に示す動作フローチャートに示すように動作し、タイミングダイアグラム記憶装置31に格納されたタイミングダイアグラム情報から検証対象動作情報を取得し、結果を検証対象動作情報記憶装置33に格納する。すなわち、以下の通りである。
【0074】
(1)ステップS301において、変数jに0を代入し、ステップS302にてこの変数jに1を加える。
【0075】
(2)次いで、ステップS303において、タイミングダイアグラム記憶装置31内に格納されているタイミングダイアグラム情報からj番目の端子または内部ピンの波形情報を取得し、ステップS304において、上記j番目の端子または内部ピンの波形情報に設定されている端子名または内部ピンの名前、方向、および同期クロックとこの同期クロックの同期エッジの情報を取得し、ステップS305で変数iに1を代入し、ステップS306にて上記j番目の端子または内部ピンの波形情報からi番目に対応する分割区間内波形情報を取得する。ただし、本ステップにおいて取得したこの分割区間内波形情報内の値が変化である場合は、前後のサイクルの分割区間内波形情報も合わせて取得する。
【0076】
(3)ステップS307において、上記i番目に対応する分割区間内波形情報内に矢印が設定されているか否かを判定し、設定されている場合は処理をステップS311へ移し、設定されていない場合は処理をステップS308へ移す。
【0077】
(4)ステップS308では、上記i番目に対応する分割区間内波形情報内に記号”WAIT”が設定されているか否かを判定し、設定されている場合は処理をステップS309へ移し、設定されていない場合は処理をステップS316へ移す。
【0078】
(5)ステップS309において、設定されたこの記号”WAIT”の条件、およびこの記号”WAIT”に関連付けられている端子または内部ピンの波形情報内の端子名または内部ピン名の情報とこの端子または内部ピンの波形情報内のi−1、i+1番目の分割区間内波形情報の取得を行い、ステップS310にて上記j番目の端子または内部ピンの波形情報に設定されている上記i番目に対応する分割区間内波形情報の記号”WAIT”設定個所を参照し、処理をステップS313へ移す。
【0079】
(6)ステップS311では、上記j番目の端子または内部ピンの波形情報に設定されている上記i番目に対応する分割区間内波形情報内の波形に対する記号”exi”の設定情報と矢印に対する記号”exi”の設定情報を取得し、次いでステップS312にて上記j番目の端子または内部ピンの波形情報に設定されている上記i番目に対応する分割区間内波形情報内に設定されている矢印が始点であるか終点であるかの情報を取得し、処理をステップS313へ移す。
【0080】
(7)ステップS313からステップS315では、上記j番目の端子または内部ピンの波形情報が設定されている上記i番目に対応する分割区間内波形情報内の記号”WAIT”または”exi”から辿って得られるリストに矢印が設定されているか否かを判定し、設定されている場合は矢印の始点か終点かの情報と矢印への記号”exi”設定情報を取得し、リストがなくなるまでこの処理を続け、設定されていない場合やリストがなくなった場合は処理をステップS316へ移す。
【0081】
(8)ステップS314では、この矢印の記号”exi”の設定情報を取得し、ステップS315ではこの矢印が始点であるか終点であるかの情報取得を行い、この矢印の始点か終点かの情報が格納されたリストを参照するように設定してから処理をステップS313へ移す。
【0082】
(9)ステップS316において、上記記号iに1を加え、ステップS317にて上記記号iが上記j番目の端子または内部ピンの波形情報に設定されている分割区間内波形情報の総数を超えたか否かを判定し、越えている場合は処理をステップS318へ、越えていない場合は処理をステップS318へ移す。
【0083】
(10)さらに、ステップS318では、上記記号jが上記タイミングダイアグラム情報内の端子または内部ピンの波形情報の総数を超えたか否かを判定し、越えている場合は処理を終了し、越えていない場合は処理をステップS302へ移す。
【0084】
前述した図1に示す、検証対象動作情報記憶装置33は、検証対象動作情報抽出装置32の出力に接続されており、上記タイミングダイアグラム情報内に設計者または検証担当者が設定した検証対象動作、すなわち波形間の論理的関係の情報を格納する。なお、図25は上記タイミングダイアグラム情報から抽出した検証対象動作が上記検証対象動作情報記憶装置33に記憶される際のイメージを示した図である。
【0085】
すなわち、図25に示す検証対象動作情報の記憶イメージ例では、rel_K1−rel_K2−rel_K3−rel_K4、rel_K1−始点/終点/exi設定/論理式、始点−方向/値/セットアップ値/ホールド値/出力遅延/クロック/サイクル/exi設定/WAIT設定を示している。さらに、終点、rel_K2、rel_K3、rel_K4についても同様に図25の通りである。ただし、WAIT設定がnullでない場合は、条件/端子1波形情報/端子2波形情報/端子3波形情報につながる。
【0086】
上記検証対象動作情報記憶装置33に格納された検証対象動作情報を各矢印ラベルと矢印ラベルの関連付けられた始点および終点のなすグラフの隣接リストと見なして、各隣接リストの親のみからなる矢印ラベルの集合1と各隣接リストの子のみからなる矢印ラベルの集合2を作成し、集合1と集合2の要素数の多い方の集合から少ない方の集合を集合演算の意味で引き、その結果を集合3とする。
【0087】
次いで、上記集合3に含まれる矢印ラベルを1つ取り出し、たとえば隣接リストを幅優先で探索することで木を構築し、この操作を上記集合3が空となるまで繰り返すことで、上記検証対象動作情報記憶装置33に格納された検証対象動作情報から木構造を構築する。なお、図26および図27は前記図25に示した検証対象動作の記憶イメージから作成される木構造、以下検証対象動作木と呼び、このイメージを示した図である。
【0088】
すなわち、図26および図27に示す、前記図25の検証対象動作から作成される木構造の記憶イメージ例では、rel_K3/exi設定−rel_K1|rel_K2−rel_K1/始終点/exi設定−CMD[0:1]/始終点/exi設定−方向/値/セットアップ値/ホールド値/出力遅延/クロック/サイクル/exi設定/WAIT設定を示している。さらに、D[0:7]/始終点/exi設定、rel_K2/始終点/exi設定−TAG/始終点/exi設定、D[0:7]/始終点/exi設定や、rel_K4についてもほぼ同様に図26および図27の通りである。
【0089】
4.TDO2Verilog Algorithm
図28〜図62により、TDO2Verilog Algorithmの一例を説明する。図28はTDO2Verilog Algorithmを示すフロー図、図29は格納変数の割り当てを示すフロー図、図30は格納サイクル数の算出を示すフロー図、図31は格納サイクル数の算出におけるテーブル構造を示す説明図、図32はWait制御用フラグ生成・初期値決定を示すフロー図、図33はWait制御用フラグ生成・初期値決定におけるテーブル構造を示す説明図、図34は初期値決定を示すフロー図、図35は変数宣言HDL記述生成を示すフロー図、図36は変数値格納HDL記述生成を示すフロー図、図37はグラフ変形を示すフロー図、図38〜図54はグラフ変形を示す説明図、図55は検証HDLの生成を示すフロー図、図56はProperty_simpleを示すフロー図、図57はProperty_waitを示すフロー図、図58および図59はWaitBlockを示すフロー図、図60および図61はWaitORBlockを示すフロー図、図62はConseqBlockを示すフロー図である。
【0090】
図28に示すように、TDO2Verilog Algorithmは、まず、各信号に対して何サイクル前までの値を格納するかを識別して格納変数を割り当て、初期値を決定する手段、および信号値を格納する記述を生成する手段を述べ(ステップS401)、次いで、検証対象動作木の変形方式を述べ(ステップS402)、最後に、最終的に得られた検証対象動作木からのHDL検証記述生成手段を述べる(ステップS403)。
【0091】
4−1.格納変数の割り当て(図29〜図36:図29)
(1)ステップS501において、検証対象動作木の信号名を格納しているノードの信号に対して、何サイクルまでの信号を格納すべきかを決定し、各信号にサイクル数と同じ数の信号値格納用レジスタを割り当て、その情報をテーブルに格納する。
【0092】
(2)ステップS502において、検証対象動作木がwait objectを含むか判定し、もし含んでいるなら処理をステップS503に移し、そうでなければ処理をステップS504に移す。
【0093】
(3)ステップS503において、検証対象動作木に含まれるwait objectの数だけwait制御用のフラグを生成する。
【0094】
(4)ステップS504において、各信号に割り当てたレジスタのリセット時の初期値を決定する。これは、初期化の段階で検証HDLが誤動作を起こさないために行う。
【0095】
(5)ステップS505において、各信号に割り当てたレジスタ、およびwait制御用フラグの変数宣言のHDL記述を生成する。
【0096】
(6)ステップS506において、各信号に割り当てたレジスタに対する、リセット時の初期化、および信号値代入のHDL記述を生成する。
【0097】
4−1−1.格納サイクル数の算出(図30および図31)
(1)ステップS601において、検証対象動作木の信号名を格納しているノードのサイクル数を全て取得し、最大値を決定する。この値がテーブルのサイクル数の最大値となる。
【0098】
(2)ステップS602において、全ての信号に対して、1からステップS601で得られた最大値までのサイクルで、wait設定、格納要・不要、初期値の情報を格納可能とするテーブルを作成する。
【0099】
(3)ステップS603において、検証対象動作木の信号名を格納しているノードのサイクル数を取得し、その信号の格納サイクル数をステップS601で得た最大値−取得したサイクル数、として求め、格納要・不要の欄の1から前記演算で得られた値まで、1を立てる(初期状態では0が格納されているものとする)。
【0100】
(4)ステップS604において、検証対象動作木上の信号名を格納しているノードを全て探索したのであれば処理を終了し、そうでなければ処理をステップS603へ移す。
【0101】
なお、この格納サイクル数の算出におけるテーブル構造は、たとえば図31のようになる。すなわち、図31のテーブル構造例では、信号名、信号値を格納する領域、さらにレジスタ要・不要、Wait設定、初期値に対するサイクル数を格納する領域がそれぞれ設けられている。
【0102】
4−1−2.Wait制御用フラグ生成・初期値決定(図32および図33)
(1)ステップS701において、検証対象動作木のwait objectが設定されているノードを識別する。
【0103】
(2)ステップS702において、ステップS701で識別されたノードが、繰り返しチェックを表すものであれば、処理をステップS703へ、そうでなければ処理をステップS704へ移す。
【0104】
(3)ステップS703において、テーブルの該当信号の該当サイクルのwait設定部に文字列itr[I]を格納し、対応するレジスタ要・不要フラグを1にセットする(初期値はNULLであるとする。また、配列インデックスIはフラグ数に対応して増加していく変数である)。
【0105】
(4)ステップS704において、ステップS701で識別されたノードが、終了条件に用いられているものであれば、処理をステップS705へ、そうでなければ処理をステップS706へ移す。
【0106】
(5)ステップS705において、テーブルの該当信号の該当サイクルのwait設定部に文字列cond[I]を格納し、対応するレジスタ要・不要フラグを1にセットする(初期値はNULLであるとする。また、配列インデックスIはフラグ数に対応して増加していく変数である)。
【0107】
(6)ステップS706において、wait制御フラグの数をカウントアップする(初期値は0であるとする)。なお、フラグ名は、wait_flg[2:0]とし、wait_flg[0]が繰り返し開始フラグであり、1で開始、0で未開始を表す。また、wait_flg[1]が繰り返し継続フラグであり、1で継続、0で未継続を表す。最後に、wait_flg[2]が繰り返し終了フラグであり、1で終了、0で未終了を表す。初期値は全て0である。特に、複数存在する場合は、reg[2:0]wait_flg[フラグ数−1:0]のような二次元配列として宣言することで、複数のフラグを割り当てる。たとえば、I番目のフラグは、wait_flg[I][2:0]となる。
【0108】
(7)ステップS707において、全てのwait objectが設定されているノードを探索したのであれば処理を終了し、そうでなければ処理をステップS701へ移す。
【0109】
なお、このWait制御用フラグ生成・初期値決定におけるテーブル構造は、たとえば図33のようになる。すなわち、図33のテーブル構造例では、信号名、信号値を格納する領域、さらにレジスタ要・不要、Wait設定、初期値に対するサイクル数を格納する領域がそれぞれ設けられている。
【0110】
4−1−3.初期値決定(図34)
(1)ステップS801において、検証対象動作木の信号名が設定されているノードを識別する。
【0111】
(2)ステップS802において、ステップS801で識別した全ての信号に対して、対応するビット幅の0を割り当てる。
【0112】
4−1−4.変数宣言HDL記述生成(図35)
(1)ステップS901において、テーブル上の信号名に対するレジスタ要・不要フラグが1の個数を算出する。
【0113】
(2)ステップS902において、ステップS901で識別された信号が、1ビットであれば、処理をステップS903へ、そうでなければ処理をステップS904へ移す。
【0114】
(3)ステップS903において、一次元配列として、ステップS901で取得した個数のビット幅を持つ、変数名_tmpのreg宣言を行う。すなわち、
reg[(1)で取得した個数−1:0]変数名_tmp;
なる記述を生成する。ステップS905へ処理を移す。
【0115】
(4)ステップS904において、二次元配列として、ステップS901で取得した配列数の、変数名_tmpのreg宣言を行う。すなわち、
reg[ビット幅−1:0]変数名_tmp[(1)で取得した個数−1:0];
なる記述を生成する。
【0116】
(5)ステップS905において、waitカウント数分のwaitフラグの二次元配列のreg宣言を行う。すなわち、
reg[2:0]wait_flg[waitカウント数−1:0];
なる記述を生成する。
【0117】
(6)ステップS906において、テーブル上の全ての信号を取得したのであれば処理をステップS907へ、そうでなければ処理をステップS901へ移す。
【0118】
(7)ステップS907において、[Log2最大個数+1]を算出し、そのビット幅のcnt_tmpをreg宣言し、flg_tmpもreg宣言する。すなわち、
reg[[log2((1)で取得した個数の最大値)]+1:0]cnt_tmp;
reg flg_tmp;
なる記述を生成する。ここで、[log2((1)で取得した個数の最大値)]は、log2((1)で取得した個数の最大値)を越えない最大の整数を表す。
【0119】
4−1−5.変数値格納HDL記述生成(図36)
(1)ステップS1001において、reg宣言した変数の数だけInteger変数を宣言する。すなわち、
Integer[変数の数−1:0]I;
なる記述を生成する。
【0120】
(2)ステップS1002において、下記
always@(posedge クロック信号名 or negedge リセット信号名)begin
if(!リセット信号名)begin
なる記述を生成する。
【0121】
(3)ステップS1003において、reg宣言した全ての変数の初期化記述を、信号名_tmpの配列番号とテーブルのサイクル番号との対応を取りながら、信号名_tmpへの初期値代入を行う記述を生成する。たとえば、下記
信号名_tmp[0]<=1’b0;
などの記述を生成する。
【0122】
(4)ステップS1004において、下記
end
else begin
なる記述を生成する。
【0123】
(5)ステップS1005において、reg宣言した変数全てに対して、1ビットか多ビットかに従い、下記
信号名_tmp[0]<=信号名;//1ビットの場合
信号名_tmp[0][ビット幅−1:0]<=信号名[ビット幅−1:0];//多ビットの場合
なる記述の何れかを生成する。
【0124】
(6)ステップS1006において、reg宣言した変数全てに対して、1ビットか多ビットかに従い、下記記述の何れかを生成する。ただし、kは信号名が変わる毎に0から1ずつ増加させる。
【0125】
(7)ステップS1007において、下記
なる記述を生成する。
【0126】
(8)ステップS1008において、下記
end
end
なる記述を生成する。
【0127】
4−2.検証対象動作木の変形(図37〜図54:図37)
(1)検証対象動作木の頂点であってsignal objectのみが設定されている頂点は、全てテーブルを参照して、対応するインデックスを持つ、変数名_tmpに置き換える。また、それ以外の頂点であっても、信号名を有する場合はこの変換を行う。
【0128】
(2)ステップS1101において、検証対象動作木上のrelation object同士のブール演算を表す頂点を取得する。
【0129】
(3)ステップS1102において、relation object同士のブール演算頂点以下の部分木に対して、その木の信号頂点の左方向への深さ優先探索によるトポロジカルソートを実施し、得られた順番と逆順に信号頂点を並べることで、
(A−>B)−>CをA−>(B−>C)とし、A&B−>C
となるようにグラフを変形する。また、一般には、括弧を全て外して、A1&A2&・・・&An−>An+1となるようにグラフを変形する。特に、この処理はrelation object同士のブール演算を下位の部分木が含まない条件でまず行い、次いで、relation object同士のブール演算以下の部分木を固定したものとして、再帰的に処理を実施するものとする。
【0130】
(4)ステップS1103において、relation object同士のブール演算が&を含むか判定し、含む場合は、処理をステップS1104へ、そうでない場合は処理をステップS1105へ移行する。
【0131】
(5)ステップS1104において、その下位の部分木にwait objectが設定されているか判定し、されている場合は処理をステップS1107へ、そうでない場合は処理をステップS1106へ移行する。
【0132】
(6)ステップS1105において、その下位の部分木にwait objectが設定されているか判定し、されている場合は処理をステップS1108へ、そうでない場合は処理をステップS1106へ移行する。
【0133】
(7)ステップS1106において、relation objectのブール演算を用いたグラフ変形を実施し、処理をステップS1109へ移行する。
【0134】
(8)ステップS1107において、ユーザにwait objectの設定が不正であると通知し、処理を終了する。
【0135】
(9)ステップS1108において、木のwait object以外の信号をマージすることでグラフ変形を行い、木の最下位に位置するwait objectをマーキングする。
【0136】
(10)ステップS1109において、全てのrelation objectのブール演算を取得したかを判定し、取得した場合は処理をステップS1110へ、そうでない場合は処理をステップS1101へ移行する。
【0137】
(11)ステップS1110において、relation object同士のブール演算以下の部分木を固定したものとして、ステップS1102の処理を検証対象動作木に対して行い、処理を終了する。
【0138】
図38の例を通して、グラフ変形を説明する。四角で囲まれたrはrelation objectを表す頂点であり、それ以外は信号頂点である。特に、m、yの信号頂点はwait objectが設定されていることを表す。すなわち、図38の例では、r−r−(r1‖r2)&r3−r1,r2,r3−・・・−a,b,c,d,e,f,g,i,j,k、r−r−a4、r−r−r4‖r5−r4−・・・−h,l,m,a1、r−r−r4‖r5−r5−a5、r−r−r4‖r5−r5−r−r6‖r7&r8−r6,r7,r8−・・・−o,p,q,r,s,t,u,v,w、r−r−r4‖r5−r5−r−r−・・・−x,y,z,a1、r−r−r−a2,a3の階層ツリーを示している。
【0139】
この図38のグラフ変形は、図39〜図54に従って以下のように行われる。
【0140】
(1)図39において、relation booleanの識別を表す。(r1‖r2)&r3−・・・、r6‖r7&r8−・・・、r4‖r5−・・・を識別する。
【0141】
(2)図40において、(A−>B)−>CのA−>(B−>C)への変形を表す。r1−・・・−a,b,c,kの順番を、(a)のようにa▲1▼,b▲2▼,c▲3▼,k▲4▼に決定して、(b)のように変形する。
【0142】
(3)図41において、(A−>B)−>CのA−>(B−>C)への変形(続き)を表す。同様に、r2−・・・−d,e,f,g,hの順番、r3−・・・−i,j,kの順番を(a)のように決定して、(b)のように変形する。
【0143】
(4)図42において、A−>(B−>C)のA&B−>Cへの変形を表す。(a)から(b)のように、(r1‖r2)&r3−r1−a&b&c,k、(r1‖r2)&r3−r2−d&e&f&g,k、(r1‖r2)&r3−r3−i&j,kに変形する。
【0144】
(5)図43において、relation booleanを用いた変形を表す。(a)から(b)のように、r−(a&b&c‖d&e&f&g)&i&jに変形する。
【0145】
(6)図44において、relation boolean(残り)を用いた変形を表す。(a)のような、r6‖r7&r8−r6,r7,r8−・・・−o,p,q,r,s,t,u,v,wを、(b)のように変形する。
【0146】
(7)図45において、relation boolean(残り)を用いた変形(続き)を表す。同様に、(a)から(b)のように、r6‖r7&r8−r6−o&p&q,w、r6‖r7&r8−r7−r&s&t,w、r6‖r7&r8−r8−u&v,wに変形する。さらに、(c)のように、r−o&p&q&r&s&t‖u&v,wに変形する。
【0147】
(8)図46において、グラフ変形の途中結果を表す。上記図43と図45の結果をまとめると図46のようになる。
【0148】
(9)図47において、relation booleanを再び用いた変形を表す。同様に再び、r4‖r5−r4−・・・−h,l,m,a1、r4‖r5−r5−a5、r4‖r5−r5−r−・・・−o&p&q&r&s&t‖u&v,w,x,y,z,a1を変形する。
【0149】
(10)図48において、relation booleanの処理の再帰的実行を表す。(a)のように順番を決定して、(b)のように変形する。
【0150】
(11)図49において、wait objectが入っている場合のA−>(B−>C)のA&B−>Cへの変形を表す。(a)から(b)のように、r4‖r5−r4−・・・−h,l,m,a1、r4‖r5−・・・−a5&(o&p&q&r&s&t‖u&v)&w&x,y,z,a1に変形する。
【0151】
(12)図50において、部分木の最下位のwait objectの識別を表す。wait objectはmとyである。
【0152】
(13)図51において、グラフ変形の途中結果を表す。上記図46と図50の結果をまとめると図51のようになる。
【0153】
(14)図52において、検証対象動作木全体でのグラフ変形(順番決定)を表す。検証対象動作木全体について、図52のように順番を決定する。
【0154】
(15)図53において、検証対象動作木全体でのグラフ変形((A−>B)−>CのA−>(B−>C)への変形)を表す。上記図52のように順番を決定して変形すると図53のようになる。
【0155】
(16)図54において、検証対象動作木全体でのグラフ変形(A−>(B−>C)のA&B−>Cへの変形)を表す。最終的に、検証対象動作木全体でのグラフ変形は図54のようになる。すなわち、r−((a&b&c‖d&e&f&g)&i&j)&k&a4、r−r−r4‖r5−r4−・・・−h,i,m,a1、r−r−r4‖r5−r5−a5&(o&p&q&r&s&t‖u&v)&w&x、r−r−r4‖r5−r5−r−・・・y,z,a1、r−r−r−a2,a3となる。
【0156】
4−3.検証HDLの生成(図55〜図62:図55)
(1)ステップS1201において、delayCnt=1とし、検証対象動作木の一番左の頂点を取得し、most_leftとする。
【0157】
(2)ステップS1202において、木がwaitを含まないか否かを判定し、そうならステップS1203へ、そうでないならステップS1204へ処理を移行する。
【0158】
(3)ステップS1203において、Property_simpleを実行し、処理を終了する。
【0159】
(4)ステップS1204において、Property_waitを実行し、処理をステップS1205へ移行する。
【0160】
(5)ステップS1205において、ConseqBlockを実行し、処理を終了する。
【0161】
4−3−1.Property_simple(図56)
(1)ステップS1301において、検証対象動作木の頂点から右方向に深さ優先探索の手順で次の頂点を取得する。
【0162】
(2)ステップS1302において、下記
なる記述を生成する。
【0163】
(3)ステップS1303において、木がexiを含むか判定し、そうなら処理をステップS1305へ、そうでないなら処理をステップS1304へ移行する。
【0164】
(4)ステップS1304において、下記
if(!(most_leftが表すブール式))
なる記述を生成する。
【0165】
(5)ステップS1305において、下記
なる記述を生成する。
【0166】
(6)ステップS1306において、下記
end
end
なる記述を生成し、処理を終了する。
【0167】
4−3−2.Property_wait(図57)
(1)ステップS1401において、flow_flg=0とする。
【0168】
(2)ステップS1402において、検証対象動作木の頂点から右方向に深さ優先探索の手順で次の頂点を取得する。
【0169】
(3)ステップS1403において、ステップS1402で取得した頂点が、most_leftか否か判定し、そうなら処理を終了し、そうでないならステップS1404へ処理を移行する。
【0170】
(4)ステップS1404において、ステップS1402で取得した頂点が、relationか否か判定し、そうならステップS1405へ、そうでないならステップS1406へ処理を移行する。
【0171】
(5)ステップS1405において、Property_waitを実行する。
【0172】
(6)ステップS1406において、ステップS1402で取得した頂点が、bool式のrelationか否か判定し、そうならステップS1407へ、そうでないならステップS1408へ処理を移行する。
【0173】
(7)ステップS1407において、Wait_Blockを実行する。
【0174】
(8)ステップS1408において、ステップS1402で取得した頂点が、信号からなるブール式か否か判定し、そうならステップS1409へ、そうでないならステップS1413へ処理を移行する。
【0175】
(9)ステップS1409において、flow_flg==0か否か判定し、そうならステップS1410へ、そうでないならステップS1412へ処理を移行する。
【0176】
(10)ステップS1410において、flow_flg=1とする。
【0177】
(11)ステップS1411において、If_expressionに下記
flg_tmp&取得した頂点の表すブール式
を代入する。
【0178】
(12)ステップS1412において、If_expressionに下記
取得した頂点の表すブール式
を代入する。
【0179】
(13)ステップS1413において、ステップS1402で取得した頂点が、waitか否か判定し、そうならステップS1414へ処理を移行する。
【0180】
(14)ステップS1414において、WaitBlockを実行する。
【0181】
4−3−3.WaitBlock(図58および図59)
(1)ステップS1501において、下記
always@(posedgeクロック名)
#delayCnt
なる記述を生成する。
【0182】
(2)ステップS1502において、Wait_expressionが空か判定し、そうならステップS1503へ、そうでないならステップS1506へ処理を移行する。
【0183】
(3)ステップS1503において、If_expressionが空か判定し、そうならステップS1504へ、そうでないならステップS1505へ処理を移行する。
【0184】
(4)ステップS1504において、下記
if(!wait解除条件)wait_flg[k][0]=1’b1;
else wait_flg[k][0]=1’b0;
なる記述を生成する。
【0185】
(5)ステップS1505において、下記
if(If_expression)wait_flg[k][0]=1’b1;
else wait_flg[k][0]=1’b0;
なる記述を生成する。
【0186】
(6)ステップS1506において、下記
if(Wait_expression)begin
wait(Wait_expression)begin
なる記述を生成する。
【0187】
(7)ステップS1507において、lastWaitFlgが空か判定し、そうならステップS1508へ、そうでないならステップS1509へ処理を移行する。
【0188】
(8)ステップS1508において、下記
wait_flg[k][2]=1’b0;
なる記述を生成する。
【0189】
(9)ステップS1509において、lastWaitFlg内の全てのwait_flgを全て1’b0にセットする。
【0190】
(10)ステップS1510において、If_expressionが空か判定し、そうならステップS1511へ、そうでないならステップS1512へ処理を移行する。
【0191】
(11)ステップS1511において、下記
wait_flg[k][0]=1’b1;
end
end
なる記述を生成する。
【0192】
(12)ステップS1512において、下記
なる記述を生成する。
【0193】
(13)ステップS1513において、delayCntをインクリメントする。
【0194】
(14)ステップS1514において、下記
なる記述を生成する。
【0195】
(15)ステップS1515において、Wait_expressionに下記
wait_flg[k][2]
を代入する。
【0196】
(16)ステップS1516において、delayCntをインクリメントし、kをインクリメントして、処理を終了する。
【0197】
4−3−4.WaitORBlock(図60および図61)
(1)ステップS1601において、relationのブール式の下位に存在する最も上位のrelationの数を取得し、RootRelCntとする。
【0198】
(2)ステップS1602において、relationのブール式の下位に存在する最も左端の頂点を取得し、sub_most_leftとする。
【0199】
(3)ステップS1603において、j=1とする。
【0200】
(4)ステップS1604において、左からj番目の最上位relationを取得する。
【0201】
(5)ステップS1605において、下記
subdelayCnt=delayCnt
subIF_expression=If_expression
subWait_expression=Wait_expression
の代入を行う。
【0202】
(6)ステップS1606において、Property_waitを実行する。
【0203】
(7)ステップS1607において、jをインクリメントする。
【0204】
(8)ステップS1608において、j>RootRelCntか判定し、そうならステップS1609へ、そうでなければステップS1604へ処理を移す。
【0205】
(9)ステップS1609において、subdelayCntの最大値をdelayCntとする。
【0206】
(10)ステップS1610において、Wait_expressionを上記処理で得られた
subIF_expression&&subWait_expression
のOR表現とする。すなわち、下記式
Wait_expression=‖IsubIF_expression[I]&&subWait_expression[I]
をWait_expressionに代入する。
【0207】
(11)ステップS1611において、lastWaitFlgにsubWait_expressionを全て格納する。
【0208】
(12)ステップS1612において、If_expressionを空にする。
【0209】
(13)ステップS1613において、sub_most_left!=most_leftを判定し、もしそうならステップS1614へ、そうでなければ処理を終了する。
【0210】
(14)ステップS1614において、頂点が信号かを識別し、もしそうならステップS1615へ、そうでないならステップS1616へ処理を移す。
【0211】
(15)ステップS1615において、If_expressionに信号からなるブール式を代入する。
【0212】
(16)ステップS1616において、頂点がwaitかを識別し、処理をステップS1617へ移行する。
【0213】
(17)ステップS1617において、WaitBlockを実行し、処理を終了する。
【0214】
4−3−5.ConseqBlock(図62)
(1)ステップS1701において、most_leftがwaitか判定し、そうならステップS1702へ、そうでないならステップS1704へ処理を移す。
【0215】
(2)ステップS1702において、WaitBlockを実行する。
【0216】
(3)ステップS1703において、下記
なる記述を生成し、処理を終了する。
【0217】
(4)ステップS1704において、下記
always@(posedge)
#delayCnt
なる記述を生成する。
【0218】
(5)ステップS1705において、Wait_expressionが空か判定し、そうならステップS1708へ、そうでないならステップS1706へ処理を移す。
【0219】
(6)ステップS1706において、下記
なる記述を生成する。
【0220】
(7)ステップS1707において、lastWaitFlgが空か判定し、そうならステップS1708へ、そうでないならステップS1709へ処理を移す。
【0221】
(8)ステップS1708において、下記
wait_expression=1’b0;
なる記述を生成する。
【0222】
(9)ステップS1709において、LastWaitFlgに含まれる全flgに対してflg=1’b0;なる記述を生成する。
【0223】
(10)ステップS1710において、If_expressionが空か判定し、そうならステップS1712へ、そうでないならステップS1711へ処理を移行する。
【0224】
(11)ステップS1711において、下記
if(If_expression)begin
なる記述を生成し、処理をステップS1712へ移行する。
【0225】
(12)ステップS1712において、検証対象動作木がexiを含むか判定し、そうならステップS1713へ、そうでないならステップS1714へ処理を移す。
【0226】
(13)ステップS1713において、下記
なる記述を生成し、処理をステップS1715へ移行する。
【0227】
(14)ステップS1714において、下記
if(!(most_leftの表す信号のブール式))
なる記述を生成し、処理をステップS1715へ移行する。
【0228】
(15)ステップS1715において、Wait_expressionが空か判定し、そうならステップS1717へ、そうでないならステップS1716へ処理を移す。
【0229】
(16)ステップS1716において、下記
end
なる記述を生成し、処理をステップS1717へ移す。
【0230】
(17)ステップS1717において、If_expressionが空か判定し、そうならステップS1719へ、そうでないならステップS1718へ処理を移す。
【0231】
(18)ステップS1718において、下記
end
なる記述を生成し、処理をステップS1719へ移行する。
【0232】
(19)ステップS1719において、下記
end
なる記述を生成し、処理を終了する。
【0233】
5.TDO2CTL Algorithm
図63および図64により、TDO2CTL Algorithmの一例を説明する。図63はTDO2CTL Algorithmを示すフロー図、図64はCTL生成可能性判定を示すフロー図である。
【0234】
図63に示すように、TDO2CTL Algorithmは、まず、検証対象動作木がCTL生成可能かの判定チェックを行う方法を述べ(ステップS1801)、次いで、検証対象動作木の変形アルゴリズムの変更点に触れ(ステップS1802)、最終的に得られた検証対象動作木からCTLを生成するアルゴリズムを述べる(ステップS1803)。ただし、前述したVerilog−HDL生成と同様な部分が多いため、詳しくは述べない。
【0235】
5−1.CTL生成可能性判定(図64)
(1)ステップS1901において、検証対象動作木の信号頂点で、左側より過去のサイクルが指定されている右側の頂点が存在するか否かを判定し、そうならステップS1904へ、そうでなければステップS1902へ処理を移行する。
【0236】
(2)ステップS1902において、ANDを含むrelationのブール式頂点の下位にwait頂点があるか判定し、もしあればステップS1904へ、なければステップS1903へ処理を移行する。
【0237】
(3)ステップS1903において、検証対象動作木の最右端頂点(most_leftと呼ぶ)が接続されているrelationの頂点にexiが指定されていて、かつ片側の頂点の時刻が最右端頂点の時刻と一致するか判定し、そうならステップS1904へ、そうでないならステップS1905へ処理を移行する。
【0238】
(4)ステップS1904において、CTL生成不能である旨、ユーザに通知し、処理を終了する。
【0239】
(5)ステップS1905において、Most_leftに最も近い、ブール式でないrelation頂点以外のexi指定は全て削除し、処理を終了する。
【0240】
5−2.検証対象動作木の変形
検証対象動作木の変形における変更・追加点のみを述べる。検証対象動作木の変形において、まず最初に全てのwait頂点に対して、wait頂点情報を
AX:n{A(繰り返し条件&!wait解除条件Uwait解除条件)}
に置換する。特に、AX:nのnはwait objectの波形上でのサイクル数に対応する。
【0241】
次いで、各信号頂点をサイクル数nを用いて、AX:n(信号名)に置換する。そして、トポロジカルソートを行い、一番順番の若いwait頂点またはexiが付加された信号頂点を検索し、検索された頂点がrelationのブール演算頂点の下位にある場合とそうでない場合とに分けて下記操作を行う。基本的に、左方向の深さ優先探索の手順で木を辿りながら処理を行う。
【0242】
1)検索された頂点がrelationのブール演算頂点の下位にある場合
その頂点が含まれる部分木を以下の方法で取得する。
【0243】
(1)relationのブール演算頂点の直下に位置するrelation頂点で、今対象としているwait頂点を下位に含む頂点を選択する。
【0244】
(2)(1)で選択したrelation頂点の下位全てからなる部分木を取得する。
【0245】
次いで、そのwait頂点よりも、トポロジカルソートで得られた順番が大きい信号頂点のサイクル情報を順番に従った相対サイクル情報に置き換える。これを木の範囲内で行う。他のrelationのブール演算頂点の直下に位置するrelation頂点を頂点とする木に対しても、waitかexi付き頂点が含まれているなら同じことをする。
【0246】
さらに、relationのブール演算頂点より順番が大きいものに対しても、同様に相対サイクル情報への置換を行うが、これは2)の手順を用いる。
【0247】
2)そうでない場合
その頂点よりも、トポロジカルソートで得られた順番が大きい信号頂点のサイクル情報を順番に従った相対サイクル情報に置き換える。操作がrelationのブール演算頂点に辿り着くと、relationのブール演算頂点の下位のrelation頂点を頂点とする木夫々に対して独立に相対サイクル情報への置き換えを行う。この操作が終わると、また木を辿りながら相対サイクル情報への置換をrelationのブール演算頂点に辿り着くまで行う。
【0248】
なお、相対サイクル情報への置換では、AX:n(信号名)をAY:m(信号名)に置換し、mは相対サイクル情報とする。
【0249】
次に、exiが付加されている頂点情報のAをEに置換する。
【0250】
次に、(A−>B)−>CをA&B−>Cに変換する操作では、AYやEX、EYが含まれない場合は、たとえば
AX(a)&AX(b)&AX:2(c)=AX(a&b&AX(C))
のようにサイクル数による括り出しを行う。含まれる場合は、以下の式変形ルールを適時用いて求める。
【0251】
P&AY(Q)=P&AX(Q)
P&EY(Q)=P&EX(Q)
AX(P)&AY(Q)=AX(P&AX(Q))
AX(P)&EY(Q)=AX(P&EX(Q))
AY(P)&AY(Q)=AY(P&AX(Q))
AY(P)&EY(Q)=AY(P&EX(Q))
EX(P)&AY(Q)=EX(P&AX(Q))
EX(P)&EY(Q)=EX(P&EX(Q))
EY(P)&AY(Q)=EY(P&AX(Q))
EY(P)&EY(Q)=EY(P&EX(Q))
特に、式変形は左から行う。たとえば、下記のようである。
【0252】
AY(P)&EY(Q)&AY:2(R)&EY:3(S)
=AY(P)&EY(Q)&AY:2(R&EX:3(S))
=AY(P)&EY(Q&AX:2(R&EX:3(S)))
=AY(P&EX(Q&AX:2(R&EX:3(S)))
また、‖が含まれている場合などは、それを‖の両辺を固まりと見なして扱う。たとえば下記のようである。
【0253】
AY(P)&EY(Q)&(AY:2(R)‖EY:3(S))
=AY(P)&EY(Q&(AX:2(R)‖EX:3(S)))
=AY(P&EX(Q&(AX:2(R)‖EX:3(S)))
なお、AND−OR式の扱いは、分配法則を適用して右側を扱ってから、OR内部の&から変形して上記のように扱えばよい。たとえば下記のようである。
【0254】
次に、relationのブール式の扱いであるが、これはVerilog−HDL生成と同様である。
【0255】
以上が、検証対象動作木での変更・追加処理である。
【0256】
5−3.CTLの生成
基本的にVerilog−HDLのchecker生成と同じく、変形後の検証対象動作木を辿りながら処理を行う。これに関しても概略のみを述べる。
【0257】
まず、木での最左端の頂点を取得する。その頂点以外の部分の処理を以下に述べる。木を辿りながら頂点情報を&で単純に結合していき、relationのOR演算に辿り着くと、以下の処理を行い、それを終了して続きがあるなら、また&で単純に結合していく。これを最左端の頂点に辿り着くまで行い、得られた&結合式−>最左端頂点の式なる式を構成して、全体式変形処理を行う。
【0258】
relationのOR演算での処理
本頂点下位の部分木を識別し、夫々の木の最左端を取得する。それらが一致していなければ、処理を中断し、一致していれば、それが先に取得した最左端頂点と一致するか識別する。
【0259】
1)最左端と一致した場合
夫々の部分木の頂点の&を左方向の深さ優先探索の順番で最左端頂点の手前まで&で結合していく。得られた式−>最左端頂点の式の形式を各部分木に対して構成し、たとえば部分木が3つあったとすると、
(部分木1の&結合式‖部分木2の&結合式‖部分木3の&結合式)−>
最左端頂点の式
を構成し、これを今まで得た&結合式に&で結合し全体式変形処理へ進む。
【0260】
2)一致しない場合
夫々の部分木の頂点の&を左方向の深さ優先探索の順番で&で結合していく。たとえば部分木が3つあったとすると、
(部分木1の&結合式‖部分木2の&結合式‖部分木3の&結合式)
を構成し、これを今まで得た&結合式に&で結合する。
【0261】
全体式変形処理では、最左端頂点の式にYがある場合、得られた&結合式−>最左端頂点の式を、
得られた&結合式−>(得られた&結合式)&最左端頂点の式
に変形し、−>の前後の式に対して頂点での式変形同様右側から式変形処理を行う。このとき、頂点の式変形で用いた変形規則および下記式変形規則を適宜適用し、Yを除去する。得られた変形式を対応する−>の両端の式に代入し、これで、CTLが得られる。Yが無い場合は、そのまま出力すればよい。
【0262】
A(P1UP2)&AY(Q)=A(P1U(P2&AX(Q))
A(P1UP2)&EY(Q)=A(P1U(P2&EX(Q))
E(P1UP2)&AY(Q)=E(P1U(P2&AX(Q))
E(P1UP2)&EY(Q)=E(P1U(P2&EX(Q))
たとえば、以下のようである。
【0263】
P&AY(Q)&AY:2(A(P1UP2))&EY(S)&EY(A(P3UP4)&AY(T)−>AY:2(O)
から、
P&AY(Q)&AY:2(A(P1UP2))&EY(S)&EY(A(P3UP4)&AY(T)
および
P&AY(Q)&AY:2(A(P1UP2))&EY(S)&EY(A(P3UP4)&AY(T)&AY:2(O)
を構成する。さらに、
なるCTLを得る。
【0264】
従って、本実施の形態の機能検証記述生成装置によれば、設計者や検証担当者は検証対象の比較的操作可能なタイミングダイアグラム編集装置2上でHDLの記述から得られた端子および内部ピン情報を選択し、タイミングダイアグラム編集装置2上で、この選択後の端子や内部ピンの信号の波形、この波形間の論理的関係、およびこの論理的関係が常に成立するのか少なくとも1回は成立するのかの生起情報を入力しながら、タイミングダイアグラム編集装置2上でタイミングダイアグラムを作成編集することができる。
【0265】
よって、タイミングダイアグラム編集装置2は、タイミングダイアグラム上に検証項目を明確に記述することが可能となり、これによって検証項目の表現の曖昧さを排除することができる。従って、設計者や検証担当者の間で正確な情報の交換が可能となり、人的ミスを排除することができる。
【0266】
さらに、検証対象動作抽出装置3は、タイミングダイアグラム編集装置2を使用し、設計者や検証担当者によって編集されたタイミングダイアグラム編集装置2から送出されるタイミングダイアグラム情報から波形間の論理的関係、この論理的関係が指定された波形を含む端子や内部ピン情報、およびこの論理的関係が常に成立するのか少なくとも1回は成立するのかの生起情報などを抽出し、検証記述生成装置4は検証対象動作抽出装置3から供給される波形の論理的関係、この論理的関係が指定された波形を含む端子や内部ピン情報、およびこの論理的関係が常に成立するのか少なくとも1回は成立するのかの生起情報などに基づき機能検証記述を自動生成することができる。
【0267】
よって、検証記述生成装置4などは、設計者や検証担当者がHDLやHDL以外の検証記述言語を知らなくとも、タイミングダイアグラム編集装置2を使用してタイミングダイアグラムを編集して回路動作の検証内容の明確化を行うという設計者や検証担当者が従来より行っている操作を行うことで、機能検証記述を生成することができる。従って、検証記述生成装置4などは、設計者や検証担当者の機能検証作業負担を軽減し、機能検証効率の向上による設計コストの低減、さらには製品の生産コストを低減することができる。
【0268】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【0269】
たとえば、本発明は、前記実施の形態に記述したような技術に限らず、デジタル回路全般に適用することが可能であり、さらに設計仕様書、機能検査仕様書の作成からHDL、コーディング後に行うデバッグ作業などまで幅広い技術に応用することができる。
【0270】
【発明の効果】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。
【0271】
(1)タイミングダイアグラム編集手段は、タイミングダイアグラム上に検証項目を明確に記述することが可能となり、これによって検証項目の表現の曖昧さを排除することができるので、設計者や検証担当者の間で正確な情報の交換が可能となり、人的ミスを排除することができる。
【0272】
(2)検証記述生成手段などは、設計者や検証担当者がHDLやHDL以外の検証記述言語を知らなくとも、タイミングダイアグラム編集手段を使用してタイミングダイアグラムを編集して回路動作の検証内容の明確化を行うという設計者や検証担当者が従来より行っている操作を行うことで、機能検証記述を生成することができるので、設計者や検証担当者の機能検証作業負担を軽減し、機能検証効率の向上による設計コストの低減、さらには製品の生産コストを低減することができる。
【0273】
(3)検証担当者が新たにHDLやHDL以外の検証記述言語を学習しなくても、HDLを学習済みの設計者がHDL以外の検証記述言語を学習したり、HDLで記述した機能検証記述自体の検証を行わなくても、検証対象回路の機能検証項目を検証するための機能検証記述を作成可能とする機能検証記述生成装置を提供することが可能となる。
【0274】
(4)設計者や検証担当者がタイミングダイアグラムを用いて回路動作の検証内容を明確にかつ統一的に記述する記述法を提供することが可能となる。
【図面の簡単な説明】
【図1】本発明の一実施の形態の機能検証記述生成装置を示す構成図である。
【図2】本発明の一実施の形態の機能検証記述生成装置において、コンペアオブジェクトを説明するための回路例の説明図である。
【図3】本発明の一実施の形態の機能検証記述生成装置において、コンペアオブジェクトを説明するためのタイミングダイアグラム例の説明図である。
【図4】本発明の一実施の形態の機能検証記述生成装置において、ウェイトオブジェクトを説明するためのタイミングダイアグラム例の説明図である。
【図5】本発明の一実施の形態の機能検証記述生成装置において、ウェイトオブジェクトを説明するためのチェックボックス例の説明図である。
【図6】本発明の一実施の形態の機能検証記述生成装置において、検証対象動作木の構成とその変形を示すフロー図である。
【図7】本発明の一実施の形態の機能検証記述生成装置において、HDLの端子情報の格納における階層ツリーを示す説明図である。
【図8】本発明の一実施の形態の機能検証記述生成装置において、図7の階層ツリーに付随する端子情報を示す説明図である。
【図9】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラムの格納におけるタイミングダイアグラム例(1)を示す説明図である。
【図10】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラムの格納におけるタイミングダイアグラム例(2)を示す説明図である。
【図11】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラムの格納におけるタイミングダイアグラム例(3)を示す説明図である。
【図12】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラムの格納におけるタイミングダイアグラム例(4)を示す説明図である。
【図13】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラムの格納におけるタイミングダイアグラム例(5)を示す説明図である。
【図14】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラムの格納におけるタイミングダイアグラム例(6)を示す説明図である。
【図15】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラムの格納におけるタイミングダイアグラム例(7)を示す説明図である。
【図16】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラムの格納におけるタイミングダイアグラム例(8)を示す説明図である。
【図17】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラムの格納におけるタイミングダイアグラム例(9)を示す説明図である。
【図18】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラムの格納におけるタイミングダイアグラム例(10)を示す説明図である。
【図19】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラムの格納におけるタイミングダイアグラム例(11)を示す説明図である。
【図20】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラム分割例を示す説明図である。
【図21】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラムの記憶イメージを示す説明図である。
【図22】本発明の一実施の形態の機能検証記述生成装置において、図21に続くタイミングダイアグラムの記憶イメージを示す説明図である。
【図23】本発明の一実施の形態の機能検証記述生成装置において、タイミングダイアグラム分割手段の動作を示すフロー図である。
【図24】本発明の一実施の形態の機能検証記述生成装置において、検証対象動作の切り出しにおける検証対象動作情報取得手段の動作を示すフロー図である。
【図25】本発明の一実施の形態の機能検証記述生成装置において、検証対象動作情報の記憶イメージを示す説明図である。
【図26】本発明の一実施の形態の機能検証記述生成装置において、検証対象動作から作成される木構造の記憶イメージを示す説明図である。
【図27】本発明の一実施の形態の機能検証記述生成装置において、図26に続く検証対象動作から作成される木構造の記憶イメージを示す説明図である。
【図28】本発明の一実施の形態の機能検証記述生成装置において、TDO2Verilog Algorithmを示すフロー図である。
【図29】本発明の一実施の形態の機能検証記述生成装置において、格納変数の割り当てを示すフロー図である。
【図30】本発明の一実施の形態の機能検証記述生成装置において、格納サイクル数の算出を示すフロー図である。
【図31】本発明の一実施の形態の機能検証記述生成装置において、格納サイクル数の算出におけるテーブル構造を示す説明図である。
【図32】本発明の一実施の形態の機能検証記述生成装置において、Wait制御用フラグ生成・初期値決定を示すフロー図である。
【図33】本発明の一実施の形態の機能検証記述生成装置において、Wait制御用フラグ生成・初期値決定におけるテーブル構造を示す説明図である。
【図34】本発明の一実施の形態の機能検証記述生成装置において、初期値決定を示すフロー図である。
【図35】本発明の一実施の形態の機能検証記述生成装置において、変数宣言HDL記述生成を示すフロー図である。
【図36】本発明の一実施の形態の機能検証記述生成装置において、変数値格納HDL記述生成を示すフロー図である。
【図37】本発明の一実施の形態の機能検証記述生成装置において、グラフ変形を示すフロー図である。
【図38】本発明の一実施の形態の機能検証記述生成装置において、グラフ変形を示す説明図である。
【図39】本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(relation booleanの識別)を示す説明図である。
【図40】(a),(b)は本発明の一実施の形態の機能検証記述生成装置において、グラフ変形((A−>B)−>CのA−>(B−>C)への変形)を示す説明図である。
【図41】(a),(b)は本発明の一実施の形態の機能検証記述生成装置において、グラフ変形((A−>B)−>CのA−>(B−>C)への変形(続き))を示す説明図である。
【図42】(a),(b)は本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(A−>(B−>C)のA&B−>Cへの変形)を示す説明図である。
【図43】(a),(b)は本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(relation booleanを用いた変形)を示す説明図である。
【図44】(a),(b)は本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(relation boolean(残り)を用いた変形)を示す説明図である。
【図45】(a),(b),(c)は本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(relation boolean(残り)を用いた変形(続き))を示す説明図である。
【図46】本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(グラフ変形の途中結果)を示す説明図である。
【図47】本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(relation booleanを再び用いた変形)を示す説明図である。
【図48】(a),(b)は本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(relation booleanの処理の再帰的実行)を示す説明図である。
【図49】(a),(b)は本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(wait objectが入っている場合のA−>(B−>C)のA&B−>Cへの変形)を示す説明図である。
【図50】本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(部分木の最下位のwait objectの識別)を示す説明図である。
【図51】本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(グラフ変形の途中結果)を示す説明図である。
【図52】本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(検証対象動作木全体でのグラフ変形(順番決定))を示す説明図である。
【図53】本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(検証対象動作木全体でのグラフ変形((A−>B)−>CのA−>(B−>C)への変形))を示す説明図である。
【図54】本発明の一実施の形態の機能検証記述生成装置において、グラフ変形(検証対象動作木全体でのグラフ変形(A−>(B−>C)のA&B−>Cへの変形))を示す説明図である。
【図55】本発明の一実施の形態の機能検証記述生成装置において、検証HDLの生成を示すフロー図である。
【図56】本発明の一実施の形態の機能検証記述生成装置において、Property_simpleを示すフロー図である。
【図57】本発明の一実施の形態の機能検証記述生成装置において、Property_waitを示すフロー図である。
【図58】本発明の一実施の形態の機能検証記述生成装置において、WaitBlockを示すフロー図である。
【図59】本発明の一実施の形態の機能検証記述生成装置において、図58に続くWaitBlockを示すフロー図である。
【図60】本発明の一実施の形態の機能検証記述生成装置において、WaitORBlockを示すフロー図である。
【図61】本発明の一実施の形態の機能検証記述生成装置において、図60に続くWaitORBlockを示すフロー図である。
【図62】本発明の一実施の形態の機能検証記述生成装置において、ConseqBlockを示すフロー図である。
【図63】本発明の一実施の形態の機能検証記述生成装置において、TDO2CTL Algorithmを示すフロー図である。
【図64】本発明の一実施の形態の機能検証記述生成装置において、CTL生成可能性判定を示すフロー図である。
【図65】本発明の技術と公開公報の技術とを比較するための、公開公報の技術の概要を示す説明図である。
【図66】本発明の技術と公開公報の技術とを比較するための、本発明の技術の概要を示す説明図である。
【符号の説明】
1 端子情報抽出装置
2 タイミングダイアグラム編集装置
3 検証対象動作抽出装置
4 検証記述生成装置
5 検証記述ファイル
11 HDL読み込み装置
12 HDL記憶装置
13 端子情報抽出装置
14 端子情報記憶装置
31 タイミングダイアグラム記憶装置
32 検証対象動作情報抽出装置
33 検証対象動作情報記憶装置
Claims (7)
- タイミングダイアグラムに、検証対象となる論理回路の端子および内部ピンを介して入出力する信号の波形間の論理的関係と、前記論理的関係が少なくとも1回は成立するかを示す生起情報とが入力される第1の手段と、
前記波形間の論理的関係と、前記生起情報とを基に前記検証対象となる論理回路の機能を検証する為の検証記述を前記タイミングダイアグラムから生成する第2の手段とを有し、
前記第1の手段は、前記検証対象となる論理回路の端子および内部ピンの情報を取得する端子情報抽出手段と、前記端子情報抽出手段で取得された前記検証対象となる論理回路の端子および内部ピンの情報から前記波形間の論理的関係や前記生起情報を入力されることで前記タイミングダイアグラムを編集可能とされるタイミングダイアグラム編集手段とを含み、
前記第1の手段において、前記タイミングダイアグラムに前記検証対象となる論理回路の動作内容や検証したい信号の遷移を記載する為に前記波形間の論理的関係や前記生起情報を含むオブジェクトを用いることを特徴とする機能検証記述生成装置。 - 請求項1に記載の機能検証記述生成装置において、
前記端子情報抽出手段は、設計データに備わる前記端子および前記内部ピンに関して、少なくとも端子名、内部ピン名、入出力の別、および入出力する前記信号と内部ピン名のビット数の各端子および内部ピン情報を取得し、
前記タイミングダイアグラム編集手段は、前記端子情報抽出手段に接続され、前記端子情報抽出手段にて取得した前記端子および前記内部ピン情報を選択し、前記端子および内部ピンを介して入出力する前記信号について、前記信号の波形、セットアップタイムおよびホールドタイムを含むタイミング制約情報、前記信号の波形間の論理的関係情報、および前記生起情報を入力されることで、前記設計データにおける前記タイミングダイアグラムを編集可能とされることを特徴とする機能検証記述生成装置。 - 請求項2に記載の機能検証記述生成装置において、
前記第2の手段は、
前記タイミングダイアグラム編集手段に接続され、前記タイミングダイアグラム編集手段から前記各端子および内部ピン情報、前記タイミング制約情報、前記波形間の論理的関係情報、および前記論理的関係の生起情報からなる検証対象動作情報を抽出する検証対象動作抽出手段と、
前記検証対象動作抽出手段に接続され、前記検証対象動作情報に基づき検証記述言語で表現された前記検証対象動作が満足されているかの検証を目的とする機能検証記述やHDL形式の前記検証対象動作が満足されているかの検証を目的とする機能検証記述を生成する検証記述生成手段と、を含むことを特徴とする機能検証記述生成装置。 - 請求項1に記載の機能検証記述生成装置において、
前記オブジェクトは、前記タイミングダイアグラムに描かれた信号波形間の論理的関係を表す為のオブジェクトであるリレーションオブジェクトの始点または終点となった所の値と、その値がタイミングダイアグラム上の何サイクル目かを表すオブジェクトであるシグナルオブジェクトを含むことを特徴とする機能検証記述生成装置。 - 請求項1に記載の機能検証記述生成装置において、
前記オブジェクトは、前記タイミングダイアグラムに描かれた信号波形上に設定され、前記タイミングダイアグラムに描かれた信号波形間の論理的関係を表す為のオブジェクトであるリレーションオブジェクトの始点または終点となった所の信号値に対して、信号値比較などの比較演算を記述するオブジェクトであるコンペアオブジェクトを含むことを特徴とする機能検証記述生成装置。 - 請求項1に記載の機能検証記述生成装置において、
前記オブジェクトは、前記タイミングダイアグラムに描かれたクロック信号の立ち上がりエッジに対して指定され、所定の条件が成立するまで、その前のサイクルの信号値が繰り返し実行されることを表すオブジェクトであるウェイトオブジェクトを含むことを特徴とする機能検証記述生成装置。 - 請求項1に記載の機能検証記述生成装置において、
前記オブジェクトは、前記タイミングダイアグラムに描かれた信号波形間の論理的関係を表すオブジェクトであるリレーションオブジェクトを含むことを特徴とする機能検証記述生成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002011953A JP4153699B2 (ja) | 2002-01-21 | 2002-01-21 | 機能検証記述生成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002011953A JP4153699B2 (ja) | 2002-01-21 | 2002-01-21 | 機能検証記述生成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003216683A JP2003216683A (ja) | 2003-07-31 |
JP4153699B2 true JP4153699B2 (ja) | 2008-09-24 |
Family
ID=27649305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002011953A Expired - Fee Related JP4153699B2 (ja) | 2002-01-21 | 2002-01-21 | 機能検証記述生成装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4153699B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9286426B2 (en) | 2014-04-23 | 2016-03-15 | International Business Machines Corporation | Method and apparatus for testing |
-
2002
- 2002-01-21 JP JP2002011953A patent/JP4153699B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9286426B2 (en) | 2014-04-23 | 2016-03-15 | International Business Machines Corporation | Method and apparatus for testing |
Also Published As
Publication number | Publication date |
---|---|
JP2003216683A (ja) | 2003-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6549332B2 (ja) | 機械学習に基づくネットワークモデル構築方法及び装置 | |
Jänicke et al. | Visual text analysis in digital humanities | |
CN102918500B (zh) | 使用输入-输出示例生成文本操纵程序 | |
Reich | A critical review of general design theory | |
Jänicke et al. | On Close and Distant Reading in Digital Humanities: A Survey and Future Challenges. | |
Gordon | From LCF to HOL: a short history | |
CN110738037B (zh) | 用于自动生成电子表格的方法、装置、设备及存储介质 | |
CN110826321A (zh) | 合同文件风险校验方法、装置、计算机设备以及存储介质 | |
CN109582294A (zh) | 一种内嵌式机器学习系统的软件体系结构设计方法 | |
Rizvi et al. | A hybrid approach and unified framework for bibliographic reference extraction | |
CN109725900B (zh) | 寄存器传输级Verilog代码的SMV模型构建方法 | |
Doan et al. | Multi graph neural network for extractive long document summarization | |
JP4153699B2 (ja) | 機能検証記述生成装置 | |
US20090158225A1 (en) | Method and system for automatically accessing internal signals or ports in a design hierarchy | |
KR20220017993A (ko) | 플랫 넷리스트로부터 동작 디자인 복구 | |
US5854926A (en) | Method and apparatus for identifying flip-flops in HDL descriptions of circuits without specific templates | |
Shatnawi et al. | Mapping spl feature models to a relational database | |
Pattuelli | Graphing Out Communities and Cultures in the Archives. Methods and Tools | |
Thiée et al. | Extraction of Information from Invoices–Challenges in the Extraction Pipeline | |
KR100383211B1 (ko) | 파라메트릭 정보를 갖는 3차원 cad 모델의 모델링 데이터를 디지털 카탈로그의 형태로써 제공하기 위한 부품 정보 제공 시스템 | |
Bergonzoni et al. | Assessing residential buildings compliance with sustainability rating systems through a BIM-Based approach | |
Cyre et al. | Generating validation feedback for automatic interpretation of informal requirements | |
TWI255411B (en) | Method, apparatus and computer-readable medium of simulating a logic design | |
Beyer et al. | Mining co-change clusters from version repositories | |
Chen et al. | Automatic Generation of Semantic 3D City Models from Conceptual Massing Models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050105 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071107 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071113 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080111 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080219 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080418 |
|
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: 20080617 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080704 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110711 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110711 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110711 Year of fee payment: 3 |
|
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: 20120711 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120711 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130711 Year of fee payment: 5 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |